Index: Ringtoets/Common/src/Ringtoets.Common.Service/WaveHeightCalculationService.cs =================================================================== diff -u -r24e18b63dccdb718dac61c69cc55289553cbaa47 -r00a04da4497b53cd599b616deb0431c4cea9baeb --- Ringtoets/Common/src/Ringtoets.Common.Service/WaveHeightCalculationService.cs (.../WaveHeightCalculationService.cs) (revision 24e18b63dccdb718dac61c69cc55289553cbaa47) +++ Ringtoets/Common/src/Ringtoets.Common.Service/WaveHeightCalculationService.cs (.../WaveHeightCalculationService.cs) (revision 00a04da4497b53cd599b616deb0431c4cea9baeb) @@ -23,6 +23,7 @@ using System.IO; using System.Linq; using Core.Common.Base.Data; +using Core.Common.Utils; using log4net; using Ringtoets.Common.IO.HydraRing; using Ringtoets.Common.Service.MessageProviders; @@ -96,18 +97,19 @@ try { - calculator.Calculate(CreateInput(hydraulicBoundaryLocation, norm, hydraulicBoundaryDatabaseFilePath)); + WaveHeightCalculationInput calculationInput = CreateInput(hydraulicBoundaryLocation, norm, hydraulicBoundaryDatabaseFilePath); + calculator.Calculate(calculationInput); if (string.IsNullOrEmpty(calculator.LastErrorFileContent)) { hydraulicBoundaryLocation.WaveHeight = (RoundedDouble) calculator.WaveHeight; hydraulicBoundaryLocation.WaveHeightCalculationConvergence = RingtoetsCommonDataCalculationService.CalculationConverged(calculator.ReliabilityIndex, norm); - if (hydraulicBoundaryLocation.WaveHeightCalculationConvergence != CalculationConvergence.CalculatedConverged) - { - log.Warn(messageProvider.GetCalculatedNotConvergedMessage(hydraulicBoundaryLocation.Name)); - } + hydraulicBoundaryLocation.WaveHeightOutput = CreateHydraulicBoundaryLocationOutput(messageProvider, + hydraulicBoundaryLocation.Name, + calculationInput.Beta, + norm); } } catch (HydraRingFileParserException) @@ -154,6 +156,32 @@ } } + private HydraulicBoundaryLocationOutput CreateHydraulicBoundaryLocationOutput(ICalculationMessageProvider messageProvider, + string hydraulicBoundaryLocationName, + double targetReliability, + double targetProbability) + { + var designWaterLevel = calculator.WaveHeight; + var reliability = calculator.ReliabilityIndex; + var probability = StatisticsConverter.ReliabilityToProbability(reliability); + + CalculationConvergence converged = RingtoetsCommonDataCalculationService.CalculationConverged( + calculator.ReliabilityIndex, targetProbability); + + if (converged != CalculationConvergence.CalculatedConverged) + { + log.Warn(messageProvider.GetCalculatedNotConvergedMessage(hydraulicBoundaryLocationName)); + } + + return new HydraulicBoundaryLocationOutput( + designWaterLevel, + targetProbability, + targetReliability, + probability, + reliability, + converged); + } + private WaveHeightCalculationInput CreateInput(HydraulicBoundaryLocation hydraulicBoundaryLocation, double norm, string hydraulicBoundaryDatabaseFilePath) { var waveHeightCalculationInput = new WaveHeightCalculationInput(1, hydraulicBoundaryLocation.Id, norm);