Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.CalculatedInput/WaternetCalculationService.cs =================================================================== diff -u -r38b96b5fe034945cfa33600ec134e21507b40922 -rcc068526b5a84a94aeeebf872b29f7da4c28ceab --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.CalculatedInput/WaternetCalculationService.cs (.../WaternetCalculationService.cs) (revision 38b96b5fe034945cfa33600ec134e21507b40922) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.CalculatedInput/WaternetCalculationService.cs (.../WaternetCalculationService.cs) (revision cc068526b5a84a94aeeebf872b29f7da4c28ceab) @@ -53,19 +53,73 @@ throw new ArgumentNullException(nameof(input)); } - var calculatorInput = new WaternetCalculatorInput(new WaternetCalculatorInput.ConstructionProperties + IWaternetCalculator calculator = MacroStabilityInwardsCalculatorFactory.Instance + .CreateWaternetExtremeCalculator( + CreateCalculatorInput(input, false), + MacroStabilityInwardsKernelWrapperFactory.Instance); + + try { + WaternetCalculatorResult result = calculator.Calculate(); + return MacroStabilityInwardsWaternetConverter.Convert(result); + } + catch (WaternetCalculatorException) + { + return null; + } + } + + /// + /// Calculated the Waternet with daily circumstances based on the values + /// of the . + /// + /// The input to get the values from. + /// A calculated , + /// or null when the Waternet could be calculated. + /// Thrown when + /// is null. + public static MacroStabilityInwardsWaternet CalculateDaily(IMacroStabilityInwardsWaternetInput input) + { + if (input == null) + { + throw new ArgumentNullException(nameof(input)); + } + + IWaternetCalculator calculator = MacroStabilityInwardsCalculatorFactory.Instance + .CreateWaternetDailyCalculator( + CreateCalculatorInput(input, true), + MacroStabilityInwardsKernelWrapperFactory.Instance); + + try + { + WaternetCalculatorResult result = calculator.Calculate(); + return MacroStabilityInwardsWaternetConverter.Convert(result); + } + catch (WaternetCalculatorException) + { + return null; + } + } + + private static WaternetCalculatorInput CreateCalculatorInput(IMacroStabilityInwardsWaternetInput input, bool daily) + { + return new WaternetCalculatorInput(new WaternetCalculatorInput.ConstructionProperties + { WaternetCreationMode = WaternetCreationMode.CreateWaternet, PlLineCreationMethod = PlLineCreationMethod.RingtoetsWti2017, AssessmentLevel = input.AssessmentLevel, LandwardDirection = LandwardDirection.PositiveX, SurfaceLine = input.SurfaceLine, SoilProfile = SoilProfileConverter.Convert(input.SoilProfileUnderSurfaceLine), DrainageConstruction = DrainageConstructionConverter.Convert(input), - PhreaticLineOffsets = PhreaticLineOffsetsConverter.Convert(input.LocationInputExtreme), + PhreaticLineOffsets = daily + ? PhreaticLineOffsetsConverter.Convert(input.LocationInputDaily) + : PhreaticLineOffsetsConverter.Convert(input.LocationInputExtreme), DikeSoilScenario = input.DikeSoilScenario, WaterLevelRiverAverage = input.WaterLevelRiverAverage, - WaterLevelPolder = input.LocationInputExtreme.WaterLevelPolder, + WaterLevelPolder = daily + ? input.LocationInputDaily.WaterLevelPolder + : input.LocationInputExtreme.WaterLevelPolder, MinimumLevelPhreaticLineAtDikeTopRiver = input.MinimumLevelPhreaticLineAtDikeTopRiver, MinimumLevelPhreaticLineAtDikeTopPolder = input.MinimumLevelPhreaticLineAtDikeTopPolder, LeakageLengthOutwardsPhreaticLine3 = input.LeakageLengthOutwardsPhreaticLine3, @@ -74,24 +128,11 @@ LeakageLengthInwardsPhreaticLine4 = input.LeakageLengthInwardsPhreaticLine4, PiezometricHeadPhreaticLine2Outwards = input.PiezometricHeadPhreaticLine2Outwards, PiezometricHeadPhreaticLine2Inwards = input.PiezometricHeadPhreaticLine2Inwards, - PenetrationLength = input.LocationInputExtreme.PenetrationLength, - AdjustPhreaticLine3And4ForUplift = input.AdjustPhreaticLine3And4ForUplift, + PenetrationLength = daily + ? input.LocationInputDaily.PenetrationLength + : input.LocationInputExtreme.PenetrationLength, + AdjustPhreaticLine3And4ForUplift = input.AdjustPhreaticLine3And4ForUplift }); - - IWaternetCalculator calculator = MacroStabilityInwardsCalculatorFactory.Instance - .CreateWaternetExtremeCalculator( - calculatorInput, - MacroStabilityInwardsKernelWrapperFactory.Instance); - - try - { - WaternetCalculatorResult result = calculator.Calculate(); - return MacroStabilityInwardsWaternetConverter.Convert(result); - } - catch (WaternetCalculatorException) - { - return null; - } } } } \ No newline at end of file