Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Service/GrassCoverErosionInwardsCalculationService.cs =================================================================== diff -u -re664365292d72b7003b642dacdd4e887e4ddceba -r63ef22d4a71266b90b211becbc34cb45a93f8f14 --- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Service/GrassCoverErosionInwardsCalculationService.cs (.../GrassCoverErosionInwardsCalculationService.cs) (revision e664365292d72b7003b642dacdd4e887e4ddceba) +++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Service/GrassCoverErosionInwardsCalculationService.cs (.../GrassCoverErosionInwardsCalculationService.cs) (revision 63ef22d4a71266b90b211becbc34cb45a93f8f14) @@ -152,28 +152,15 @@ throw new ArgumentNullException(nameof(generalInput)); } - var totalSteps = 1; string hlcdDirectory = Path.GetDirectoryName(hydraulicBoundaryDatabaseFilePath); SubCalculationAssessmentOutput dikeHeightOutput = null; SubCalculationAssessmentOutput overtoppingRateOutput = null; - if (calculation.InputParameters.DikeHeightCalculationType != DikeHeightCalculationType.NoCalculation) - { - dikeHeightCalculator = HydraRingCalculatorFactory.Instance.CreateDikeHeightCalculator(hlcdDirectory); - totalSteps++; - } + int numberOfCalculators = CreateCalculators(calculation, hlcdDirectory); - if (calculation.InputParameters.OvertoppingRateCalculationType != OvertoppingRateCalculationType.NoCalculation) - { - totalSteps++; - overtoppingRateCalculator = HydraRingCalculatorFactory.Instance.CreateOvertoppingRateCalculator(hlcdDirectory); - } - - NotifyProgress(Resources.GrassCoverErosionInwardsCalculationService_Calculate_Executing_overtopping_calculation, 1, totalSteps); + NotifyProgress(Resources.GrassCoverErosionInwardsCalculationService_Calculate_Executing_overtopping_calculation, 1, numberOfCalculators); CalculationServiceHelper.LogCalculationBeginTime(calculation.Name); - overtoppingCalculator = HydraRingCalculatorFactory.Instance.CreateOvertoppingCalculator(hlcdDirectory); - try { CalculateOvertopping(calculation, generalInput, hydraulicBoundaryDatabaseFilePath); @@ -183,27 +170,16 @@ return; } - if (dikeHeightCalculator != null) - { - NotifyProgress(Resources.GrassCoverErosionInwardsCalculationService_Calculate_Executing_dikeheight_calculation, 2, totalSteps); + dikeHeightOutput = CalculateDikeHeight(calculation, + assessmentSection, + generalInput, + failureMechanismContribution, + hydraulicBoundaryDatabaseFilePath, + numberOfCalculators); - double norm = GetProbabilityToUse(assessmentSection.FailureMechanismContribution.Norm, - generalInput, failureMechanismContribution, - calculation.InputParameters.DikeHeightCalculationType); - DikeHeightCalculationInput dikeHeightCalculationInput = CreateDikeHeightInput(calculation, norm, - generalInput, - hydraulicBoundaryDatabaseFilePath); - bool dikeHeightCalculated = CalculateDikeHeight(dikeHeightCalculationInput, calculation.Name); - - if (canceled) - { - return; - } - - if (dikeHeightCalculated) - { - dikeHeightOutput = CreateDikeHeightAssessmentOutput(calculation.Name, dikeHeightCalculationInput.Beta, norm); - } + if (canceled) + { + return; } calculation.Output = new GrassCoverErosionInwardsOutput( @@ -227,6 +203,63 @@ } } + private SubCalculationAssessmentOutput CalculateDikeHeight(GrassCoverErosionInwardsCalculation calculation, + IAssessmentSection assessmentSection, + GeneralGrassCoverErosionInwardsInput generalInput, + double failureMechanismContribution, + string hydraulicBoundaryDatabaseFilePath, + int numberOfCalculators) + { + if (dikeHeightCalculator == null) + { + return null; + } + + NotifyProgress(Resources.GrassCoverErosionInwardsCalculationService_Calculate_Executing_dikeheight_calculation, 2, numberOfCalculators); + + double norm = GetProbabilityToUse(assessmentSection.FailureMechanismContribution.Norm, + generalInput, failureMechanismContribution, + calculation.InputParameters.DikeHeightCalculationType); + DikeHeightCalculationInput dikeHeightCalculationInput = CreateDikeHeightInput(calculation, norm, + generalInput, + hydraulicBoundaryDatabaseFilePath); + + bool dikeHeightCalculated = CalculateDikeHeight(dikeHeightCalculationInput, calculation.Name); + + if (canceled) + { + return null; + } + + if (dikeHeightCalculated) + { + return CreateDikeHeightAssessmentOutput(calculation.Name, dikeHeightCalculationInput.Beta, norm); + } + + return null; + } + + private int CreateCalculators(GrassCoverErosionInwardsCalculation calculation, string hlcdDirectory) + { + var numberOfCalculators = 1; + + overtoppingCalculator = HydraRingCalculatorFactory.Instance.CreateOvertoppingCalculator(hlcdDirectory); + + if (calculation.InputParameters.DikeHeightCalculationType != DikeHeightCalculationType.NoCalculation) + { + dikeHeightCalculator = HydraRingCalculatorFactory.Instance.CreateDikeHeightCalculator(hlcdDirectory); + numberOfCalculators++; + } + + if (calculation.InputParameters.OvertoppingRateCalculationType != OvertoppingRateCalculationType.NoCalculation) + { + numberOfCalculators++; + overtoppingRateCalculator = HydraRingCalculatorFactory.Instance.CreateOvertoppingRateCalculator(hlcdDirectory); + } + + return numberOfCalculators; + } + /// /// Performs an overtopping calculation. ///