Index: dam failuremechanisms/damMacroStability/trunk/src/Tests/Deltares.DamMacroStability.CalculatorTests/MacroStabilityCalculatorTests.cs
===================================================================
diff -u -r387 -r393
--- dam failuremechanisms/damMacroStability/trunk/src/Tests/Deltares.DamMacroStability.CalculatorTests/MacroStabilityCalculatorTests.cs (.../MacroStabilityCalculatorTests.cs) (revision 387)
+++ dam failuremechanisms/damMacroStability/trunk/src/Tests/Deltares.DamMacroStability.CalculatorTests/MacroStabilityCalculatorTests.cs (.../StabilityCalculatorTests.cs) (revision 393)
@@ -4,15 +4,117 @@
namespace Deltares.DamMacroStability.CalculatorTests
{
[TestFixture]
- public class MacroStabilityCalculatorTests
+ public class StabilityCalculatorTests
{
[Test]
public void TestTmpForBuildServer()
{
- var calculator = new MacroStabilityCalculator();
+ var calculator = new StabilityCalculator();
Assert.IsFalse(calculator.TestValue);
calculator.Test();
Assert.IsTrue(calculator.TestValue);
}
+
+ private static StabilityCalculator SetupStabilityCalculator1D()
+ {
+// const double cTrafficLoad = 10.0;
+// const double cMinimalCircleDepth = 1.0;
+// const double cSafetyFactorStabilityInnerSlope = 1.1;
+ const string cmstabProgramPath = ".\\DGeoStability.exe";
+
+// ModelParametersForPLLines modelParametersForPLLines = new ModelParametersForPLLines();
+// MStabParameters mstabParameters = FactoryForStabilityTests.CreateMStabParameters();
+// DamFailureMechanismeCalculationSpecification damFailureMechanismeCalculationSpecification =
+// new DamFailureMechanismeCalculationSpecification();
+// damFailureMechanismeCalculationSpecification.FailureMechanismSystemType = FailureMechanismSystemType.StabilityInside;
+// damFailureMechanismeCalculationSpecification.FailureMechanismeParamatersMStab.MStabParameters =
+// mstabParameters;
+// damFailureMechanismeCalculationSpecification.FailureMechanismeParamatersMStab.MStabParameters.ZonesType =
+// MStabZonesType.NoZones;
+// StabilityCalculator stabilityCalculator =
+// new StabilityCalculator(damFailureMechanismeCalculationSpecification.FailureMechanismeParamatersMStab,
+// ProgramType.MStab, modelParametersForPLLines,
+// cTrafficLoad, cMinimalCircleDepth, cSafetyFactorStabilityInnerSlope,
+// cmstabProgramPath, cmstabProgramPath, null, null, null, null, ProbabilisticType.Deterministic);
+ StabilityCalculator stabilityCalculator = new StabilityCalculator();
+ return stabilityCalculator;
+ }
+ private static StabilityCalculator SetupStabilityCalculator2D()
+ {
+// const double cTrafficLoad = 10.0;
+// const double cMinimalCircleDepth = 1.0;
+// const double cSafetyFactorStabilityInnerSlope = 1.1;
+ const string cMStabProgramPath = ".\\DGeoStability.exe";
+
+// ModelParametersForPLLines modelParametersForPLLines = new ModelParametersForPLLines();
+// MStabParameters mstabParameters = FactoryForStabilityTests.CreateMStabParameters();
+// string soilDatabaseName = FactoryForStabilityTests.cSoilDatabaseName;
+// soilDatabaseName = Path.GetFullPath(soilDatabaseName);
+// mstabParameters.SoilDatabaseName = soilDatabaseName;
+// DamFailureMechanismeCalculationSpecification damFailureMechanismeCalculationSpecification =
+// new DamFailureMechanismeCalculationSpecification();
+// damFailureMechanismeCalculationSpecification.FailureMechanismSystemType = FailureMechanismSystemType.StabilityInside;
+// damFailureMechanismeCalculationSpecification.FailureMechanismeParamatersMStab.MStabParameters =
+// mstabParameters;
+// damFailureMechanismeCalculationSpecification.FailureMechanismeParamatersMStab.MStabParameters.ZonesType =
+// MStabZonesType.NoZones;
+// var soilBaseDb = SoilbaseDB.Create(soilDatabaseName);
+// StabilityCalculator stabilityCalculator =
+// new StabilityCalculator(damFailureMechanismeCalculationSpecification.FailureMechanismeParamatersMStab,
+// ProgramType.MStab, modelParametersForPLLines,
+// cTrafficLoad, cMinimalCircleDepth, cSafetyFactorStabilityInnerSlope,
+// cMStabProgramPath, cMStabProgramPath, null, null, soilBaseDb, soilBaseDb.CreateSoilList(),
+// ProbabilisticType.Deterministic);
+ StabilityCalculator stabilityCalculator = new StabilityCalculator();
+ return stabilityCalculator;
+ }
+
+
+// [Test]
+// public void CanCalculateStabilitySafetyFactorGeometry1D()
+// {
+//// using (var line = FactoryForSurfaceLineTests.CreateSurfaceLineTutorial1())
+//// using (var location = new Location())
+// {
+//// Scenario scenario = FactoryForStabilityTests.CreateScenarioForLocation(location, line);
+//// SoilProfile1D soilProfile = FactoryForStabilityTests.CreateSoilProfile();
+//
+// const double cToleranceSafetyFactor = 0.001;
+// using (var stabilityCalculator = SetupStabilityCalculator1D())
+// {
+//// stabilityCalculator.Calculate(scenario, soilProfile, null, 0);
+//// Assert.AreEqual(1.486, scenario.GetMStabResults(soilProfile, "").Value.zone1.safetyFactor,
+//// cToleranceSafetyFactor);
+// stabilityCalculator.Calculate();
+//// Assert.AreEqual(1.486, scenario.GetMStabResults(soilProfile, "").Value.zone1.safetyFactor,
+//// cToleranceSafetyFactor);
+// }
+// }
+// }
+
+// [Test]
+// public void CanCalculateStabilitySafetyFactorGeometry2D()
+// {
+// // setup
+// const double cToleranceSafetyFactor = 0.001;
+//// using (var line = FactoryForSurfaceLineTests.CreateSurfaceLineTutorial1())
+//// using (var location = new Location())
+// {
+//// Scenario scenario = FactoryForStabilityTests.CreateScenarioForLocation(location, line);
+//// var soilGeometry2DName = SoilGeometry2DName();
+// using (StabilityCalculator stabilityCalculator = SetupStabilityCalculator2D())
+// {
+//// // call
+//// stabilityCalculator.Calculate(scenario, null, soilGeometry2DName, 0);
+//// // assert
+//// // The expected value is read from the dumpfile itself
+//// Assert.AreEqual(1.5570,
+//// scenario.GetMStabResults(null, Path.GetFileName(soilGeometry2DName)).Value.zone1.safetyFactor,
+//// cToleranceSafetyFactor);
+// }
+// }
+// }
+
+
}
}
Index: dam failuremechanisms/damMacroStability/trunk/src/Tests/Deltares.DamMacroStability.CalculatorTests/Deltares.DamMacroStability.CalculatorTests.csproj
===================================================================
diff -u -r387 -r393
--- dam failuremechanisms/damMacroStability/trunk/src/Tests/Deltares.DamMacroStability.CalculatorTests/Deltares.DamMacroStability.CalculatorTests.csproj (.../Deltares.DamMacroStability.CalculatorTests.csproj) (revision 387)
+++ dam failuremechanisms/damMacroStability/trunk/src/Tests/Deltares.DamMacroStability.CalculatorTests/Deltares.DamMacroStability.CalculatorTests.csproj (.../Deltares.DamMacroStability.CalculatorTests.csproj) (revision 393)
@@ -37,7 +37,8 @@
-
+
+
Index: dam failuremechanisms/damMacroStability/trunk/src/Deltares.DamMacroStability.Calculator/MacroStabilityCalculator.cs
===================================================================
diff -u -r387 -r393
--- dam failuremechanisms/damMacroStability/trunk/src/Deltares.DamMacroStability.Calculator/MacroStabilityCalculator.cs (.../MacroStabilityCalculator.cs) (revision 387)
+++ dam failuremechanisms/damMacroStability/trunk/src/Deltares.DamMacroStability.Calculator/MacroStabilityCalculator.cs (.../StabilityCalculator.cs) (revision 393)
@@ -1,19 +1,78 @@
using System;
using System.Collections.Generic;
+using System.Diagnostics;
+using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
+using System.Threading;
using System.Threading.Tasks;
namespace Deltares.DamMacroStability.Calculator
{
- public class MacroStabilityCalculator
+ public class StabilityCalculator : IDisposable
{
public bool TestValue=false;
public void Test()
{
TestValue = true;
}
+ const string StabilityDirectory = @".\StabilityCalculation";
+ const string FilenameExtension = ".sti";
+
+ public void Calculate()
+ {
+ // string soilGeometryName;
+ // if (!string.IsNullOrEmpty(soilGeometry2DName))
+ // {
+ // soilGeometryName = Path.GetFileName(soilGeometry2DName);
+ // }
+ // else
+ // {
+ // soilGeometryName = soilProfile.Name;
+ // }
+ //
+ // string calculationName = DetermineCalculationFilename(scenario.Location.Name, scenario.LocationScenarioID,
+ // soilGeometryName, iterationIndex);
+ try
+ {
+ //
+ // MStabResults mStabResults = new MStabResults();
+ // mStabResults.Init();
+
+ string calculationName = "test1";
+ string fileName = calculationName + FilenameExtension;
+ string stabilityProjectFilename = Path.Combine(StabilityDirectory, fileName);
+
+ // prepare input file for DGeoStability
+
+ // run DGeoStability
+ DGeoStabilityExeRunner exeRunner = new DGeoStabilityExeRunner();
+ exeRunner.RunDGeoStabilityProject(stabilityProjectFilename);
+
+ // read result from DGeoStability run
+
+ // mStabResults = stabilityServiceAgent.ExtractStabilityResults(stabilityProjectFilename);
+ // mStabResults = SetMStabAdministrationResults(mStabResults, iterationIndex, calculationName);
+ // DetermineMStabResultsEntryPoint(ref mStabResults,
+ // failureMechanismeParamatersMStab.MStabParameters.GridPosition);
+ // DetermineMStabResultsExitPoint(ref mStabResults,
+ // failureMechanismeParamatersMStab.MStabParameters.GridPosition);
+ // scenario.SetMStabResults(soilProfile, Path.GetFileName(soilGeometry2DName), mStabResults);
+ }
+
+ catch (Exception e)
+ {
+// throw new DamFailureMechanismeCalculatorException(
+// String.Format("Error calculating stability factor for '{0}'", calculationName), e);
+ }
+ }
+
+
+ public void Dispose()
+ {
+ throw new NotImplementedException();
+ }
}
}
Index: dam failuremechanisms/damMacroStability/trunk/src/Deltares.DamMacroStability.Calculator/DGeoStabilityExeRunner.cs
===================================================================
diff -u
--- dam failuremechanisms/damMacroStability/trunk/src/Deltares.DamMacroStability.Calculator/DGeoStabilityExeRunner.cs (revision 0)
+++ dam failuremechanisms/damMacroStability/trunk/src/Deltares.DamMacroStability.Calculator/DGeoStabilityExeRunner.cs (revision 393)
@@ -0,0 +1,124 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace Deltares.DamMacroStability.Calculator
+{
+ public class DGeoStabilityExeRunner
+ {
+
+ const string DefaultExePath = @".\DGeoStability.exe";
+
+ public DGeoStabilityExeRunner()
+ {
+ DGeoStabilityExePath = DefaultExePath;
+ }
+
+ public string DGeoStabilityExePath { get; set; }
+
+ ///
+ /// Calculate DGeoStability project
+ ///
+ /// name of the input file or folder
+ public void RunDGeoStabilityProject(string project)
+ {
+ // ThrowHelper.ThrowIfStringArgumentNullOrEmpty(projectFilePath, StringResourceNames.ProjectFileNameNullOrEmpty);
+ // ThrowHelper.ThrowIfFileNotExist(projectFilePath, StringResourceNames.ProjectFileNotExist);
+ // ThrowHelper.ThrowIfFileNotExist(MStabExePath, StringResourceNames.MStabExecutableFileNameNotFound);
+
+ // try
+ // {
+ // Compute the project files
+ ProcessRun(project);
+ // }
+ // catch (ArgumentNullException argumentNullException)
+ // {
+ // throw new StabilityServiceAgentException(argumentNullException.Message, argumentNullException);
+ // }
+ // catch (FileNotFoundException outputFileNotFoundException)
+ // {
+ // throw new StabilityServiceAgentException(outputFileNotFoundException.Message, outputFileNotFoundException);
+ // }
+ }
+
+ ///
+ /// Processes the input file using the working folder
+ ///
+ /// The folder or file name;
+ /// if a filename is specified then the file will be calculated;
+ /// if a foldername is specified, all the stability files in the folder will be calculated.
+ private void ProcessRun(string folderOrFileName)
+ {
+ string mStabIniFilename = "";
+ mStabIniFilename = CreateDGeoStabilityIniFile(folderOrFileName);
+
+ var argument = "";
+ argument = string.Format("/b \"{0}\"", mStabIniFilename);
+
+ var programpath = "";
+ programpath = DGeoStabilityExePath;
+ var process = new Process
+ {
+ StartInfo =
+ {
+ FileName = programpath,
+ Arguments = argument,
+ UseShellExecute = false
+ }
+ };
+
+ // Parallel.KillOnAbort(process);
+ process.Start();
+
+ try
+ {
+ process.WaitForExit();
+ }
+ catch (ThreadInterruptedException)
+ {
+ // thread was killed by user action to stop calculation
+ }
+ finally
+ {
+ if (File.Exists(mStabIniFilename))
+ {
+ File.Delete(mStabIniFilename);
+ }
+ }
+ }
+
+ private string CreateDGeoStabilityIniFile(string inputName)
+ {
+ string filename = Path.GetTempFileName();
+ filename = Path.ChangeExtension(filename, "ini");
+ string defaultIniFilename = Path.Combine(Path.GetDirectoryName(DGeoStabilityExePath), "DGeoStability.ini");
+ string newIniContent = "[D-Geo Stability batch processing]";
+ var isDirectoryBatchCalculation = Directory.Exists(inputName);
+ if (isDirectoryBatchCalculation)
+ {
+ newIniContent += System.Environment.NewLine + "Path=" + inputName;
+ newIniContent += System.Environment.NewLine + "Filespec=*.sti";
+ }
+ else
+ {
+ newIniContent += System.Environment.NewLine + "InputFileName=" + inputName;
+ }
+ newIniContent += System.Environment.NewLine + "Plot Critical Circle=1";
+ newIniContent += System.Environment.NewLine + "PlotWMF=1";
+ newIniContent += System.Environment.NewLine + "PlotJPeg=1";
+ if (File.Exists(defaultIniFilename))
+ {
+ string iniContent = File.ReadAllText(defaultIniFilename);
+ newIniContent += System.Environment.NewLine + System.Environment.NewLine + iniContent;
+ };
+ File.WriteAllText(filename, newIniContent);
+ return filename;
+ }
+
+ }
+}
Fisheye: Tag 393 refers to a dead (removed) revision in file `dam failuremechanisms/damMacroStability/trunk/src/Deltares.DamMacroStability.Calculator/MacroStabilityCalculator.cs'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 393 refers to a dead (removed) revision in file `dam failuremechanisms/damMacroStability/trunk/src/Tests/Deltares.DamMacroStability.CalculatorTests/MacroStabilityCalculatorTests.cs'.
Fisheye: No comparison available. Pass `N' to diff?
Index: dam failuremechanisms/damMacroStability/trunk/src/Tests/Deltares.DamMacroStability.CalculatorTests/DGeoStabilityExeRunnerTests.cs
===================================================================
diff -u
--- dam failuremechanisms/damMacroStability/trunk/src/Tests/Deltares.DamMacroStability.CalculatorTests/DGeoStabilityExeRunnerTests.cs (revision 0)
+++ dam failuremechanisms/damMacroStability/trunk/src/Tests/Deltares.DamMacroStability.CalculatorTests/DGeoStabilityExeRunnerTests.cs (revision 393)
@@ -0,0 +1,69 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Deltares.DamMacroStability.Calculator;
+using NUnit.Framework;
+
+namespace Deltares.DamMacroStability.CalculatorTests
+{
+ [TestFixture]
+ public class DGeoStabilityExeRunnerTests
+ {
+// private const string NormalTestFile = @"..\..\..\data\dam\mstabfiles\zuivering Gendt.sti";
+// private const string BadTestFile = @"..\..\..\data\dam\mstabfiles\BadInputFile.sti";
+
+ private DGeoStabilityExeRunner runner;
+
+ [TestFixtureSetUp]
+ public void FixtureSetup()
+ {
+ runner = new DGeoStabilityExeRunner();
+ }
+
+// [Test]
+// public void CanPerformCalculation()
+// {
+// var result = agent.ExtractStabilityResults(NormalTestFile);
+// Assert.GreaterOrEqual(1.276, result.zone1.safetyFactor);
+// }
+//
+// [Test]
+// [ExpectedException(typeof(FileNotFoundException))]
+// public void ThrowsFileExceptionUsingProjectFileThatNotExists()
+// {
+// agent.ExtractStabilityResults("teG1_ute7st.sti");
+// }
+//
+// [Test]
+// [ExpectedException(typeof(ArgumentException))]
+// public void ThrowsExceptionWhenProjectFileIsEmpty()
+// {
+// agent.ExtractStabilityResults("");
+// }
+//
+// [Test]
+// [ExpectedException(typeof(ArgumentException))]
+// public void ThrowsExceptionWhenProjectFileNameContainsOnlySpaces()
+// {
+// agent.ExtractStabilityResults(" ");
+// }
+//
+// [Test]
+// [ExpectedException(typeof(ArgumentException))]
+// public void ThrowsExceptionWhenProjectFileNameIsNull()
+// {
+// agent.ExtractStabilityResults(null);
+// }
+//
+// [Test]
+// [ExpectedException(typeof(StabilityServiceAgentException))]
+// public void ThrowsExceptionWhenOutputFileIsNotFound()
+// {
+// agent.ExtractStabilityResults(BadTestFile);
+// }
+ }
+
+}
Index: dam failuremechanisms/damMacroStability/trunk/src/Deltares.DamMacroStability.Calculator/Deltares.DamMacroStability.Calculator.csproj
===================================================================
diff -u -r387 -r393
--- dam failuremechanisms/damMacroStability/trunk/src/Deltares.DamMacroStability.Calculator/Deltares.DamMacroStability.Calculator.csproj (.../Deltares.DamMacroStability.Calculator.csproj) (revision 387)
+++ dam failuremechanisms/damMacroStability/trunk/src/Deltares.DamMacroStability.Calculator/Deltares.DamMacroStability.Calculator.csproj (.../Deltares.DamMacroStability.Calculator.csproj) (revision 393)
@@ -37,7 +37,8 @@
Properties\GlobalAssemblyInfo.cs
-
+
+