// Copyright (C) Stichting Deltares 2017. All rights reserved.
//
// This file is part of Ringtoets.
//
// Ringtoets is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see .
//
// All names, logos, and references to "Deltares" are registered trademarks of
// Stichting Deltares and remain full property of Stichting Deltares at all times.
// All rights reserved.
using System;
using Ringtoets.MacroStabilityInwards.Primitives;
namespace Ringtoets.MacroStabilityInwards.KernelWrapper
{
///
/// This class contains all the parameters that are required to perform a macro stability inwards assessment.
///
public class MacroStabilityInwardsCalculatorInput
{
///
/// Constructs a new , which contains values for the parameters used
/// in the macro stability inwards sub calculations.
///
/// The object containing the values for the properties
/// of the new .
/// Thrown when is null.
public MacroStabilityInwardsCalculatorInput(ConstructionProperties properties)
{
if (properties == null)
{
throw new ArgumentNullException(nameof(properties));
}
AssessmentLevel = properties.AssessmentLevel;
SurfaceLine = properties.SurfaceLine;
SoilProfile = properties.SoilProfile;
WaterLevelRiverAverage = properties.WaterLevelRiverAverage;
WaterLevelPolder = properties.WaterLevelPolder;
XCoordinateDrainageConstruction = properties.XCoordinateDrainageConstruction;
ZCoordinateDrainageConstruction = properties.ZCoordinateDrainageConstruction;
MinimumLevelPhreaticLineAtDikeTopRiver = properties.MinimumLevelPhreaticLineAtDikeTopRiver;
MinimumLevelPhreaticLineAtDikeTopPolder = properties.MinimumLevelPhreaticLineAtDikeTopPolder;
PhreaticLineOffsetBelowDikeTopAtRiver = properties.PhreaticLineOffsetBelowDikeTopAtRiver;
PhreaticLineOffsetBelowDikeTopAtPolder = properties.PhreaticLineOffsetBelowDikeTopAtPolder;
PhreaticLineOffsetBelowShoulderBaseInside = properties.PhreaticLineOffsetBelowShoulderBaseInside;
PhreaticLineOffsetBelowDikeToeAtPolder = properties.PhreaticLineOffsetBelowDikeToeAtPolder;
LeakageLengthOutwardsPhreaticLine3 = properties.LeakageLengthOutwardsPhreaticLine3;
LeakageLengthInwardsPhreaticLine3 = properties.LeakageLengthInwardsPhreaticLine3;
LeakageLengthOutwardsPhreaticLine4 = properties.LeakageLengthOutwardsPhreaticLine4;
LeakageLengthInwardsPhreaticLine4 = properties.LeakageLengthInwardsPhreaticLine4;
PiezometricHeadPhreaticLine2Outwards = properties.PiezometricHeadPhreaticLine2Outwards;
PiezometricHeadPhreaticLine2Inwards = properties.PiezometricHeadPhreaticLine2Inwards;
PenetrationLength = properties.PenetrationLength;
DrainageConstructionPresent = properties.DrainageConstructionPresent;
AdjustPhreaticLine3And4ForUplift = properties.AdjustPhreaticLine3And4ForUplift;
UseDefaultOffsets = properties.UseDefaultOffsets;
DikeSoilScenario = properties.DikeSoilScenario;
MoveGrid = properties.MoveGrid;
MaximumSliceWidth = properties.MaximumSliceWidth;
}
public class ConstructionProperties
{
///
/// Creates new instance of .
///
public ConstructionProperties()
{
AssessmentLevel = double.NaN;
SurfaceLine = null;
SoilProfile = null;
WaterLevelRiverAverage = double.NaN;
WaterLevelPolder = double.NaN;
XCoordinateDrainageConstruction = double.NaN;
ZCoordinateDrainageConstruction = double.NaN;
MinimumLevelPhreaticLineAtDikeTopRiver = double.NaN;
MinimumLevelPhreaticLineAtDikeTopPolder = double.NaN;
PhreaticLineOffsetBelowDikeTopAtRiver = double.NaN;
PhreaticLineOffsetBelowDikeTopAtPolder = double.NaN;
PhreaticLineOffsetBelowShoulderBaseInside = double.NaN;
PhreaticLineOffsetBelowDikeToeAtPolder = double.NaN;
LeakageLengthOutwardsPhreaticLine3 = double.NaN;
LeakageLengthInwardsPhreaticLine3 = double.NaN;
LeakageLengthOutwardsPhreaticLine4 = double.NaN;
PiezometricHeadPhreaticLine2Outwards = double.NaN;
PiezometricHeadPhreaticLine2Inwards = double.NaN;
PenetrationLength = double.NaN;
DikeSoilScenario = MacroStabilityInwardsDikeSoilScenario.ClayDikeOnClay;
MaximumSliceWidth = double.NaN;
}
#region properties
///
/// Gets the outside high water level.
/// [m]
///
public double AssessmentLevel { internal get; set; }
///
/// Gets the surface line.
///
public MacroStabilityInwardsSurfaceLine SurfaceLine { internal get; set; }
///
/// Gets the profile which contains a definition of soil layers with properties.
///
public MacroStabilityInwardsSoilProfileUnderSurfaceLine SoilProfile { internal get; set; }
///
/// Gets or sets the dike soil scenario.
///
public MacroStabilityInwardsDikeSoilScenario DikeSoilScenario { internal get; set; }
///
/// Gets or sets the average river water level.
/// [m+NAP]
///
public double WaterLevelRiverAverage { internal get; set; }
///
/// Gets or sets the polder water level.
/// [m+NAP]
///
public double WaterLevelPolder { internal get; set; }
///
/// Gets or sets whether a drainage construction is present.
///
public bool DrainageConstructionPresent { internal get; set; }
///
/// Gets or sets the x coordinate of the drainage construction.
/// [m]
///
public double XCoordinateDrainageConstruction { internal get; set; }
///
/// Gets or sets the z coordinate of the drainage construction.
/// [m+NAP]
///
public double ZCoordinateDrainageConstruction { internal get; set; }
///
/// Gets or sets the minimum level phreatic line at dike top river.
/// [m+NAP]
///
public double MinimumLevelPhreaticLineAtDikeTopRiver { internal get; set; }
///
/// Gets or sets the minimum level phreatic line at dike top polder.
/// [m+NAP]
///
public double MinimumLevelPhreaticLineAtDikeTopPolder { internal get; set; }
///
/// Gets or sets whether the default offset should be used.
///
public bool UseDefaultOffsets { internal get; set; }
///
/// Gets or sets the offset of the phreatic line below dike top at river.
/// [m]
///
public double PhreaticLineOffsetBelowDikeTopAtRiver { internal get; set; }
///
/// Gets or sets the offset of the phreatic line below dike top at polder.
/// [m]
///
public double PhreaticLineOffsetBelowDikeTopAtPolder { internal get; set; }
///
/// Gets or sets the offset of the phreatic line below shoulder base inside.
/// [m]
///
public double PhreaticLineOffsetBelowShoulderBaseInside { internal get; set; }
///
/// Gets or sets the offset of the phreatic line below dike toe at polder.
/// [m]
///
public double PhreaticLineOffsetBelowDikeToeAtPolder { internal get; set; }
///
/// Gets or sets whether phreatic line 3 and 4 should be adjusted for uplift.
///
public bool AdjustPhreaticLine3And4ForUplift { internal get; set; }
///
/// Gets or sets the leakage length outwards of phreatic line 3.
/// [m]
///
public double LeakageLengthOutwardsPhreaticLine3 { internal get; set; }
///
/// Gets or sets the leakage length inwards of phreatic line 3.
/// [m]
///
public double LeakageLengthInwardsPhreaticLine3 { internal get; set; }
///
/// Gets or sets the leakage length outwards of phreatic line 4.
/// [m]
///
public double LeakageLengthOutwardsPhreaticLine4 { internal get; set; }
///
/// Gets or sets the leakage length inwards of phreatic line 4.
/// [m]
///
public double LeakageLengthInwardsPhreaticLine4 { internal get; set; }
///
/// Gets or sets the piezometric head of the phreatic line 2 outwards.
/// [m+NAP]
///
public double PiezometricHeadPhreaticLine2Outwards { internal get; set; }
///
/// Gets or sets the piezometric head of the phreatic line 2 inwards.
/// [m+NAP]
///
public double PiezometricHeadPhreaticLine2Inwards { internal get; set; }
///
/// Gets or sets the penetration length.
/// [m]
///
public double PenetrationLength { internal get; set; }
///
/// Gets or sets the value whether the grid should be moved.
///
public bool MoveGrid { internal get; set; }
///
/// Gets the maximum slice width.
/// [m]
///
public double MaximumSliceWidth { internal get; set; }
#endregion
}
#region properties
///
/// Gets the outside high water level.
/// [m]
///
public double AssessmentLevel { get; }
///
/// Gets the surface line.
///
public MacroStabilityInwardsSurfaceLine SurfaceLine { get; }
///
/// Gets the profile which contains a definition of soil layers with properties.
///
public MacroStabilityInwardsSoilProfileUnderSurfaceLine SoilProfile { get; }
///
/// Gets the dike soil scenario.
///
public MacroStabilityInwardsDikeSoilScenario DikeSoilScenario { get; }
///
/// Gets the average river water level.
/// [m+NAP]
///
public double WaterLevelRiverAverage { get; }
///
/// Gets the polder water level.
/// [m+NAP]
///
public double WaterLevelPolder { get; }
///
/// Gets whether a drainage construction is present.
///
public bool DrainageConstructionPresent { get; }
///
/// Gets the x coordinate of the drainage construction.
/// [m]
///
public double XCoordinateDrainageConstruction { get; }
///
/// Gets the z coordinate of the drainage construction.
/// [m+NAP]
///
public double ZCoordinateDrainageConstruction { get; }
///
/// Gets the minimum level phreatic line at dike top river.
/// [m+NAP]
///
public double MinimumLevelPhreaticLineAtDikeTopRiver { get; }
///
/// Gets the minimum level phreatic line at dike top polder.
/// [m+NAP]
///
public double MinimumLevelPhreaticLineAtDikeTopPolder { get; }
///
/// Gets whether the default offset should be used.
///
public bool UseDefaultOffsets { get; }
///
/// Gets the offset of the phreatic line below dike top at river.
/// [m]
///
public double PhreaticLineOffsetBelowDikeTopAtRiver { get; }
///
/// Gets the offset of the phreatic line below dike top at polder.
/// [m]
///
public double PhreaticLineOffsetBelowDikeTopAtPolder { get; }
///
/// Gets the offset of the phreatic line below shoulder base inside.
/// [m]
///
public double PhreaticLineOffsetBelowShoulderBaseInside { get; }
///
/// Gets the offset of the phreatic line below dike toe at polder.
/// [m]
///
public double PhreaticLineOffsetBelowDikeToeAtPolder { get; }
///
/// Gets whether phreatic line 3 and 4 should be adjusted for uplift.
///
public bool AdjustPhreaticLine3And4ForUplift { get; }
///
/// Gets the leakage length outwards of phreatic line 3.
/// [m]
///
public double LeakageLengthOutwardsPhreaticLine3 { get; }
///
/// Gets the leakage length inwards of phreatic line 3.
/// [m]
///
public double LeakageLengthInwardsPhreaticLine3 { get; }
///
/// Gets the leakage length outwards of phreatic line 4.
/// [m]
///
public double LeakageLengthOutwardsPhreaticLine4 { get; }
///
/// Gets the leakage length inwards of phreatic line 4.
/// [m]
///
public double LeakageLengthInwardsPhreaticLine4 { get; }
///
/// Gets the piezometric head of the phreatic line 2 outwards.
/// [m+NAP]
///
public double PiezometricHeadPhreaticLine2Outwards { get; }
///
/// Gets the piezometric head of the phreatic line 2 inwards.
/// [m+NAP]
///
public double PiezometricHeadPhreaticLine2Inwards { get; }
///
/// Gets the penetration length.
/// [m]
///
public double PenetrationLength { get; }
///
/// Gets the value whether the grid should be moved.
///
public bool MoveGrid { get; }
///
/// Gets the maximum slice width.
/// [m]
///
public double MaximumSliceWidth { get; }
#endregion
}
}