Index: DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/MacroStabilityTests.cs =================================================================== diff -u -r1034 -r1060 --- DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/MacroStabilityTests.cs (.../MacroStabilityTests.cs) (revision 1034) +++ DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/MacroStabilityTests.cs (.../MacroStabilityTests.cs) (revision 1060) @@ -302,6 +302,147 @@ Assert.AreEqual(CalculationResult.Succeeded, ConversionHelper.ConvertToCalculationResult(output.Results.CalculationResults.DesignResults[2].CalculationResult)); } + [Test] + public void TestRunMacroStabilityDeltaDijkZoneAreasBishopWith1D() + { + // Expected results are determined by running dam\dam clients\DamUI\trunk\data\DamEngineTestProjects\DeltaDijk_zonering_BI + // with Dam Classic rev.1059 + // This tests both zone areas and use of 1D profiles + const string calcDir = "TestOutStabZoneBishop"; + if (Directory.Exists(calcDir)) + { + Directory.Delete(calcDir, true); // delete previous results + } + + Directory.CreateDirectory(calcDir); + + + const string fileName = @"TestFiles\DeltaDijkZoneringInwards.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\DeltaDijk normal.geometries2D.0\"); + inputString = ChangeValueInXml(inputString, "SoilDatabaseName", @"TestFiles\DeltaDijk normal0.soilmaterials.mdb"); + EngineInterface engineInterface = new EngineInterface(inputString); + Assert.IsNotNull(engineInterface.DamProjectData); + + string outputString = engineInterface.Run(); + + Assert.IsNotNull(outputString); + var output = DamXmlSerialization.LoadOutputFromXmlString(outputString); + + // one location is calculated with 3 1D profiles + Assert.AreEqual(3, output.Results.CalculationResults.DesignResults.Length); + Assert.AreEqual("6-4-1-A-1-F", output.Results.CalculationResults.DesignResults[0].LocationName); + Assert.AreEqual("6-4-1-A-1-F_1_s", output.Results.CalculationResults.DesignResults[0].ProfileName); + Assert.AreEqual("6-4-1-A-1-F", output.Results.CalculationResults.DesignResults[1].LocationName); + Assert.AreEqual("6-4-1-A-1-F_2_s", output.Results.CalculationResults.DesignResults[1].ProfileName); + Assert.AreEqual("6-4-1-A-1-F", output.Results.CalculationResults.DesignResults[2].LocationName); + Assert.AreEqual("6-4-1-A-1-F_3_s", output.Results.CalculationResults.DesignResults[2].ProfileName); + + var result = output.Results.CalculationResults.DesignResults[0]; + // SafetyFactor=1.621 (lowest of zone 1 and 2) + Assert.AreEqual(1.621, result.StabilityDesignResults.SafetyFactor, tolerance); + + // Zone1SafetyFactor=1.621 + Assert.AreEqual(1.621, result.StabilityDesignResults.Zone1SafetyFactor, tolerance); + // Zone1EntryPointX=26.653 + Assert.AreEqual(26.653, result.StabilityDesignResults.Zone1EntryPointX, tolerance); + // Zone1ExitPointX=32.807 + Assert.AreEqual(32.807, result.StabilityDesignResults.Zone1ExitPointX, tolerance); + + // Zone2SafetyFactor=1.644 + Assert.AreEqual(1.644, result.StabilityDesignResults.Zone2SafetyFactor, tolerance); + // Zone2EntryPointX=27.196 + Assert.AreEqual(27.196, result.StabilityDesignResults.Zone2EntryPointX, tolerance); + // Zone2ExitPointX=32.783 + Assert.AreEqual(32.783, result.StabilityDesignResults.Zone2ExitPointX, tolerance); + + // skip testing some of the results like uplift etc. + + // Calculation Result + Assert.AreEqual(CalculationResult.Succeeded, ConversionHelper.ConvertToCalculationResult(result.CalculationResult)); + + // test safety factor for other profiles + result = output.Results.CalculationResults.DesignResults[1]; + // SafetyFactor=1.620 + Assert.AreEqual(1.620, result.StabilityDesignResults.SafetyFactor, tolerance); + result = output.Results.CalculationResults.DesignResults[2]; + // SafetyFactor=1.621 + Assert.AreEqual(1.621, result.StabilityDesignResults.SafetyFactor, tolerance); + } + + [Test] + public void TestRunMacroStabilityDeltaDijkZoneAreasUpliftVanWith1D() + { + // Expected results are determined by running dam\dam clients\DamUI\trunk\data\DamEngineTestProjects\DeltaDijk_zonering_BI + // with Dam Classic rev.1059 + // This tests both zone areas and use of 1D profiles + const string calcDir = "TestOutStabZoneUpliftVan"; + if (Directory.Exists(calcDir)) + { + Directory.Delete(calcDir, true); // delete previous results + } + + Directory.CreateDirectory(calcDir); + + + const string fileName = @"TestFiles\DeltaDijkZoneringInwards.xml"; + string inputString = File.ReadAllText(fileName); + inputString = ChangeInputModel(inputString, InputStabilityModelType.UpliftVan); + inputString = ChangeValueInXml(inputString, "ProjectPath", ""); // Current directory will be used + inputString = ChangeValueInXml(inputString, "CalculationMap", calcDir); // Current directory will be used + inputString = ChangeValueInXml(inputString, "MapForSoilgeometries2D", @"TestFiles\DeltaDijk normal.geometries2D.0\"); + inputString = ChangeValueInXml(inputString, "SoilDatabaseName", @"TestFiles\DeltaDijk normal0.soilmaterials.mdb"); + EngineInterface engineInterface = new EngineInterface(inputString); + Assert.IsNotNull(engineInterface.DamProjectData); + + string outputString = engineInterface.Run(); + + Assert.IsNotNull(outputString); + var output = DamXmlSerialization.LoadOutputFromXmlString(outputString); + + // one location is calculated with 3 1D profiles + Assert.AreEqual(3, output.Results.CalculationResults.DesignResults.Length); + Assert.AreEqual("6-4-1-A-1-F", output.Results.CalculationResults.DesignResults[0].LocationName); + Assert.AreEqual("6-4-1-A-1-F_1_s", output.Results.CalculationResults.DesignResults[0].ProfileName); + Assert.AreEqual("6-4-1-A-1-F", output.Results.CalculationResults.DesignResults[1].LocationName); + Assert.AreEqual("6-4-1-A-1-F_2_s", output.Results.CalculationResults.DesignResults[1].ProfileName); + Assert.AreEqual("6-4-1-A-1-F", output.Results.CalculationResults.DesignResults[2].LocationName); + Assert.AreEqual("6-4-1-A-1-F_3_s", output.Results.CalculationResults.DesignResults[2].ProfileName); + + var result = output.Results.CalculationResults.DesignResults[0]; + // SafetyFactor=0.983 (lowest of zone 1 and 2) + Assert.AreEqual(0.983, result.StabilityDesignResults.SafetyFactor, tolerance); + + // Zone1SafetyFactor=0.983 + Assert.AreEqual(0.983, result.StabilityDesignResults.Zone1SafetyFactor, tolerance); + // Zone1EntryPointX=29.779 + Assert.AreEqual(29.779, result.StabilityDesignResults.Zone1EntryPointX, tolerance); + // Zone1ExitPointX72.599= + Assert.AreEqual(72.599, result.StabilityDesignResults.Zone1ExitPointX, tolerance); + + // Zone2SafetyFactor=2.221 + Assert.AreEqual(2.221, result.StabilityDesignResults.Zone2SafetyFactor, tolerance); + // Zone2EntryPointX=27.1 + Assert.AreEqual(27.1, result.StabilityDesignResults.Zone2EntryPointX, tolerance); + // Zone2ExitPointX=72.524 + Assert.AreEqual(72.524, result.StabilityDesignResults.Zone2ExitPointX, tolerance); + + // skip testing some of the results like uplift etc. + + // Calculation Result + Assert.AreEqual(CalculationResult.Succeeded, ConversionHelper.ConvertToCalculationResult(result.CalculationResult)); + + // test safety factor for other profiles + result = output.Results.CalculationResults.DesignResults[1]; + // SafetyFactor=1.811 + Assert.AreEqual(1.811, result.StabilityDesignResults.SafetyFactor, tolerance); + result = output.Results.CalculationResults.DesignResults[2]; + // SafetyFactor=1.591 + Assert.AreEqual(1.591, result.StabilityDesignResults.SafetyFactor, tolerance); + } + public string ChangeInputModel(string input, InputStabilityModelType modelType) { string pattern = "StabilityModelType=\"Bishop\"";