Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Calculator/IWaveConditionsCosineCalculator.cs
===================================================================
diff -u -rbc9c19b950e12688f8f97a659af2f2cd3295956a -r484b07491e6cbb52ef2dc36bb236fb3b349d3141
--- Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Calculator/IWaveConditionsCosineCalculator.cs (.../IWaveConditionsCosineCalculator.cs) (revision bc9c19b950e12688f8f97a659af2f2cd3295956a)
+++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Calculator/IWaveConditionsCosineCalculator.cs (.../IWaveConditionsCosineCalculator.cs) (revision 484b07491e6cbb52ef2dc36bb236fb3b349d3141)
@@ -31,18 +31,33 @@
{
///
/// Gets the height of the wave.
+ /// [m]
///
double WaveHeight { get; }
///
- /// Gets the angle of the wave.
+ /// Gets the angle of the wave with respect to the dike normal.
+ /// [deg]
///
double WaveAngle { get; }
///
+ /// Gets the direction of the wave with respect to the North.
+ /// [deg]
+ ///
+ double WaveDirection { get; }
+
+ ///
/// Gets the peak period of the wave.
+ /// [s]
///
double WavePeakPeriod { get; }
+
+ ///
+ /// Gets the calculated reliability index.
+ /// [-]
+ ///
+ double ReliabilityIndex { get; }
///
/// Gets the temporary output directory that is generated during the Hydra-Ring calculation.s
Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Calculator/WaveConditionsCosineCalculator.cs
===================================================================
diff -u -reb5faa58e3d91d44faf0d7544fa0c33be54c0c4a -r484b07491e6cbb52ef2dc36bb236fb3b349d3141
--- Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Calculator/WaveConditionsCosineCalculator.cs (.../WaveConditionsCosineCalculator.cs) (revision eb5faa58e3d91d44faf0d7544fa0c33be54c0c4a)
+++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Calculator/WaveConditionsCosineCalculator.cs (.../WaveConditionsCosineCalculator.cs) (revision 484b07491e6cbb52ef2dc36bb236fb3b349d3141)
@@ -34,6 +34,7 @@
internal class WaveConditionsCosineCalculator : HydraRingCalculatorBase, IWaveConditionsCosineCalculator
{
private readonly WaveConditionsCalculationParser waveConditionsCalculationParser;
+ private readonly ReliabilityIndexCalculationParser reliabilityIndexCalculationParser;
///
/// Create a new instance of .
@@ -45,15 +46,20 @@
: base(hlcdDirectory, ringId)
{
waveConditionsCalculationParser = new WaveConditionsCalculationParser();
+ reliabilityIndexCalculationParser = new ReliabilityIndexCalculationParser();
WaveHeight = double.NaN;
WaveAngle = double.NaN;
WavePeakPeriod = double.NaN;
+ WaveDirection = double.NaN;
+ ReliabilityIndex = double.NaN;
}
public double WaveHeight { get; private set; }
public double WaveAngle { get; private set; }
public double WavePeakPeriod { get; private set; }
+ public double WaveDirection { get; private set; }
+ public double ReliabilityIndex { get; private set; }
public void Calculate(WaveConditionsCosineCalculationInput input)
{
@@ -63,6 +69,7 @@
protected override IEnumerable GetParsers()
{
yield return waveConditionsCalculationParser;
+ yield return reliabilityIndexCalculationParser;
}
protected override void SetOutputs()
@@ -71,8 +78,14 @@
{
WaveHeight = waveConditionsCalculationParser.Output.WaveHeight;
WaveAngle = waveConditionsCalculationParser.Output.WaveAngle;
+ WaveDirection = waveConditionsCalculationParser.Output.WaveDirection;
WavePeakPeriod = waveConditionsCalculationParser.Output.WavePeakPeriod;
}
+
+ if (reliabilityIndexCalculationParser.Output != null)
+ {
+ ReliabilityIndex = reliabilityIndexCalculationParser.Output.CalculatedReliabilityIndex;
+ }
}
}
}
\ No newline at end of file
Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Data/Output/WaveConditionsCalculationOutput.cs
===================================================================
diff -u -r2973c5f790a5131e427bd5f73e2a620044199639 -r484b07491e6cbb52ef2dc36bb236fb3b349d3141
--- Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Data/Output/WaveConditionsCalculationOutput.cs (.../WaveConditionsCalculationOutput.cs) (revision 2973c5f790a5131e427bd5f73e2a620044199639)
+++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Data/Output/WaveConditionsCalculationOutput.cs (.../WaveConditionsCalculationOutput.cs) (revision 484b07491e6cbb52ef2dc36bb236fb3b349d3141)
@@ -31,12 +31,14 @@
///
/// The calculated wave height.
/// The calculated wave peak period.
- /// The calculated wave angle.
- public WaveConditionsCalculationOutput(double waveHeight, double wavePeakPeriod, double waveAngle)
+ /// The calculated wave angle with respect to the dike normal..
+ /// The calculated wave direction with respect to North.
+ public WaveConditionsCalculationOutput(double waveHeight, double wavePeakPeriod, double waveAngle, double waveDirection)
{
WaveHeight = waveHeight;
WavePeakPeriod = wavePeakPeriod;
WaveAngle = waveAngle;
+ WaveDirection = waveDirection;
}
///
@@ -50,8 +52,13 @@
public double WavePeakPeriod { get; private set; }
///
- /// Gets the calculated wave angle.
+ /// Gets the calculated wave angle with respect to the dike normal.
///
public double WaveAngle { get; private set; }
+
+ ///
+ /// Gets the calculated wave direction with respect to North.
+ ///
+ public double WaveDirection { get; set; }
}
}
\ No newline at end of file
Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Parsers/WaveConditionsCalculationParser.cs
===================================================================
diff -u -r12fa48e392e145311f2f6fe5822a8692594aaf0f -r484b07491e6cbb52ef2dc36bb236fb3b349d3141
--- Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Parsers/WaveConditionsCalculationParser.cs (.../WaveConditionsCalculationParser.cs) (revision 12fa48e392e145311f2f6fe5822a8692594aaf0f)
+++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Parsers/WaveConditionsCalculationParser.cs (.../WaveConditionsCalculationParser.cs) (revision 484b07491e6cbb52ef2dc36bb236fb3b349d3141)
@@ -33,13 +33,15 @@
public class WaveConditionsCalculationParser : IHydraRingFileParser
{
private const string waveAngleText = "Wave angle";
+ private const string waveDirectionText = "Wave direction";
private const string waveHeightText = "Wave height";
private const string wavePeakPeriodText = "Wave period";
private const string reductionFactorText = "reduction factor";
private const char equalsCharacter = '=';
private double? waveAngle;
+ private double? waveDirection;
private double? waveHeight;
private double? wavePeakPeriod;
@@ -65,9 +67,10 @@
private void SetOutput()
{
- if (waveAngle != null && waveHeight != null && wavePeakPeriod != null)
+ if (waveAngle != null && waveHeight != null && wavePeakPeriod != null && waveDirection != null)
{
- Output = new WaveConditionsCalculationOutput(waveHeight.Value, wavePeakPeriod.Value, waveAngle.Value);
+ Output = new WaveConditionsCalculationOutput(waveHeight.Value, wavePeakPeriod.Value, waveAngle.Value,
+ waveDirection.Value);
}
}
@@ -82,6 +85,7 @@
string currentLine = file.ReadLine();
waveAngle = TryParseWaveAngle(currentLine) ?? waveAngle;
+ waveDirection = TryParseWaveDirection(currentLine) ?? waveDirection;
waveHeight = TryParseWaveHeight(currentLine) ?? waveHeight;
wavePeakPeriod = TryParseWavePeakPeriod(currentLine) ?? wavePeakPeriod;
}
@@ -99,6 +103,17 @@
return null;
}
+ private static double? TryParseWaveDirection(string line)
+ {
+ if (line.Contains(waveDirectionText))
+ {
+ string resultAsString = line.Split(equalsCharacter)[1].Trim();
+ return ParseStringResult(resultAsString);
+ }
+
+ return null;
+ }
+
private static double? TryParseWaveHeight(string line)
{
if (line.Contains(waveHeightText))
Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Calculator/WaveConditionsCosineCalculatorTest.cs
===================================================================
diff -u -r07cf1185ccd0260f3e72818dff093ff39dbdd816 -r484b07491e6cbb52ef2dc36bb236fb3b349d3141
--- Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Calculator/WaveConditionsCosineCalculatorTest.cs (.../WaveConditionsCosineCalculatorTest.cs) (revision 07cf1185ccd0260f3e72818dff093ff39dbdd816)
+++ Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Calculator/WaveConditionsCosineCalculatorTest.cs (.../WaveConditionsCosineCalculatorTest.cs) (revision 484b07491e6cbb52ef2dc36bb236fb3b349d3141)
@@ -37,7 +37,9 @@
Assert.IsInstanceOf(calculator);
Assert.IsNaN(calculator.WaveHeight);
Assert.IsNaN(calculator.WaveAngle);
+ Assert.IsNaN(calculator.WaveDirection);
Assert.IsNaN(calculator.WavePeakPeriod);
+ Assert.IsNaN(calculator.ReliabilityIndex);
Assert.IsNull(calculator.OutputDirectory);
}
}
Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Data/Output/WaveConditionsCalculationOutputTest.cs
===================================================================
diff -u -rfb6c8cb473282ccd9b920afddb33a2284c7274cd -r484b07491e6cbb52ef2dc36bb236fb3b349d3141
--- Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Data/Output/WaveConditionsCalculationOutputTest.cs (.../WaveConditionsCalculationOutputTest.cs) (revision fb6c8cb473282ccd9b920afddb33a2284c7274cd)
+++ Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Data/Output/WaveConditionsCalculationOutputTest.cs (.../WaveConditionsCalculationOutputTest.cs) (revision 484b07491e6cbb52ef2dc36bb236fb3b349d3141)
@@ -32,16 +32,18 @@
{
// Setup
const double waveAngle = 3.0;
+ const double waveDirection = 5.0;
const double waveHeight = 9.93;
const double wavePeakPeriod = 18;
-
+
// Call
- var output = new WaveConditionsCalculationOutput(waveHeight, wavePeakPeriod, waveAngle);
+ var output = new WaveConditionsCalculationOutput(waveHeight, wavePeakPeriod, waveAngle, waveDirection);
// Assert
Assert.AreEqual(waveHeight, output.WaveHeight);
Assert.AreEqual(wavePeakPeriod, output.WavePeakPeriod);
Assert.AreEqual(waveAngle, output.WaveAngle);
+ Assert.AreEqual(waveDirection, output.WaveDirection);
}
}
}
\ No newline at end of file
Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Parsers/WaveConditionsCalculationParserTest.cs
===================================================================
diff -u -re69acb9595f7bf1d202ddd1fb51934b66768b75d -r484b07491e6cbb52ef2dc36bb236fb3b349d3141
--- Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Parsers/WaveConditionsCalculationParserTest.cs (.../WaveConditionsCalculationParserTest.cs) (revision e69acb9595f7bf1d202ddd1fb51934b66768b75d)
+++ Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Parsers/WaveConditionsCalculationParserTest.cs (.../WaveConditionsCalculationParserTest.cs) (revision 484b07491e6cbb52ef2dc36bb236fb3b349d3141)
@@ -86,6 +86,7 @@
Assert.AreEqual(22.01300, parser.Output.WaveAngle);
Assert.AreEqual(1.87957, parser.Output.WaveHeight);
Assert.AreEqual(11.15140, parser.Output.WavePeakPeriod);
+ Assert.AreEqual(337.98700, parser.Output.WaveDirection);
Assert.IsTrue(TestHelper.CanOpenFileForWrite(Path.Combine(workingDirectory, outputFileName)));
}
@@ -104,7 +105,23 @@
Assert.IsTrue(TestHelper.CanOpenFileForWrite(Path.Combine(workingDirectory, outputFileName)));
}
+
[Test]
+ public void Parse_InvalidHydraRingOutputFileWaveDirectionMissing_OutputNull()
+ {
+ // Setup
+ var parser = new WaveConditionsCalculationParser();
+ var workingDirectory = Path.Combine(testDataPath, "output-no-waveDirection");
+
+ // Call
+ parser.Parse(workingDirectory, sectionId);
+
+ // Assert
+ Assert.IsNull(parser.Output);
+ Assert.IsTrue(TestHelper.CanOpenFileForWrite(Path.Combine(workingDirectory, outputFileName)));
+ }
+
+ [Test]
public void Parse_InvalidHydraRingOutputFileWaveHeightMissing_OutputNull()
{
// Setup
Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/test-data/Parsers/WaveConditionsCalculationParser/output-no-waveDirection/1-output.txt
===================================================================
diff -u
--- Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/test-data/Parsers/WaveConditionsCalculationParser/output-no-waveDirection/1-output.txt (revision 0)
+++ Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/test-data/Parsers/WaveConditionsCalculationParser/output-no-waveDirection/1-output.txt (revision 484b07491e6cbb52ef2dc36bb236fb3b349d3141)
@@ -0,0 +1,16 @@
+Executable name : D:\WTI\bin\Debug\HydraRing\MechanismComputation.exe
+Executable version : 16.1.1.6952
+=====================================================================================
+ Submechanism = Q-variant
+ Waterlevel Q-variant (m+NAP) = 1.00000E+00
+ Resistance Q-variant (-) = 5.00000E+00
+ Dike normal (�) = 0.00000E+00
+ Wave angle (�) = 2.28411E+01
+ Wave angle reduction factor (-) = 9.36760E-01
+ Local waterlevel (m+NAP) = 2.48827E+00
+ Wave height (m) = 1.97435E+00
+ Wave period (s) = 1.20161E+01
+ Load Q-variant (-) = 4.99986E+00
+ Limit state function Z1 (-) = -1.48827E+00
+ Limit state function Z2 (-) = 1.40333E-04
+ Limit state function Z (-) = 1.40333E-04
\ No newline at end of file
Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.TestUtil/Calculator/TestHydraRingCalculatorFactory.cs
===================================================================
diff -u -r12fa48e392e145311f2f6fe5822a8692594aaf0f -r484b07491e6cbb52ef2dc36bb236fb3b349d3141
--- Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.TestUtil/Calculator/TestHydraRingCalculatorFactory.cs (.../TestHydraRingCalculatorFactory.cs) (revision 12fa48e392e145311f2f6fe5822a8692594aaf0f)
+++ Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.TestUtil/Calculator/TestHydraRingCalculatorFactory.cs (.../TestHydraRingCalculatorFactory.cs) (revision 484b07491e6cbb52ef2dc36bb236fb3b349d3141)
@@ -110,6 +110,8 @@
public class TestWaveConditionsCosineCalculator : TestHydraRingCalculator, IWaveConditionsCosineCalculator
{
+ public double WaveDirection { get; private set; }
+ public double ReliabilityIndex { get; private set; }
public string OutputDirectory { get; set; }
public string LastErrorFileContent { get; set; }
public double WaveHeight { get; set; }