Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Service/HydraRingCalculationService.cs
===================================================================
diff -u -r08e96a88960a9e011a8547c7ec851b8a73480554 -r85a052e3663239c7a914d63aff9fb01f72b1db74
--- Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Service/HydraRingCalculationService.cs (.../HydraRingCalculationService.cs) (revision 08e96a88960a9e011a8547c7ec851b8a73480554)
+++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Service/HydraRingCalculationService.cs (.../HydraRingCalculationService.cs) (revision 85a052e3663239c7a914d63aff9fb01f72b1db74)
@@ -19,12 +19,15 @@
// Stichting Deltares and remain full property of Stichting Deltares at all times.
// All rights reserved.
+using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using Ringtoets.HydraRing.Calculation.Data;
using Ringtoets.HydraRing.Calculation.Data.Input;
+using Ringtoets.HydraRing.Calculation.Data.Output;
+using Ringtoets.HydraRing.Calculation.Parsers;
using Ringtoets.HydraRing.Calculation.Providers;
namespace Ringtoets.HydraRing.Calculation.Service
@@ -35,22 +38,24 @@
public static class HydraRingCalculationService
{
///
- /// This method performs a single failure mechanism calculation via Hydra-Ring.
+ /// This method performs a type 2 calculation via Hydra-Ring ("iterate towards a target probability, provided as reliability index").
///
- /// The directory of the HLCD file that should be used for performing the failure mechanism calculation.
- /// The id of the ring to perform the failure mechanism calculation for.
- /// The to use while executing the failure mechanism calculation.
- /// The to use while executing the failure mechanism calculation.
- /// The failure mechanism calculation to perform.
- public static void PerformFailureMechanismCalculation(string hlcdDirectory, string ringId, HydraRingTimeIntegrationSchemeType timeIntegrationSchemeType, HydraRingUncertaintiesType uncertaintiesType, HydraRingCalculationInput hydraRingCalculationInput)
+ /// The directory of the HLCD file that should be used for performing the calculation.
+ /// The id of the ring to perform the calculation for.
+ /// The to use while executing the calculation.
+ /// The to use while executing the calculation.
+ /// The input of the calculation to perform.
+ /// A or null when something went wrong.
+ public static TargetProbabilityCalculationOutput PerformCalculation(string hlcdDirectory, string ringId, HydraRingTimeIntegrationSchemeType timeIntegrationSchemeType, HydraRingUncertaintiesType uncertaintiesType, HydraRingCalculationInput hydraRingCalculationInput)
{
+ return PerformCalculation(hlcdDirectory, ringId, timeIntegrationSchemeType, uncertaintiesType, hydraRingCalculationInput, (outputFilePath, ouputDatabasePath) => TargetProbabilityCalculationParser.Parse(outputFilePath, hydraRingCalculationInput.DikeSection.SectionId));
+ }
+
+ private static T PerformCalculation(string hlcdDirectory, string ringId, HydraRingTimeIntegrationSchemeType timeIntegrationSchemeType, HydraRingUncertaintiesType uncertaintiesType, HydraRingCalculationInput hydraRingCalculationInput, Func parseFunction)
+ {
var hydraulicBoundaryLocationId = hydraRingCalculationInput.HydraulicBoundaryLocationId;
var mechanismId = new FailureMechanismDefaultsProvider().GetFailureMechanismDefaults(hydraRingCalculationInput.FailureMechanismType).MechanismId;
- // Create a Hydra-Ring configuration service
- var hydraRingConfigurationService = new HydraRingConfigurationService(ringId, timeIntegrationSchemeType, uncertaintiesType);
- hydraRingConfigurationService.AddHydraRingCalculationInput(hydraRingCalculationInput);
-
// Calculation file names
var outputFileName = "designTable.txt";
var logFileName = hydraulicBoundaryLocationId + ".log";
@@ -59,6 +64,8 @@
// Obtain some calculation file paths
var workingDirectory = CreateWorkingDirectory(hydraulicBoundaryLocationId.ToString());
+ var outputFilePath = Path.Combine(workingDirectory, outputFileName);
+ var outputDatabasePath = Path.Combine(workingDirectory, "temp.sqlite");
var iniFilePath = Path.Combine(workingDirectory, iniFileName);
var dataBaseCreationScriptFilePath = Path.Combine(workingDirectory, dataBaseCreationScriptFileName);
var hlcdFilePath = Path.Combine(hlcdDirectory, "HLCD.sqlite");
@@ -85,6 +92,8 @@
});
// Write the database creation script
+ var hydraRingConfigurationService = new HydraRingConfigurationService(ringId, timeIntegrationSchemeType, uncertaintiesType);
+ hydraRingConfigurationService.AddHydraRingCalculationInput(hydraRingCalculationInput);
File.WriteAllText(dataBaseCreationScriptFilePath, hydraRingConfigurationService.GenerateDataBaseCreationScript());
// Perform the calculation
@@ -101,7 +110,7 @@
hydraRingProcess.Start();
hydraRingProcess.WaitForExit();
- // TODO: Parse output
+ return parseFunction(outputFilePath, outputDatabasePath);
}
private static string CreateWorkingDirectory(string folderName)
Index: Ringtoets/Integration/src/Ringtoets.Integration.Plugin/RingtoetsGuiPlugin.cs
===================================================================
diff -u -rde737ee4b24659d188bb137d385572159bc099ff -r85a052e3663239c7a914d63aff9fb01f72b1db74
--- Ringtoets/Integration/src/Ringtoets.Integration.Plugin/RingtoetsGuiPlugin.cs (.../RingtoetsGuiPlugin.cs) (revision de737ee4b24659d188bb137d385572159bc099ff)
+++ Ringtoets/Integration/src/Ringtoets.Integration.Plugin/RingtoetsGuiPlugin.cs (.../RingtoetsGuiPlugin.cs) (revision 85a052e3663239c7a914d63aff9fb01f72b1db74)
@@ -610,7 +610,7 @@
protected override void OnRun()
{
- HydraRingCalculationService.PerformFailureMechanismCalculation(hlcdDirectory, ringId, timeIntegrationSchemeType, uncertaintiesType, new AssessmentLevelCalculationInput(hydraulicBoundaryLocationId, beta));
+ HydraRingCalculationService.PerformCalculation(hlcdDirectory, ringId, timeIntegrationSchemeType, uncertaintiesType, new AssessmentLevelCalculationInput(hydraulicBoundaryLocationId, beta));
}
protected override void OnCancel()
@@ -627,7 +627,7 @@
{
get
{
- return "Toetspeilen berekenen...";
+ return string.Format("Toetspeil berekenen voor locatie {0}...", hydraulicBoundaryLocationId);
}
}
}