Index: Ringtoets/Piping/src/Ringtoets.Piping.Service/PipingCalculationService.cs =================================================================== diff -u -re2892835ceb1c916be9a9122ba372858f20b981a -r4222cb32d271503cc089ae68347771eb8449628f --- Ringtoets/Piping/src/Ringtoets.Piping.Service/PipingCalculationService.cs (.../PipingCalculationService.cs) (revision e2892835ceb1c916be9a9122ba372858f20b981a) +++ Ringtoets/Piping/src/Ringtoets.Piping.Service/PipingCalculationService.cs (.../PipingCalculationService.cs) (revision 4222cb32d271503cc089ae68347771eb8449628f) @@ -55,18 +55,21 @@ } CalculationServiceHelper.LogValidationBegin(); - CalculationServiceHelper.LogMessagesAsWarning(GetInputWarnings(calculation.InputParameters).ToArray()); - string[] inputValidationResults = ValidateInput(calculation.InputParameters).ToArray(); + var derivedPipingInput = new DerivedPipingInput(calculation.InputParameters); + CalculationServiceHelper.LogMessagesAsWarning(GetInputWarnings(calculation.InputParameters, derivedPipingInput).ToArray()); + + string[] inputValidationResults = ValidateInput(calculation.InputParameters, derivedPipingInput).ToArray(); + if (inputValidationResults.Length > 0) { CalculationServiceHelper.LogMessagesAsError(inputValidationResults); CalculationServiceHelper.LogValidationEnd(); return false; } - List validationResults = new PipingCalculator(CreateInputFromData(calculation.InputParameters), PipingSubCalculatorFactory.Instance).Validate(); + List validationResults = new PipingCalculator(CreateInputFromData(calculation.InputParameters, derivedPipingInput), PipingSubCalculatorFactory.Instance).Validate(); CalculationServiceHelper.LogMessagesAsError(validationResults.ToArray()); CalculationServiceHelper.LogValidationEnd(); @@ -93,7 +96,7 @@ try { - PipingCalculatorResult pipingResult = new PipingCalculator(CreateInputFromData(calculation.InputParameters), + PipingCalculatorResult pipingResult = new PipingCalculator(CreateInputFromData(calculation.InputParameters, new DerivedPipingInput(calculation.InputParameters)), PipingSubCalculatorFactory.Instance).Calculate(); calculation.Output = new PipingOutput(new PipingOutput.ConstructionProperties @@ -121,11 +124,11 @@ } } - private static List ValidateInput(PipingInput inputParameters) + private static List ValidateInput(PipingInput inputParameters, DerivedPipingInput derivedPipingInput) { var validationResults = new List(); - validationResults.AddRange(ValidateHydraulics(inputParameters)); + validationResults.AddRange(ValidateHydraulics(inputParameters, derivedPipingInput)); IEnumerable coreValidationError = ValidateCoreSurfaceLineAndSoilProfileProperties(inputParameters); validationResults.AddRange(coreValidationError); @@ -137,13 +140,13 @@ if (!coreValidationError.Any()) { - validationResults.AddRange(ValidateSoilLayers(inputParameters)); + validationResults.AddRange(ValidateSoilLayers(inputParameters, derivedPipingInput)); } return validationResults; } - private static IEnumerable ValidateHydraulics(PipingInput inputParameters) + private static IEnumerable ValidateHydraulics(PipingInput inputParameters, DerivedPipingInput derivedPipingInput) { var validationResults = new List(); if (!inputParameters.UseAssessmentLevelManualInput && inputParameters.HydraulicBoundaryLocation == null) @@ -154,7 +157,7 @@ { validationResults.AddRange(ValidateAssessmentLevel(inputParameters)); - if (double.IsNaN(inputParameters.PiezometricHeadExit) || double.IsInfinity(inputParameters.PiezometricHeadExit)) + if (double.IsNaN(derivedPipingInput.PiezometricHeadExit) || double.IsInfinity(derivedPipingInput.PiezometricHeadExit)) { validationResults.Add(Resources.PipingCalculationService_ValidateInput_Cannot_determine_PiezometricHeadExit); } @@ -200,10 +203,10 @@ return validationResults; } - private static IEnumerable ValidateSoilLayers(PipingInput inputParameters) + private static IEnumerable ValidateSoilLayers(PipingInput inputParameters, DerivedPipingInput derivedPipingInput) { var validationResults = new List(); - if (double.IsNaN(inputParameters.ThicknessAquiferLayer.Mean)) + if (double.IsNaN(derivedPipingInput.ThicknessAquiferLayer.Mean)) { validationResults.Add(Resources.PipingCalculationService_ValidateInput_Cannot_determine_thickness_aquifer_layer); } @@ -263,7 +266,7 @@ return validationResult; } - private static List GetInputWarnings(PipingInput inputParameters) + private static List GetInputWarnings(PipingInput inputParameters, DerivedPipingInput derivedPipingInput) { var warnings = new List(); @@ -274,13 +277,13 @@ warnings.AddRange(GetMultipleAquiferLayersWarning(inputParameters, surfaceLineLevel)); warnings.AddRange(GetMultipleCoverageLayersWarning(inputParameters, surfaceLineLevel)); warnings.AddRange(GetDiameter70Warnings(inputParameters)); - warnings.AddRange(GetThicknessCoverageLayerWarnings(inputParameters)); + warnings.AddRange(GetThicknessCoverageLayerWarnings(inputParameters, derivedPipingInput)); } return warnings; } - private static IEnumerable GetThicknessCoverageLayerWarnings(PipingInput inputParameters) + private static IEnumerable GetThicknessCoverageLayerWarnings(PipingInput inputParameters, DerivedPipingInput derivedPipingInput) { var warnings = new List(); @@ -292,7 +295,7 @@ { warnings.Add(Resources.PipingCalculationService_ValidateInput_No_coverage_layer_at_ExitPointL_under_SurfaceLine); } - if (double.IsNaN(inputParameters.ThicknessCoverageLayer.Mean)) + if (double.IsNaN(derivedPipingInput.ThicknessCoverageLayer.Mean)) { warnings.Add(Resources.PipingCalculationService_ValidateInput_Cannot_determine_thickness_coverage_layer); } @@ -343,7 +346,7 @@ !double.IsNaN(surfaceLineMissing.ExitPointL); } - private static PipingCalculatorInput CreateInputFromData(PipingInput inputParameters) + private static PipingCalculatorInput CreateInputFromData(PipingInput inputParameters, DerivedPipingInput derivedPipingInput) { return new PipingCalculatorInput( new PipingCalculatorInput.ConstructionProperties @@ -352,7 +355,7 @@ SaturatedVolumicWeightOfCoverageLayer = PipingSemiProbabilisticDesignVariableFactory.GetSaturatedVolumicWeightOfCoverageLayer(inputParameters).GetDesignValue(), UpliftModelFactor = inputParameters.UpliftModelFactor, AssessmentLevel = inputParameters.AssessmentLevel, - PiezometricHeadExit = inputParameters.PiezometricHeadExit, + PiezometricHeadExit = derivedPipingInput.PiezometricHeadExit, DampingFactorExit = PipingSemiProbabilisticDesignVariableFactory.GetDampingFactorExit(inputParameters).GetDesignValue(), PhreaticLevelExit = PipingSemiProbabilisticDesignVariableFactory.GetPhreaticLevelExit(inputParameters).GetDesignValue(), CriticalHeaveGradient = inputParameters.CriticalHeaveGradient,