Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/Deltares.DamEngine.Calculators.Tests.csproj
===================================================================
diff -u -r1119 -r1181
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/Deltares.DamEngine.Calculators.Tests.csproj (.../Deltares.DamEngine.Calculators.Tests.csproj) (revision 1119)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/Deltares.DamEngine.Calculators.Tests.csproj (.../Deltares.DamEngine.Calculators.Tests.csproj) (revision 1181)
@@ -136,6 +136,9 @@
PreserveNewest
+
+ PreserveNewest
+
PreserveNewest
Index: DamEngine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlInput.cs
===================================================================
diff -u -r1167 -r1181
--- DamEngine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlInput.cs (.../FillDamFromXmlInput.cs) (revision 1167)
+++ DamEngine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlInput.cs (.../FillDamFromXmlInput.cs) (revision 1181)
@@ -364,14 +364,16 @@
// Regional settings
location.DikeTableHeight = inputLocation.DikeTableHeight;
var assesmentRegionalOptions = inputLocation.AssesmentRegionalOptions;
- location.BoezemLevelHbp = assesmentRegionalOptions.BoezemLevelHbp;
- location.BoezemLevelLbp = assesmentRegionalOptions.BoezemLevelLbp;
- location.BoezemLevelTp = assesmentRegionalOptions.BoezemLevelTp;
- location.RwBankProtectionBottomLevel = assesmentRegionalOptions.RegionalBankProtectionBottomLevel;
- location.DredgingDepth = assesmentRegionalOptions.DredgingDepth;
- location.DetrimentFactor = assesmentRegionalOptions.DetrimentFactor;
- location.DikeMaterialType = ConversionHelper.ConvertToSoilType(assesmentRegionalOptions.DikeMaterialType);
-
+ if (assesmentRegionalOptions != null)
+ {
+ location.BoezemLevelHbp = assesmentRegionalOptions.BoezemLevelHbp;
+ location.BoezemLevelLbp = assesmentRegionalOptions.BoezemLevelLbp;
+ location.BoezemLevelTp = assesmentRegionalOptions.BoezemLevelTp;
+ location.RwBankProtectionBottomLevel = assesmentRegionalOptions.RegionalBankProtectionBottomLevel;
+ location.DredgingDepth = assesmentRegionalOptions.DredgingDepth;
+ location.DetrimentFactor = assesmentRegionalOptions.DetrimentFactor;
+ location.DikeMaterialType = ConversionHelper.ConvertToSoilType(assesmentRegionalOptions.DikeMaterialType);
+ }
// Design options
var designOptions = inputLocation.DesignOptions;
if (designOptions != null)
Index: DamEngine/trunk/src/Deltares.DamEngine.Data/General/Results/DesignResult.cs
===================================================================
diff -u -r1148 -r1181
--- DamEngine/trunk/src/Deltares.DamEngine.Data/General/Results/DesignResult.cs (.../DesignResult.cs) (revision 1148)
+++ DamEngine/trunk/src/Deltares.DamEngine.Data/General/Results/DesignResult.cs (.../DesignResult.cs) (revision 1181)
@@ -58,6 +58,17 @@
{
get
{
+ if (DamFailureMechanismeCalculation != null)
+ {
+ switch (DamFailureMechanismeCalculation.FailureMechanismSystemType)
+ {
+ case FailureMechanismSystemType.StabilityInside:
+ case FailureMechanismSystemType.StabilityOutside:
+ return StabilityDesignResults.SafetyFactor;
+ case FailureMechanismSystemType.Piping:
+ return PipingDesignResults.SafetyFactor();
+ }
+ }
return safetyFactor;
}
}
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/RegionalAssessment/RegionalScenariosCalculationTests.cs
===================================================================
diff -u -r1119 -r1181
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/RegionalAssessment/RegionalScenariosCalculationTests.cs (.../RegionalScenariosCalculationTests.cs) (revision 1119)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/RegionalAssessment/RegionalScenariosCalculationTests.cs (.../RegionalScenariosCalculationTests.cs) (revision 1181)
@@ -20,8 +20,10 @@
// All rights reserved.
using System.IO;
+using Deltares.DamEngine.Data.General;
using Deltares.DamEngine.Interface;
using Deltares.DamEngine.Io;
+using Deltares.DamEngine.TestHelpers;
using NUnit.Framework;
namespace Deltares.DamEngine.Calculators.Tests.RegionalAssessment
@@ -34,7 +36,7 @@
[Test, Category("Work_In_Progress")]
public void Test()
{
- const string calcDir = "TestOutStabBishop";
+ const string calcDir = "TestOutAssessment";
if (Directory.Exists(calcDir))
{
Directory.Delete(calcDir, true); // delete previous results
@@ -45,37 +47,44 @@
const string fileName = @"TestFiles\RegionalAssessment.xml";
string inputString = File.ReadAllText(fileName);
- inputString = ChangeValueInXml(inputString, "ProjectPath", ""); // Current directory will be used
- inputString = ChangeValueInXml(inputString, "CalculationMap", calcDir); // Current directory will be used
- inputString = ChangeValueInXml(inputString, "MapForSoilgeometries2D", @"TestFiles\DAM Tutorial Design.geometries2D.0\");
- inputString = ChangeValueInXml(inputString, "SoilDatabaseName", @"TestFiles\DAM Tutorial Design0.soilmaterials.mdb");
+ inputString = XmlAdapter.ChangeValueInXml(inputString, "ProjectPath", ""); // Current directory will be used
+ inputString = XmlAdapter.ChangeValueInXml(inputString, "CalculationMap", calcDir); // Current directory will be used
+ //inputString = XmlAdapter.ChangeValueInXml(inputString, "MapForSoilgeometries2D", @"TestFiles\DAM Tutorial Design.geometries2D.0\");
+ inputString = XmlAdapter.ChangeValueInXml(inputString, "SoilDatabaseName", @"TestFiles\RegionalAssessment.soilmaterials.mdb");
var engineInterface = new EngineInterface(inputString);
Assert.IsNotNull(engineInterface.DamProjectData);
+ // Fake data that is not properly cummunicated as of yet (8/2/2018)
+ engineInterface.DamProjectData.DamProjectType = DamProjectType.AssessmentRegional;
+ //var dj = engineInterface.DamProjectData.DikeJob;
+ // engineInterface.DamProjectData.LocationJobs[0].Location.BoezemLevelHbp = -0.5;
+ // engineInterface.DamProjectData.LocationJobs[0].Location.BoezemLevelTp = -0.15;
+ // engineInterface.DamProjectData.LocationJobs[0].Location.BoezemLevelLbp = -0.3;
+ // engineInterface.DamProjectData.LocationJobs[0].Location.DredgingDepth = -4.8;
+ // engineInterface.DamProjectData.LocationJobs[0].Location.ModelFactors.RequiredSafetyFactorStabilityInnerSlope = 1;
+ // engineInterface.DamProjectData.LocationJobs[0].Location.ModelFactors.RequiredSafetyFactorPiping = 1;
+ // engineInterface.DamProjectData.LocationJobs[0].Location.ModelFactors.RequiredSafetyFactorStabilityOuterSlope = 1;
+ // engineInterface.DamProjectData.LocationJobs[0].Location.ModelFactors.UpliftCriterionStability = 1.2;
+ // engineInterface.DamProjectData.LocationJobs[0].Location.ModelFactors.UpliftCriterionPiping = 1.2;
+
+ engineInterface.DamProjectData.MaxCalculationCores = 1;
string outputString = engineInterface.Run();
Assert.IsNotNull(outputString);
var output = DamXmlSerialization.LoadOutputFromXmlString(outputString);
- Assert.AreEqual(1.282, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.SafetyFactor, tolerance);
+ Assert.AreEqual(1, output.Results.CalculationResults.LocationResults.Length);
+ // expected: 18 results overall: 3 Piping Bligh (scenario 10), 3 UpliftVan (scenario03) and 12 Bishop (scenario 7: 3 results, scenario 8: 9 results)
+ // Results are per scenario so expect 4
+ Assert.AreEqual(4, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult.Length);
+ // scenario03: 3 results
+ Assert.AreEqual(3, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[0].RegionalScenarioProfileResults.Length);
+ // scenario07: 3 results
+ Assert.AreEqual(3, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[1].RegionalScenarioProfileResults.Length);
+ // scenario08: 9 results
+ Assert.AreEqual(9, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[2].RegionalScenarioProfileResults.Length);
+ // scenario10: 3 results
+ //Assert.AreEqual(0.410, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.SafetyFactor, tolerance);
// Zone1SafetyFactor=1.282
- }
-
- public string ChangeValueInXml(string input, string key, string value)
- {
- string result = input;
- string searchString = key + "=\"";
- var startIndex = input.IndexOf(searchString);
- var length = searchString.Length;
- if (startIndex != -1)
- {
- // find next double quote
- var endIndex = input.Substring(startIndex + length).IndexOf("\"");
- string dirString = input.Substring(startIndex + length, endIndex);
- string pattern = searchString + dirString;
- string replacement = searchString + value;
- result = input.Replace(pattern, replacement);
- }
- return result;
- }
+ }
}
}
Index: DamEngine/trunk/src/Deltares.DamEngine.Interface/FillXmlOutputFromDam.cs
===================================================================
diff -u -r1175 -r1181
--- DamEngine/trunk/src/Deltares.DamEngine.Interface/FillXmlOutputFromDam.cs (.../FillXmlOutputFromDam.cs) (revision 1175)
+++ DamEngine/trunk/src/Deltares.DamEngine.Interface/FillXmlOutputFromDam.cs (.../FillXmlOutputFromDam.cs) (revision 1181)
@@ -68,7 +68,7 @@
{
// Design results
var designResults = damProjectData.DesignCalculations;
- if (designResults.Count > 0)
+ if (designResults != null && designResults.Count > 0)
{
output.Results.CalculationResults.DesignResults = new DesignResult[designResults.Count];
var designResultCount = 0;
@@ -275,51 +275,54 @@
// RegionalScenarios results
outputLocationResult.RegionalScenariosResult = new CalculationResultsLocationResultRegionalScenariosResult();
- outputLocationResult.RegionalScenariosResult.SafetyFactor = locationJob.LocationResult.RegionalScenariosResult.SafetyFactor;
- outputLocationResult.RegionalScenariosResult.CalculationResult = ConversionHelper.ConvertToOutputCalculationResult(locationJob.LocationResult.RegionalScenariosResult.CalculationResult);
- outputLocationResult.RegionalScenariosResult.RegionalScenarioResult = new RegionalScenarioResult[locationJob.LocationResult.RegionalScenariosResult.RegionalScenarioResults.Count];
- var scentel = 0;
- foreach (var regionalScenarioResult in locationJob.LocationResult.RegionalScenariosResult.RegionalScenarioResults)
+ if (locationJob.LocationResult.RegionalScenariosResult != null)
{
- var outputRegionalScenarioResult = new RegionalScenarioResult();
- outputRegionalScenarioResult.LoadSituation = ConversionHelper.ConvertToOutputLoadSituation(regionalScenarioResult.LoadSituation);
- outputRegionalScenarioResult.DikeDrySensitivity = ConversionHelper.ConvertToOutputDikeDrySensitivity(regionalScenarioResult.DikeDrySensitivity);
- outputRegionalScenarioResult.HydraulicShortcutType = ConversionHelper.ConvertToOutputHydraulicShortcutType(regionalScenarioResult.HydraulicShortcutType);
- outputRegionalScenarioResult.UpliftType = ConversionHelper.ConvertToOutputUpliftType(regionalScenarioResult.UpliftType);
- outputRegionalScenarioResult.ModelOption = ConversionHelper.ConvertToOutputMStabModelType(regionalScenarioResult.ModelOption);
- outputRegionalScenarioResult.ScenarioType = ConversionHelper.ConvertToOutputScenarioType(regionalScenarioResult.ScenarioType);
- outputRegionalScenarioResult.CalculationResult = ConversionHelper.ConvertToOutputCalculationResult(regionalScenarioResult.CalculationResult);
- outputRegionalScenarioResult.SafetyFactor = regionalScenarioResult.SafetyFactor;
- outputRegionalScenarioResult.RegionalScenarioProfileResults = new RegionalScenarioResultRegionalScenarioProfileResult[regionalScenarioResult.RegionalScenarioProfileResults.Count];
- var proftel = 0;
- foreach (var profileResult in regionalScenarioResult.RegionalScenarioProfileResults)
+ outputLocationResult.RegionalScenariosResult.SafetyFactor = locationJob.LocationResult.RegionalScenariosResult.SafetyFactor;
+ outputLocationResult.RegionalScenariosResult.CalculationResult = ConversionHelper.ConvertToOutputCalculationResult(locationJob.LocationResult.RegionalScenariosResult.CalculationResult);
+ outputLocationResult.RegionalScenariosResult.RegionalScenarioResult = new RegionalScenarioResult[locationJob.LocationResult.RegionalScenariosResult.RegionalScenarioResults.Count];
+ var scentel = 0;
+ foreach (var regionalScenarioResult in locationJob.LocationResult.RegionalScenariosResult.RegionalScenarioResults)
{
- var outputProfileResult = new RegionalScenarioResultRegionalScenarioProfileResult();
- outputProfileResult.LocationName = profileResult.LocationName;
- outputProfileResult.LoadSituation = ConversionHelper.ConvertToOutputLoadSituation(profileResult.LoadSituation);
- outputProfileResult.DikeDrySensitivity = ConversionHelper.ConvertToOutputDikeDrySensitivity(profileResult.DikeDrySensitivity);
- outputProfileResult.HydraulicShortcutType = ConversionHelper.ConvertToOutputHydraulicShortcutType(profileResult.HydraulicShortcutType);
- outputProfileResult.UpliftType = ConversionHelper.ConvertToOutputUpliftType(profileResult.UpliftType);
- outputProfileResult.MStabModelOption = ConversionHelper.ConvertToOutputMStabModelType(profileResult.MstabModelOption);
- outputProfileResult.PipingModelOption = ConversionHelper.ConvertToOutputPipingModelType(profileResult.PipingModelOption);
- outputProfileResult.ScenarioType = ConversionHelper.ConvertToOutputScenarioType(profileResult.ScenarioType);
- outputProfileResult.SoilProfileName = profileResult.SoilProfileName;
- outputProfileResult.SoilProfileProbability = profileResult.SoilProfileProbability;
- outputProfileResult.FailureMechanismType = ConversionHelper.ConvertToInputFailureMechanismSystemType(profileResult.FailureMechanismType);
- outputProfileResult.BaseFileName = profileResult.BaseFileName;
- outputProfileResult.RegionalResult = new RegionalResult();
- outputProfileResult.RegionalResult.RegionalResultType = ConversionHelper.ConvertToOutputRegionalResultType(profileResult.RegionalResultType);
- outputProfileResult.RegionalResult.SafetyFactor = profileResult.SafetyFactor;
- outputProfileResult.RegionalResult.ProbabilityOfFailure = profileResult.ProbabilityOfFailure;
- outputProfileResult.RegionalResult.CalculationResult = ConversionHelper.ConvertToOutputCalculationResult(profileResult.CalculationResult);
- outputLocationResult.RegionalScenariosResult.RegionalScenarioResult[scentel].RegionalScenarioProfileResults[proftel] = outputProfileResult;
- proftel++;
+ var outputRegionalScenarioResult = new RegionalScenarioResult();
+ outputRegionalScenarioResult.LoadSituation = ConversionHelper.ConvertToOutputLoadSituation(regionalScenarioResult.LoadSituation);
+ outputRegionalScenarioResult.DikeDrySensitivity = ConversionHelper.ConvertToOutputDikeDrySensitivity(regionalScenarioResult.DikeDrySensitivity);
+ outputRegionalScenarioResult.HydraulicShortcutType = ConversionHelper.ConvertToOutputHydraulicShortcutType(regionalScenarioResult.HydraulicShortcutType);
+ outputRegionalScenarioResult.UpliftType = ConversionHelper.ConvertToOutputUpliftType(regionalScenarioResult.UpliftType);
+ outputRegionalScenarioResult.ModelOption = ConversionHelper.ConvertToOutputMStabModelType(regionalScenarioResult.ModelOption);
+ outputRegionalScenarioResult.ScenarioType = ConversionHelper.ConvertToOutputScenarioType(regionalScenarioResult.ScenarioType);
+ outputRegionalScenarioResult.CalculationResult = ConversionHelper.ConvertToOutputCalculationResult(regionalScenarioResult.CalculationResult);
+ outputRegionalScenarioResult.SafetyFactor = regionalScenarioResult.SafetyFactor;
+ outputRegionalScenarioResult.RegionalScenarioProfileResults = new RegionalScenarioResultRegionalScenarioProfileResult[regionalScenarioResult.RegionalScenarioProfileResults.Count];
+ var proftel = 0;
+ foreach (var profileResult in regionalScenarioResult.RegionalScenarioProfileResults)
+ {
+ var outputProfileResult = new RegionalScenarioResultRegionalScenarioProfileResult();
+ outputProfileResult.LocationName = profileResult.LocationName;
+ outputProfileResult.LoadSituation = ConversionHelper.ConvertToOutputLoadSituation(profileResult.LoadSituation);
+ outputProfileResult.DikeDrySensitivity = ConversionHelper.ConvertToOutputDikeDrySensitivity(profileResult.DikeDrySensitivity);
+ outputProfileResult.HydraulicShortcutType = ConversionHelper.ConvertToOutputHydraulicShortcutType(profileResult.HydraulicShortcutType);
+ outputProfileResult.UpliftType = ConversionHelper.ConvertToOutputUpliftType(profileResult.UpliftType);
+ outputProfileResult.MStabModelOption = ConversionHelper.ConvertToOutputMStabModelType(profileResult.MstabModelOption);
+ outputProfileResult.PipingModelOption = ConversionHelper.ConvertToOutputPipingModelType(profileResult.PipingModelOption);
+ outputProfileResult.ScenarioType = ConversionHelper.ConvertToOutputScenarioType(profileResult.ScenarioType);
+ outputProfileResult.SoilProfileName = profileResult.SoilProfileName;
+ outputProfileResult.SoilProfileProbability = profileResult.SoilProfileProbability;
+ outputProfileResult.FailureMechanismType = ConversionHelper.ConvertToInputFailureMechanismSystemType(profileResult.FailureMechanismType);
+ outputProfileResult.BaseFileName = profileResult.BaseFileName;
+ outputProfileResult.RegionalResult = new RegionalResult();
+ outputProfileResult.RegionalResult.RegionalResultType = ConversionHelper.ConvertToOutputRegionalResultType(profileResult.RegionalResultType);
+ outputProfileResult.RegionalResult.SafetyFactor = profileResult.SafetyFactor;
+ outputProfileResult.RegionalResult.ProbabilityOfFailure = profileResult.ProbabilityOfFailure;
+ outputProfileResult.RegionalResult.CalculationResult = ConversionHelper.ConvertToOutputCalculationResult(profileResult.CalculationResult);
+ outputRegionalScenarioResult.RegionalScenarioProfileResults[proftel] = outputProfileResult;
+ proftel++;
+ }
+ outputLocationResult.RegionalScenariosResult.RegionalScenarioResult[scentel] = outputRegionalScenarioResult;
+ scentel++;
}
- outputLocationResult.RegionalScenariosResult.RegionalScenarioResult[scentel] = outputRegionalScenarioResult;
- scentel++;
+ output.Results.CalculationResults.LocationResults[jobtel] = outputLocationResult;
+ jobtel++;
}
- output.Results.CalculationResults.LocationResults[jobtel] = outputLocationResult;
- jobtel++;
}
}
}
Index: DamEngine/trunk/src/Deltares.DamEngine.Data/General/DamProjectData.cs
===================================================================
diff -u -r1120 -r1181
--- DamEngine/trunk/src/Deltares.DamEngine.Data/General/DamProjectData.cs (.../DamProjectData.cs) (revision 1120)
+++ DamEngine/trunk/src/Deltares.DamEngine.Data/General/DamProjectData.cs (.../DamProjectData.cs) (revision 1181)
@@ -32,29 +32,26 @@
{
public class DamProjectData
{
- public readonly double MissValStabilitySafetyFactor = -1.0;
- // ##Bka Waterboard eruit werken en vanaf nu max 1 dike!
- private string description = "";
private IList segments;
private Dike dike;
private DamProjectCalculationSpecification damProjectCalculationSpecification;
private DikeJob dikeJob;
private DamProjectType damProjectType = DamProjectType.Operational;
- private ProgramType programType = ProgramType.MStab;
private List jobs = new List();
private List designCalculations;
-
+ private SensorData sensorData;
+ private string calculationMap = "";
+ private string projectPath = "";
+ private int maxCalculationCores = 1;
+
///
/// Gets or sets the calculation messages.
///
///
/// The calculation messages.
///
public List CalculationMessages { get; set; } = null;
- private SensorData sensorData;
- private string calculationMap = "";
- private string projectPath = "";
- private int maxCalculationCores = 1;
+
///
/// Constructor
@@ -67,17 +64,23 @@
segments = new List();
}
+ ///
+ /// Gets the name.
+ ///
+ ///
+ /// The name.
+ ///
public virtual string Name
{
get { return String.Format(LocalizationManager.GetTranslatedText(this, "WaterBoard")); }
}
- public virtual string Description
- {
- get { return description; }
- set { description = value; }
- }
-
+ ///
+ /// Gets or sets the segments.
+ ///
+ ///
+ /// The segments.
+ ///
public virtual IList Segments
{
get { return segments; }
@@ -137,6 +140,12 @@
set { dikeJob = value as DikeJob; }
}
+ ///
+ /// Gets or sets the type of the dam project.
+ ///
+ ///
+ /// The type of the dam project.
+ ///
public virtual DamProjectType DamProjectType
{
get { return damProjectType; }
@@ -154,7 +163,13 @@
}
}
}
-
+
+ ///
+ /// Gets or sets the design calculations.
+ ///
+ ///
+ /// The design calculations.
+ ///
public List DesignCalculations
{
get
@@ -167,6 +182,12 @@
}
}
+ ///
+ /// Gets or sets the location jobs.
+ ///
+ ///
+ /// The location jobs.
+ ///
public List LocationJobs
{
get
@@ -186,31 +207,6 @@
}
}
- [Validate]
- public List SelectedLocationJobs
- {
- get
- {
- List selectedLocationJobs = new List();
- foreach (var locationJob in LocationJobs)
- {
- if (locationJob.Run.HasValue && locationJob.Run.Value)
- {
- selectedLocationJobs.Add(locationJob);
- }
- }
-
- return selectedLocationJobs;
- }
- }
-
- // TODO: FM this is failure mechanism specific code and should be moved to ..\KernelWrappers
- public ProgramType ProgramType
- {
- // For now, only MStab (= default value) allowed so ReadOnly. Add setter when needed.
- get { return programType; }
- }
-
///
/// Gets or sets the project path.
///
@@ -274,25 +270,26 @@
foreach (var locationJob in LocationJobs)
{
- if (locationJob.Run != null && locationJob.Run.Value)
- {
- if (dike.Locations.Contains(locationJob.Location))
- {
- dike.UpdateLocation(locationJob.Location);
- break;
- }
- evaluationJob.Locations.Add(locationJob.Location);
- }
+ evaluationJob.Locations.Add(locationJob.Location);
}
return evaluationJob;
}
+ ///
+ /// Returns a that represents this instance.
+ ///
+ ///
+ /// A that represents this instance.
+ ///
public override string ToString()
{
return Name;
}
-
+
+ ///
+ /// Fills the overall sensor data.
+ ///
public void FillOverallSensorData()
{
if (sensorData != null)
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesAssessmentRegional/RegionalScenariosCalculation.cs
===================================================================
diff -u -r1174 -r1181
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesAssessmentRegional/RegionalScenariosCalculation.cs (.../RegionalScenariosCalculation.cs) (revision 1174)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesAssessmentRegional/RegionalScenariosCalculation.cs (.../RegionalScenariosCalculation.cs) (revision 1181)
@@ -35,8 +35,6 @@
using Deltares.DamEngine.Data.Standard.Calculation;
using Deltares.DamEngine.Data.Standard.Language;
using Deltares.DamEngine.Data.Standard.Logging;
-using Deltares.DamPiping.BlighCalculator;
-using Deltares.DamPiping.Sellmeijer4ForcesCalculator;
namespace Deltares.DamEngine.Calculators.DikesAssessmentRegional
{
@@ -56,180 +54,51 @@
public class RegionalScenariosCalculation : ICalculation
{
private DamProjectData damProjectData;
+ private EvaluationJob evaluationJob;
+ private GetValuesDelegate getValuesDelegate;
+ private ProgressDelegate progressDelegate;
+ private SendMessageDelegate sendMessageDelegate;
+ private int maxCalculationCores = 255;
+ private readonly Dictionary runningJobs = new Dictionary();
+ private bool isSkipStabilityCalculation;
+ private PipingModelType pipingModelType;
+ private MStabParameters mStabParameters;
+
+ ///
+ /// Executes the specified a dam project data.
+ ///
+ /// a dam project data.
+ ///
public List Execute(DamProjectData aDamProjectData)
{
damProjectData = aDamProjectData;
maxCalculationCores = damProjectData.MaxCalculationCores;
+ mStabParameters = damProjectData.DamProjectCalculationSpecification.CurrentSpecification.FailureMechanismParametersMStab.MStabParameters;
+ pipingModelType = damProjectData.DamProjectCalculationSpecification.CurrentSpecification.PipingModelType;
var dj = damProjectData.DikeJob;
+ foreach (var locationJob in damProjectData.LocationJobs)
+ {
+ locationJob.Location.DamType = DamType.Regional;
+ }
evaluationJob = damProjectData.GetEvaluationJob();
- //evaluationJob.Locations.AddRange();
Run();
+ evaluationJob.AttachResults(aDamProjectData.LocationJobs);
return new List();
}
- private IKernelWrapper CreateKernelWrapperforJob(DamFailureMechanismeCalculationSpecification currentSpecification,
- Location location, SoilGeometryProbability soilGeometryProbability, out IKernelDataInput kernelDataInput,
- out IKernelDataOutput kernelDataOutput)
- {
- IKernelWrapper kernelWrapper = KernelWrapperHelper.CreateKernelWrapper(currentSpecification);
-
- if (kernelWrapper == null)
- {
- throw new NotImplementedException(Resources.DesignCalculatorKernelNotImplemented);
- }
-
- //damProjectData.DesignCalculations = new List();
- var calculationMessages = new List();
- // Prepare input
- var damKernelInput = new DamKernelInput();
- var projectPath = damProjectData.ProjectPath != "" ? damProjectData.ProjectPath : Directory.GetCurrentDirectory();
- damKernelInput.ProjectDir = projectPath;
- damKernelInput.CalculationDir = Path.Combine(projectPath, damProjectData.CalculationMap);
- damKernelInput.Location = location;
- damKernelInput.SubSoilScenario = soilGeometryProbability;
- //damKernelInput.DesignScenario = location.Scenarios[designScenarioIndex];
- damKernelInput.DamFailureMechanismeCalculationSpecification = damProjectData.DamProjectCalculationSpecification.CurrentSpecification;
- AnalysisType analysisType = DamProjectCalculationSpecification.SelectedAnalysisType;
- // SynchronizeDesignScenarioDataWithLocationData(damKernelInput.DesignScenario, damKernelInput.Location);
- // IKernelDataInput kernelDataInput;
- //IKernelDataOutput kernelDataOutput;
- PrepareResult prepareResult = kernelWrapper.Prepare(damKernelInput, 0, out kernelDataInput, out kernelDataOutput);
-
- // Sometimes the kernelDataInput is not created (p.e when soilprofileprobablility is meant for
- // stability where Piping calc is wanted). In that case, do nothing but just skip.
- if (prepareResult == PrepareResult.Successful)
- {
- // switch (analysisType)
- // {
- // case AnalysisType.AdaptGeometry:
- // PerformDesignCalculation(kernelWrapper, kernelDataInput, kernelDataOutput,
- // damKernelInput, calculationMessages, damProjectData.DesignCalculations);
- // break;
- // case AnalysisType.NoAdaption:
- // PerformSingleCalculation(kernelWrapper, kernelDataInput, kernelDataOutput,
- // damKernelInput, calculationMessages, damProjectData.DesignCalculations);
- // break;
- //
- // }
- }
- else
- {
- if (prepareResult == PrepareResult.NotRelevant)
- {
- calculationMessages.Add(new LogMessage(LogMessageType.Info, null,
- string.Format(Resources.DesignCalculatorIrrelevant,
- location.Name,
- soilGeometryProbability.ToString(),
- ""))); // TODO #The correct regional scenario ID?
- }
- if (prepareResult == PrepareResult.Failed)
- {
- calculationMessages.Add(new LogMessage(LogMessageType.Error, null,
- string.Format(Resources.DesignCalculatorPrepareError,
- location.Name,
- soilGeometryProbability.ToString(),
- ""))); // TODO #The correct regional scenario ID?
- }
- }
- return kernelWrapper;//calculationMessages;
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- private EvaluationJob evaluationJob = null;
- private GetValuesDelegate getValuesDelegate;
- private ProgressDelegate progressDelegate;
- private SendMessageDelegate sendMessageDelegate;
- private string mstabExePath = @".\DGeoStability.exe";
- private int maxCalculationCores = 255;
-
- private Dictionary runningJobs = new Dictionary();
- private bool isSkipStabilityCalculation = false;
-
- ///
- /// Gets or sets the type of the piping model.
- ///
- ///
- /// The type of the piping model.
- ///
- public PipingModelType PipingModelType { get; set; }
-
- ///
- /// Gets or sets the m stab parameters.
- ///
- ///
- /// The m stab parameters.
- ///
- public MStabParameters MStabParameters { get; set; }
-
#region ICalculation Members
///
/// Gets the results.
///
- /// The results.
///
- public CalculationResult GetResults(ref string results)
+ public EvaluationJob GetResults()
{
- // try
- // {
- // XmlSerializer serializer = new XmlSerializer();
- // results = serializer.SerializeToString(this.evaluationJob);
- // return CalculationResult.Succeeded;
- // }
- // catch
- // {
- // return CalculationResult.UnexpectedError;
- // }##Bka
- return CalculationResult.UnexpectedError;
+ return evaluationJob;
}
///
- /// Loads the specified input.
- ///
- /// The input.
- ///
- public CalculationResult Load(string input)
- {
- // try
- // {
- // XmlDeserializer deserializer = new XmlDeserializer();
- // this.evaluationJob = (EvaluationJob)deserializer.XmlDeserializeFromString(input, typeof(EvaluationJob), new DefaultClassFactory());
- // return CalculationResult.Succeeded;
- // }
- // catch
- // {
- // return CalculationResult.UnexpectedError;
- // }##Bka
- return CalculationResult.UnexpectedError;
- }
-
- ///
/// Registers the get values.
///
/// The get values delegate.
@@ -338,19 +207,8 @@
}
///
- /// Gets or sets the mstab executable path.
- ///
- ///
- /// The mstab executable path.
- ///
- public string MStabExePath
- {
- get { return mstabExePath; }
- set { mstabExePath = value; }
- }
-
- ///
/// Gets or sets a value indicating whether this instance is skip stability calculation.
+ /// Only used for test puposes.
///
///
/// true if this instance is skip stability calculation; otherwise, false.
@@ -375,7 +233,10 @@
{
evaluationJob.FailedEvaluatedLocations.Add(location);
var locationHasNoSegment = LocalizationManager.GetTranslatedText(GetType(), "LocationHasNoSegment");
- sendMessageDelegate(new LogMessage(LogMessageType.Error, location, locationHasNoSegment));
+ if (sendMessageDelegate != null)
+ {
+ sendMessageDelegate(new LogMessage(LogMessageType.Error, location, locationHasNoSegment));
+ }
}
}
else
@@ -445,8 +306,8 @@
{
RegionalScenarioSelector selector = new RegionalScenarioSelector
{
- PipingModelType = PipingModelType,
- MStabParameters = MStabParameters
+ PipingModelType = pipingModelType,
+ MStabParameters = mStabParameters
};
return selector.GetScenarios(location, soilGeometryProbability);
}
@@ -469,7 +330,10 @@
catch (Exception e)
{
job.CalculationResult = CalculationResult.UnexpectedError;
- sendMessageDelegate(new LogMessage(LogMessageType.Warning, job, String.Format(job.LocationName + " Error: {0}", e.Message)));
+ if (sendMessageDelegate != null)
+ {
+ sendMessageDelegate(new LogMessage(LogMessageType.Warning, job, String.Format(job.LocationName + " Error: {0}", e.Message)));
+ }
}
}
@@ -542,6 +406,59 @@
}
+ private IKernelWrapper CreateKernelWrapper(DamFailureMechanismeCalculationSpecification currentSpecification)
+ {
+ IKernelWrapper kernelWrapper = KernelWrapperHelper.CreateKernelWrapper(currentSpecification);
+
+ if (kernelWrapper == null)
+ {
+ throw new NotImplementedException(Resources.DesignCalculatorKernelNotImplemented);
+ }
+ return kernelWrapper;
+ }
+
+ private List CreateKernelWrapperforJob(IKernelWrapper kernelWrapper, ScenarioType scenarioType,
+ Location location, SoilGeometryProbability soilGeometryProbability, out IKernelDataInput kernelDataInput,
+ out IKernelDataOutput kernelDataOutput, out DamKernelInput damKernelInput)
+ {
+ var calculationMessages = new List();
+ // Prepare input
+ damKernelInput = new DamKernelInput();
+ var projectPath = damProjectData.ProjectPath != "" ? damProjectData.ProjectPath : Directory.GetCurrentDirectory();
+ damKernelInput.ProjectDir = projectPath;
+ damKernelInput.CalculationDir = Path.Combine(projectPath, damProjectData.CalculationMap);
+ damKernelInput.Location = location;
+ damKernelInput.SubSoilScenario = soilGeometryProbability;
+ damKernelInput.DamFailureMechanismeCalculationSpecification = damProjectData.DamProjectCalculationSpecification.CurrentSpecification;
+ damKernelInput.RiverLevelHigh = damKernelInput.Location.BoezemLevelHbp;// #Bka juiste waarde nakijken in classic
+ damKernelInput.RiverLevelLow = damKernelInput.Location.BoezemLevelLbp;// #Bka juiste waarde nakijken in classic
+ damKernelInput.FilenamePrefix = string.Format("Loc({0})_Sce({1})", location.Name, scenarioType.ToString());
+ PrepareResult prepareResult = kernelWrapper.Prepare(damKernelInput, 0, out kernelDataInput, out kernelDataOutput);
+
+ // Sometimes the kernelDataInput is not created (p.e when soilprofileprobablility is meant for
+ // stability where Piping calc is wanted). In that case, do nothing but just skip.
+ if (prepareResult == PrepareResult.Successful)
+ {
+
+ }
+ else
+ {
+ if (prepareResult == PrepareResult.NotRelevant)
+ {
+ calculationMessages.Add(new LogMessage(LogMessageType.Info, null,
+ string.Format(Resources.DesignCalculatorIrrelevant, location.Name,
+ soilGeometryProbability.ToString(), ""))); // TODO #The correct regional scenario ID?
+ }
+ if (prepareResult == PrepareResult.Failed)
+ {
+ calculationMessages.Add(new LogMessage(LogMessageType.Error, null,
+ string.Format(Resources.DesignCalculatorPrepareError, location.Name,
+ soilGeometryProbability.ToString(), ""))); // TODO #The correct regional scenario ID?
+ }
+ }
+ return calculationMessages;
+ }
+
private string GetCalculationNameForPipingCalculator(RegionalScenarioProfileResult job)
{
string calculationName;
@@ -562,12 +479,12 @@
return calculationName;
}
- ///
- /// Determines the proper calculator for pipng
- ///
- ///
- ///
- /// proper piping calculator
+// ///
+// /// Determines the proper calculator for pipng
+// ///
+// ///
+// ///
+// /// proper piping calculator
// private PipingCalculator GetCalculatorForPipingModel(RegionalScenarioProfileResult job, ModelParametersForPLLines modelParametersForPlLines)
// {
// PipingCalculator calculator;
@@ -594,33 +511,19 @@
///
private void ProcessJobStability(RegionalScenarioProfileResult job)
{
-
-// StabilityCalculation calculator = new StabilityCalculation();
- var currentSpecification = damProjectData.DamProjectCalculationSpecification.CurrentSpecification;
+ var currentSpecification = damProjectData.DamProjectCalculationSpecification.CurrentSpecification; // must this be a copy?
currentSpecification.FailureMechanismSystemType = job.FailureMechanismType;
+ currentSpecification.FailureMechanismParametersMStab.MStabParameters.Model = job.MstabModelOption;
IKernelDataInput kernelDataInput;
IKernelDataOutput kernelDataOutput;
- var calculator = CreateKernelWrapperforJob(currentSpecification, job.Location, job.SoilGeometryProbability,
- out kernelDataInput, out kernelDataOutput);
+ DamKernelInput damKernelInput;
+ var calculator = CreateKernelWrapper(currentSpecification);
lock (runningJobs)
{
runningJobs[calculator] = job;
}
-
- // calculator.MStabExePath = this.MStabExePath;
-// calculator.RegisterSendMessage(this.SendStabilityMessage);
-//
-// string soilDatabaseName = job.Location.StabilityOptions.SoilDatabaseName;
-// DamFailureMechanismeCalculationSpecification damCalculation =
-// calculator.GetSpecification(this.evaluationJob.DikeName, soilDatabaseName, job.Location, new SoilGeometry(job.SoilGeometryProbability.SoilProfile1D, null),
-// (MStabModelType)job.MstabModelOption, job.LoadSituation, job.DikeDrySensitivity, job.HydraulicShortcutType, MStabParameters);
- //
- // calculator.SaveToFile(damCalculation.FailureMechanismParametersMStab);
- // string inputFile = damCalculation.FailureMechanismParametersMStab.MStabParameters.ProjectFileName;
- //
- // job.BaseFileName = inputFile.Replace(DamProject.ProjectWorkingPath, @"").Replace(".sti", "");
-
-// calculator.Load(inputFile);
+ var calculationCreationMessages = CreateKernelWrapperforJob(calculator, job.ScenarioType, job.Location, job.SoilGeometryProbability,
+ out kernelDataInput, out kernelDataOutput, out damKernelInput);
List messages;
calculator.Execute(kernelDataInput, kernelDataOutput, out messages);
job.CalculationResult = CalculationResult.Succeeded; //Run();
@@ -629,19 +532,15 @@
{
string resultMessage = "";
List results;
- var input = (DamKernelInput) kernelDataInput;
- calculator.PostProcess(input, kernelDataOutput, null, resultMessage, out results);
- //string results = "";
- job.SafetyFactor = results[0].SafetyFactor.Value;
+ calculator.PostProcess(damKernelInput, kernelDataOutput, null, resultMessage, out results);
+
+ if (results[0].SafetyFactor != null)
+ {
+ job.SafetyFactor = results[0].SafetyFactor.Value;
+ }
job.CalculationResult = results[0].CalculationResult;
job.RegionalResultType = RegionalResultType.SafetyFactor;
-//XmlDeserializer deserializer = new XmlDeserializer();
-// RegionalResult result = (RegionalResult)deserializer.XmlDeserializeFromString(results, typeof(RegionalResult));
-
- // job.SafetyFactor = result.SafetyFactor;
- // job.ProbabilityOfFailure = result.ProbabilityOfFailure;
- // job.RegionalResultType = result.RegionalResultType;
- // job.CalculationResult = result.CalculationResult;
+ job.ProbabilityOfFailure = double.NaN;
}
else
{
@@ -671,7 +570,7 @@
}
}
- this.sendMessageDelegate(logMessage);
+ sendMessageDelegate(logMessage);
}
///
@@ -680,14 +579,13 @@
private void FillResults(List tasks)
{
// Fill scenariosResult structure with jobs just run
-
- foreach (Location location in this.evaluationJob.Locations)
+ foreach (Location location in evaluationJob.Locations)
{
try
{
RegionalScenariosResult scenariosResult = new RegionalScenariosResult();
- if (this.evaluationJob.FailedEvaluatedLocations.IndexOf(location) < 0)
+ if (evaluationJob.FailedEvaluatedLocations.IndexOf(location) < 0)
{
// scenarios were succesfully created, so results are available
foreach (RegionalScenarioProfileResult job in tasks)
@@ -705,8 +603,10 @@
if (scenarioResult == null)
{
- scenarioResult = new RegionalScenarioResult();
- scenarioResult.ScenarioType = job.ScenarioType;
+ scenarioResult = new RegionalScenarioResult
+ {
+ ScenarioType = job.ScenarioType
+ };
scenariosResult.RegionalScenarioResults.Add(scenarioResult);
}
@@ -719,9 +619,9 @@
foreach (var scenarioResult in scenariosResult.RegionalScenarioResults)
{
- this.CombineProfiles(scenarioResult);
+ CombineProfiles(scenarioResult);
}
- this.CombineScenarios(scenariosResult);
+ CombineScenarios(scenariosResult);
}
else
Index: DamEngine/trunk/src/Deltares.DamEngine.Interface/EngineInterface.cs
===================================================================
diff -u -r1119 -r1181
--- DamEngine/trunk/src/Deltares.DamEngine.Interface/EngineInterface.cs (.../EngineInterface.cs) (revision 1119)
+++ DamEngine/trunk/src/Deltares.DamEngine.Interface/EngineInterface.cs (.../EngineInterface.cs) (revision 1181)
@@ -165,11 +165,12 @@
List calculationMessages = null;
switch (DamProjectData.DamProjectType)
{
- case DamProjectType.Assessment:
case DamProjectType.AssessmentRegional:
var regionalScenariosCalculator = new RegionalScenariosCalculation();
calculationMessages = regionalScenariosCalculator.Execute(DamProjectData);
+ regionalScenariosCalculator.GetResults();
break;
+ case DamProjectType.Assessment:
case DamProjectType.Operational:
throw new NotImplementedException();
case DamProjectType.Design:
@@ -184,6 +185,5 @@
SendMessage(new LogMessage() { MessageType = LogMessageType.Info, Message = Resources.EndCalculation });
return outputXml;
}
-
}
}