Index: DamEngine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlInput.cs =================================================================== diff -u -r6674 -r6738 --- DamEngine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlInput.cs (.../FillDamFromXmlInput.cs) (revision 6674) +++ DamEngine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlInput.cs (.../FillDamFromXmlInput.cs) (revision 6738) @@ -290,7 +290,7 @@ curSpec.FailureMechanismParametersMStab.MStabParameters = new MStabParameters(); MStabParameters curStabParamas = curSpec.FailureMechanismParametersMStab.MStabParameters; curStabParamas.SearchMethod = ConversionHelper.ConvertToSearchMethod(input.StabilityParameters.SearchMethod); - // ToDo zant2bka: Is this a good place to set the model? Is was also read in TransferAnalysisSpecification + curStabParamas.IsUpliftVanRunOnlyWhenUpliftOccurs = input.StabilityParameters.IsUpliftVanRunOnlyWhenUpliftOccurs; if (input.StabilityModelTypeSpecified) { curStabParamas.Model = ConversionHelper.ConvertToStabilityModelType(input.StabilityModelType); Index: DamEngine/trunk/src/Deltares.DamEngine.Data/General/MStabParameters.cs =================================================================== diff -u -r6404 -r6738 --- DamEngine/trunk/src/Deltares.DamEngine.Data/General/MStabParameters.cs (.../MStabParameters.cs) (revision 6404) +++ DamEngine/trunk/src/Deltares.DamEngine.Data/General/MStabParameters.cs (.../MStabParameters.cs) (revision 6738) @@ -100,12 +100,14 @@ { Model = StabilityModelType.Bishop; SearchMethod = StabilitySearchMethod.Grid; + IsUpliftVanRunOnlyWhenUpliftOccurs = true; GridPosition = StabilityGridPosition.Right; SlipCircleDefinition = new SlipCircleDefinition(); } public StabilityModelType Model { get; set; } public StabilitySearchMethod SearchMethod { get; set; } + public bool IsUpliftVanRunOnlyWhenUpliftOccurs { get; set; } public string ProjectFileName { get; set; } [Validate] public SlipCircleDefinition SlipCircleDefinition { get; set; } @@ -116,6 +118,7 @@ { Model = mstabParameters.Model; SearchMethod = mstabParameters.SearchMethod; + IsUpliftVanRunOnlyWhenUpliftOccurs = mstabParameters.IsUpliftVanRunOnlyWhenUpliftOccurs; GridPosition = mstabParameters.GridPosition; ProjectFileName = mstabParameters.ProjectFileName; Index: DamEngine/trunk/xsd/DamStabilityParameters.xsd =================================================================== diff -u -r6195 -r6738 --- DamEngine/trunk/xsd/DamStabilityParameters.xsd (.../DamStabilityParameters.xsd) (revision 6195) +++ DamEngine/trunk/xsd/DamStabilityParameters.xsd (.../DamStabilityParameters.xsd) (revision 6738) @@ -10,6 +10,7 @@ + Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapper.cs =================================================================== diff -u -r6717 -r6738 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapper.cs (.../MacroStabilityInwardsKernelWrapper.cs) (revision 6717) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapper.cs (.../MacroStabilityInwardsKernelWrapper.cs) (revision 6738) @@ -120,7 +120,8 @@ Waternet waterNet = MacroStabilityCommonHelper.CreateWaternet(damKernelInput, plLines); - if (FailureMechanismParametersMStab.MStabParameters.Model == StabilityModelType.UpliftVan && !upliftSituation.IsUplift) + if (FailureMechanismParametersMStab.MStabParameters.Model == StabilityModelType.UpliftVan + && !upliftSituation.IsUplift && FailureMechanismParametersMStab.MStabParameters.IsUpliftVanRunOnlyWhenUpliftOccurs) { return PrepareResult.NoUplift; } @@ -139,7 +140,8 @@ PrepareResult firstPrepareResult = MacroStabilityCommonHelper.PrepareKernel(stabilityCalculator, fileNameForCalculation); - if (isBishopUpliftVan && upliftSituation.IsUplift && firstPrepareResult == PrepareResult.Successful) + if (isBishopUpliftVan && (upliftSituation.IsUplift || !FailureMechanismParametersMStab.MStabParameters.IsUpliftVanRunOnlyWhenUpliftOccurs) + && firstPrepareResult == PrepareResult.Successful) { model = StabilityModelType.UpliftVan; FailureMechanismParametersMStab.MStabParameters.Model = model; @@ -220,7 +222,7 @@ stabilityCalculator, out messages); AddFileNameToLogMessages(messages, fileNameForCalculation); - if (isBishopUpliftVan && macroStabilityOutput.UpliftSituation.IsUplift) + if (isBishopUpliftVan && (macroStabilityOutput.UpliftSituation.IsUplift || !FailureMechanismParametersMStab.MStabParameters.IsUpliftVanRunOnlyWhenUpliftOccurs)) { macroStabilityKernelDataInput.Input.StabilityModel.ModelOption = StabilityModelOption.UpliftVan; macroStabilityKernelDataInput.MStabParameters.Model = StabilityModelType.UpliftVan; Index: DamEngine/trunk/src/Deltares.DamEngine.IntegrationTests/TestFiles/InputTutorialStability2D.xml =================================================================== diff -u -r6677 -r6738 --- DamEngine/trunk/src/Deltares.DamEngine.IntegrationTests/TestFiles/InputTutorialStability2D.xml (.../InputTutorialStability2D.xml) (revision 6677) +++ DamEngine/trunk/src/Deltares.DamEngine.IntegrationTests/TestFiles/InputTutorialStability2D.xml (.../InputTutorialStability2D.xml) (revision 6738) @@ -5485,7 +5485,7 @@ - + Index: DamEngine/trunk/xsd/GenerateClasses_SourceFromCdrive.bat =================================================================== diff -u --- DamEngine/trunk/xsd/GenerateClasses_SourceFromCdrive.bat (revision 0) +++ DamEngine/trunk/xsd/GenerateClasses_SourceFromCdrive.bat (revision 6738) @@ -0,0 +1,9 @@ +REM Open Command Prompt in admin mode +REM Go to location where xsd.exe is, e.g. C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools + +xsd /c /l:cs /n:Deltares.DamEngine.Io.XmlInput C:\src\dam\DamEngine\trunk\xsd\DamInput.xsd +copy DamInput.cs C:\src\dam\DamEngine\trunk\src\Deltares.DamEngine.Io\DamInput.cs + +xsd /c /l:cs /n:Deltares.DamEngine.Io.XmlOutput C:\src\dam\DamEngine\trunk\xsd\DamOutput.xsd +copy DamOutput.cs C:\src\dam\DamEngine\trunk\src\Deltares.DamEngine.Io\DamOutput.cs + Index: DamEngine/trunk/src/Deltares.DamEngine.Io/DamInput.cs =================================================================== diff -u -r6674 -r6738 --- DamEngine/trunk/src/Deltares.DamEngine.Io/DamInput.cs (.../DamInput.cs) (revision 6674) +++ DamEngine/trunk/src/Deltares.DamEngine.Io/DamInput.cs (.../DamInput.cs) (revision 6738) @@ -1035,6 +1035,8 @@ private StabilityParametersSearchMethod searchMethodField; + private bool isUpliftVanRunOnlyWhenUpliftOccursField; + private StabilityParametersBishopSearchAreaDetermination bishopSearchAreaDeterminationField; private double bishopTangentLinesDistanceField; @@ -1099,6 +1101,10 @@ private bool upliftVanTangentLinesDistanceFieldSpecified; + public StabilityParameters() { + this.isUpliftVanRunOnlyWhenUpliftOccursField = true; + } + /// [System.Xml.Serialization.XmlAttributeAttribute()] public StabilityParametersSearchMethod SearchMethod { @@ -1112,6 +1118,18 @@ /// [System.Xml.Serialization.XmlAttributeAttribute()] + [System.ComponentModel.DefaultValueAttribute(true)] + public bool IsUpliftVanRunOnlyWhenUpliftOccurs { + get { + return this.isUpliftVanRunOnlyWhenUpliftOccursField; + } + set { + this.isUpliftVanRunOnlyWhenUpliftOccursField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] public StabilityParametersBishopSearchAreaDetermination BishopSearchAreaDetermination { get { return this.bishopSearchAreaDeterminationField; Index: DamEngine/trunk/src/Deltares.DamEngine.IntegrationTests/IntegrationTests/MacroStabilityInwardsTests.cs =================================================================== diff -u -r6716 -r6738 --- DamEngine/trunk/src/Deltares.DamEngine.IntegrationTests/IntegrationTests/MacroStabilityInwardsTests.cs (.../MacroStabilityInwardsTests.cs) (revision 6716) +++ DamEngine/trunk/src/Deltares.DamEngine.IntegrationTests/IntegrationTests/MacroStabilityInwardsTests.cs (.../MacroStabilityInwardsTests.cs) (revision 6738) @@ -106,7 +106,9 @@ } [Test] - public void TestRunMacroStabilityTutorialDesignUpliftVan_NoUplift() + [TestCase(true)] + [TestCase(false)] + public void TestRunMacroStabilityTutorialDesignUpliftVan_NoUplift(bool isUpliftVanRunOnlyWhenUpliftOccurs) { // Based on DAM UI tutorial for stability, for location DWP_18 const string calcDir = "TestStabInwardsUpliftVan_NoUplift"; @@ -120,22 +122,24 @@ inputString = XmlAdapter.SelectLocations(inputString, locations); inputString = XmlAdapter.ChangeStabilityInputModel(inputString, InputStabilityModelType.UpliftVan); - inputString = XmlAdapter.ChangeValueInXml(inputString, "SearchMethod", "CalculationGrid"); inputString = XmlAdapter.ChangeValueInXml(inputString, "ProjectPath", ""); // Current directory will be used inputString = XmlAdapter.ChangeValueInXml(inputString, "CalculationMap", calcDir); // Current directory will be used + inputString = XmlAdapter.ChangeValueInXml(inputString, "IsUpliftVanRunOnlyWhenUpliftOccurs", isUpliftVanRunOnlyWhenUpliftOccurs.ToString().ToLower()); Output output = GeneralHelper.RunAfterInputValidation(inputString); Assert.Multiple(() => { Assert.That(output.Results.CalculationResults, Has.Length.EqualTo(1)); - Assert.That(output.Results.CalculationMessages, Has.Length.EqualTo(1)); + Assert.That(output.Results.CalculationMessages, isUpliftVanRunOnlyWhenUpliftOccurs ? Has.Length.EqualTo(1) : Has.Length.EqualTo(0)); }); + DesignResult result = output.Results.CalculationResults[0]; Assert.Multiple(() => { - Assert.That(result.StabilityDesignResults.SafetyFactorSpecified, Is.False); - // ResultMessage "No uplift" - Assert.That(result.StabilityDesignResults.ResultMessage, Is.EqualTo("No uplift")); + Assert.That(result.StabilityDesignResults.SafetyFactorSpecified, isUpliftVanRunOnlyWhenUpliftOccurs ? Is.False : Is.True); + Assert.That(result.StabilityDesignResults.SafetyFactor, + isUpliftVanRunOnlyWhenUpliftOccurs ? Is.EqualTo(0.0).Within(tolerance) : Is.EqualTo(1.341).Within(tolerance)); + Assert.That(result.StabilityDesignResults.ResultMessage, isUpliftVanRunOnlyWhenUpliftOccurs ? Is.EqualTo("No uplift") : Is.EqualTo("")); // Check that a line is specified Assert.That(result.StabilityDesignResults.RedesignedSurfaceLine, Is.Not.Null); // Profile name = DWP_18.stix @@ -149,7 +153,8 @@ { Assert.That(upliftSituation.IsUplift, Is.EqualTo(false)); // Calculation Result - Assert.That(ConversionHelper.ConvertToCalculationResult(result.CalculationResult), Is.EqualTo(CalculationResult.NoRun)); + Assert.That(ConversionHelper.ConvertToCalculationResult(result.CalculationResult), + isUpliftVanRunOnlyWhenUpliftOccurs ? Is.EqualTo(CalculationResult.NoRun) : Is.EqualTo(CalculationResult.Succeeded)); }); } @@ -283,7 +288,9 @@ } [Test] - public void TestRunMacroStabilityTutorialDesignBishopUpliftVan_NoUplift() + [TestCase(true)] + [TestCase(false)] + public void TestRunMacroStabilityTutorialDesignBishopUpliftVan_NoUplift(bool isUpliftVanRunOnlyWhenUpliftOccurs) { // Based on DAM UI tutorial for stability, for location DWP_18 const string calcDir = "TestStabInwardsBishopUpliftVan_NoUplift"; @@ -299,6 +306,7 @@ inputString = XmlAdapter.ChangeStabilityInputModel(inputString, InputStabilityModelType.BishopUpliftVan); inputString = XmlAdapter.ChangeValueInXml(inputString, "ProjectPath", ""); // Current directory will be used inputString = XmlAdapter.ChangeValueInXml(inputString, "CalculationMap", calcDir); // Current directory will be used + inputString = XmlAdapter.ChangeValueInXml(inputString, "IsUpliftVanRunOnlyWhenUpliftOccurs", isUpliftVanRunOnlyWhenUpliftOccurs.ToString().ToLower()); Output output = GeneralHelper.RunAfterInputValidation(inputString); Assert.Multiple(() => @@ -321,8 +329,10 @@ result = output.Results.CalculationResults[1].StabilityDesignResults; Assert.Multiple(() => { - Assert.That(result.SafetyFactorSpecified, Is.False); - Assert.That(result.ResultMessage, Is.EqualTo("No uplift")); + Assert.That(result.SafetyFactorSpecified, isUpliftVanRunOnlyWhenUpliftOccurs ? Is.False : Is.True); + Assert.That(result.SafetyFactor, + isUpliftVanRunOnlyWhenUpliftOccurs ? Is.EqualTo(0.0).Within(tolerance) : Is.EqualTo(1.341).Within(tolerance)); + Assert.That(result.ResultMessage, isUpliftVanRunOnlyWhenUpliftOccurs ? Is.EqualTo("No uplift") : Is.EqualTo("")); Assert.That(result.UpliftSituation.IsUplift, Is.False); Assert.That(result.StabilityModelType, Is.EqualTo(DesignResultStabilityDesignResultsStabilityModelType.UpliftVan)); }); @@ -331,7 +341,8 @@ Assert.Multiple(() => { Assert.That(result.SafetyFactorSpecified, Is.True); - Assert.That(result.SafetyFactor, Is.EqualTo(1.357).Within(tolerance)); + Assert.That(result.SafetyFactor, + isUpliftVanRunOnlyWhenUpliftOccurs ? Is.EqualTo(1.357).Within(tolerance) : Is.EqualTo(1.341).Within(tolerance)); Assert.That(result.ResultMessage, Is.EqualTo("")); Assert.That(result.UpliftSituation.IsUplift, Is.False); Assert.That(result.StabilityModelType, Is.EqualTo(DesignResultStabilityDesignResultsStabilityModelType.BishopUpliftVan)); @@ -340,7 +351,8 @@ { // Calculation Result Assert.That(ConversionHelper.ConvertToCalculationResult(output.Results.CalculationResults[0].CalculationResult), Is.EqualTo(CalculationResult.Succeeded)); - Assert.That(ConversionHelper.ConvertToCalculationResult(output.Results.CalculationResults[1].CalculationResult), Is.EqualTo(CalculationResult.NoRun)); + Assert.That(ConversionHelper.ConvertToCalculationResult(output.Results.CalculationResults[1].CalculationResult), + isUpliftVanRunOnlyWhenUpliftOccurs ? Is.EqualTo(CalculationResult.NoRun) : Is.EqualTo(CalculationResult.Succeeded)); Assert.That(ConversionHelper.ConvertToCalculationResult(output.Results.CalculationResults[2].CalculationResult), Is.EqualTo(CalculationResult.Succeeded)); }); }