Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/MacroStabilityIoTests.cs =================================================================== diff -u -r2920 -r2922 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/MacroStabilityIoTests.cs (.../MacroStabilityIoTests.cs) (revision 2920) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/MacroStabilityIoTests.cs (.../MacroStabilityIoTests.cs) (revision 2922) @@ -48,7 +48,8 @@ "RRatio", "RheologicalCoefficient", "BondStressCurve", - "UseSoilType" + "UseSoilType", + "UseDefaultShearStrengthModel" }; [Test] @@ -99,8 +100,10 @@ // Then the data models are equal CompareStabilityModel(expectedParametersMStab, fillEngineFromMacroStabilityWrapperInput.FailureMechanismParametersMStab); + CompareSoilModel(expectedSoilList, fillEngineFromMacroStabilityWrapperInput.SoilList); + //Todo : add and or implement comparer per item as these are added to the code - + } private UpliftVanCalculationGrid CreateExampleUpliftVanCalculationGrid() @@ -225,19 +228,19 @@ } - // private void CompareSoilModel(SoilModel expectedSoilModel, SoilModel actualSoilModel) - // { - // Assert.AreEqual(expectedSoilModel.Soils.Count, actualSoilModel.Soils.Count, "Soil Count does not match"); - // foreach (Soil expectedSoil in expectedSoilModel.Soils) - // { - // var actualSoil = actualSoilModel.Soils.First(soil => soil.Name.Equals(expectedSoil.Name)); - // Assert.IsNotNull(actualSoil, string.Format("Soil {0} not found", expectedSoil.Name)); - // var compare = new CompareLogic { Config = { MaxDifferences = 100 } }; - // compare.Config.MembersToIgnore = SoilParametersToIgnore; - // var result = compare.Compare(expectedSoil, actualSoil); - // Assert.AreEqual(0, result.Differences.Count, "Differences found read/write kernel SoilModel"); - // } - // } + private void CompareSoilModel(SoilList expectedSoils, SoilList actualSoils) + { + Assert.AreEqual(expectedSoils.Soils.Count, actualSoils.Soils.Count, "Soil Count does not match"); + foreach (Soil expectedSoil in expectedSoils.Soils) + { + var actualSoil = actualSoils.Soils.First(soil => soil.Name.Equals(expectedSoil.Name)); + Assert.IsNotNull(actualSoil, string.Format("Soil {0} not found", expectedSoil.Name)); + var compare = new CompareLogic { Config = { MaxDifferences = 100 } }; + compare.Config.MembersToIgnore = SoilParametersToIgnore; + var result = compare.Compare(expectedSoil, actualSoil); + Assert.AreEqual(0, result.Differences.Count, "Differences found read/write kernel SoilModel"); + } + } private void CompareStabilityModel(FailureMechanismParametersMStab expectedStabilityModel, FailureMechanismParametersMStab actualStabilityModel) { @@ -248,43 +251,6 @@ } - [TestCase("ValidateOk.xml")] - [TestCase("ValidateError.xml")] - // public void GivenValidationResultFileWhenDeserializingAndSerializingThenTheStringsAreEqual(string fileNameIn) - // { - // // Given validation result file from kernel - // string fullFileNameIn = Path.Combine(WtiFilesMap, fileNameIn); - // - // // When Deserializing and Serializing - // string xmlInput = File.ReadAllText(fullFileNameIn); - // string fileNameOut = fileNameIn + ".out"; - // string fullFileNameOut = Path.Combine(WtiFilesMap, fileNameOut); - // IValidationResult[] validationResults = WtiDeserializer.DeserializeValidation(xmlInput); - // string xmlOutput = WtiSerializer.SerializeValidation(validationResults); - // File.WriteAllText(fullFileNameOut, xmlOutput); - // - // // Then the strings are equal - // Assert.AreEqual(xmlInput, xmlOutput); - // } - - [TestCase("Result1.xml")] - // public void GivenCalculationResultFileWhenDeserializingAndSerializingThenTheStringsAreEqual(string fileNameIn) - // { - // // Given calculation result file from kernel - // string fullFileNameIn = Path.Combine(WtiFilesMap, fileNameIn); - // - // // When Deserializing and Serializing - // string xmlInput = File.ReadAllText(fullFileNameIn); - // string fileNameOut = fileNameIn + ".out"; - // string fullFileNameOut = Path.Combine(WtiFilesMap, fileNameOut); - // var calculationResults = WtiDeserializer.DeserializeResult(xmlInput); - // string xmlOutput = WtiSerializer.SerializeResult(calculationResults); - // File.WriteAllText(fullFileNameOut, xmlOutput); - // - // // Then the strings are equal - // Assert.AreEqual(xmlInput, xmlOutput); - // } - private DamProjectData CreateExampleDamProjectData() { return FactoryForDamProjectData.CreateExampleDamProjectData(); Index: DamEngine/trunk/src/Deltares.DamEngine.TestHelpers/Factories/FactoryForDamProjectData.cs =================================================================== diff -u -r2819 -r2922 --- DamEngine/trunk/src/Deltares.DamEngine.TestHelpers/Factories/FactoryForDamProjectData.cs (.../FactoryForDamProjectData.cs) (revision 2819) +++ DamEngine/trunk/src/Deltares.DamEngine.TestHelpers/Factories/FactoryForDamProjectData.cs (.../FactoryForDamProjectData.cs) (revision 2922) @@ -260,7 +260,7 @@ soil.BelowPhreaticLevel = 8 + 0.1 * i; soil.DryUnitWeight = 9 + 0.1 * i; - soil.ShearStrengthModel = ShearStrengthModel.SuMeasured; + soil.ShearStrengthModel = ShearStrengthModel.CPhiOrSuCalculated; soil.UseDefaultShearStrengthModel = false; soil.Cohesion = 10 + 0.1 * i; soil.FrictionAngle = 13 + 0.1 * i; @@ -286,6 +286,8 @@ var dikemat = new Soil { Name = "DikeMat", + ShearStrengthModel = ShearStrengthModel.CPhiOrSuCalculated, + DilatancyType = DilatancyType.Zero, AbovePhreaticLevel = 7, BelowPhreaticLevel = 8, DryUnitWeight = 9, Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillMacroStabilityWrapperInputFromEngine.cs =================================================================== diff -u -r2921 -r2922 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillMacroStabilityWrapperInputFromEngine.cs (.../FillMacroStabilityWrapperInputFromEngine.cs) (revision 2921) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillMacroStabilityWrapperInputFromEngine.cs (.../FillMacroStabilityWrapperInputFromEngine.cs) (revision 2922) @@ -24,7 +24,7 @@ using Deltares.DamEngine.Calculators.KernelWrappers.Common; using Deltares.DamEngine.Data.General; using Deltares.DamEngine.Data.Geotechnics; -using Waternet = Deltares.DamEngine.Data.Geometry.Waternet; +using WaterNet = Deltares.DamEngine.Data.Geometry.Waternet; using Deltares.MacroStability.CSharpWrapper.Input; @@ -80,32 +80,15 @@ private void TransferSoils(SoilList damSoilList, Data.Geotechnics.SoilProfile2D damSoilProfile2D, IList kernelSoils) { - // // Transfer all soils - // if (damSoilList != null) - // { - // foreach (var damSoil in damSoilList.Soils) - // { - // var kernelSoil = ConversionHelper.ConvertToMacroStabilitySoil(damSoil); - // dictSoils.Add(damSoil, kernelSoil); - // } - // } - // - // // Harvest all soils from damSoilProfile2D - // foreach (SoilLayer2D surface in damSoilProfile2D.Surfaces) - // { - // var soil = surface.Soil; - // if (!dictSoils.ContainsKey(soil)) - // { - // Soil macroStabilitySoil = ConversionHelper.ConvertToMacroStabilitySoil(soil); - // dictSoils.Add(soil, macroStabilitySoil); - // } - // } - // - // // Add soils to the kernel soillist - // foreach (KeyValuePair entry in dictSoils) - // { - // kernelSoils.Add(entry.Value); - // } + // Transfer all soils + if (damSoilList != null) + { + foreach (var damSoil in damSoilList.Soils) + { + var kernelSoil = ConversionHelper.ConvertToMacroStabilitySoil(damSoil); + kernelSoils.Add(kernelSoil); + } + } } private void TransferSoilProfile(DamEngine.Data.Geotechnics.SoilProfile2D damSoilProfile2D, MacroStability.CSharpWrapper.Input.SoilProfile kernelSoilProfile) @@ -219,7 +202,7 @@ // } } - private void TransferWaternet(Waternet damWaternet, Deltares.MacroStability.CSharpWrapper.Input.Waternet kernelWaternet) + private void TransferWaternet(WaterNet damWaternet, Deltares.MacroStability.CSharpWrapper.Input.Waternet kernelWaternet) { // // Properties // kernelWaternet.IsGenerated = damWaternet.IsGenerated; Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/ConversionHelper.cs =================================================================== diff -u -r2920 -r2922 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/ConversionHelper.cs (.../ConversionHelper.cs) (revision 2920) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/ConversionHelper.cs (.../ConversionHelper.cs) (revision 2922) @@ -191,6 +191,7 @@ FrictionAngle = soil.FrictionAngle, RRatio = 0.0, // TODO find the correct parameter RatioCuPc = soil.RatioCuPc, + ShearStrengthModel = ShearStrengthModelKernel.CPhi, // Set Cphi as default RheologicalCoefficient = 0.0, // TODO find the correct parameter StrengthIncreaseExponent = 0.0, // TODO find the correct parameter UseSoilClassification = true,// TODO find the correct parameter @@ -200,10 +201,7 @@ { macroStabilitySoil.ShearStrengthModel = ConvertToMacroStabilityShearStrengthModel(soil.ShearStrengthModel.Value); } - else - { - macroStabilitySoil.ShearStrengthModel = ShearStrengthModelKernel.CPhi; - } + switch (soil.DilatancyType) { case DilatancyType.MinusPhi: @@ -213,6 +211,7 @@ macroStabilitySoil.Dilatancy = macroStabilitySoil.FrictionAngle; // Phi (FrictionAngle) break; case DilatancyType.Zero: + default: macroStabilitySoil.Dilatancy = 0.0; // Zero break; } Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillEngineFromMacroStabilityWrapperInput.cs =================================================================== diff -u -r2920 -r2922 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillEngineFromMacroStabilityWrapperInput.cs (.../FillEngineFromMacroStabilityWrapperInput.cs) (revision 2920) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillEngineFromMacroStabilityWrapperInput.cs (.../FillEngineFromMacroStabilityWrapperInput.cs) (revision 2922) @@ -34,6 +34,8 @@ /// Fill DamEngine data objects from the kernel data model public class FillEngineFromMacroStabilityWrapperInput { + private Dictionary soilDictionary = new Dictionary(); + /// Gets or sets the SoilList DamEngine object /// The soil list. public SoilList SoilList { get; set; } @@ -64,6 +66,7 @@ /// The DamProjectData object filled with Wti data public void FillDamProjectDataFromKernelModel(Deltares.MacroStability.CSharpWrapper.Input.MacroStabilityInput macroStabilityInput) { + soilDictionary.Clear(); Location = null; TransferStabilityModel(macroStabilityInput.StabilityModel); TransferSoils(macroStabilityInput.StabilityModel.Soils); @@ -190,13 +193,14 @@ private void TransferSoils(IList stabilityModelSoils) { - // SoilList = new SoilList(); - // foreach (Soil kernelSoil in stabilityModelSoils) - // { - // var damSoil = ConversionHelper.ConvertToDamSoil(kernelSoil); - // dictSoils.Add(kernelSoil.Name, damSoil); - // SoilList.Add(damSoil); - // } + SoilList = new SoilList(); + foreach (Deltares.MacroStability.CSharpWrapper.Input.Soil kernelSoil in stabilityModelSoils) + { + var damSoil = ConversionHelper.ConvertToDamSoil(kernelSoil); + // fill the dictionary to reset the soils for the surfaces in the SoilProfile2D + soilDictionary.Add(kernelSoil.Name, damSoil); + SoilList.Add(damSoil); + } } private void TransferStabilityModel(Deltares.MacroStability.CSharpWrapper.Input.StabilityInput kernelModelStabilityModel)