Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityCommonHelper.cs
===================================================================
diff -u -r3893 -r4000
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityCommonHelper.cs (.../MacroStabilityCommonHelper.cs) (revision 3893)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityCommonHelper.cs (.../MacroStabilityCommonHelper.cs) (revision 4000)
@@ -58,7 +58,7 @@
/// The dike embankment soil.
public static void EnsureSoilProfile2DIsFilled(SoilGeometryProbability subSoilScenario, SurfaceLine2 surfaceLine2, Soil dikeEmbankmentSoil)
{
- var soilProfile2D = subSoilScenario.SoilProfile2D;
+ SoilProfile2D soilProfile2D = subSoilScenario.SoilProfile2D;
if (soilProfile2D == null)
{
var soilSurfaceProfile = new SoilSurfaceProfile
@@ -69,7 +69,7 @@
DikeEmbankmentMaterial = dikeEmbankmentSoil
};
// Convert the soilSurfaceProfile to a SoilProfile2D to be able to edit it properly.
- var soilProfile2DNew = soilSurfaceProfile.ConvertToSoilProfile2D();
+ SoilProfile2D soilProfile2DNew = soilSurfaceProfile.ConvertToSoilProfile2D();
subSoilScenario.SoilProfile2D = soilProfile2DNew;
subSoilScenario.SoilProfile2DName = soilProfile2DNew.Name;
subSoilScenario.SoilProfileType = SoilProfileType.ProfileType2D;
@@ -92,11 +92,12 @@
{
Pressure = damKernelInput.Location.StabilityOptions.TrafficLoad.Value,
XEnd = damKernelInput.Location.SurfaceLine
- .CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.TrafficLoadInside).X,
+ .CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.TrafficLoadInside).X,
XStart = damKernelInput.Location.SurfaceLine
- .CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.TrafficLoadOutside).X
+ .CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.TrafficLoadOutside).X
};
}
+
return trafficLoad;
}
@@ -107,20 +108,20 @@
///
public static BishopCalculationGrid FillBishopCalculationGrid(DamKernelInput damKernelInput)
{
- var slipCircleDefinition = damKernelInput.DamFailureMechanismeCalculationSpecification
- .FailureMechanismParametersMStab.MStabParameters.SlipCircleDefinition;
- var minimumCircleDepth = damKernelInput.DamFailureMechanismeCalculationSpecification
- .FailureMechanismParametersMStab.MStabParameters.CalculationOptions.MinimalCircleDepth;
- var gridPosition = damKernelInput.DamFailureMechanismeCalculationSpecification
- .FailureMechanismParametersMStab.MStabParameters.GridPosition;
- var bishopCalculationGrid = BishopGridCreator.DetermineGridsFromSettings(gridPosition,
- slipCircleDefinition, damKernelInput.Location.SurfaceLine);
- var centerOfLeftGridXCoordinate = (bishopCalculationGrid.GridXLeft + bishopCalculationGrid.GridXRight) * 0.5;
- var soilProfile1DAtCenterOfLeftGridXCoordinate =
+ SlipCircleDefinition slipCircleDefinition = damKernelInput.DamFailureMechanismeCalculationSpecification
+ .FailureMechanismParametersMStab.MStabParameters.SlipCircleDefinition;
+ double minimumCircleDepth = damKernelInput.DamFailureMechanismeCalculationSpecification
+ .FailureMechanismParametersMStab.MStabParameters.CalculationOptions.MinimalCircleDepth;
+ MStabGridPosition gridPosition = damKernelInput.DamFailureMechanismeCalculationSpecification
+ .FailureMechanismParametersMStab.MStabParameters.GridPosition;
+ BishopCalculationGrid bishopCalculationGrid = BishopGridCreator.DetermineGridsFromSettings(gridPosition,
+ slipCircleDefinition, damKernelInput.Location.SurfaceLine);
+ double centerOfLeftGridXCoordinate = (bishopCalculationGrid.GridXLeft + bishopCalculationGrid.GridXRight) * 0.5;
+ SoilProfile1D soilProfile1DAtCenterOfLeftGridXCoordinate =
damKernelInput.SubSoilScenario.DetermineSoilProfile1DAtX(centerOfLeftGridXCoordinate, damKernelInput.Location.SurfaceLine,
- damKernelInput.Location.GetDikeEmbankmentSoil());
+ damKernelInput.Location.GetDikeEmbankmentSoil());
BishopGridCreator.DetermineTangentLines(bishopCalculationGrid, slipCircleDefinition,
- soilProfile1DAtCenterOfLeftGridXCoordinate, minimumCircleDepth);
+ soilProfile1DAtCenterOfLeftGridXCoordinate, minimumCircleDepth);
return bishopCalculationGrid;
}
@@ -144,56 +145,6 @@
}
///
- /// Determines the calculation filename.
- ///
- /// The filename prefix.
- /// Name of the soil geometry.
- /// Index of the iteration.
- ///
- private static string DetermineCalculationFilename(string filenamePrefix, string soilGeometryName, int iterationIndex)
- {
- string calculationName;
- if (iterationIndex <= 0)
- {
- calculationName = $"{filenamePrefix}_Pro({soilGeometryName})";
- }
- else
- {
- calculationName = $"{filenamePrefix}_Pro({soilGeometryName})_Ite({iterationIndex})";
- }
- return Regex.Replace(calculationName, @"[\\\/:\*\?""'<>|.]", "_");
- }
-
- ///
- /// Gets the stability calculation directory.
- ///
- /// The model.
- /// The project working path.
- ///
- private static string GetStabilityCalculationDirectory(MStabModelType model, string projectWorkingPath)
- {
- string calculationBaseDirectory = projectWorkingPath;
- var stabilitySubDir = GetCalculationSubDir(model);
- string stabilityDirectory = Path.Combine(calculationBaseDirectory, stabilitySubDir);
- if (!Directory.Exists(stabilityDirectory))
- Directory.CreateDirectory(stabilityDirectory);
- return stabilityDirectory;
- }
-
- ///
- /// Gets the calculation sub dir.
- ///
- /// The model.
- ///
- private static string GetCalculationSubDir(MStabModelType model)
- {
- const string stabilitySubDir = @"Stability\";
- var modelSubDirectory = model.ToString();
- var dir = Path.Combine(stabilitySubDir, modelSubDirectory);
- return dir;
- }
-
- ///
/// Throws the when macro stability kernel input is not assigned.
///
/// The dam macro stability input.
@@ -232,80 +183,17 @@
}
}
-#if DEBUG
///
- /// Writes the stix file based on input and results search grid.
- ///
- /// Name of the file.
- /// The input.
- private static void WriteStixFileBasedOnInputAndResultsSearchGrid(string fileName, MacroStabilityInput input)
- {
- if (!(input.StabilityModel.ModelOption == StabilityModelOptionType.UpliftVan &&
- input.StabilityModel.SearchAlgorithm == SearchAlgorithm.Beeswarm))
- {
- var fileNameForCalculationAsStix = DetermineStixFilename(fileName, "input");
- var inputStixFile = new StixWriter();
- inputStixFile.FillInfo("DAM Engine", Path.GetDirectoryName(fileName),
- Path.GetFileName(fileName), true);
- StixFileWrite(inputStixFile, fileNameForCalculationAsStix, input);
- }
- }
-#endif
-
- ///
- /// Writes the stix file based on input and results slip plane.
- ///
- /// Name of the file.
- /// The input.
- /// The macro stability output.
- private static void WriteStixFileBasedOnInputAndResultsSlipPlane(string fileName, MacroStabilityInput input,
- MacroStabilityOutput macroStabilityOutput)
- {
- if (macroStabilityOutput.CalculationResult == CalculationResult.Succeeded)
- {
- foreach (var macroStabilityOutputItem in macroStabilityOutput.StabilityOutputItems)
- {
- macroStabilityOutputItem.CalculationPath = Path.GetDirectoryName(fileName);
- macroStabilityOutputItem.ProjectName = Path.GetFileName(fileName);
- var fileNameForCalculationAsStix = DetermineStixFilename(fileName, "result");
- var resultStixWrite = new StixWriter();
- resultStixWrite.FillInfo("DAM Engine", macroStabilityOutputItem.CalculationPath,
- macroStabilityOutputItem.ProjectName, true);
- resultStixWrite.FillCalculatedCircle(macroStabilityOutputItem.ActiveCenterPoint.X,
- macroStabilityOutputItem.ActiveCenterPoint.Z,
- macroStabilityOutputItem.ActiveCenterPointRadius);
- StixFileWrite(resultStixWrite, fileNameForCalculationAsStix, input);
- }
- }
- }
-
- private static void StixFileWrite(StixWriter stixWriter, string fileName, MacroStabilityInput input)
- {
- if (File.Exists(fileName))
- {
- File.Delete(fileName);
- }
-
- stixWriter.WriteStixFile(fileName, input);
- }
-
- private static string DetermineStixFilename(string fileNameForCalc, string suffix, string extension = ".stix")
- {
- return Path.Combine(Path.GetDirectoryName(fileNameForCalc) ?? string.Empty,
- $"{Path.GetFileNameWithoutExtension(fileNameForCalc)}_{suffix}{extension}");
- }
-
- ///
/// Creates new designresult.
///
/// The dam kernel input.
/// The design scenario.
///
public static DesignResult NewDesignResult(DamKernelInput damKernelInput, DesignScenario designScenario)
{
- string soilProfile2DName = damKernelInput.SubSoilScenario.ToString();
+ var soilProfile2DName = damKernelInput.SubSoilScenario.ToString();
var designResult = new DesignResult(damKernelInput.DamFailureMechanismeCalculationSpecification,
- designScenario, damKernelInput.SubSoilScenario.SoilProfile1D, soilProfile2DName)
+ designScenario, damKernelInput.SubSoilScenario.SoilProfile1D, soilProfile2DName)
{
// initialize as failed
CalculationResult = CalculationResult.RunFailed,
@@ -336,8 +224,9 @@
{
designResult.StabilityDesignResults.SafetyFactor = macroStabilityOutputItem.SafetyFactor;
}
+
designResult.StabilityDesignResults.ActiveCenterPoint =
- macroStabilityOutputItem.ActiveCenterPoint;
+ macroStabilityOutputItem.ActiveCenterPoint;
designResult.StabilityDesignResults.ActiveCenterPointRadius =
macroStabilityOutputItem.ActiveCenterPointRadius;
designResult.StabilityDesignResults.ResultSlices = macroStabilityOutputItem.ResultSlices;
@@ -362,7 +251,7 @@
try
{
// For now a simple check to see if any data has been past at all.
- var inputAsXml = calculator.KernelInputXml;
+ string inputAsXml = calculator.KernelInputXml;
File.WriteAllText(fileName, inputAsXml);
@@ -390,22 +279,22 @@
///
public static int Validate(IKernelDataInput kernelDataInput, IKernelDataOutput kernelDataOutput, out List messages)
{
- MacroStabilityKernelDataInput macroStabilityKernelDataInput = (MacroStabilityKernelDataInput)kernelDataInput;
+ var macroStabilityKernelDataInput = (MacroStabilityKernelDataInput) kernelDataInput;
messages = new List();
try
{
- var result = new Validator(macroStabilityKernelDataInput.Input).Validate();
+ ValidationOutput result = new Validator(macroStabilityKernelDataInput.Input).Validate();
if (result.IsValid)
{
return 0;
}
if (kernelDataOutput != null)
{
- ((MacroStabilityOutput)kernelDataOutput).CalculationResult = CalculationResult.InvalidInputData;
+ ((MacroStabilityOutput) kernelDataOutput).CalculationResult = CalculationResult.InvalidInputData;
}
- foreach (var resultMessage in result.Messages)
+ foreach (Message resultMessage in result.Messages)
{
var message = new LogMessage
{
@@ -414,20 +303,20 @@
switch (resultMessage.MessageType)
{
case MessageType.Error:
- {
- message.MessageType = LogMessageType.Error;
- break;
- }
+ {
+ message.MessageType = LogMessageType.Error;
+ break;
+ }
case MessageType.Info:
- {
- message.MessageType = LogMessageType.Info;
- break;
- }
+ {
+ message.MessageType = LogMessageType.Info;
+ break;
+ }
case MessageType.Warning:
- {
- message.MessageType = LogMessageType.Warning;
- break;
- }
+ {
+ message.MessageType = LogMessageType.Warning;
+ break;
+ }
}
messages.Add(message);
@@ -437,11 +326,15 @@
}
catch (Exception e)
{
- var message = new LogMessage { MessageType = LogMessageType.FatalError, Message = e.Message };
+ var message = new LogMessage
+ {
+ MessageType = LogMessageType.FatalError,
+ Message = e.Message
+ };
messages.Add(message);
if (kernelDataOutput != null)
{
- ((MacroStabilityOutput)kernelDataOutput).CalculationResult = CalculationResult.InvalidInputData;
+ ((MacroStabilityOutput) kernelDataOutput).CalculationResult = CalculationResult.InvalidInputData;
}
return 1;
@@ -457,18 +350,18 @@
/// The calculator.
/// The messages.
public static void PerformStabilityCalculation(MacroStabilityInput input, MacroStabilityOutput macroStabilityOutput,
- string fileName, ICalculator calculator, out List messages)
+ string fileName, ICalculator calculator, out List messages)
{
macroStabilityOutput.CalculationResult = CalculationResult.NoRun;
macroStabilityOutput.StabilityOutputItems = new List();
messages = new List();
try
{
- var macroStabilityOutputKernel = calculator.Calculate();
+ MacroStability.CSharpWrapper.Output.MacroStabilityOutput macroStabilityOutputKernel = calculator.Calculate();
FillEngineFromMacroStabilityWrapperOutput.FillEngineDataWithResults(macroStabilityOutputKernel, macroStabilityOutput,
- out messages);
+ out messages);
#if DEBUG
- foreach (var stabilityOutputItem in macroStabilityOutput.StabilityOutputItems)
+ foreach (MacroStabilityOutputItem stabilityOutputItem in macroStabilityOutput.StabilityOutputItems)
{
switch (stabilityOutputItem.StabilityModelType)
{
@@ -491,5 +384,122 @@
messages.Add(new LogMessage(LogMessageType.Error, null, e.Message));
}
}
+
+ ///
+ /// Determines the calculation filename.
+ ///
+ /// The filename prefix.
+ /// Name of the soil geometry.
+ /// Index of the iteration.
+ ///
+ private static string DetermineCalculationFilename(string filenamePrefix, string soilGeometryName, int iterationIndex)
+ {
+ string calculationName;
+ if (iterationIndex <= 0)
+ {
+ calculationName = $"{filenamePrefix}_Pro({soilGeometryName})";
+ }
+ else
+ {
+ calculationName = $"{filenamePrefix}_Pro({soilGeometryName})_Ite({iterationIndex})";
+ }
+
+ return Regex.Replace(calculationName, @"[\\\/:\*\?""'<>|.]", "_");
+ }
+
+ ///
+ /// Gets the stability calculation directory.
+ ///
+ /// The model.
+ /// The project working path.
+ ///
+ private static string GetStabilityCalculationDirectory(MStabModelType model, string projectWorkingPath)
+ {
+ string calculationBaseDirectory = projectWorkingPath;
+ string stabilitySubDir = GetCalculationSubDir(model);
+ string stabilityDirectory = Path.Combine(calculationBaseDirectory, stabilitySubDir);
+ if (!Directory.Exists(stabilityDirectory))
+ {
+ Directory.CreateDirectory(stabilityDirectory);
+ }
+
+ return stabilityDirectory;
+ }
+
+ ///
+ /// Gets the calculation sub dir.
+ ///
+ /// The model.
+ ///
+ private static string GetCalculationSubDir(MStabModelType model)
+ {
+ const string stabilitySubDir = @"Stability\";
+ var modelSubDirectory = model.ToString();
+ string dir = Path.Combine(stabilitySubDir, modelSubDirectory);
+ return dir;
+ }
+
+#if DEBUG
+ ///
+ /// Writes the stix file based on input and results search grid.
+ ///
+ /// Name of the file.
+ /// The input.
+ private static void WriteStixFileBasedOnInputAndResultsSearchGrid(string fileName, MacroStabilityInput input)
+ {
+ if (!(input.StabilityModel.ModelOption == StabilityModelOptionType.UpliftVan &&
+ input.StabilityModel.SearchAlgorithm == SearchAlgorithm.Beeswarm))
+ {
+ string fileNameForCalculationAsStix = DetermineStixFilename(fileName, "input");
+ var inputStixFile = new StixWriter();
+ inputStixFile.FillInfo("DAM Engine", Path.GetDirectoryName(fileName),
+ Path.GetFileName(fileName), true);
+ StixFileWrite(inputStixFile, fileNameForCalculationAsStix, input);
+ }
+ }
+#endif
+
+ ///
+ /// Writes the stix file based on input and results slip plane.
+ ///
+ /// Name of the file.
+ /// The input.
+ /// The macro stability output.
+ private static void WriteStixFileBasedOnInputAndResultsSlipPlane(string fileName, MacroStabilityInput input,
+ MacroStabilityOutput macroStabilityOutput)
+ {
+ if (macroStabilityOutput.CalculationResult == CalculationResult.Succeeded)
+ {
+ foreach (MacroStabilityOutputItem macroStabilityOutputItem in macroStabilityOutput.StabilityOutputItems)
+ {
+ macroStabilityOutputItem.CalculationPath = Path.GetDirectoryName(fileName);
+ macroStabilityOutputItem.ProjectName = Path.GetFileName(fileName);
+ string fileNameForCalculationAsStix = DetermineStixFilename(fileName, "result");
+ var resultStixWrite = new StixWriter();
+ resultStixWrite.FillInfo("DAM Engine", macroStabilityOutputItem.CalculationPath,
+ macroStabilityOutputItem.ProjectName, true);
+ resultStixWrite.FillCalculatedCircle(macroStabilityOutputItem.ActiveCenterPoint.X,
+ macroStabilityOutputItem.ActiveCenterPoint.Z,
+ macroStabilityOutputItem.ActiveCenterPointRadius);
+ StixFileWrite(resultStixWrite, fileNameForCalculationAsStix, input);
+ }
+ }
+ }
+
+ private static void StixFileWrite(StixWriter stixWriter, string fileName, MacroStabilityInput input)
+ {
+ if (File.Exists(fileName))
+ {
+ File.Delete(fileName);
+ }
+
+ stixWriter.WriteStixFile(fileName, input);
+ }
+
+ private static string DetermineStixFilename(string fileNameForCalc, string suffix, string extension = ".stix")
+ {
+ return Path.Combine(Path.GetDirectoryName(fileNameForCalc) ?? string.Empty,
+ $"{Path.GetFileNameWithoutExtension(fileNameForCalc)}_{suffix}{extension}");
+ }
}
-}
+}
\ No newline at end of file