using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Deltares.DamEngine.Calculators.PlLinesCreator; using Deltares.DamEngine.Data.General; using Deltares.DamEngine.Data.General.PlLines; using Deltares.DamEngine.Data.Geotechnics; namespace Deltares.DamEngine.Calculators.KernelWrappers.Common { /// /// Helper for Pl Lines /// public class PlLinesHelper { /// /// Creates the pl lines. /// /// The location. /// The soil profile. /// The water level. /// The uplift situation. /// public static PLLines CreatePlLinesForStability(Location location, SoilGeometryProbability subSoilScenario, double waterLevel, string soilGeometry2DName, out UpliftSituation upliftSituation) { var plLinesCreator = new PLLinesCreator { WaterLevelRiverHigh = waterLevel, SurfaceLine = location.SurfaceLine, WaterLevelPolder = location.PolderLevel, HeadInPLLine2 = location.HeadPl2, HeadInPLLine3 = location.HeadPl3, HeadInPLLine4 = location.HeadPl4, ModelParametersForPLLines = location.ModelParametersForPLLines, SoilProfile = subSoilScenario.SoilProfile1D, SoilProfileType = subSoilScenario.SoilProfileType, SoilGeometry2DName = soilGeometry2DName, GaugePLLines = null, // TODO: Operational Gauges = null, // TODO: Operational IsAdjustPL3AndPL4SoNoUpliftWillOccurEnabled = true, // for stability this must be set to true PlLineOffsetBelowDikeTopAtRiver = location.PlLineOffsetBelowDikeTopAtRiver, PlLineOffsetBelowDikeTopAtPolder = location.PlLineOffsetBelowDikeTopAtPolder, DikeEmbankmentMaterial = location.GetDikeEmbankmentSoil(), IsHydraulicShortcut = false, // TODO: Regional XSoilGeometry2DOrigin = location.XSoilGeometry2DOrigin }; var plLines = plLinesCreator.CreateAllPLLines(location); upliftSituation.Pl3HeadAdjusted = plLinesCreator.Pl3HeadAdjusted; upliftSituation.Pl3LocationXMinUplift = plLinesCreator.Pl3LocationXMinUplift; upliftSituation.Pl3MinUplift = plLinesCreator.Pl3MinUplift; upliftSituation.Pl4HeadAdjusted = plLinesCreator.Pl4HeadAdjusted; upliftSituation.Pl4LocationXMinUplift = plLinesCreator.Pl4LocationXMinUplift; upliftSituation.Pl4MinUplift = plLinesCreator.Pl4MinUplift; upliftSituation.IsUplift = false; // must be determined later on; just to avoid compiler error return plLines; } /// /// Creates the pl lines. /// /// The location. /// The soil profile. /// The water level. /// The uplift situation. /// public static PLLines CreatePlLines(Location location, SoilProfile1D soilProfile, double waterLevel, out UpliftSituation upliftSituation) { var plLinesCreator = new PLLinesCreator { WaterLevelRiverHigh = waterLevel, SurfaceLine = location.SurfaceLine, WaterLevelPolder = location.PolderLevel, HeadInPLLine2 = location.HeadPl2, HeadInPLLine3 = location.HeadPl3, HeadInPLLine4 = location.HeadPl4, ModelParametersForPLLines = location.ModelParametersForPLLines, SoilProfile = soilProfile, GaugePLLines = null, // TODO: Operational Gauges = null, // TODO: Operational IsAdjustPL3AndPL4SoNoUpliftWillOccurEnabled = false, // for piping this must be set to false PlLineOffsetBelowDikeTopAtRiver = location.PlLineOffsetBelowDikeTopAtRiver, PlLineOffsetBelowDikeTopAtPolder = location.PlLineOffsetBelowDikeTopAtPolder, DikeEmbankmentMaterial = location.GetDikeEmbankmentSoil(), IsHydraulicShortcut = false, // TODO: Regional XSoilGeometry2DOrigin = location.XSoilGeometry2DOrigin }; var plLines = plLinesCreator.CreateAllPLLines(location); upliftSituation.Pl3HeadAdjusted = plLinesCreator.Pl3HeadAdjusted; upliftSituation.Pl3LocationXMinUplift = plLinesCreator.Pl3LocationXMinUplift; upliftSituation.Pl3MinUplift = plLinesCreator.Pl3MinUplift; upliftSituation.Pl4HeadAdjusted = plLinesCreator.Pl4HeadAdjusted; upliftSituation.Pl4LocationXMinUplift = plLinesCreator.Pl4LocationXMinUplift; upliftSituation.Pl4MinUplift = plLinesCreator.Pl4MinUplift; upliftSituation.IsUplift = false; // must be determined later on; just to avoid compiler error return plLines; } } }