Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillMacroStabilityKernelInputFromEngine.cs =================================================================== diff -u -r6420 -r6467 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillMacroStabilityKernelInputFromEngine.cs (.../FillMacroStabilityKernelInputFromEngine.cs) (revision 6420) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillMacroStabilityKernelInputFromEngine.cs (.../FillMacroStabilityKernelInputFromEngine.cs) (revision 6467) @@ -192,6 +192,10 @@ kernelBishopCalculationCircle.TangentLines = new double[bishopCalculationGrid.TangentLineLevels.Count]; kernelBishopCalculationCircle.TangentLines = bishopCalculationGrid.TangentLineLevels.ToArray(); } + else + { + kernelBishopCalculationCircle.TangentLines = []; + } return kernelBishopCalculationCircle; } @@ -227,8 +231,13 @@ if (upliftVanCalculationGrid.TangentLinesCreationMethod == TangentLinesDefinition.Specified) { + kernelUpliftVanCalculationGrid.TangentLines = new double[upliftVanCalculationGrid.TangentLineLevels.Count]; kernelUpliftVanCalculationGrid.TangentLines = upliftVanCalculationGrid.TangentLineLevels.ToArray(); } + else + { + kernelUpliftVanCalculationGrid.TangentLines = []; + } return kernelUpliftVanCalculationGrid; } @@ -293,7 +302,8 @@ lastStage.SoilProfile = new SoilProfileType(); lastStage.PreconsolidationStresses = new PreconsolidationStressType[damKernelInput.SubSoilScenario.SoilProfile2D.PreconsolidationStresses.Count]; lastStage.WaterDefinition = WaterDefinitionType.WaterNet; - TransferSoilProfile(damKernelInput.SubSoilScenario.SoilProfile2D, lastStage.SoilProfile, lastStage.PreconsolidationStresses, registry); + TransferSoilProfile(damKernelInput.SubSoilScenario.SoilProfile2D, damKernelInput.Location.SoilList, lastStage.SoilProfile, + lastStage.PreconsolidationStresses, registry); lastStage.UniformLoads = TransferUniformLoads(trafficLoad, registry); TransferTrafficLoadDegreeOfConsolidation(trafficLoad, damKernelInput.SubSoilScenario.SoilProfile2D, @@ -339,7 +349,7 @@ kernelStabilityInput.GeneticAlgorithmOptions = null; kernelStabilityInput.LevenbergMarquardtOptions = null; - + kernelStabilityInput.MaximumSliceWidthSpecified = true; kernelStabilityInput.MaximumSliceWidth = 1.0; kernelStabilityInput.MoveGridSpecified = true; @@ -360,7 +370,7 @@ kernelStabilityInput.NumberOfRefinementsTangentLines = 2; } - private static void TransferSlipPlaneConstraints(Location damLocation, SlipPlaneConstraintsType kernelSlipPlaneConstraints) + internal static void TransferSlipPlaneConstraints(Location damLocation, SlipPlaneConstraintsType kernelSlipPlaneConstraints) { if (damLocation.StabilityOptions == null) { @@ -424,7 +434,7 @@ return kernelSoil; } - private static void TransferSoilProfile(SoilProfile2D damSoilProfile2D, SoilProfileType kernelSoilProfile, + private static void TransferSoilProfile(SoilProfile2D damSoilProfile2D, SoilList soilList, SoilProfileType kernelSoilProfile, PreconsolidationStressType[] kernelPreConsolidationStresses, ObjectRegistry registry) { // Add points @@ -445,7 +455,7 @@ TransferSoilProfileGeometryLoops(damSoilProfile2D, kernelSoilProfile, registry); TransferSoilProfileGeometrySurfaces(damSoilProfile2D, kernelSoilProfile, registry); - TransferSoilProfileSoilLayers2D(damSoilProfile2D, kernelSoilProfile, registry); + TransferSoilProfileSoilLayers2D(damSoilProfile2D, soilList, kernelSoilProfile, registry); TransferSoilProfilePreConsolidationStresses(damSoilProfile2D, kernelPreConsolidationStresses); } @@ -470,19 +480,20 @@ } } - private static void TransferSoilProfileSoilLayers2D(SoilProfile2D damSoilProfile2D, SoilProfileType kernelSoilProfile, - ObjectRegistry registry) + private static void TransferSoilProfileSoilLayers2D(SoilProfile2D damSoilProfile2D, SoilList soilList, + SoilProfileType kernelSoilProfile, ObjectRegistry registry) { var i = 0; foreach (SoilLayer2D damSoilLayer2D in damSoilProfile2D.Surfaces) { + var soil = soilList.GetSoilByName(damSoilLayer2D.Name); var kernelSoilLayer2D = new SoilSurfaceType { Key = registry.GetId(damSoilLayer2D), Name = damSoilLayer2D.Name, IsAquifer = damSoilLayer2D.IsAquifer, GeometrySurface = registry.GetId(damSoilLayer2D.GeometrySurface), - Soil = registry.GetId(damSoilLayer2D.Soil), + Soil = registry.GetId(soil), WaterPressureInterpolationModelSpecified = true, WaterPressureInterpolationModel = InputConversionHelper.ConvertToMacroStabilityWaterPressureInterpolationModel( damSoilLayer2D.WaterpressureInterpolationModel) @@ -496,25 +507,26 @@ ObjectRegistry registry) { var i = 0; - foreach (SoilLayer2D damSurface in damSoilProfile2D.Surfaces) + foreach (GeometrySurface geometrySurface in damSoilProfile2D.Geometry.Surfaces) { var kernelGeometrySurface = new GeometrySurfaceType { - Key = registry.GetId(damSurface) + Key = registry.GetId(geometrySurface) }; - GeometrySurface damGeometrySurface = damSurface.GeometrySurface; - kernelGeometrySurface.OuterLoop = registry.GetId(damGeometrySurface.OuterLoop); - kernelGeometrySurface.InnerLoops = new GeometrySurfaceTypeInnerLoop[damGeometrySurface.InnerLoops.Count]; + kernelGeometrySurface.OuterLoop = registry.GetId(geometrySurface.OuterLoop); + kernelGeometrySurface.InnerLoops = new GeometrySurfaceTypeInnerLoop[geometrySurface.InnerLoops.Count]; var j = 0; - foreach (GeometryLoop damSurfaceInnerLoop in damGeometrySurface.InnerLoops) + foreach (GeometryLoop damSurfaceInnerLoop in geometrySurface.InnerLoops) { kernelGeometrySurface.InnerLoops[j] = new GeometrySurfaceTypeInnerLoop { Loop = registry.GetId(damSurfaceInnerLoop) }; + j++; } kernelSoilProfile.Geometry.GeometrySurfaces[i] = kernelGeometrySurface; + i++; } } @@ -606,7 +618,7 @@ if (damTrafficLoad != null && damDegreeOfConsolidations != null && kernelStage.UniformLoads.Length == 1) { var i = 0; - kernelStage.ConsolidationValues = new ConsolidationValuesTypeConsolidationValue[damDegreeOfConsolidations.Count]; + kernelStage.ConsolidationValues = new ConsolidationValuesTypeConsolidationValue[damSoilProfile.Surfaces.Count]; foreach (SoilLayer2D damSurface in damSoilProfile.Surfaces) { kernelStage.ConsolidationValues[i] = new ConsolidationValuesTypeConsolidationValue @@ -626,6 +638,9 @@ kernelWaternet.UnitWeightWater = damWaternet.UnitWeight; kernelWaternet.UnitWeightWaterSpecified = true; + // Phreatic Line + kernelWaternet.PhreaticLine = CreatePhreaticLine(damWaternet.PhreaticLine, registry); + // Head Lines kernelWaternet.HeadLines = new HeadLineType[damWaternet.HeadLineList.Count]; var i = 0; @@ -636,9 +651,6 @@ i++; } - // Phreatic Line - kernelWaternet.PhreaticLine = CreatePhreaticLine(damWaternet.PhreaticLine, registry); - // Waternet Lines kernelWaternet.WaternetLines = new WaternetTypeWaternetLine[damWaternet.WaternetLineList.Count]; i = 0; @@ -649,22 +661,22 @@ i++; } } - - private static HeadLineType CreateHeadLine(HeadLine damHeadLine, ObjectRegistry registry) + + private static HeadLineType CreatePhreaticLine(PhreaticLine damPhreaticLine, ObjectRegistry registry) { return new HeadLineType { - Key = registry.GetId(damHeadLine), - WaternetLine = CreateWaternetLineType(damHeadLine) + Key = registry.GetId(damPhreaticLine), + WaternetLine = CreateWaternetLineType(damPhreaticLine) }; } - - private static HeadLineType CreatePhreaticLine(PhreaticLine damPhreaticLine, ObjectRegistry registry) + + private static HeadLineType CreateHeadLine(HeadLine damHeadLine, ObjectRegistry registry) { return new HeadLineType { - Key = registry.GetId(damPhreaticLine), - WaternetLine = CreateWaternetLineType(damPhreaticLine) + Key = registry.GetId(damHeadLine), + WaternetLine = CreateWaternetLineType(damHeadLine) }; }