Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamMacroStabilityInwards/DamMacroStabilityInwardsKernelWrapperTests.cs =================================================================== diff -u -r948 -r950 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamMacroStabilityInwards/DamMacroStabilityInwardsKernelWrapperTests.cs (.../DamMacroStabilityInwardsKernelWrapperTests.cs) (revision 948) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamMacroStabilityInwards/DamMacroStabilityInwardsKernelWrapperTests.cs (.../DamMacroStabilityInwardsKernelWrapperTests.cs) (revision 950) @@ -49,7 +49,8 @@ { // expected results are based on test CanCalculateStabilitySafetyFactorGeometry2D // in 'https://repos.deltares.nl/repos/dam/dam classic' revision 190 - FullCalculation(MStabModelType.Bishop, 1.5570); + var expectedValues = new List { 1.5570 }; + FullCalculation(MStabModelType.Bishop, expectedValues, expectedValues); } [Test] @@ -60,11 +61,22 @@ // but I changed (in dam classic) the model to UpliftVan // and added UpliftCriterionStability = 1.2 // result in dam classic = 1.0105 - FullCalculation(MStabModelType.UpliftVan, 1.0105); + var expectedValues = new List { 1.0105 }; + FullCalculation(MStabModelType.UpliftVan, expectedValues, expectedValues); } - public void FullCalculation(MStabModelType model, double expectedValue) + [Test] + public void TestFullCalculationBishopUpliftVan() { + // expected result is worst of Bishop (1.5570) and UpliftVan (1.0105) + var expectedValues = new List { 1.5570, 1.0105 }; + var expectedOutputValues = new List { 1.5570, 1.0105, 1.0105 }; + FullCalculation(MStabModelType.BishopUpliftVan, expectedValues, expectedOutputValues); + } + + public void FullCalculation(MStabModelType model, List expectedCalculationValues, + List expectedOutputValues) + { const double diff = 0.01; var soilDbName = Path.Combine(TestFolder, "soilmaterials.mdb"); var soilGeometry2DName = "1D1.sti"; @@ -88,7 +100,6 @@ scenario.ModelFactors.RequiredSafetyFactorStabilityInnerSlope = 1.1; scenario.ModelFactors.UpliftCriterionStability = 1.2; - var subSoilScenario = new SoilGeometryProbability(); subSoilScenario.StiFileName = soilGeometry2DName; subSoilScenario.SoilProfileType = SoilProfileType.ProfileTypeStiFile; @@ -123,13 +134,21 @@ kernelWrapper.Execute(damStabilityInput, kernelOutput, out messages); DamMacroStabilityOutput damMacroStabilityOutput = (DamMacroStabilityOutput) kernelOutput; Assert.AreEqual(0, messages.Count); - Assert.AreEqual(expectedValue, damMacroStabilityOutput.StabilityOutputItems[0].Zone1Results.SafetyFactor, diff); - Assert.IsNull(damMacroStabilityOutput.StabilityOutputItems[0].Zone2Results); + Assert.AreEqual(expectedCalculationValues.Count, damMacroStabilityOutput.StabilityOutputItems.Count); + for (int index = 0; index < expectedCalculationValues.Count; index++) + { + Assert.AreEqual(expectedCalculationValues[0], damMacroStabilityOutput.StabilityOutputItems[0].Zone1Results.SafetyFactor, diff); + Assert.IsNull(damMacroStabilityOutput.StabilityOutputItems[0].Zone2Results); + } // Fill the design results List results; kernelWrapper.PostProcess(damKernelInput, damMacroStabilityOutput, "", out results); - Assert.AreEqual(expectedValue, results[0].StabilityDesignResults.SafetyFactor, diff); + Assert.AreEqual(expectedOutputValues.Count, results.Count); + for (int index = 0; index < expectedOutputValues.Count; index++) + { + Assert.AreEqual(expectedOutputValues[0], results[0].StabilityDesignResults.SafetyFactor, diff); + } } private XDocument ModifiedXmlDocument(string stiFileName) Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStabilityInwards/DamMacroStabilityInwardsKernelWrapper.cs =================================================================== diff -u -r925 -r950 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStabilityInwards/DamMacroStabilityInwardsKernelWrapper.cs (.../DamMacroStabilityInwardsKernelWrapper.cs) (revision 925) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStabilityInwards/DamMacroStabilityInwardsKernelWrapper.cs (.../DamMacroStabilityInwardsKernelWrapper.cs) (revision 950) @@ -128,12 +128,40 @@ kernelDataInput = damMacroStabilityInput; + // When there are two calculations to be performed (BishopUpliftVan), make sure the first one is Bishop + if (!string.IsNullOrEmpty(damMacroStabilityInput.DGeoStabilityInputFileNameSecondModel)) + { + damMacroStabilityInput.FailureMechanismParametersMStab.MStabParameters.Model = MStabModelType.Bishop; + } + + // start prepare for (first) calculation // Write xml file XDocument xmlDocument = CreateMstabDamXmlDocument(damKernelInput, damMacroStabilityInput); - // Use xml file to create sti file CreateStiFile(xmlDocument); + // now check if second calculation for BishopUpliftVan is needed, if so perform prepare. + if (!string.IsNullOrEmpty(damMacroStabilityInput.DGeoStabilityInputFileNameSecondModel)) + { + var inputFileName = damMacroStabilityInput.DGeoStabilityInputFileName; + // set proper name and model + damMacroStabilityInput.DGeoStabilityInputFileName = damMacroStabilityInput.DGeoStabilityInputFileNameSecondModel; + damMacroStabilityInput.FailureMechanismParametersMStab.MStabParameters.Model = MStabModelType.UpliftVan; + try + { + // Write xml file + xmlDocument = CreateMstabDamXmlDocument(damKernelInput, damMacroStabilityInput); + // Use xml file to create sti file + CreateStiFile(xmlDocument); + } + finally + { + // reset name and model + damMacroStabilityInput.DGeoStabilityInputFileName = inputFileName; + damMacroStabilityInput.FailureMechanismParametersMStab.MStabParameters.Model = MStabModelType.BishopUpliftVan; + } + } + return PrepareResult.Successful; } kernelDataInput = null; @@ -338,9 +366,15 @@ FillDesignResult(damMacroStabilityOutputItem, designResult); } designResults.Add(designResult); - //Todo combine results from bishop/upliftvan and add these too? check in old Dam. - // Bka: Old Dam shows both bishop, upliftvan and combined result. So this should - // add decisive result as well. + // add worst result from Bishop/UpliftVan + if (designResults[0].SafetyFactor <= designResults[1].SafetyFactor) + { + designResults.Add(designResults[0]); + } + else + { + designResults.Add(designResults[1]); + } } } Index: DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/MacroStabilityTests.cs =================================================================== diff -u -r929 -r950 --- DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/MacroStabilityTests.cs (.../MacroStabilityTests.cs) (revision 929) +++ DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/MacroStabilityTests.cs (.../MacroStabilityTests.cs) (revision 950) @@ -43,13 +43,12 @@ { // Expected results are determined by running dam\dam clients\DamUI\trunk\data\DamEngineTestProjects\DAM Tutorial Design // with Dam Classic rev.833 - const string outDir = "TestOutStab"; - var workingDir = Path.Combine(Directory.GetCurrentDirectory(), outDir); - var testDir = Path.Combine(workingDir, "Bishop"); - if (Directory.Exists(testDir)) + const string outDir = "TestOutStabBishop"; + if (Directory.Exists(outDir)) { - Directory.Delete(testDir, true); // delete previous results + Directory.Delete(outDir, true); // delete previous results } + var workingDir = Path.Combine(Directory.GetCurrentDirectory(), outDir); const string fileName = @"TestFiles\MacroStabilityTutorialDesignInputFile.xml"; string inputString = File.ReadAllText(fileName); inputString = ChangeValueInXml(inputString, "ProjectWorkingPath", workingDir); @@ -70,11 +69,12 @@ { // Expected results are determined by running dam\dam clients\DamUI\trunk\data\DamEngineTestProjects\DAM Tutorial Design // with Dam Classic rev.833 - var workingDir = Path.Combine(Directory.GetCurrentDirectory(), @"TestOutStab\UpliftVan"); - if (Directory.Exists(workingDir)) + const string outDir = "TestOutStabUpliftVan"; + if (Directory.Exists(outDir)) { - Directory.Delete(workingDir, true); + Directory.Delete(outDir, true); // delete previous results } + var workingDir = Path.Combine(Directory.GetCurrentDirectory(), outDir); const string fileName = @"TestFiles\MacroStabilityTutorialDesignInputFile.xml"; string inputString = File.ReadAllText(fileName); inputString = ChangeInputModel(inputString, InputStabilityModelType.UpliftVan); @@ -92,19 +92,22 @@ } [Test] - [Category(Categories.WorkInProgress)] public void TestRunMacroStabilityTutorialDesignBishopUpliftVan() { // Expected results are determined by running dam\dam clients\DamUI\trunk\data\DamEngineTestProjects\DAM Tutorial Design // with Dam Classic rev.833 - var workingDir = Path.Combine(Directory.GetCurrentDirectory(), @"TestOutStab\BishopUpliftVan"); - if (Directory.Exists(workingDir)) + const string outDir = "TestOutStabBishopUpliftVan"; + if (Directory.Exists(outDir)) { - Directory.Delete(workingDir, true); + Directory.Delete(outDir, true); // delete previous results } + var workingDir = Path.Combine(Directory.GetCurrentDirectory(), outDir); const string fileName = @"TestFiles\MacroStabilityTutorialDesignInputFile.xml"; string inputString = File.ReadAllText(fileName); inputString = ChangeInputModel(inputString, InputStabilityModelType.BishopUpliftVan); + inputString = ChangeValueInXml(inputString, "ProjectWorkingPath", workingDir); + inputString = ChangeValueInXml(inputString, "MapForSoilgeometries2D", @"TestFiles\DAM Tutorial Design.geometries2D.0\"); + inputString = ChangeValueInXml(inputString, "SoilDatabaseName", @"TestFiles\DAM Tutorial Design0.soilmaterials.mdb"); EngineInterface engineInterface = new EngineInterface(inputString); Assert.IsNotNull(engineInterface.DamProjectData); @@ -116,7 +119,7 @@ Assert.AreEqual(1.282, output.Results.CalculationResults.DesignResults[0].StabilityDesignResults.SafetyFactor, tolerance); // Uplift Van Assert.AreEqual(1.062, output.Results.CalculationResults.DesignResults[1].StabilityDesignResults.SafetyFactor, tolerance); - // Worst of Bishop and Uplift Van ToDo zant not sure where to put this result + // Worst of Bishop and Uplift Van Assert.AreEqual(1.062, output.Results.CalculationResults.DesignResults[2].StabilityDesignResults.SafetyFactor, tolerance); }