Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/MacroStabilityCommonHelperTests.cs =================================================================== diff -u --- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/MacroStabilityCommonHelperTests.cs (revision 0) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/MacroStabilityCommonHelperTests.cs (revision 4979) @@ -0,0 +1,64 @@ +// Copyright (C) Stichting Deltares 2024. All rights reserved. +// +// This file is part of the Dam Engine. +// +// The Dam Engine is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . +// +// All names, logos, and references to "Deltares" are registered trademarks of +// Stichting Deltares and remain full property of Stichting Deltares at all times. +// All rights reserved. + +using System.Linq; +using Deltares.DamEngine.Calculators.KernelWrappers.MacroStabilityCommon; +using Deltares.DamEngine.Data.General; +using Deltares.DamEngine.Data.Geometry; +using Deltares.DamEngine.Data.Geotechnics; +using Deltares.DamEngine.TestHelpers.Factories; +using Deltares.DamEngine.TestHelpers.Geometry; +using NUnit.Framework; +using Soil = Deltares.DamEngine.Data.Geotechnics.Soil; + +namespace Deltares.DamEngine.Calculators.Tests.KernelWrappers.MacroStabilityCommon; + +[TestFixture] +public class MacroStabilityCommonHelperTests +{ + // For debugging purposes + private const string visualizationFolder = @"D:\src\dam\DamTools\GeometryVisualizer\"; + private readonly double cTolerance = 0.001; + + [Test] + public void GivenSoilGeometryProbabilityWithSoilProfile1DAndSurfaceLineWhenCombiningThenSoilProfile2DIsCreated() + { + SoilGeometryProbability soilGeometryProbability = FactoryForSoilGeometryProbabilities.CreateSoilGeometryProbabilityWithSoilProfile1D(); + SurfaceLine2 surfaceLine = FactoryForSurfaceLines.CreateSurfaceLineTutorial1(); + MacroStabilityCommonHelper.CombineSoilProfileWithSurfaceLine(soilGeometryProbability, surfaceLine, new Soil()); + GeometryData geometry = soilGeometryProbability.SoilProfile2D.Geometry; + // For debugging purposes + // GeometryExporter.ExportToFile(geometry, visualizationFolder + "Geometry.txt"); + // GeometryExporter.ExportToJsonFile(geometry, visualizationFolder + "Geometry.json"); + Assert.Multiple(() => + { + Assert.That(soilGeometryProbability.SoilProfileType, Is.EqualTo(SoilProfileType.ProfileType2D)); + Assert.That(geometry.Surfaces, Has.Count.EqualTo(1)); + Assert.That(geometry.Left, Is.EqualTo(0.0).Within(cTolerance)); + Assert.That(geometry.Right, Is.EqualTo(75.0).Within(cTolerance)); + Assert.That(geometry.Bottom, Is.EqualTo(-20.0).Within(cTolerance)); + Assert.That(geometry.SurfaceLine.Points.First().X, Is.EqualTo(0.0).Within(cTolerance)); + Assert.That(geometry.SurfaceLine.Points.First().Z, Is.EqualTo(0.0).Within(cTolerance)); + Assert.That(geometry.SurfaceLine.Points.Last().X, Is.EqualTo(75.0).Within(cTolerance)); + Assert.That(geometry.SurfaceLine.Points.Last().Z, Is.EqualTo(0.0).Within(cTolerance)); + }); + } +} \ No newline at end of file Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityOutwards/MacroStabilityOutwardsKernelWrapper.cs =================================================================== diff -u -r4962 -r4979 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityOutwards/MacroStabilityOutwardsKernelWrapper.cs (.../MacroStabilityOutwardsKernelWrapper.cs) (revision 4962) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityOutwards/MacroStabilityOutwardsKernelWrapper.cs (.../MacroStabilityOutwardsKernelWrapper.cs) (revision 4979) @@ -97,7 +97,7 @@ throw new NotImplementedException(); } - macroStabilityCommonHelper.CombineSoilProfileWithSurfaceLine(damKernelInput.SubSoilScenario, damKernelInput.Location.SurfaceLine, + MacroStabilityCommonHelper.CombineSoilProfileWithSurfaceLine(damKernelInput.SubSoilScenario, damKernelInput.Location.SurfaceLine, damKernelInput.Location.GetDikeEmbankmentSoil()); const bool useRiverLevelLow = true; @@ -107,12 +107,12 @@ var fillMacroStabilityWrapperFromEngine = new FillMacroStabilityWrapperInputFromEngine { - TrafficLoad = macroStabilityCommonHelper.FillTrafficLoad(damKernelInput) + TrafficLoad = MacroStabilityCommonHelper.FillTrafficLoad(damKernelInput) }; FailureMechanismParametersMStab.MStabParameters.GridPosition = MStabGridPosition.Left; damKernelInput.DamFailureMechanismeCalculationSpecification.FailureMechanismParametersMStab .MStabParameters.GridPosition = MStabGridPosition.Left; - fillMacroStabilityWrapperFromEngine.BishopCalculationGrid = macroStabilityCommonHelper.FillBishopCalculationGrid(damKernelInput); + fillMacroStabilityWrapperFromEngine.BishopCalculationGrid = MacroStabilityCommonHelper.FillBishopCalculationGrid(damKernelInput); double left = damKernelInput.Location.SurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.SurfaceLevelOutside).X; double right = damKernelInput.Location.SurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.SurfaceLevelInside).X; @@ -124,9 +124,9 @@ Waternet waterNet = PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, soilProfile1D, surfaceLine, penetrationLength, left, right, pressureType); macroStabilityInput.Input = fillMacroStabilityWrapperFromEngine.CreateMacroStabilityInput(damKernelInput, FailureMechanismParametersMStab.MStabParameters, waterNet); - fileNameForCalculation = macroStabilityCommonHelper.GetStabilityInputFileName(damKernelInput, iterationIndex, FailureMechanismParametersMStab.MStabParameters.Model); + fileNameForCalculation = MacroStabilityCommonHelper.GetStabilityInputFileName(damKernelInput, iterationIndex, FailureMechanismParametersMStab.MStabParameters.Model); stabilityCalculator = new Calculator(macroStabilityInput.Input); - PrepareResult firstPrepareResult = macroStabilityCommonHelper.PrepareKernel(stabilityCalculator, fileNameForCalculation); + PrepareResult firstPrepareResult = MacroStabilityCommonHelper.PrepareKernel(stabilityCalculator, fileNameForCalculation); return firstPrepareResult; } @@ -157,7 +157,7 @@ /// public int Validate(IKernelDataInput kernelDataInput, IKernelDataOutput kernelDataOutput, out List messages) { - return macroStabilityCommonHelper.Validate(kernelDataInput, kernelDataOutput, out messages); + return MacroStabilityCommonHelper.Validate(kernelDataInput, kernelDataOutput, out messages); } /// @@ -170,8 +170,8 @@ { var macroStabilityKernelDataInput = (MacroStabilityKernelDataInput) kernelDataInput; var macroStabilityOutput = (MacroStabilityOutput) kernelDataOutput; - macroStabilityCommonHelper.ThrowWhenMacroStabilityKernelInputNull(macroStabilityKernelDataInput); - macroStabilityCommonHelper.ThrowWhenMacroStabilityKernelOutputNull(macroStabilityOutput); + MacroStabilityCommonHelper.ThrowWhenMacroStabilityKernelInputNull(macroStabilityKernelDataInput); + MacroStabilityCommonHelper.ThrowWhenMacroStabilityKernelOutputNull(macroStabilityOutput); macroStabilityCommonHelper.PerformStabilityCalculation(macroStabilityKernelDataInput.Input, macroStabilityOutput, fileNameForCalculation, stabilityCalculator, out messages); @@ -194,17 +194,17 @@ public void PostProcess(DamKernelInput damKernelInput, IKernelDataOutput kernelDataOutput, DesignScenario designScenario, string resultMessage, out List designResults) { - macroStabilityCommonHelper.ThrowWhenMacroStabilityDamKernelInputNull(damKernelInput); + MacroStabilityCommonHelper.ThrowWhenMacroStabilityDamKernelInputNull(damKernelInput); var macroStabilityOutput = kernelDataOutput as MacroStabilityOutput; - macroStabilityCommonHelper.ThrowWhenMacroStabilityKernelOutputNull(macroStabilityOutput); + MacroStabilityCommonHelper.ThrowWhenMacroStabilityKernelOutputNull(macroStabilityOutput); designResults = new List(); if (macroStabilityOutput?.StabilityOutputItems != null && macroStabilityOutput.StabilityOutputItems.Count > 0) { MacroStabilityOutputItem macroStabilityOutputItem = macroStabilityOutput.StabilityOutputItems[0]; if (macroStabilityOutputItem != null) { - DesignResult designResult = macroStabilityCommonHelper.NewDesignResult(damKernelInput, designScenario); - macroStabilityCommonHelper.FillDesignResult(macroStabilityOutputItem, designResult); + DesignResult designResult = MacroStabilityCommonHelper.NewDesignResult(damKernelInput, designScenario); + MacroStabilityCommonHelper.FillDesignResult(macroStabilityOutputItem, designResult); designResult.StabilityDesignResults.NumberOfIterations = 0; designResult.StabilityDesignResults.UpliftSituation = macroStabilityOutput.UpliftSituation; designResults.Add(designResult); Index: DamEngine/trunk/src/Deltares.DamEngine.TestHelpers/Factories/FactoryForSurfaceLines.cs =================================================================== diff -u -r4540 -r4979 --- DamEngine/trunk/src/Deltares.DamEngine.TestHelpers/Factories/FactoryForSurfaceLines.cs (.../FactoryForSurfaceLines.cs) (revision 4540) +++ DamEngine/trunk/src/Deltares.DamEngine.TestHelpers/Factories/FactoryForSurfaceLines.cs (.../FactoryForSurfaceLines.cs) (revision 4979) @@ -58,7 +58,7 @@ surfaceLine.EnsurePointOfType(58.5, 0, CharacteristicPointType.DitchDikeSide); surfaceLine.EnsurePointOfType(59.5, -2, CharacteristicPointType.BottomDitchDikeSide); surfaceLine.EnsurePointOfType(61.5, -2, CharacteristicPointType.BottomDitchPolderSide); - surfaceLine.EnsurePointOfType(61.5, 0, CharacteristicPointType.DitchPolderSide); + surfaceLine.EnsurePointOfType(61.51, 0, CharacteristicPointType.DitchPolderSide); surfaceLine.EnsurePointOfType(75.0, 0, CharacteristicPointType.SurfaceLevelInside); surfaceLine.Geometry.SyncCalcPoints(); Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapper.cs =================================================================== diff -u -r4962 -r4979 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapper.cs (.../MacroStabilityInwardsKernelWrapper.cs) (revision 4962) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapper.cs (.../MacroStabilityInwardsKernelWrapper.cs) (revision 4979) @@ -102,7 +102,7 @@ model = MStabModelType.Bishop; } - macroStabilityCommonHelper.CombineSoilProfileWithSurfaceLine(damKernelInput.SubSoilScenario, damKernelInput.Location.SurfaceLine, + MacroStabilityCommonHelper.CombineSoilProfileWithSurfaceLine(damKernelInput.SubSoilScenario, damKernelInput.Location.SurfaceLine, damKernelInput.Location.GetDikeEmbankmentSoil()); // Check if the surface-line is within the SoilProfile2D boundaries (left/right) if (!SoilProfile2DSurfaceLineHelper.IsSurfaceLineInsideSoilProfile2D(damKernelInput.Location.SurfaceLine, damKernelInput.SubSoilScenario.SoilProfile2D)) @@ -124,13 +124,13 @@ var fillMacroStabilityWrapperFromEngine = new FillMacroStabilityWrapperInputFromEngine { - TrafficLoad = macroStabilityCommonHelper.FillTrafficLoad(damKernelInput) + TrafficLoad = MacroStabilityCommonHelper.FillTrafficLoad(damKernelInput) }; if (FailureMechanismParametersMStab.MStabParameters.Model == MStabModelType.Bishop || FailureMechanismParametersMStab.MStabParameters.Model == MStabModelType.BishopUpliftVan) { - fillMacroStabilityWrapperFromEngine.BishopCalculationGrid = macroStabilityCommonHelper.FillBishopCalculationGrid(damKernelInput); + fillMacroStabilityWrapperFromEngine.BishopCalculationGrid = MacroStabilityCommonHelper.FillBishopCalculationGrid(damKernelInput); } if (FailureMechanismParametersMStab.MStabParameters.Model == MStabModelType.UpliftVan || @@ -156,22 +156,22 @@ Waternet waterNet = PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, soilProfile1D, surfaceLine, penetrationLength, left, right, pressureType); macroStabilityInput.Input = fillMacroStabilityWrapperFromEngine.CreateMacroStabilityInput(damKernelInput, FailureMechanismParametersMStab.MStabParameters, waterNet); - fileNameForCalculation = macroStabilityCommonHelper.GetStabilityInputFileName(damKernelInput, iterationIndex, FailureMechanismParametersMStab.MStabParameters.Model); + fileNameForCalculation = MacroStabilityCommonHelper.GetStabilityInputFileName(damKernelInput, iterationIndex, FailureMechanismParametersMStab.MStabParameters.Model); stabilityCalculator = new Calculator(macroStabilityInput.Input); - PrepareResult firstPrepareResult = macroStabilityCommonHelper.PrepareKernel(stabilityCalculator, fileNameForCalculation); + PrepareResult firstPrepareResult = MacroStabilityCommonHelper.PrepareKernel(stabilityCalculator, fileNameForCalculation); if (isBishopUpliftVan && upliftSituation.IsUplift && firstPrepareResult == PrepareResult.Successful) { model = MStabModelType.UpliftVan; FailureMechanismParametersMStab.MStabParameters.Model = model; macroStabilityInput.Input = fillMacroStabilityWrapperFromEngine.CreateMacroStabilityInput(damKernelInput, FailureMechanismParametersMStab.MStabParameters, waterNet); - fileNameForSecondCalculation = macroStabilityCommonHelper.GetStabilityInputFileName(damKernelInput, iterationIndex, FailureMechanismParametersMStab.MStabParameters.Model); + fileNameForSecondCalculation = MacroStabilityCommonHelper.GetStabilityInputFileName(damKernelInput, iterationIndex, FailureMechanismParametersMStab.MStabParameters.Model); // reset model FailureMechanismParametersMStab.MStabParameters.Model = MStabModelType.BishopUpliftVan; stabilityCalculatorForSecondCalculation = new Calculator(macroStabilityInput.Input); - return macroStabilityCommonHelper.PrepareKernel(stabilityCalculatorForSecondCalculation, fileNameForSecondCalculation); + return MacroStabilityCommonHelper.PrepareKernel(stabilityCalculatorForSecondCalculation, fileNameForSecondCalculation); } if (isBishopUpliftVan) @@ -209,7 +209,7 @@ /// public int Validate(IKernelDataInput kernelDataInput, IKernelDataOutput kernelDataOutput, out List messages) { - return macroStabilityCommonHelper.Validate(kernelDataInput, kernelDataOutput, out messages); + return MacroStabilityCommonHelper.Validate(kernelDataInput, kernelDataOutput, out messages); } /// @@ -222,8 +222,8 @@ { var macroStabilityKernelDataInput = (MacroStabilityKernelDataInput) kernelDataInput; var macroStabilityOutput = (MacroStabilityOutput) kernelDataOutput; - macroStabilityCommonHelper.ThrowWhenMacroStabilityKernelInputNull(macroStabilityKernelDataInput); - macroStabilityCommonHelper.ThrowWhenMacroStabilityKernelOutputNull(macroStabilityOutput); + MacroStabilityCommonHelper.ThrowWhenMacroStabilityKernelInputNull(macroStabilityKernelDataInput); + MacroStabilityCommonHelper.ThrowWhenMacroStabilityKernelOutputNull(macroStabilityOutput); bool isBishopUpliftVan = FailureMechanismParametersMStab.MStabParameters.Model == MStabModelType.BishopUpliftVan; if (isBishopUpliftVan) @@ -264,9 +264,9 @@ public void PostProcess(DamKernelInput damKernelInput, IKernelDataOutput kernelDataOutput, DesignScenario designScenario, string resultMessage, out List designResults) { - macroStabilityCommonHelper.ThrowWhenMacroStabilityDamKernelInputNull(damKernelInput); + MacroStabilityCommonHelper.ThrowWhenMacroStabilityDamKernelInputNull(damKernelInput); var macroStabilityOutput = kernelDataOutput as MacroStabilityOutput; - macroStabilityCommonHelper.ThrowWhenMacroStabilityKernelOutputNull(macroStabilityOutput); + MacroStabilityCommonHelper.ThrowWhenMacroStabilityKernelOutputNull(macroStabilityOutput); designResults = new List(); if (macroStabilityOutput == null) { @@ -276,8 +276,8 @@ MacroStabilityOutputItem macroStabilityOutputItem = ProperMacroStabilityResultsItem(macroStabilityOutput, 0); if (macroStabilityOutputItem != null) { - DesignResult designResult = macroStabilityCommonHelper.NewDesignResult(damKernelInput, designScenario); - macroStabilityCommonHelper.FillDesignResult(macroStabilityOutputItem, designResult); + DesignResult designResult = MacroStabilityCommonHelper.NewDesignResult(damKernelInput, designScenario); + MacroStabilityCommonHelper.FillDesignResult(macroStabilityOutputItem, designResult); designResult.StabilityDesignResults.NumberOfIterations = lastIterationIndex; designResult.StabilityDesignResults.UpliftSituation = macroStabilityOutput.UpliftSituation; designResults.Add(designResult); @@ -292,8 +292,8 @@ macroStabilityOutputItem = macroStabilityOutput.StabilityOutputItems[1]; if (macroStabilityOutputItem != null) { - DesignResult designResult = macroStabilityCommonHelper.NewDesignResult(damKernelInput, designScenario); - macroStabilityCommonHelper.FillDesignResult(macroStabilityOutputItem, designResult); + DesignResult designResult = MacroStabilityCommonHelper.NewDesignResult(damKernelInput, designScenario); + MacroStabilityCommonHelper.FillDesignResult(macroStabilityOutputItem, designResult); designResult.StabilityDesignResults.NumberOfIterations = lastIterationIndex; designResult.StabilityDesignResults.UpliftSituation = macroStabilityOutput.UpliftSituation; designResults.Add(designResult); @@ -333,8 +333,8 @@ macroStabilityOutputItem = ProperMacroStabilityResultsItem(macroStabilityOutput, index); if (macroStabilityOutputItem != null) { - DesignResult overallResult = macroStabilityCommonHelper.NewDesignResult(damKernelInput, designScenario); - macroStabilityCommonHelper.FillDesignResult(macroStabilityOutputItem, overallResult); + DesignResult overallResult = MacroStabilityCommonHelper.NewDesignResult(damKernelInput, designScenario); + MacroStabilityCommonHelper.FillDesignResult(macroStabilityOutputItem, overallResult); overallResult.StabilityDesignResults.UpliftSituation = macroStabilityOutput.UpliftSituation; overallResult.StabilityDesignResults.StabilityModelType = MStabModelType.BishopUpliftVan; designResults.Add(overallResult); @@ -376,9 +376,9 @@ { var macroStabilityKernelDataInput = kernelDataInput as MacroStabilityKernelDataInput; var macroStabilityOutput = kernelDataOutput as MacroStabilityOutput; - macroStabilityCommonHelper.ThrowWhenMacroStabilityKernelInputNull(macroStabilityKernelDataInput); - macroStabilityCommonHelper.ThrowWhenMacroStabilityKernelOutputNull(macroStabilityOutput); - macroStabilityCommonHelper.ThrowWhenMacroStabilityDamKernelInputNull(damKernelInput); + MacroStabilityCommonHelper.ThrowWhenMacroStabilityKernelInputNull(macroStabilityKernelDataInput); + MacroStabilityCommonHelper.ThrowWhenMacroStabilityKernelOutputNull(macroStabilityOutput); + MacroStabilityCommonHelper.ThrowWhenMacroStabilityDamKernelInputNull(damKernelInput); double fosRequired = damKernelInput.Location.ModelFactors.RequiredSafetyFactorStabilityInnerSlope; if (macroStabilityOutput != null) @@ -422,7 +422,7 @@ int iterationIndex, out EmbankmentDesignParameters embankmentDesignParameters) { var macroStabilityKernelDataInput = kernelDataInput as MacroStabilityKernelDataInput; - macroStabilityCommonHelper.ThrowWhenMacroStabilityKernelInputNull(macroStabilityKernelDataInput); + MacroStabilityCommonHelper.ThrowWhenMacroStabilityKernelInputNull(macroStabilityKernelDataInput); lastIterationIndex = iterationIndex; Location location = damKernelInput.Location; Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityCommonHelper.cs =================================================================== diff -u -r4962 -r4979 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityCommonHelper.cs (.../MacroStabilityCommonHelper.cs) (revision 4962) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityCommonHelper.cs (.../MacroStabilityCommonHelper.cs) (revision 4979) @@ -59,7 +59,7 @@ /// The dike embankment soil. /// Thrown when subSoilScenario.SoilProfileType is ProfileTypeStiFile /// - public void CombineSoilProfileWithSurfaceLine(SoilGeometryProbability subSoilScenario, SurfaceLine2 surfaceLine2, Soil dikeEmbankmentSoil) + public static void CombineSoilProfileWithSurfaceLine(SoilGeometryProbability subSoilScenario, SurfaceLine2 surfaceLine2, Soil dikeEmbankmentSoil) { switch (subSoilScenario.SoilProfileType) { @@ -79,7 +79,7 @@ /// /// The dam kernel input. /// - public TrafficLoad FillTrafficLoad(DamKernelInput damKernelInput) + public static TrafficLoad FillTrafficLoad(DamKernelInput damKernelInput) { TrafficLoad trafficLoad = null; if (damKernelInput.Location.StabilityOptions != null && damKernelInput.Location.StabilityOptions.TrafficLoad.HasValue && @@ -103,7 +103,7 @@ /// /// The dam kernel input. /// - public BishopCalculationGrid FillBishopCalculationGrid(DamKernelInput damKernelInput) + public static BishopCalculationGrid FillBishopCalculationGrid(DamKernelInput damKernelInput) { SlipCircleDefinition slipCircleDefinition = damKernelInput.DamFailureMechanismeCalculationSpecification .FailureMechanismParametersMStab.MStabParameters.SlipCircleDefinition; @@ -145,7 +145,7 @@ /// Index of the iteration. /// The model. /// - public string GetStabilityInputFileName(DamKernelInput damKernelInput, int iterationIndex, MStabModelType model) + public static string GetStabilityInputFileName(DamKernelInput damKernelInput, int iterationIndex, MStabModelType model) { // Assume 2D sti-file, then check on type being 1D string soilGeometryName = damKernelInput.SubSoilScenario.SoilProfile2DName; @@ -161,7 +161,7 @@ /// /// The dam macro stability input. /// - public void ThrowWhenMacroStabilityKernelInputNull(MacroStabilityKernelDataInput macroStabilityKernelDataInput) + public static void ThrowWhenMacroStabilityKernelInputNull(MacroStabilityKernelDataInput macroStabilityKernelDataInput) { if (macroStabilityKernelDataInput == null) { @@ -174,7 +174,7 @@ /// /// The dam macro stability output. /// - public void ThrowWhenMacroStabilityKernelOutputNull(MacroStabilityOutput macroStabilityOutput) + public static void ThrowWhenMacroStabilityKernelOutputNull(MacroStabilityOutput macroStabilityOutput) { if (macroStabilityOutput == null) { @@ -187,7 +187,7 @@ /// /// The dam kernel input. /// - public void ThrowWhenMacroStabilityDamKernelInputNull(DamKernelInput damKernelInput) + public static void ThrowWhenMacroStabilityDamKernelInputNull(DamKernelInput damKernelInput) { if (damKernelInput == null) { @@ -201,7 +201,7 @@ /// The dam kernel input. /// The design scenario. /// - public DesignResult NewDesignResult(DamKernelInput damKernelInput, DesignScenario designScenario) + public static DesignResult NewDesignResult(DamKernelInput damKernelInput, DesignScenario designScenario) { var soilProfile2DName = damKernelInput.SubSoilScenario.ToString(); var designResult = new DesignResult(damKernelInput.DamFailureMechanismeCalculationSpecification, @@ -226,7 +226,7 @@ /// /// The macro stability output item. /// The design result. - public void FillDesignResult(MacroStabilityOutputItem macroStabilityOutputItem, DesignResult designResult) + public static void FillDesignResult(MacroStabilityOutputItem macroStabilityOutputItem, DesignResult designResult) { designResult.BaseFileName = Path.GetFileNameWithoutExtension(macroStabilityOutputItem.ProjectName); designResult.CalculationSubDir = macroStabilityOutputItem.CalculationPath; @@ -258,7 +258,7 @@ /// The calculator. /// Name of the file. /// - public PrepareResult PrepareKernel(Calculator calculator, string fileName) + public static PrepareResult PrepareKernel(Calculator calculator, string fileName) { try { @@ -289,7 +289,7 @@ /// /// Zero when there are no errors, one when there are errors that prevent a calculation /// - public int Validate(IKernelDataInput kernelDataInput, IKernelDataOutput kernelDataOutput, out List messages) + public static int Validate(IKernelDataInput kernelDataInput, IKernelDataOutput kernelDataOutput, out List messages) { var macroStabilityKernelDataInput = (MacroStabilityKernelDataInput) kernelDataInput; messages = new List(); @@ -413,7 +413,7 @@ /// The surfaceline. /// The dike embankment soil. /// Thrown when no SoilProfile2D is defined - private void CombineSoilProfile2DWithSurfaceLine(SoilGeometryProbability subSoilScenario, SurfaceLine2 surfaceLine2, Soil dikeEmbankmentSoil) + private static void CombineSoilProfile2DWithSurfaceLine(SoilGeometryProbability subSoilScenario, SurfaceLine2 surfaceLine2, Soil dikeEmbankmentSoil) { if (subSoilScenario.SoilProfile2D == null) { @@ -428,7 +428,7 @@ /// The surfaceline. /// The dike embankment soil. /// Thrown when no SoilProfile1D is defined - private void CombineSoilProfile1DWithSurfaceLine(SoilGeometryProbability subSoilScenario, SurfaceLine2 surfaceLine2, Soil dikeEmbankmentSoil) + private static void CombineSoilProfile1DWithSurfaceLine(SoilGeometryProbability subSoilScenario, SurfaceLine2 surfaceLine2, Soil dikeEmbankmentSoil) { if (subSoilScenario.SoilProfile1D == null) { @@ -461,7 +461,7 @@ /// Name of the soil geometry. /// Index of the iteration. /// - private string DetermineCalculationFilename(string filenamePrefix, string soilGeometryName, int iterationIndex) + private static string DetermineCalculationFilename(string filenamePrefix, string soilGeometryName, int iterationIndex) { string calculationName; if (iterationIndex <= 0) @@ -482,7 +482,7 @@ /// The model. /// The project working path. /// - private string GetStabilityCalculationDirectory(MStabModelType model, string projectWorkingPath) + private static string GetStabilityCalculationDirectory(MStabModelType model, string projectWorkingPath) { string calculationBaseDirectory = projectWorkingPath; string stabilitySubDir = GetCalculationSubDir(model); @@ -500,7 +500,7 @@ /// /// The model. /// - private string GetCalculationSubDir(MStabModelType model) + private static string GetCalculationSubDir(MStabModelType model) { const string stabilitySubDir = @"Stability\"; var modelSubDirectory = model.ToString(); @@ -514,7 +514,7 @@ /// /// Name of the file. /// The input. - private void WriteStixFileBasedOnInputAndResultsSearchGrid(string fileName, MacroStabilityInput input) + private static void WriteStixFileBasedOnInputAndResultsSearchGrid(string fileName, MacroStabilityInput input) { if (!(input.StabilityModel.ModelOption == StabilityModelOptionType.UpliftVan && input.StabilityModel.SearchAlgorithm == SearchAlgorithm.Beeswarm)) @@ -534,8 +534,8 @@ /// Name of the file. /// The input. /// The macro stability output. - private void WriteStixFileBasedOnInputAndResultsSlipPlane(string fileName, MacroStabilityInput input, - MacroStabilityOutput macroStabilityOutput) + private static void WriteStixFileBasedOnInputAndResultsSlipPlane(string fileName, MacroStabilityInput input, + MacroStabilityOutput macroStabilityOutput) { if (macroStabilityOutput.CalculationResult == CalculationResult.Succeeded) { @@ -555,7 +555,7 @@ } } - private void StixFileWrite(StixWriter stixWriter, string fileName, MacroStabilityInput input) + private static void StixFileWrite(StixWriter stixWriter, string fileName, MacroStabilityInput input) { if (File.Exists(fileName)) { @@ -565,7 +565,7 @@ stixWriter.WriteStixFile(fileName, input); } - private string DetermineStixFilename(string fileNameForCalc, string suffix, string extension = ".stix") + private static string DetermineStixFilename(string fileNameForCalc, string suffix, string extension = ".stix") { return Path.Combine(Path.GetDirectoryName(fileNameForCalc) ?? string.Empty, $"{Path.GetFileNameWithoutExtension(fileNameForCalc)}_{suffix}{extension}"); Index: DamEngine/trunk/src/Deltares.DamEngine.TestHelpers/Factories/FactoryForSoilGeometryProbabilities.cs =================================================================== diff -u --- DamEngine/trunk/src/Deltares.DamEngine.TestHelpers/Factories/FactoryForSoilGeometryProbabilities.cs (revision 0) +++ DamEngine/trunk/src/Deltares.DamEngine.TestHelpers/Factories/FactoryForSoilGeometryProbabilities.cs (revision 4979) @@ -0,0 +1,44 @@ +// Copyright (C) Stichting Deltares 2024. All rights reserved. +// +// This file is part of the Dam Engine. +// +// The Dam Engine is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . +// +// All names, logos, and references to "Deltares" are registered trademarks of +// Stichting Deltares and remain full property of Stichting Deltares at all times. +// All rights reserved. + +using Deltares.DamEngine.Data.General; + +namespace Deltares.DamEngine.TestHelpers.Factories; + +/// +/// Factory for creating instances. +/// +public static class FactoryForSoilGeometryProbabilities +{ + /// + /// Crete a with a . + /// + /// The + public static SoilGeometryProbability CreateSoilGeometryProbabilityWithSoilProfile1D() + { + return new SoilGeometryProbability + { + SoilProfile1D = FactoryForSoilProfiles.CreateSimpleProfile(), + SoilProfile1DName = "SoilProfile1D", + SoilProfileType = SoilProfileType.ProfileType1D + }; + } +} \ No newline at end of file