// Copyright (C) Stichting Deltares 2016. All rights reserved. // // This file is part of Ringtoets. // // Ringtoets is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . // // All names, logos, and references to "Deltares" are registered trademarks of // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. using System; using Core.Common.Utils; using Ringtoets.Common.Service; using Ringtoets.Revetment.Data; namespace Ringtoets.Revetment.Service { /// /// Class for calculating the . /// public static class WaveConditionsService { /// /// Calculates the based on the provided parameters. /// /// The calculated water level. /// The calculated wave height. /// The calculated wave peak period. /// The calculated wave angle w.r.t the dike normal. /// The calculated wave direction w.r.t. North. /// The target norm to calculate for. /// The calculated reliability. /// The calculated . /// Thrown when the target probability or /// calculated probability lies outside [0, 1] and is not . public static WaveConditionsOutput Calculate(double waterLevel, double waveHeight, double wavePeakPeriod, double waveAngle, double waveDirection, double norm, double calculatedReliability) { double targetReliability = StatisticsConverter.ProbabilityToReliability(norm); double targetProbability = StatisticsConverter.ReliabilityToProbability(targetReliability); double calculatedProbability = StatisticsConverter.ReliabilityToProbability(calculatedReliability); return new WaveConditionsOutput(waterLevel, waveHeight, wavePeakPeriod, waveAngle, waveDirection, targetProbability, targetReliability, calculatedProbability, calculatedReliability) { CalculationConvergence = RingtoetsCommonDataCalculationService.CalculationConverged(calculatedReliability, norm) }; } } }