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 - + +