Index: DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/MacroStabilityTests.cs =================================================================== diff -u -r1162 -r1163 --- DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/MacroStabilityTests.cs (.../MacroStabilityTests.cs) (revision 1162) +++ DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/MacroStabilityTests.cs (.../MacroStabilityTests.cs) (revision 1163) @@ -673,9 +673,9 @@ Assert.AreEqual("6-4-3-A-1-C", result.LocationName); Assert.AreEqual("6-4-3-A-1-C_2_s", result.ProfileName); // Bishop/Uplift Van - Assert.AreEqual(CalculationResult.Succeeded, ConversionHelper.ConvertToCalculationResult(result.CalculationResult)); - // SafetyFactor=2.219 - Assert.AreEqual(2.219, result.StabilityDesignResults.SafetyFactor, tolerance); + Assert.AreEqual(CalculationResult.UnexpectedError, ConversionHelper.ConvertToCalculationResult(result.CalculationResult)); + // SafetyFactor not specified + Assert.IsFalse(result.StabilityDesignResults.SafetyFactorSpecified); } public string ChangeInputModel(string input, InputStabilityModelType modelType) Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStabilityInwards/DamMacroStabilityInwardsKernelWrapper.cs =================================================================== diff -u -r1153 -r1163 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStabilityInwards/DamMacroStabilityInwardsKernelWrapper.cs (.../DamMacroStabilityInwardsKernelWrapper.cs) (revision 1153) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStabilityInwards/DamMacroStabilityInwardsKernelWrapper.cs (.../DamMacroStabilityInwardsKernelWrapper.cs) (revision 1163) @@ -74,22 +74,22 @@ if (damKernelInput.SubSoilScenario.SegmentFailureMechanismType == FailureMechanismSystemType.StabilityInside) { + var bishopUpliftVan = FailureMechanismParametersMStab.MStabParameters.Model == + MStabModelType.BishopUpliftVan; var model = FailureMechanismParametersMStab.MStabParameters.Model; - if (model == MStabModelType.BishopUpliftVan) + if (bishopUpliftVan) { // if current model is BishopUpliftVan then set to Bishop for proper name/path for inputfile model = MStabModelType.Bishop; } FailureMechanismParametersMStab.ProjectWorkingPath = damKernelInput.CalculationDir; - if (damKernelInput.SubSoilScenario.SoilProfileType == SoilProfileType.ProfileTypeStiFile) { damKernelInput.SubSoilScenario.FullStiFileName = Path.Combine(damKernelInput.ProjectDir, Path.Combine(damKernelInput.Location.StabilityOptions.SoilGeometries2DPath, damKernelInput.SubSoilScenario.StiFileName)); } - var damMacroStabilityInput = new DamMacroStabilityInput() { DGeoStabilityExePath = FailureMechanismParametersMStab.DGeoStabilityExePath, @@ -103,74 +103,67 @@ damMacroStabilityOutput.UpliftSituation = upliftSituation; kernelDataOutput = damMacroStabilityOutput; - // Check the model to see what is to be calculted and how many calculations are required - switch (FailureMechanismParametersMStab.MStabParameters.Model) + // Check the model to see what is to be calculated and how many calculations are required + if (bishopUpliftVan) { - case MStabModelType.Bishop: - case MStabModelType.UpliftVan: - { - // prepare the requested calc - break; - } - case MStabModelType.BishopUpliftVan: - { - // see if uplift is required - // if so, both upliftvan and bishop are to be prepared, calculated and worst case is to be determined - damMacroStabilityInput.DGeoStabilityInputFileNameSecondModel = - DamMacroStabilityUtils.GetStabilityInputFileName(damKernelInput, iterationIndex, - MStabModelType.UpliftVan, FailureMechanismParametersMStab.ProjectWorkingPath); - // if not, only Bishop calculation so leave SecondModel empty. - break; - } - default: - { - //model not implemented error - break; - } + // see if uplift is required + // if so, both upliftvan and bishop are to be prepared, calculated and worst case is to be determined + model = MStabModelType.UpliftVan; + damMacroStabilityInput.DGeoStabilityInputFileNameSecondModel = + DamMacroStabilityUtils.GetStabilityInputFileName(damKernelInput, iterationIndex, + model, FailureMechanismParametersMStab.ProjectWorkingPath); + // if not, only Bishop calculation so leave SecondModel empty. } kernelDataInput = damMacroStabilityInput; // When BishopUpliftVan is performed, make sure the first one is Bishop - var bishopUpliftVan = damMacroStabilityInput.FailureMechanismParametersMStab.MStabParameters.Model == - MStabModelType.BishopUpliftVan; if (bishopUpliftVan) { 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 (bishopUpliftVan) + try { - // reset model - damMacroStabilityInput.FailureMechanismParametersMStab.MStabParameters.Model = MStabModelType.BishopUpliftVan; - if (upliftSituation.IsUplift) + // 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 (bishopUpliftVan) { - var inputFileName = damMacroStabilityInput.DGeoStabilityInputFileName; - // set proper name and model - damMacroStabilityInput.DGeoStabilityInputFileName = damMacroStabilityInput.DGeoStabilityInputFileNameSecondModel; - damMacroStabilityInput.FailureMechanismParametersMStab.MStabParameters.Model = MStabModelType.UpliftVan; - try + // reset model + damMacroStabilityInput.FailureMechanismParametersMStab.MStabParameters.Model = MStabModelType.BishopUpliftVan; + if (upliftSituation.IsUplift) { - // Write xml file - xmlDocument = CreateMstabDamXmlDocument(damKernelInput, damMacroStabilityInput); - // Use xml file to create sti file - CreateStiFile(xmlDocument); + 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 + damMacroStabilityInput.DGeoStabilityInputFileName = inputFileName; + } } - finally - { - // reset name and model - damMacroStabilityInput.DGeoStabilityInputFileName = inputFileName; - damMacroStabilityInput.FailureMechanismParametersMStab.MStabParameters.Model = MStabModelType.BishopUpliftVan; - } } } + finally + { + if (bishopUpliftVan) + { + // reset model + damMacroStabilityInput.FailureMechanismParametersMStab.MStabParameters.Model = MStabModelType.BishopUpliftVan; + } + } return PrepareResult.Successful; } @@ -213,41 +206,55 @@ input.FailureMechanismParametersMStab.MStabParameters.Model = MStabModelType.Bishop; } - // start (first) calculation - var stabilityOutputItem = ExcecuteCalculation(kernelDataInput, messages); - if (stabilityOutputItem != null) + try { - damMacroStabilityOutput.StabilityOutputItems.Add(stabilityOutputItem); - } + // start (first) calculation + var stabilityOutputItem = ExcecuteCalculation(kernelDataInput, messages); + if (stabilityOutputItem != null) + { + damMacroStabilityOutput.StabilityOutputItems.Add(stabilityOutputItem); + } - // now check if second calculation for BishopUpliftVan is needed, if so perform it. - if (bishopUpliftVan) - { - // reset model - input.FailureMechanismParametersMStab.MStabParameters.Model = MStabModelType.BishopUpliftVan; - - if (damMacroStabilityOutput.UpliftSituation.IsUplift) + // now check if second calculation for BishopUpliftVan is needed, if so perform it. + if (bishopUpliftVan) { - var inputFileName = input.DGeoStabilityInputFileName; - // set proper name and model - input.DGeoStabilityInputFileName = input.DGeoStabilityInputFileNameSecondModel; input.FailureMechanismParametersMStab.MStabParameters.Model = MStabModelType.UpliftVan; - try + + if (damMacroStabilityOutput.UpliftSituation.IsUplift) { - var stabilityOutputItemSecondModel = ExcecuteCalculation(kernelDataInput, messages); - if (stabilityOutputItemSecondModel != null) + var inputFileName = input.DGeoStabilityInputFileName; + // set proper name and model + input.DGeoStabilityInputFileName = input.DGeoStabilityInputFileNameSecondModel; + try { - damMacroStabilityOutput.StabilityOutputItems.Add(stabilityOutputItemSecondModel); + var stabilityOutputItemSecondModel = ExcecuteCalculation(kernelDataInput, messages); + if (stabilityOutputItemSecondModel != null) + { + damMacroStabilityOutput.StabilityOutputItems.Add(stabilityOutputItemSecondModel); + } } + finally + { + // reset name + input.DGeoStabilityInputFileName = inputFileName; + } } - finally + else { - // reset name and model - input.DGeoStabilityInputFileName = inputFileName; - input.FailureMechanismParametersMStab.MStabParameters.Model = MStabModelType.BishopUpliftVan; + // add result that tells that no calculation was made + stabilityOutputItem = new DamMacroStabilityOutputItem { CalculationResult = CalculationResult.NoRun }; + damMacroStabilityOutput.StabilityOutputItems.Add(stabilityOutputItem); } } } + finally + { + if (bishopUpliftVan) + { + // reset model + input.FailureMechanismParametersMStab.MStabParameters.Model = MStabModelType.BishopUpliftVan; + } + } } private static DamMacroStabilityOutputItem ExcecuteCalculation(IKernelDataInput kernelDataInput, List messages) @@ -381,7 +388,7 @@ var bishopUpliftVan = FailureMechanismParametersMStab.MStabParameters.Model == MStabModelType.BishopUpliftVan; if (bishopUpliftVan) { - if (damMacroStabilityOutput.StabilityOutputItems.Count > 1) // UpliftVan was calculated + if (damMacroStabilityOutput.StabilityOutputItems.Count > 1) { var damMacroStabilityOutputItem = damMacroStabilityOutput.StabilityOutputItems[1]; if (damMacroStabilityOutputItem != null) @@ -392,16 +399,6 @@ designResults.Add(designResult); } } - else - { - // add empty result for UpliftVan - var designResult = NewDesignResult(damKernelInput, designScenario); - designResult.DamFailureMechanismeCalculation.FailureMechanismParametersMStab.MStabParameters.Model = - MStabModelType.UpliftVan; - designResult.CalculationResult = CalculationResult.NoRun; - designResult.StabilityDesignResults.UpliftSituation = damMacroStabilityOutput.UpliftSituation; - designResults.Add(designResult); - } // add worst result from Bishop/UpliftVan, but only if both succeeded. if (designResults[0].CalculationResult == CalculationResult.Succeeded && designResults[1].CalculationResult == CalculationResult.Succeeded) @@ -415,16 +412,20 @@ designResults.Add(designResults[1]); } } + else if (designResults[0].CalculationResult != CalculationResult.Succeeded) + { + // There is no reason by Bishop should not have succeeded therefore no end results can be given + designResults.Add(designResults[0]); + } + else if (designResults[1].CalculationResult == CalculationResult.NoRun) + { + // No uplift therefore no UpliftVan calculation was made. Present Bishop result. + designResults.Add(designResults[0]); + } else { - if (designResults[1].CalculationResult == CalculationResult.Succeeded) - { - designResults.Add(designResults[1]); // only Uplift Van succeeded - } - else - { - designResults.Add(designResults[0]); // only Bishop succeeded or both did not succeed - } + // UpliftVan calculation failed. No end results can be given + designResults.Add(designResults[1]); } } } @@ -489,7 +490,7 @@ private static void FillDesignResult(DamMacroStabilityOutputItem damMacroStabilityOutputItem, DesignResult designResult) { designResult.CalculationResult = damMacroStabilityOutputItem.CalculationResult; - if (designResult.CalculationResult != CalculationResult.UnexpectedError) + if (designResult.CalculationResult == CalculationResult.Succeeded) { designResult.StabilityDesignResults.Zone1SafetyFactor = damMacroStabilityOutputItem.Zone1Results.SafetyFactor;