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