Index: DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/TestFiles/MacroStabilityTutorialDesignInputFile1LocationWithAdaption.xml =================================================================== diff -u -r1203 -r1225 --- DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/TestFiles/MacroStabilityTutorialDesignInputFile1LocationWithAdaption.xml (.../MacroStabilityTutorialDesignInputFile1LocationWithAdaption.xml) (revision 1203) +++ DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/TestFiles/MacroStabilityTutorialDesignInputFile1LocationWithAdaption.xml (.../MacroStabilityTutorialDesignInputFile1LocationWithAdaption.xml) (revision 1225) @@ -3,7 +3,7 @@ - + Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesDesign/DesignCalculatorFirstSlopeAdaptionThenShoulderAdaption.cs =================================================================== diff -u -r1218 -r1225 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesDesign/DesignCalculatorFirstSlopeAdaptionThenShoulderAdaption.cs (.../DesignCalculatorFirstSlopeAdaptionThenShoulderAdaption.cs) (revision 1218) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesDesign/DesignCalculatorFirstSlopeAdaptionThenShoulderAdaption.cs (.../DesignCalculatorFirstSlopeAdaptionThenShoulderAdaption.cs) (revision 1225) @@ -24,7 +24,6 @@ using System.Linq; using Deltares.DamEngine.Calculators.KernelWrappers.Common; using Deltares.DamEngine.Calculators.KernelWrappers.Interfaces; -using Deltares.DamEngine.Calculators.Properties; using Deltares.DamEngine.Data.Design; using Deltares.DamEngine.Data.General; using Deltares.DamEngine.Data.General.Results; Index: DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/MacroStabilityInwardsTests.cs =================================================================== diff -u -r1221 -r1225 --- DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/MacroStabilityInwardsTests.cs (.../MacroStabilityInwardsTests.cs) (revision 1221) +++ DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/MacroStabilityInwardsTests.cs (.../MacroStabilityInwardsTests.cs) (revision 1225) @@ -717,11 +717,12 @@ Assert.AreEqual(DesignResultStabilityDesignResultsStabilityModelType.BishopUpliftVan, result.StabilityDesignResults.StabilityModelType); } - [Test, Category("Work_In_Progress")] + [Test] // Expected results are determined by running .\DamUI\trunk\data\DamEngineTestProjects\DAM Tutorial Design\DAM Tutorial Design.damx // with Dam Classic rev.1059 // Select 1st location (DWP_1) // Model Bishop, Set safetyfactor Inwards to 1.4 + // Set NewMinDistanceDikeToeStartDitch = 3.0, UseNewMinDistanceDikeToeStartDitch = true (to force value to be written to XML) // Design strategy: SlopeAdaptionBeforeShoulderAdaption // Result: // SF = 1.444 Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStabilityInwards/DamMacroStabilityInwardsKernelWrapper.cs =================================================================== diff -u -r1217 -r1225 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStabilityInwards/DamMacroStabilityInwardsKernelWrapper.cs (.../DamMacroStabilityInwardsKernelWrapper.cs) (revision 1217) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStabilityInwards/DamMacroStabilityInwardsKernelWrapper.cs (.../DamMacroStabilityInwardsKernelWrapper.cs) (revision 1225) @@ -50,6 +50,8 @@ /// public FailureMechanismParametersMStab FailureMechanismParametersMStab { get; set; } + private int lastIterationIndex = 0; + /// /// Prepares the specified dam kernel input. /// @@ -328,7 +330,8 @@ damKernelInput.RiverLevelHigh, damKernelInput.RiverLevelLow, subSoilScenario, - null, requiredSafetyFactor.Value, + FailureMechanismParametersMStab.EmbankmentDesignParameters, + requiredSafetyFactor.Value, kernelDataInput.FailureMechanismParametersMStab, damKernelInput.DamFailureMechanismeCalculationSpecification.AssessmentScenarioJobSettings, out errorMessages); @@ -383,6 +386,7 @@ { var designResult = NewDesignResult(damKernelInput, designScenario); FillDesignResult(damMacroStabilityOutputItem, designResult); + designResult.StabilityDesignResults.NumberOfIterations = lastIterationIndex; designResult.StabilityDesignResults.UpliftSituation = damMacroStabilityOutput.UpliftSituation; designResults.Add(designResult); } @@ -398,6 +402,7 @@ { var designResult = NewDesignResult(damKernelInput, designScenario); FillDesignResult(damMacroStabilityOutputItem, designResult); + designResult.StabilityDesignResults.NumberOfIterations = lastIterationIndex; designResult.StabilityDesignResults.UpliftSituation = damMacroStabilityOutput.UpliftSituation; designResults.Add(designResult); } @@ -533,41 +538,52 @@ DamMacroStabilityInput damMacroStabilityInput = kernelDataInput as DamMacroStabilityInput; DamMacroStabilityUtils.ThrowWhenMacroStabilityKernelInputNull(damMacroStabilityInput); + lastIterationIndex = iterationIndex; string projectWorkingPath = damKernelInput.ProjectDir; MStabModelType model = FailureMechanismParametersMStab.MStabParameters.Model; if (model != MStabModelType.Bishop && model != MStabModelType.BishopUpliftVan) { throw new MacroStabilityException(string.Format(Resources.DamMacroStabilityKernelWrapper_DesignNotSupportedForModel, model)); } - string initialgeometryFile = DamMacroStabilityUtils.GetStabilityInputFileName(damKernelInput, iterationIndex, model, projectWorkingPath); + string mstabProjectFilename = DamMacroStabilityUtils.GetStabilityInputFileName(damKernelInput, iterationIndex, model, projectWorkingPath); var location = damKernelInput.Location; var surfaceLine = damKernelInput.Location.SurfaceLine; var subSoilScenario = damKernelInput.SubSoilScenario; double riverLevel = 0.5 * (surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtRiver).Z + surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtRiver).Z); List errorMessages; + if (iterationIndex < 1) + { + // In the first prepareDesign, the initial geometry filename is determined and should be stored in the embankmentDesignParameters + embankmentDesignParameters = new EmbankmentDesignParameters() + { + EmbankmentMaterialname = location.DikeEmbankmentMaterial, + PreviousGeometry2DFilename = mstabProjectFilename + }; + FailureMechanismParametersMStab.EmbankmentDesignParameters = embankmentDesignParameters; + } + else + { + // In the following prepareDesign calls just return the stored embankmentDesignParameters + embankmentDesignParameters = FailureMechanismParametersMStab.EmbankmentDesignParameters; + } XDocument mstabXML = MStabXmlDoc.CreateMStabXmlDoc( - initialgeometryFile, + mstabProjectFilename, damKernelInput.Location, riverLevel, 0.0, subSoilScenario, - null, location.ModelFactors.RequiredSafetyFactorStabilityInnerSlope.Value, + embankmentDesignParameters, location.ModelFactors.RequiredSafetyFactorStabilityInnerSlope.Value, damMacroStabilityInput.FailureMechanismParametersMStab, damKernelInput.DamFailureMechanismeCalculationSpecification.AssessmentScenarioJobSettings, out errorMessages); - mstabXML.Save(initialgeometryFile + ".xml"); - damMacroStabilityInput.DGeoStabilityInputFileName = initialgeometryFile; + mstabXML.Save(mstabProjectFilename + ".xml"); + damMacroStabilityInput.DGeoStabilityInputFileName = mstabProjectFilename; CreateStiFile(mstabXML); - embankmentDesignParameters = new EmbankmentDesignParameters() - { - EmbankmentMaterialname = location.DikeEmbankmentMaterial, - PreviousGeometry2DFilename = initialgeometryFile - }; - if (!File.Exists(initialgeometryFile)) + if (!File.Exists(mstabProjectFilename)) { throw new MacroStabilityException(Resources.DamMacroStabilityKernelWrapper_CannotCreateInitialGeometryFile); }