Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillMacroStabilityWrapperInputFromEngine.cs =================================================================== diff -u -r5437 -r5476 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillMacroStabilityWrapperInputFromEngine.cs (.../FillMacroStabilityWrapperInputFromEngine.cs) (revision 5437) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillMacroStabilityWrapperInputFromEngine.cs (.../FillMacroStabilityWrapperInputFromEngine.cs) (revision 5476) @@ -26,6 +26,7 @@ using Deltares.DamEngine.Data.General; using Deltares.DamEngine.Data.Geometry; using Deltares.DamEngine.Data.Geotechnics; +using Deltares.DamEngine.Data.Standard; using Deltares.MacroStability.CSharpWrapper; using Deltares.MacroStability.CSharpWrapper.Input; using Deltares.MacroStability.CSharpWrapper.Water; @@ -130,6 +131,7 @@ lastStage.UniformLoads = new List(); TransferUniformLoads(TrafficLoad, lastStage.UniformLoads); + TransferTrafficLoadDegreeOfConsolidation(damKernelInput.Location.TrafficLoadDegreeOfConsolidations, lastStage); return macroStabilityInput; } @@ -201,6 +203,23 @@ } } } + + private void TransferTrafficLoadDegreeOfConsolidation(IList damDegreeOfConsolidations, ConstructionStage stage) + { + if (damDegreeOfConsolidations != null && stage.UniformLoads.Count == 1) + { + stage.ConsolidationValues = new List(); + foreach (SoilProfileSurface surface in stage.SoilProfile.SoilSurfaces) + { + stage.ConsolidationValues.Add(new ConsolidationValue + { + Consolidator = stage.UniformLoads.FirstOrDefault(), + Consolidated = surface, + Value = damDegreeOfConsolidations.Find(t => t.SoilName == surface.Soil.Name).DegreeOfConsolidation + }); + } + } + } private void TransferSoilProfile(SoilProfile2D damSoilProfile2D, SoilProfile kernelSoilProfile, ICollection preconsolidationStresses) Index: DamEngine/trunk/src/Deltares.DamEngine.TestHelpers/Factories/FactoryForDamProjectData.cs =================================================================== diff -u -r5467 -r5476 --- DamEngine/trunk/src/Deltares.DamEngine.TestHelpers/Factories/FactoryForDamProjectData.cs (.../FactoryForDamProjectData.cs) (revision 5467) +++ DamEngine/trunk/src/Deltares.DamEngine.TestHelpers/Factories/FactoryForDamProjectData.cs (.../FactoryForDamProjectData.cs) (revision 5476) @@ -55,11 +55,11 @@ FillSoilProfiles1D(dike); FillSoilProfiles2D(dike); FillSegments(damProjectData); + FillTrafficLoadDegreeOfConsolidation(dike); FillLocations(dike, damProjectData.Segments, damProjectData.ProjectPath); FillInputTimeSeries(dike); FillSensorData(damProjectData); - FillTrafficLoadDegreeOfConsolidation(dike); - + return damProjectData; } @@ -281,41 +281,34 @@ private static void FillSoils(Dike dike) { - const int soilCount = 3; dike.SoilList = new SoilList(); - for (var i = 0; i < soilCount; i++) + + var soil = new Soil { - var soil = new Soil - { - Name = $"Soil {i}" - }; + Name = "Soil 1", + AbovePhreaticLevel = 7, + BelowPhreaticLevel = 8, + DryUnitWeight = 9, + ShearStrengthModel = ShearStrengthModel.CPhi, + UseDefaultShearStrengthModel = false, + Cohesion = 10, + FrictionAngle = 13, + Ocr = 14, + SlopeRestProfile = 15, + DilatancyType = DilatancyType.Zero, + RRatio = 16, + StrengthIncreaseExponent = 17, + RatioCuPc = 18, + PoP = 11, + BeddingAngle = 19, + DiameterD70 = 20, + DiameterD90 = 21, + PermeabKx = 22, + WhitesConstant = 23 + }; - soil.AbovePhreaticLevel = 7 + 0.1 * i; - soil.BelowPhreaticLevel = 8 + 0.1 * i; - soil.DryUnitWeight = 9 + 0.1 * i; + dike.SoilList.Add(soil); - soil.ShearStrengthModel = ShearStrengthModel.CPhi; - soil.UseDefaultShearStrengthModel = false; - soil.Cohesion = 10 + 0.1 * i; - soil.FrictionAngle = 13 + 0.1 * i; - soil.Ocr = 14 + 0.1 * i; - soil.SlopeRestProfile = 15 + 0.1 * i; - soil.DilatancyType = DilatancyType.Zero; - - soil.RRatio = 16 + 0.1 * i; - soil.StrengthIncreaseExponent = 17 + 0.1 * i; - soil.RatioCuPc = 18 + 0.1 * i; - soil.PoP = 11 + 0.1 * i; - - soil.BeddingAngle = 19 + 0.1 * i; - soil.DiameterD70 = 20 + 0.1 * i; - soil.DiameterD90 = 21 + 0.1 * i; - soil.PermeabKx = 22 + 0.1 * i; - soil.WhitesConstant = 23 + 0.1 * i; - - dike.SoilList.Add(soil); - } - var dikemat = new Soil { Name = "DikeMat", @@ -459,6 +452,7 @@ location.NewDepthDitch = 10.0 * i + 0.65; location.StabilityDesignMethod = StabilityDesignMethod.SlopeAdaptionBeforeShoulderAdaption; location.SoilList = dike.SoilList; + location.TrafficLoadDegreeOfConsolidations = dike.TrafficLoadDegreeOfConsolidations; dike.Locations.Add(location); } } Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/MacroStabilityIoTests.cs =================================================================== diff -u -r5081 -r5476 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/MacroStabilityIoTests.cs (.../MacroStabilityIoTests.cs) (revision 5081) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/MacroStabilityIoTests.cs (.../MacroStabilityIoTests.cs) (revision 5476) @@ -28,6 +28,7 @@ using Deltares.DamEngine.Data.General; using Deltares.DamEngine.Data.Geometry; using Deltares.DamEngine.Data.Geotechnics; +using Deltares.DamEngine.Data.Standard; using Deltares.DamEngine.Data.Standard.Logging; using Deltares.DamEngine.TestHelpers.Factories; using Deltares.MacroStability.CSharpWrapper; @@ -69,6 +70,7 @@ SoilList expectedSoilList = expectedDamProjectData.Dike.SoilList; SoilProfile2D expectedSoilProfile2D = expectedLocation.Segment.SoilProfileProbabilities[0].SoilProfile2D; SurfaceLine2 expectedSurfaceLine2D = expectedLocation.SurfaceLine; + IList expectedConsolidationValues = expectedLocation.TrafficLoadDegreeOfConsolidations; FailureMechanismParametersMStab expectedParametersMStab = expectedDamProjectData.DamProjectCalculationSpecification.CurrentSpecification.FailureMechanismParametersMStab; var expectedTrafficLoad = new TrafficLoad { @@ -100,6 +102,7 @@ CompareSoilProfile2D(expectedSoilProfile2D, fillEngineFromMacroStabilityWrapperInput.SoilProfile2D); CompareSurfaceLine(expectedSurfaceLine2D, fillEngineFromMacroStabilityWrapperInput.SurfaceLine2); CompareTrafficLoad(expectedTrafficLoad, fillEngineFromMacroStabilityWrapperInput.TrafficLoad); + CompareTrafficLoadDegreeOfConsolidations(expectedConsolidationValues, fillEngineFromMacroStabilityWrapperInput.TrafficLoadDegreeOfConsolidations); SlipCircleDefinition expectedUpliftVanCalculationGridSettings = expectedParametersMStab.MStabParameters.SlipCircleDefinition; CompareUpliftVanCalculationGridSettings(expectedUpliftVanCalculationGridSettings, fillEngineFromMacroStabilityWrapperInput.SlipCircleDefinition); @@ -225,11 +228,36 @@ "XStart", "Pressure" }; - ComparisonResult result; - result = compare.Compare(expectedTrafficLoad, actualTrafficLoad); - Assert.That(result.Differences.Count, Is.EqualTo(0), "Differences found read/write kernel Traffic Load"); + ComparisonResult result = compare.Compare(expectedTrafficLoad, actualTrafficLoad); + Assert.That(result.Differences, Is.Empty, "Differences found read/write kernel Traffic Load"); } + private static void CompareTrafficLoadDegreeOfConsolidations(IList expectedDegreeOfConsolidations, IList actualDegreeOfConsolidation) + { + int expectedNrOfDegreeOfConsolidation = expectedDegreeOfConsolidations.Count; + Assert.That(actualDegreeOfConsolidation, Has.Count.EqualTo(expectedNrOfDegreeOfConsolidation)); + + var compare = new CompareLogic + { + Config = + { + MaxDifferences = 100 + } + }; + for (var i = 0; i < expectedNrOfDegreeOfConsolidation; i++) + { + + compare.Config.MembersToInclude = new List + { + "Consolidator", + "Consolidated", + "Value" + }; + ComparisonResult result = compare.Compare(expectedDegreeOfConsolidations, actualDegreeOfConsolidation); + Assert.That(result.Differences, Is.Empty, "Differences found read/write kernel Consolidation Values"); + } + } + private static void CompareUpliftVanCalculationGridSettings(SlipCircleDefinition expectedSlipCircleDefinition, SlipCircleDefinition actualSlipCircleDefinition) { Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillEngineFromMacroStabilityWrapperInput.cs =================================================================== diff -u -r4898 -r5476 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillEngineFromMacroStabilityWrapperInput.cs (.../FillEngineFromMacroStabilityWrapperInput.cs) (revision 4898) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillEngineFromMacroStabilityWrapperInput.cs (.../FillEngineFromMacroStabilityWrapperInput.cs) (revision 5476) @@ -25,6 +25,7 @@ using Deltares.DamEngine.Data.General; using Deltares.DamEngine.Data.Geometry; using Deltares.DamEngine.Data.Geotechnics; +using Deltares.DamEngine.Data.Standard; using Deltares.MacroStability.CSharpWrapper.Input; using Deltares.MacroStability.CSharpWrapper.Water; using HeadLine = Deltares.DamEngine.Data.Geometry.HeadLine; @@ -48,9 +49,9 @@ /// The soil list. public SoilList SoilList { get; set; } - /// Gets or sets the location DamEngine object. - /// The location. - public Location Location { get; set; } + /// Gets or sets the TrafficLoadDegreeOfConsolidation DamEngine object. + /// The list of traffic load degree of consolidation. + public IList TrafficLoadDegreeOfConsolidations { get; set; } /// Gets or sets the SoilProfile2D DamEngine object. /// The soil profile2 d. @@ -90,7 +91,6 @@ public void FillDamProjectDataFromKernelModel(MacroStabilityInput macroStabilityInput) { soilDictionary.Clear(); - Location = null; TransferStabilityModel(macroStabilityInput.StabilityModel); ConstructionStage lastStage = macroStabilityInput.StabilityModel.ConstructionStages.Last(); TransferSoils(macroStabilityInput.StabilityModel.Soils, lastStage.FixedSoilStresses); @@ -103,6 +103,7 @@ TransferUpliftVanCalculationGridSettings(preprocessingSearchAreaConditions); TransferUpliftVanCalculationGrid(macroStabilityInput.StabilityModel.UpliftVanCalculationGrid, preprocessingSearchAreaConditions); TransferTrafficLoad(macroStabilityInput.StabilityModel.ConstructionStages.Last().UniformLoads); + TransferTrafficLoadDegreeOfConsolidation(macroStabilityInput.StabilityModel.ConstructionStages.Last().ConsolidationValues); } private void TransferTrafficLoad(ICollection kernelUniformLoads) @@ -124,6 +125,26 @@ }; } } + + private void TransferTrafficLoadDegreeOfConsolidation(ICollection kernelConsolidationValues) + { + if (kernelConsolidationValues != null) + { + TrafficLoadDegreeOfConsolidations = new List(); + foreach (Soil soil in SoilList.Soils) + { + bool isSoilFound = kernelConsolidationValues.Any(c => c.Consolidated.ToType().Soil.Name == soil.Name); + if (isSoilFound) + { + TrafficLoadDegreeOfConsolidations.Add(new TrafficLoadDegreeOfConsolidation() + { + SoilName = soil.Name, + DegreeOfConsolidation = kernelConsolidationValues.First(c => c.Consolidated.ToType().Soil.Name == soil.Name).Value + }); + } + } + } + } private void TransferUpliftVanCalculationGrid(KernelUpliftVanCalculationGrid kernelSlipPlaneUpliftVan, SearchAreaConditions kernelSearchAreaConditions) Index: DamEngine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlInput.cs =================================================================== diff -u -r5467 -r5476 --- DamEngine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlInput.cs (.../FillDamFromXmlInput.cs) (revision 5467) +++ DamEngine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlInput.cs (.../FillDamFromXmlInput.cs) (revision 5476) @@ -502,6 +502,7 @@ } location.SoilList = project.Dike.SoilList; + location.TrafficLoadDegreeOfConsolidations = project.Dike.TrafficLoadDegreeOfConsolidations; } } Index: DamEngine/trunk/src/Deltares.DamEngine.Data/General/Location.cs =================================================================== diff -u -r5466 -r5476 --- DamEngine/trunk/src/Deltares.DamEngine.Data/General/Location.cs (.../Location.cs) (revision 5466) +++ DamEngine/trunk/src/Deltares.DamEngine.Data/General/Location.cs (.../Location.cs) (revision 5476) @@ -220,6 +220,11 @@ /// The soil list. /// public SoilList SoilList { get; set; } + + /// + /// Gets or sets the degree of consolidation of the soils (consolidated) due to the traffic load (consolidator). + /// + public IList TrafficLoadDegreeOfConsolidations { get; set; } /// /// Gets or sets the gauges.