Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityCommonHelper.cs =================================================================== diff -u -r6483 -r6485 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityCommonHelper.cs (.../MacroStabilityCommonHelper.cs) (revision 6483) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityCommonHelper.cs (.../MacroStabilityCommonHelper.cs) (revision 6485) @@ -426,14 +426,12 @@ errorMessages = new List(); try { - //string helperFile = fileName.Replace(".skx", ".testIn.xml"); - //calculator.FileName = helperFile; FullOutputModelType output; Result result = calculator.Calculate(out output); - string outputAsXml = MacroStabilityXmlSerialization.SaveOutputAsXmlString(output); string outputFileName = fileName.Replace(".skx", ".out.xml"); - File.WriteAllText(outputFileName, outputAsXml); + MacroStabilityXmlSerialization.SaveOutputAsXmlFile(outputFileName, output); FillEngineFromMacroStabilityKernelOutput.FillDamProjectDataFromKernelModel(output, macroStabilityOutput, out List allMessages); + CreateCalculationGridInOutputItem(calculator.KernelModel.StabilityModel, macroStabilityOutput.StabilityOutputItems[^1]); macroStabilityOutput.CalculationResult = ConversionHelper.ConvertToDamResultType(result); macroStabilityOutput.StabilityOutputItems[^1].CalculationPath = Path.GetDirectoryName(fileName); macroStabilityOutput.StabilityOutputItems[^1].ProjectName = Path.GetFileName(fileName); @@ -447,15 +445,71 @@ if (macroStabilityOutput.CalculationResult != CalculationResult.UnexpectedError) { - //#Bka : will not work until output is OK. - //StixFileWriterConnector.WriteStixFileWithInput(damKernelInput, mStabParameters, waterNet, - // xCoordinateLowestUpliftFactorPoint, macroStabilityOutput, - // fileName, new List()); + StixFileWriterConnector.WriteStixFileWithInput(damKernelInput, mStabParameters, waterNet, + xCoordinateLowestUpliftFactorPoint, macroStabilityOutput, + fileName, new List()); StixFileWriterConnector.WriteStixFileWithInputAndResults(damKernelInput, mStabParameters, waterNet, xCoordinateLowestUpliftFactorPoint, macroStabilityOutput, fileName, errorMessages); } } + private static void CreateCalculationGridInOutputItem(StabilityModel kernelModelStabilityModel, MacroStabilityOutputItem stabilityOutputItem) + { + switch (kernelModelStabilityModel.ModelOption) + { + case ModelOptions.Bishop: + CreateCalculationGridBishop(kernelModelStabilityModel, stabilityOutputItem); + break; + case ModelOptions.UpliftVan: + CreateCalculationGridUpliftVan(kernelModelStabilityModel, stabilityOutputItem); + break; + default: + throw new ArgumentOutOfRangeException(nameof(kernelModelStabilityModel.ModelOption), kernelModelStabilityModel.ModelOption, null); + } + } + + private static void CreateCalculationGridBishop(StabilityModel kernelModelStabilityModel, MacroStabilityOutputItem stabilityOutputItem) + { + stabilityOutputItem.InputBishopCalculationGrid = new BishopCalculationGrid + { + GridXLeft = kernelModelStabilityModel.SlipCircle.SlipCircleGrid.GridXLeft, + GridXRight = kernelModelStabilityModel.SlipCircle.SlipCircleGrid.GridXRight, + GridZTop = kernelModelStabilityModel.SlipCircle.SlipCircleGrid.GridZTop, + GridZBottom = kernelModelStabilityModel.SlipCircle.SlipCircleGrid.GridZBottom, + GridXCount = kernelModelStabilityModel.SlipCircle.SlipCircleGrid.GridXNumber, + GridZCount = kernelModelStabilityModel.SlipCircle.SlipCircleGrid.GridZNumber, + TangentLineLevels = [] + }; + foreach (TangentLine tangentLine in kernelModelStabilityModel.SlipCircle.SlipCircleTangentLine.BoundaryHeights) + { + stabilityOutputItem.InputBishopCalculationGrid.TangentLineLevels.Add(tangentLine.Height); + } + } + + private static void CreateCalculationGridUpliftVan(StabilityModel kernelModelStabilityModel, MacroStabilityOutputItem stabilityOutputItem) + { + stabilityOutputItem.InputUpliftVanCalculationGrid = new UpliftVanCalculationGrid + { + LeftGridXLeft = kernelModelStabilityModel.SlipPlaneUpliftVan.SlipPlaneLeftGrid.GridXLeft, + LeftGridXRight = kernelModelStabilityModel.SlipPlaneUpliftVan.SlipPlaneLeftGrid.GridXRight, + LeftGridZTop = kernelModelStabilityModel.SlipPlaneUpliftVan.SlipPlaneLeftGrid.GridZTop, + LeftGridZBottom = kernelModelStabilityModel.SlipPlaneUpliftVan.SlipPlaneLeftGrid.GridZBottom, + LeftGridXCount = kernelModelStabilityModel.SlipPlaneUpliftVan.SlipPlaneLeftGrid.GridXNumber, + LeftGridZCount = kernelModelStabilityModel.SlipPlaneUpliftVan.SlipPlaneLeftGrid.GridZNumber, + RightGridXLeft = kernelModelStabilityModel.SlipPlaneUpliftVan.SlipPlaneRightGrid.GridXLeft, + RightGridXRight = kernelModelStabilityModel.SlipPlaneUpliftVan.SlipPlaneRightGrid.GridXRight, + RightGridZTop = kernelModelStabilityModel.SlipPlaneUpliftVan.SlipPlaneRightGrid.GridZTop, + RightGridZBottom = kernelModelStabilityModel.SlipPlaneUpliftVan.SlipPlaneRightGrid.GridZBottom, + RightGridXCount = kernelModelStabilityModel.SlipPlaneUpliftVan.SlipPlaneRightGrid.GridXNumber, + RightGridZCount = kernelModelStabilityModel.SlipPlaneUpliftVan.SlipPlaneRightGrid.GridZNumber, + TangentLineLevels = [] + }; + foreach (TangentLine tangentLine in kernelModelStabilityModel.SlipPlaneUpliftVan.SlipCircleTangentLine.BoundaryHeights) + { + stabilityOutputItem.InputUpliftVanCalculationGrid.TangentLineLevels.Add(tangentLine.Height); + } + } + /// /// Create the waternet using the 1D soil profile if available, otherwise the 2D soil profile. ///