Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityCommonHelper.cs =================================================================== diff -u -r6485 -r6486 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityCommonHelper.cs (.../MacroStabilityCommonHelper.cs) (revision 6485) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityCommonHelper.cs (.../MacroStabilityCommonHelper.cs) (revision 6486) @@ -46,6 +46,8 @@ using CharacteristicPointType = Deltares.DamEngine.Data.Geotechnics.CharacteristicPointType; using ConversionHelper = Deltares.DamEngine.Calculators.KernelWrappers.MacroStabilityCommon.MacroStabilityIo.ConversionHelper; using MacroStabilityOutput = Deltares.DamEngine.Calculators.KernelWrappers.MacroStabilityInwards.MacroStabilityOutput; +using MessagesTypeMessage = Deltares.MacroStability.Io.XmlValidationOutput.MessagesTypeMessage; +using MessageType = Deltares.MacroStability.Io.XmlValidationOutput.MessageType; using Point2D = Deltares.DamEngine.Data.Geometry.Point2D; using Soil = Deltares.DamEngine.Data.Geotechnics.Soil; using SoilProfileType = Deltares.DamEngine.Data.General.SoilProfileType; @@ -143,7 +145,7 @@ return bishopCalculationGrid; } - + /// /// Creates the actual calculation grids and tangent lines for the uplift model specific for the calculation /// @@ -239,7 +241,7 @@ designScenario, damKernelInput.SubSoilScenario.SoilProfile1D, soilProfile2DName) { // Initialize to the result of the designScenario - CalculationResult = (designScenario != null) ? designScenario.CalculationResult : CalculationResult.NoRun, + CalculationResult = designScenario != null ? designScenario.CalculationResult : CalculationResult.NoRun, StabilityDesignResults = new StabilityDesignResults() }; var stabilityDesignResults = new StabilityDesignResults @@ -300,7 +302,7 @@ try { // For now a simple check to see if any data has been past at all. - string inputAsXml = calculator.KernelModel.ToString(); + var inputAsXml = calculator.KernelModel.ToString(); if (inputAsXml is { Length: > 10 }) { @@ -340,12 +342,14 @@ { ((MacroStabilityOutput) kernelDataOutput).CalculationResult = CalculationResult.InvalidInputData; } + return 1; } + var macroStabilityInterface = new MacroStabilityInterface(macroStabilityKernelDataInput.Input); try { - var result = macroStabilityInterface.Validate(out ValidationOutputType validationOutput); + bool result = macroStabilityInterface.Validate(out ValidationOutputType validationOutput); if (result) { return 0; @@ -356,25 +360,25 @@ ((MacroStabilityOutput) kernelDataOutput).CalculationResult = CalculationResult.InvalidInputData; } - foreach (var resultMessage in validationOutput.Messages) + foreach (MessagesTypeMessage resultMessage in validationOutput.Messages) { var message = new LogMessage { Message = resultMessage.Message }; switch (resultMessage.MessageType) { - case Deltares.MacroStability.Io.XmlValidationOutput.MessageType.Error: + case MessageType.Error: { message.MessageType = LogMessageType.Error; break; } - case Deltares.MacroStability.Io.XmlValidationOutput.MessageType.Info: + case MessageType.Info: { message.MessageType = LogMessageType.Info; break; } - case Deltares.MacroStability.Io.XmlValidationOutput.MessageType.Warning: + case MessageType.Warning: { message.MessageType = LogMessageType.Warning; break; @@ -415,10 +419,10 @@ /// /// /// - public static void PerformStabilityCalculation(DamKernelInput damKernelInput, MStabParameters mStabParameters, - Waternet waterNet, double xCoordinateLowestUpliftFactorPoint, - MacroStabilityOutput macroStabilityOutput, string fileName, - MacroStabilityInterface calculator, out List errorMessages) + public static void PerformStabilityCalculation(DamKernelInput damKernelInput, MStabParameters mStabParameters, + Waternet waterNet, double xCoordinateLowestUpliftFactorPoint, + MacroStabilityOutput macroStabilityOutput, string fileName, + MacroStabilityInterface calculator, out List errorMessages) { macroStabilityOutput.CalculationResult = CalculationResult.NoRun; macroStabilityOutput.StabilityOutputItems ??= []; @@ -445,14 +449,37 @@ if (macroStabilityOutput.CalculationResult != CalculationResult.UnexpectedError) { - StixFileWriterConnector.WriteStixFileWithInput(damKernelInput, mStabParameters, waterNet, - xCoordinateLowestUpliftFactorPoint, macroStabilityOutput, + StixFileWriterConnector.WriteStixFileWithInput(damKernelInput, mStabParameters, waterNet, + xCoordinateLowestUpliftFactorPoint, macroStabilityOutput, fileName, new List()); - StixFileWriterConnector.WriteStixFileWithInputAndResults(damKernelInput, mStabParameters, waterNet, + StixFileWriterConnector.WriteStixFileWithInputAndResults(damKernelInput, mStabParameters, waterNet, xCoordinateLowestUpliftFactorPoint, macroStabilityOutput, fileName, errorMessages); } } + /// + /// Create the waternet using the 1D soil profile if available, otherwise the 2D soil profile. + /// + /// + /// + /// The waternet. + public static Waternet CreateWaternet(DamKernelInput damKernelInput, PlLines plLines) + { + double penetrationLength = damKernelInput.Location.ModelParametersForPlLines.PenetrationLength; + IntrusionVerticalWaterPressureType? pressureType = damKernelInput.Location.IntrusionVerticalWaterPressure; + + ThrowWhenSoilProfile2DIsNull(damKernelInput.SubSoilScenario); + + SurfaceLine2 surfaceLine = damKernelInput.Location.SurfaceLine; + if (damKernelInput.SubSoilScenario.SoilProfile1D != null) + { + return PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, damKernelInput.SubSoilScenario.SoilProfile1D, surfaceLine, penetrationLength, pressureType); + } + + SoilProfile2D soilProfile2D = damKernelInput.SubSoilScenario.SoilProfile2D; + return PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, soilProfile2D, surfaceLine, penetrationLength, pressureType); + } + private static void CreateCalculationGridInOutputItem(StabilityModel kernelModelStabilityModel, MacroStabilityOutputItem stabilityOutputItem) { switch (kernelModelStabilityModel.ModelOption) @@ -511,29 +538,6 @@ } /// - /// Create the waternet using the 1D soil profile if available, otherwise the 2D soil profile. - /// - /// - /// - /// The waternet. - public static Waternet CreateWaternet(DamKernelInput damKernelInput, PlLines plLines) - { - double penetrationLength = damKernelInput.Location.ModelParametersForPlLines.PenetrationLength; - IntrusionVerticalWaterPressureType? pressureType = damKernelInput.Location.IntrusionVerticalWaterPressure; - - ThrowWhenSoilProfile2DIsNull(damKernelInput.SubSoilScenario); - - SurfaceLine2 surfaceLine = damKernelInput.Location.SurfaceLine; - if (damKernelInput.SubSoilScenario.SoilProfile1D != null) - { - return PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, damKernelInput.SubSoilScenario.SoilProfile1D, surfaceLine, penetrationLength, pressureType); - } - - SoilProfile2D soilProfile2D = damKernelInput.SubSoilScenario.SoilProfile2D; - return PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, soilProfile2D, surfaceLine, penetrationLength, pressureType); - } - - /// /// Combines the surface line with the SoilProfile2D. /// /// The sub soil scenario.