Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Service/MacroStabilityInwardsCalculationService.cs =================================================================== diff -u -r8d246ac6328e6e649ff6e78dfe3fac210d789ba0 -r0da7a76905c549ccda8339fc255e1efa156807f4 --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Service/MacroStabilityInwardsCalculationService.cs (.../MacroStabilityInwardsCalculationService.cs) (revision 8d246ac6328e6e649ff6e78dfe3fac210d789ba0) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Service/MacroStabilityInwardsCalculationService.cs (.../MacroStabilityInwardsCalculationService.cs) (revision 0da7a76905c549ccda8339fc255e1efa156807f4) @@ -21,6 +21,7 @@ using System; using System.Linq; +using Core.Common.Base.Data; using Ringtoets.Common.Service; using Ringtoets.MacroStabilityInwards.CalculatedInput.Converters; using Ringtoets.MacroStabilityInwards.Data; @@ -46,9 +47,10 @@ /// the execution of the operation. /// /// The for which to validate the values. + /// The normative assessment level to use in case no manual assessment level is provided. /// false if contains validation errors; true otherwise. /// Thrown when is null. - public static bool Validate(MacroStabilityInwardsCalculation calculation) + public static bool Validate(MacroStabilityInwardsCalculation calculation, RoundedDouble normativeAssessmentLevel) { if (calculation == null) { @@ -57,7 +59,7 @@ CalculationServiceHelper.LogValidationBegin(); - string[] inputValidationResults = MacroStabilityInwardsInputValidator.Validate(calculation.InputParameters).ToArray(); + string[] inputValidationResults = MacroStabilityInwardsInputValidator.Validate(calculation.InputParameters, normativeAssessmentLevel).ToArray(); if (inputValidationResults.Length > 0) { @@ -66,7 +68,7 @@ return false; } - UpliftVanCalculatorInput upliftVanCalculatorInput = CreateInputFromData(calculation.InputParameters); + UpliftVanCalculatorInput upliftVanCalculatorInput = CreateInputFromData(calculation.InputParameters, normativeAssessmentLevel); IUpliftVanCalculator calculator = MacroStabilityInwardsCalculatorFactory.Instance.CreateUpliftVanCalculator(upliftVanCalculatorInput, MacroStabilityInwardsKernelWrapperFactory.Instance); UpliftVanKernelMessage[] kernelMessages; @@ -96,10 +98,11 @@ /// the execution of the operation. /// /// The to base the input for the calculation upon. + /// The normative assessment level to use in case no manual assessment level is provided. /// Thrown when is null. /// Consider calling first to see if calculation is possible. /// Thrown when an error occurred during the calculation. - public static void Calculate(MacroStabilityInwardsCalculation calculation) + public static void Calculate(MacroStabilityInwardsCalculation calculation, RoundedDouble normativeAssessmentLevel) { if (calculation == null) { @@ -111,7 +114,7 @@ try { IUpliftVanCalculator calculator = MacroStabilityInwardsCalculatorFactory.Instance.CreateUpliftVanCalculator( - CreateInputFromData(calculation.InputParameters), + CreateInputFromData(calculation.InputParameters, normativeAssessmentLevel), MacroStabilityInwardsKernelWrapperFactory.Instance); UpliftVanCalculatorResult macroStabilityInwardsResult = calculator.Calculate(); @@ -157,14 +160,18 @@ } } - private static UpliftVanCalculatorInput CreateInputFromData(MacroStabilityInwardsInput inputParameters) + private static UpliftVanCalculatorInput CreateInputFromData(MacroStabilityInwardsInput inputParameters, RoundedDouble normativeAssessmentLevel) { + RoundedDouble effectiveAssessmentLevel = inputParameters.UseAssessmentLevelManualInput + ? inputParameters.AssessmentLevel + : normativeAssessmentLevel; + return new UpliftVanCalculatorInput( new UpliftVanCalculatorInput.ConstructionProperties { WaternetCreationMode = WaternetCreationMode.CreateWaternet, PlLineCreationMethod = PlLineCreationMethod.RingtoetsWti2017, - AssessmentLevel = inputParameters.AssessmentLevel, + AssessmentLevel = effectiveAssessmentLevel, LandwardDirection = LandwardDirection.PositiveX, SurfaceLine = inputParameters.SurfaceLine, SoilProfile = SoilProfileConverter.Convert(inputParameters.SoilProfileUnderSurfaceLine), Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Service/MacroStabilityInwardsInputValidator.cs =================================================================== diff -u -r8d246ac6328e6e649ff6e78dfe3fac210d789ba0 -r0da7a76905c549ccda8339fc255e1efa156807f4 --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Service/MacroStabilityInwardsInputValidator.cs (.../MacroStabilityInwardsInputValidator.cs) (revision 8d246ac6328e6e649ff6e78dfe3fac210d789ba0) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Service/MacroStabilityInwardsInputValidator.cs (.../MacroStabilityInwardsInputValidator.cs) (revision 0da7a76905c549ccda8339fc255e1efa156807f4) @@ -45,8 +45,9 @@ /// /// The for which to validate the values. /// Validation errors, if any. + /// The normative assessment level to use in case no manual assessment level is provided. /// Thrown when is null. - public static IEnumerable Validate(MacroStabilityInwardsInput inputParameters) + public static IEnumerable Validate(MacroStabilityInwardsInput inputParameters, RoundedDouble normativeAssessmentLevel) { if (inputParameters == null) { @@ -55,7 +56,7 @@ var validationResults = new List(); - validationResults.AddRange(ValidateHydraulics(inputParameters)); + validationResults.AddRange(ValidateHydraulics(inputParameters, normativeAssessmentLevel)); IEnumerable coreValidationError = ValidateCoreSurfaceLineAndSoilProfileProperties(inputParameters).ToArray(); validationResults.AddRange(coreValidationError); @@ -79,6 +80,7 @@ { yield return Resources.MacroStabilityInwardsCalculationService_ValidateInput_SoilLayerTop_must_be_larger_than_SurfaceLineTop; } + yield break; } @@ -153,6 +155,7 @@ return false; } } + return true; } @@ -191,10 +194,11 @@ return true; } } + return false; } - private static IEnumerable ValidateHydraulics(MacroStabilityInwardsInput inputParameters) + private static IEnumerable ValidateHydraulics(MacroStabilityInwardsInput inputParameters, RoundedDouble normativeAssessmentLevel) { var validationResults = new List(); if (!inputParameters.UseAssessmentLevelManualInput && inputParameters.HydraulicBoundaryLocation == null) @@ -203,13 +207,13 @@ } else { - validationResults.AddRange(ValidateAssessmentLevel(inputParameters)); + validationResults.AddRange(ValidateAssessmentLevel(inputParameters, normativeAssessmentLevel)); } return validationResults; } - private static IEnumerable ValidateAssessmentLevel(MacroStabilityInwardsInput inputParameters) + private static IEnumerable ValidateAssessmentLevel(MacroStabilityInwardsInput inputParameters, RoundedDouble normativeAssessmentLevel) { var validationResult = new List(); @@ -219,7 +223,7 @@ } else { - if (double.IsNaN(inputParameters.AssessmentLevel)) + if (double.IsNaN(normativeAssessmentLevel)) { validationResult.Add(Resources.MacroStabilityInwardsCalculationService_ValidateInput_Cannot_determine_AssessmentLevel); } @@ -235,10 +239,12 @@ { validationResults.Add(Resources.MacroStabilityInwardsCalculationService_ValidateInput_No_SurfaceLine_selected); } + if (inputParameters.StochasticSoilProfile == null) { validationResults.Add(Resources.MacroStabilityInwardsCalculationService_ValidateInput_No_StochasticSoilProfile_selected); } + return validationResults; } }