Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Service/GrassCoverErosionInwardsCalculationService.cs =================================================================== diff -u -r4ee9fd194da2edf32c3cb9d18d4aa647e7a03e62 -r6cbc1078b43d2c341d9f5b867a37a67adc8d029b --- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Service/GrassCoverErosionInwardsCalculationService.cs (.../GrassCoverErosionInwardsCalculationService.cs) (revision 4ee9fd194da2edf32c3cb9d18d4aa647e7a03e62) +++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Service/GrassCoverErosionInwardsCalculationService.cs (.../GrassCoverErosionInwardsCalculationService.cs) (revision 6cbc1078b43d2c341d9f5b867a37a67adc8d029b) @@ -175,6 +175,9 @@ bool usePreprocessor = !string.IsNullOrEmpty(effectivePreprocessorDirectory); int numberOfCalculators = CreateCalculators(calculation, + assessmentSection, + generalInput, + failureMechanismContribution, Path.GetDirectoryName(hydraulicBoundaryDatabaseFilePath), effectivePreprocessorDirectory); @@ -233,19 +236,36 @@ } } - private int CreateCalculators(GrassCoverErosionInwardsCalculation calculation, string hlcdDirectory, string preprocessorDirectory) + private int CreateCalculators(GrassCoverErosionInwardsCalculation calculation, + IAssessmentSection assessmentSection, + GeneralGrassCoverErosionInwardsInput generalInput, + double failureMechanismContribution, + string hlcdDirectory, + string preprocessorDirectory) { var numberOfCalculators = 1; overtoppingCalculator = HydraRingCalculatorFactory.Instance.CreateOvertoppingCalculator(hlcdDirectory, preprocessorDirectory); - if (calculation.InputParameters.DikeHeightCalculationType != DikeHeightCalculationType.NoCalculation) + bool dikeHeightNormValid = TargetProbabilityCalculationServiceHelper.ValidateTargetProbability( + GetNormForDikeHeight(calculation.InputParameters, + assessmentSection, + generalInput, + failureMechanismContribution), lm => {}); + + if (calculation.InputParameters.DikeHeightCalculationType != DikeHeightCalculationType.NoCalculation && dikeHeightNormValid) { dikeHeightCalculator = HydraRingCalculatorFactory.Instance.CreateDikeHeightCalculator(hlcdDirectory, preprocessorDirectory); numberOfCalculators++; } - if (calculation.InputParameters.OvertoppingRateCalculationType != OvertoppingRateCalculationType.NoCalculation) + bool overtoppingRateNormValid = TargetProbabilityCalculationServiceHelper.ValidateTargetProbability( + GetNormForOvertoppingRate(calculation.InputParameters, + assessmentSection, + generalInput, + failureMechanismContribution), lm => {}); + + if (calculation.InputParameters.OvertoppingRateCalculationType != OvertoppingRateCalculationType.NoCalculation && overtoppingRateNormValid) { overtoppingRateCalculator = HydraRingCalculatorFactory.Instance.CreateOvertoppingRateCalculator(hlcdDirectory, preprocessorDirectory); numberOfCalculators++; @@ -326,13 +346,6 @@ double norm = GetNormForDikeHeight(calculation.InputParameters, assessmentSection, generalInput, failureMechanismContribution); - var normValid = true; - TargetProbabilityCalculationServiceHelper.ValidateTargetProbability(norm, lm => normValid = false); - if (!normValid) - { - return null; - } - DikeHeightCalculationInput dikeHeightCalculationInput = CreateDikeHeightInput(calculation, norm, generalInput, hydraulicBoundaryDatabaseFilePath, @@ -385,13 +398,6 @@ double norm = GetNormForOvertoppingRate(calculation.InputParameters, assessmentSection, generalInput, failureMechanismContribution); - var normValid = true; - TargetProbabilityCalculationServiceHelper.ValidateTargetProbability(norm, lm => normValid = false); - if (!normValid) - { - return null; - } - OvertoppingRateCalculationInput overtoppingRateCalculationInput = CreateOvertoppingRateInput(calculation, norm, generalInput, hydraulicBoundaryDatabaseFilePath,