Index: Ringtoets/Piping/src/Ringtoets.Piping.Service/PipingCalculationService.cs =================================================================== diff -u -r45ad71ec19026ba5920512469716eddf2a38b17e -r5970323ae0d3f533fb24c3c1c954ef56d4650df8 --- Ringtoets/Piping/src/Ringtoets.Piping.Service/PipingCalculationService.cs (.../PipingCalculationService.cs) (revision 45ad71ec19026ba5920512469716eddf2a38b17e) +++ Ringtoets/Piping/src/Ringtoets.Piping.Service/PipingCalculationService.cs (.../PipingCalculationService.cs) (revision 5970323ae0d3f533fb24c3c1c954ef56d4650df8) @@ -45,9 +45,10 @@ /// the execution of the operation. /// /// The for which to validate the values. + /// The calculated 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(PipingCalculation calculation) + public static bool Validate(PipingCalculation calculation, RoundedDouble calculatedAssessmentLevel) { if (calculation == null) { @@ -58,7 +59,7 @@ CalculationServiceHelper.LogMessagesAsWarning(GetInputWarnings(calculation.InputParameters).ToArray()); - string[] inputValidationResults = ValidateInput(calculation.InputParameters).ToArray(); + string[] inputValidationResults = ValidateInput(calculation.InputParameters, calculatedAssessmentLevel).ToArray(); if (inputValidationResults.Length > 0) { @@ -67,7 +68,9 @@ return false; } - List validationResults = new PipingCalculator(CreateInputFromData(calculation.InputParameters), PipingSubCalculatorFactory.Instance).Validate(); + List validationResults = new PipingCalculator(CreateInputFromData(calculation.InputParameters, calculatedAssessmentLevel), + PipingSubCalculatorFactory.Instance).Validate(); + CalculationServiceHelper.LogMessagesAsError(validationResults.ToArray()); CalculationServiceHelper.LogValidationEnd(); @@ -81,9 +84,10 @@ /// the execution of the operation. /// /// The to base the input for the calculation upon. + /// The calculated 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. - public static void Calculate(PipingCalculation calculation) + public static void Calculate(PipingCalculation calculation, RoundedDouble calculatedAssessmentLevel) { if (calculation == null) { @@ -94,7 +98,7 @@ try { - PipingCalculatorResult pipingResult = new PipingCalculator(CreateInputFromData(calculation.InputParameters), + PipingCalculatorResult pipingResult = new PipingCalculator(CreateInputFromData(calculation.InputParameters, calculatedAssessmentLevel), PipingSubCalculatorFactory.Instance).Calculate(); calculation.Output = new PipingOutput(new PipingOutput.ConstructionProperties @@ -122,11 +126,11 @@ } } - private static List ValidateInput(PipingInput inputParameters) + private static List ValidateInput(PipingInput inputParameters, RoundedDouble calculatedAssessmentLevel) { var validationResults = new List(); - validationResults.AddRange(ValidateHydraulics(inputParameters)); + validationResults.AddRange(ValidateHydraulics(inputParameters, calculatedAssessmentLevel)); IEnumerable coreValidationError = ValidateCoreSurfaceLineAndSoilProfileProperties(inputParameters); validationResults.AddRange(coreValidationError); @@ -144,7 +148,7 @@ return validationResults; } - private static IEnumerable ValidateHydraulics(PipingInput inputParameters) + private static IEnumerable ValidateHydraulics(PipingInput inputParameters, RoundedDouble calculatedAssessmentLevel) { var validationResults = new List(); if (!inputParameters.UseAssessmentLevelManualInput && inputParameters.HydraulicBoundaryLocation == null) @@ -153,9 +157,9 @@ } else { - validationResults.AddRange(ValidateAssessmentLevel(inputParameters)); + validationResults.AddRange(ValidateAssessmentLevel(inputParameters, calculatedAssessmentLevel)); - RoundedDouble piezometricHeadExit = DerivedPipingInput.GetPiezometricHeadExit(inputParameters); + RoundedDouble piezometricHeadExit = DerivedPipingInput.GetPiezometricHeadExit(inputParameters, GetAssessmentLevel(inputParameters, calculatedAssessmentLevel)); if (double.IsNaN(piezometricHeadExit) || double.IsInfinity(piezometricHeadExit)) { validationResults.Add(Resources.PipingCalculationService_ValidateInput_Cannot_determine_PiezometricHeadExit); @@ -165,7 +169,7 @@ return validationResults; } - private static IEnumerable ValidateAssessmentLevel(PipingInput inputParameters) + private static IEnumerable ValidateAssessmentLevel(PipingInput inputParameters, RoundedDouble calculatedAssessmentLevel) { var validationResult = new List(); @@ -175,7 +179,7 @@ } else { - if (double.IsNaN(inputParameters.AssessmentLevel)) + if (double.IsNaN(calculatedAssessmentLevel)) { validationResult.Add(Resources.PipingCalculationService_ValidateInput_Cannot_determine_AssessmentLevel); } @@ -354,7 +358,7 @@ !double.IsNaN(surfaceLineMissing.ExitPointL); } - private static PipingCalculatorInput CreateInputFromData(PipingInput inputParameters) + private static PipingCalculatorInput CreateInputFromData(PipingInput inputParameters, RoundedDouble calculatedAssessmentLevel) { return new PipingCalculatorInput( new PipingCalculatorInput.ConstructionProperties @@ -363,7 +367,7 @@ SaturatedVolumicWeightOfCoverageLayer = PipingSemiProbabilisticDesignVariableFactory.GetSaturatedVolumicWeightOfCoverageLayer(inputParameters).GetDesignValue(), UpliftModelFactor = inputParameters.UpliftModelFactor, AssessmentLevel = inputParameters.AssessmentLevel, - PiezometricHeadExit = DerivedPipingInput.GetPiezometricHeadExit(inputParameters), + PiezometricHeadExit = DerivedPipingInput.GetPiezometricHeadExit(inputParameters, GetAssessmentLevel(inputParameters, calculatedAssessmentLevel)), DampingFactorExit = PipingSemiProbabilisticDesignVariableFactory.GetDampingFactorExit(inputParameters).GetDesignValue(), PhreaticLevelExit = PipingSemiProbabilisticDesignVariableFactory.GetPhreaticLevelExit(inputParameters).GetDesignValue(), CriticalHeaveGradient = inputParameters.CriticalHeaveGradient, @@ -386,5 +390,12 @@ SoilProfile = inputParameters.StochasticSoilProfile?.SoilProfile }); } + + private static RoundedDouble GetAssessmentLevel(PipingInput input, RoundedDouble calculatedAssessmentLevel) + { + return input.UseAssessmentLevelManualInput + ? input.AssessmentLevel + : calculatedAssessmentLevel; + } } } \ No newline at end of file