Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillMacroStabilityKernelInputFromEngine.cs
===================================================================
diff -u -r6380 -r6381
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillMacroStabilityKernelInputFromEngine.cs (.../FillMacroStabilityKernelInputFromEngine.cs) (revision 6380)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillMacroStabilityKernelInputFromEngine.cs (.../FillMacroStabilityKernelInputFromEngine.cs) (revision 6381)
@@ -24,6 +24,7 @@
using System.Linq;
using Deltares.DamEngine.Calculators.KernelWrappers.Common;
using Deltares.DamEngine.Data.General;
+using Deltares.DamEngine.Data.Geometry;
using Deltares.DamEngine.Data.Geotechnics;
using Deltares.DamEngine.Data.Standard;
using Deltares.MacroStability.Io.XmlInput;
@@ -44,6 +45,9 @@
namespace Deltares.DamEngine.Calculators.KernelWrappers.MacroStabilityCommon.MacroStabilityIo;
+///
+/// Class to create macro stability kernel input from dam engine data.
+///
public class FillMacroStabilityKernelInputFromEngine
{
/// Gets or sets the UpliftVan calculation grid.
@@ -58,14 +62,21 @@
/// The traffic load.
public TrafficLoad TrafficLoad { get; set; }
- public FullInputModelType CreateFullInputModel(DamKernelInput damKernelInput, MStabParameters mStabParameters, Waternet waterNet)
+ ///
+ /// Creates a full input model data object for Macro stability kernel based on DamEngineData.
+ ///
+ ///
+ ///
+ ///
+ /// FullInputModelType
+ public FullInputModelType CreateFullInputModel(DamKernelInput damKernelInput, MStabParameters mStabParameters, Waternet damWaterNet)
{
// The objectRegistry is to be used to keep track of all keys of some of the referenced objects
var objectRegistry = new ObjectRegistry();
var fullInputModelType = new FullInputModelType
{
PreprocessingInput = TransferPreprocessingInput(damKernelInput, mStabParameters),
- StabilityModel = TransferStabilityModel(damKernelInput, mStabParameters, objectRegistry),
+ StabilityModel = TransferStabilityModel(damKernelInput, mStabParameters, damWaterNet, objectRegistry),
VersionInfo = TransferVersionInfo()
};
return fullInputModelType;
@@ -85,30 +96,29 @@
preprocessingInputType.PreConstructionStages[0] = new PreConstructionStageType();
PreConstructionStageType preConstructionLastStage = preprocessingInputType.PreConstructionStages.Last();
preConstructionLastStage.Surfaceline = new SurfaceLineType();
- preConstructionLastStage.CreateWaternet = false; // #Bka: I can NOT find any use of this at the engine side so this must be false!
+ preConstructionLastStage.CreateWaternet = false;
TransferSurfaceLine(damKernelInput.Location.SurfaceLine, preConstructionLastStage.Surfaceline);
- preprocessingInputType.SearchAreaConditions = TransferSearchAreaCondition(damKernelInput, mStabParameters);
+ preprocessingInputType.SearchAreaConditions = TransferSearchAreaCondition(mStabParameters);
return preprocessingInputType;
}
- private SearchAreaConditionsType TransferSearchAreaCondition(DamKernelInput damKernelInput, MStabParameters mStabParameters)
+ private SearchAreaConditionsType TransferSearchAreaCondition(MStabParameters mStabParameters)
{
var preprocessingSearchAreaConditions = new SearchAreaConditionsType
{
- AutoGeneticAlgorithmOptions = false, //#Bka or true? is not to be found at engine side; or just set specified to false!?
+ AutoGeneticAlgorithmOptions = false,
AutoGeneticAlgorithmOptionsSpecified = true,
- AutoLevenbergMarquardtOptions = false, //#Bka or true? is not to be found at engine side; or just set specified to false!?
+ AutoLevenbergMarquardtOptions = false,
AutoLevenbergMarquardtOptionsSpecified = true,
AutoSearchAreaSpecified = true,
AutoTangentLinesSpecified = true,
- AutomaticForbiddenZones = false, //#Bka or true? is not to be found at engine side; or just set specified to false!?
+ AutomaticForbiddenZones = false,
AutomaticForbiddenZonesSpecified = true,
- MaxSpacingBetweenBoundaries = 0.8,
MaxSpacingBetweenBoundariesSpecified = true,
OnlyAbovePleistoceenSpecified = true,
- SlipPlanePosition = SearchAreaConditionsTypeSlipPlanePosition.High, //#Bka = default in C#wrapper, is not to be found at engine side; or just set specified to false!?
+ SlipPlanePosition = SearchAreaConditionsTypeSlipPlanePosition.High,
SlipPlanePositionSpecified = true,
TangentLineNumberSpecified = true,
TangentLineZBottomSpecified = true,
@@ -130,26 +140,27 @@
return preprocessingSearchAreaConditions;
}
- private void TransferBishopSearchAreaSettings(SearchAreaConditionsType searchAreaConditions)
+ private void TransferBishopSearchAreaSettings(SearchAreaConditionsType kernelSearchAreaConditions)
{
// In the Macrostability kernel, for Bishop, the automatic tangent lines are set by AutoSearchArea = True.
// Setting AutoTangentLines to true will create the automatic tangent lines of Uplift-Van which is not desired.
- searchAreaConditions.AutoTangentLines = false;
- searchAreaConditions.AutoSearchArea = BishopCalculationGrid.IsSearchAreaAutomatic;
- searchAreaConditions.TangentLineNumber = BishopCalculationGrid.TangentLineCount;
- searchAreaConditions.TangentLineZTop = BishopCalculationGrid.TangentLineZTop;
- searchAreaConditions.TangentLineZBottom = BishopCalculationGrid.TangentLineZBottom;
+ kernelSearchAreaConditions.AutoTangentLines = false;
+ kernelSearchAreaConditions.AutoSearchArea = BishopCalculationGrid.IsSearchAreaAutomatic;
+ kernelSearchAreaConditions.TangentLineNumber = BishopCalculationGrid.TangentLineCount;
+ kernelSearchAreaConditions.TangentLineZTop = BishopCalculationGrid.TangentLineZTop;
+ kernelSearchAreaConditions.TangentLineZBottom = BishopCalculationGrid.TangentLineZBottom;
+ kernelSearchAreaConditions.MaxSpacingBetweenBoundaries = 10.0;
}
private void TransferUpliftVanSearchAreaSettings(SearchAreaConditionsType kernelSearchAreaConditions)
{
kernelSearchAreaConditions.AutoTangentLines = UpliftVanCalculationGrid.TangentLinesCreationMethod is TangentLinesDefinition.Automatic or TangentLinesDefinition.OnBoundaryLines;
kernelSearchAreaConditions.AutoSearchArea = UpliftVanCalculationGrid.IsGridsAutomatic;
kernelSearchAreaConditions.OnlyAbovePleistoceen = UpliftVanCalculationGrid.TangentLinesCreationMethod == TangentLinesDefinition.Automatic;
- kernelSearchAreaConditions.MaxSpacingBetweenBoundaries = 0.8;
kernelSearchAreaConditions.TangentLineNumber = UpliftVanCalculationGrid.TangentLineCount;
kernelSearchAreaConditions.TangentLineZTop = UpliftVanCalculationGrid.TangentLineZTop;
kernelSearchAreaConditions.TangentLineZBottom = UpliftVanCalculationGrid.TangentLineZBottom;
+ kernelSearchAreaConditions.MaxSpacingBetweenBoundaries = 0.8;
}
private BishopCalculationCircle TransferBishopCalculationGrid()
@@ -218,11 +229,11 @@
return kernelUpliftVanCalculationGrid;
}
- private void TransferSurfaceLine(SurfaceLine2 surfaceLineInput, SurfaceLineType surfaceLine)
+ private void TransferSurfaceLine(SurfaceLine2 damSurfaceLine, SurfaceLineType kernelSurfaceLine)
{
- surfaceLine.CharacteristicPoints = new SurfaceLineTypeCharacteristicPoint[surfaceLineInput.CharacteristicPoints.Count];
+ kernelSurfaceLine.CharacteristicPoints = new SurfaceLineTypeCharacteristicPoint[damSurfaceLine.CharacteristicPoints.Count];
var i = 0;
- foreach (CharacteristicPoint damCharPoint in surfaceLineInput.CharacteristicPoints)
+ foreach (CharacteristicPoint damCharPoint in damSurfaceLine.CharacteristicPoints)
{
var kernelCharPoint = new SurfaceLineTypeCharacteristicPoint
{
@@ -233,56 +244,69 @@
Z = damCharPoint.Point.Z
}
};
- surfaceLine.CharacteristicPoints[i] = kernelCharPoint;
+ kernelSurfaceLine.CharacteristicPoints[i] = kernelCharPoint;
i++;
}
}
- private StabilityInputType TransferStabilityModel(DamKernelInput damKernelInput, MStabParameters mStabParameters, ObjectRegistry objectRegistry)
+ private StabilityInputType TransferStabilityModel(DamKernelInput damKernelInput, MStabParameters mStabParameters,
+ Waternet damWaterNet, ObjectRegistry registry)
{
if (damKernelInput == null || mStabParameters == null)
{
return null;
}
- var stabilityInputType = new StabilityInputType
+ var kernelStabilityInput = new StabilityInputType
{
ConstructionStages = new ConstructionStageInputType[1],
SlipPlaneConstraints = new SlipPlaneConstraintsType()
};
switch (mStabParameters.Model)
{
case StabilityModelType.Bishop:
- stabilityInputType.BishopCalculationCircle = TransferBishopCalculationGrid();
+ kernelStabilityInput.BishopCalculationCircle = TransferBishopCalculationGrid();
break;
case StabilityModelType.UpliftVan:
- stabilityInputType.UpliftVanCalculationGrid = TransferUpliftVanCalculationGrid();
+ kernelStabilityInput.UpliftVanCalculationGrid = TransferUpliftVanCalculationGrid();
break;
default:
throw new NotImplementedException(nameof(mStabParameters.Model));
}
- TransferSlipPlaneConstraints(damKernelInput.Location, stabilityInputType.SlipPlaneConstraints);
- TransferStabilityModelProperties(mStabParameters, stabilityInputType);
+ TransferSlipPlaneConstraints(damKernelInput.Location, kernelStabilityInput.SlipPlaneConstraints);
+ TransferStabilityModelProperties(mStabParameters, kernelStabilityInput);
- stabilityInputType.ConstructionStages[0] = new ConstructionStageInputType();
- ConstructionStageInputType lastStage = stabilityInputType.ConstructionStages.Last();
+ kernelStabilityInput.ConstructionStages[0] = new ConstructionStageInputType();
+ ConstructionStageInputType lastStage = kernelStabilityInput.ConstructionStages.Last();
- stabilityInputType.Soils = new SoilType[damKernelInput.Location.SoilList.Soils.Count];
+ kernelStabilityInput.Soils = new SoilType[damKernelInput.Location.SoilList.Soils.Count];
lastStage.FixedSoilStresses = new FixedSoilStressType[damKernelInput.Location.SoilList.Soils.Count];
- TransferSoils(damKernelInput.Location.SoilList, stabilityInputType.Soils, lastStage.FixedSoilStresses, objectRegistry);
+ TransferSoils(damKernelInput.Location.SoilList, kernelStabilityInput.Soils, lastStage.FixedSoilStresses, registry);
- lastStage.UniformLoads = new UniformLoadType[1];
- TransferUniformLoads(TrafficLoad, lastStage.UniformLoads, objectRegistry);
- TransferTrafficLoadDegreeOfConsolidation(TrafficLoad, damKernelInput.SubSoilScenario.SoilProfile2D,
- damKernelInput.Location.TrafficLoadDegreeOfConsolidations, lastStage, objectRegistry);
-
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, objectRegistry);
+ TransferSoilProfile(damKernelInput.SubSoilScenario.SoilProfile2D, lastStage.SoilProfile, lastStage.PreconsolidationStresses, registry);
- return stabilityInputType;
+ lastStage.UniformLoads = TransferUniformLoads(TrafficLoad, registry);
+ TransferTrafficLoadDegreeOfConsolidation(TrafficLoad, damKernelInput.SubSoilScenario.SoilProfile2D,
+ damKernelInput.Location.TrafficLoadDegreeOfConsolidations, lastStage, registry);
+
+ lastStage.Waternet = new WaternetType();
+ TransferWaternet(damWaterNet, lastStage.Waternet, registry);
+ // Unused options
+ lastStage.Earthquake = null;
+ lastStage.ForbiddenLines = null;
+ lastStage.Geotextiles = null;
+ lastStage.LineLoads = null;
+ lastStage.MultiplicationFactorsCPhiForUplift = null;
+ lastStage.Nails = null;
+ lastStage.TreesOnSlope = null;
+ lastStage.WaterMesh = null;
+ lastStage.YieldStressField = null;
+
+ return kernelStabilityInput;
}
private VersionInfoType TransferVersionInfo()
@@ -301,7 +325,8 @@
kernelStabilityInput.Orientation = InputConversionHelper.ConvertToMacroStabilityGridOrientation(mStabParameters.GridPosition);
kernelStabilityInput.ModelOption = InputConversionHelper.ConvertToMacroStabilityModelOption(mStabParameters.Model);
// For Bishop, only Grid is possible however if Bishop/UpliftVan was selected, then the SearchAlgorithm concerns only Uplift-Van
- kernelStabilityInput.SearchAlgorithm = mStabParameters.Model == StabilityModelType.Bishop ? SearchAlgorithmType.Grid : InputConversionHelper.ConvertToMacroStabilitySearchMethod(mStabParameters.SearchMethod);
+ kernelStabilityInput.SearchAlgorithm = mStabParameters.Model == StabilityModelType.Bishop ?
+ SearchAlgorithmType.Grid : InputConversionHelper.ConvertToMacroStabilitySearchMethod(mStabParameters.SearchMethod);
if (kernelStabilityInput.SearchAlgorithm == SearchAlgorithmType.BeeswarmAndLevenbergMarquardt)
{
CreateDefaultBeeSwarmOptions(kernelStabilityInput);
@@ -329,23 +354,23 @@
kernelStabilityInput.NumberOfRefinementsTangentLines = 2;
}
- private static void TransferSlipPlaneConstraints(Location location, SlipPlaneConstraintsType slipPlaneConstraints)
+ private static void TransferSlipPlaneConstraints(Location damLocation, SlipPlaneConstraintsType kernelSlipPlaneConstraints)
{
- if (location.StabilityOptions == null)
+ if (damLocation.StabilityOptions == null)
{
return;
}
- slipPlaneConstraints.SlipPlaneMinDepth = location.StabilityOptions.MinimalCircleDepth ?? 0.0;
- if ((location.StabilityOptions.StabilityZoneType == StabilityZoneType.ForbiddenZone) &&
- location.StabilityOptions.ForbiddenZoneFactor.HasValue)
+ kernelSlipPlaneConstraints.SlipPlaneMinDepth = damLocation.StabilityOptions.MinimalCircleDepth ?? 0.0;
+ if ((damLocation.StabilityOptions.StabilityZoneType == StabilityZoneType.ForbiddenZone) &&
+ damLocation.StabilityOptions.ForbiddenZoneFactor.HasValue)
{
- CharacteristicPointSet characteristicPoints = location.SurfaceLine.CharacteristicPoints;
- slipPlaneConstraints.XEntryMin = characteristicPoints.GetPoint2D(CharacteristicPointType.DikeTopAtRiver).X;
+ CharacteristicPointSet characteristicPoints = damLocation.SurfaceLine.CharacteristicPoints;
+ kernelSlipPlaneConstraints.XEntryMin = characteristicPoints.GetPoint2D(CharacteristicPointType.DikeTopAtRiver).X;
double xDikeTopAtPolder = characteristicPoints.GetPoint2D(CharacteristicPointType.DikeTopAtPolder).X;
double xDikeToeAtPolder = characteristicPoints.GetPoint2D(CharacteristicPointType.DikeToeAtPolder).X;
- double factor = location.StabilityOptions.ForbiddenZoneFactor.Value;
- slipPlaneConstraints.XEntryMax = (xDikeToeAtPolder * factor) + ((1 - factor) * xDikeTopAtPolder);
+ double factor = damLocation.StabilityOptions.ForbiddenZoneFactor.Value;
+ kernelSlipPlaneConstraints.XEntryMax = (xDikeToeAtPolder * factor) + ((1 - factor) * xDikeTopAtPolder);
}
}
@@ -365,7 +390,8 @@
};
}
- private void TransferSoils(SoilList damSoilList, SoilType[] kernelSoils, FixedSoilStressType[] kernelFixedSoilStresses, ObjectRegistry registry)
+ private void TransferSoils(SoilList damSoilList, SoilType[] kernelSoils, FixedSoilStressType[] kernelFixedSoilStresses,
+ ObjectRegistry registry)
{
if (damSoilList != null)
{
@@ -385,15 +411,15 @@
}
}
- private static SoilType CreateSoil(Soil soil, ObjectRegistry registry)
+ private static SoilType CreateSoil(Soil damSoil, ObjectRegistry registry)
{
- SoilType soilType = InputConversionHelper.ConvertToMacroStabilitySoil(soil);
- soilType.Key = registry.GetId(soil);
- return soilType;
+ SoilType kernelSoil = InputConversionHelper.ConvertToMacroStabilitySoil(damSoil);
+ kernelSoil.Key = registry.GetId(damSoil);
+ return kernelSoil;
}
private void TransferSoilProfile(SoilProfile2D damSoilProfile2D, SoilProfileType kernelSoilProfile,
- PreconsolidationStressType[] preConsolidationStresses, ObjectRegistry registry)
+ PreconsolidationStressType[] kernelPreConsolidationStresses, ObjectRegistry registry)
{
// Add points
kernelSoilProfile.Geometry = new GeometryType
@@ -415,10 +441,11 @@
TransferSoilProfileSoilLayers2D(damSoilProfile2D, kernelSoilProfile, registry);
- TransferSoilProfilePreConsolidationStresses(damSoilProfile2D, preConsolidationStresses);
+ TransferSoilProfilePreConsolidationStresses(damSoilProfile2D, kernelPreConsolidationStresses);
}
- private static void TransferSoilProfilePreConsolidationStresses(SoilProfile2D damSoilProfile2D, PreconsolidationStressType[] preConsolidationStresses)
+ private static void TransferSoilProfilePreConsolidationStresses(SoilProfile2D damSoilProfile2D,
+ PreconsolidationStressType[] kernelPreConsolidationStresses)
{
var i = 0;
foreach (PreConsolidationStress preConsolidationStress in damSoilProfile2D.PreconsolidationStresses)
@@ -432,12 +459,13 @@
},
StressValue = preConsolidationStress.StressValue
};
- preConsolidationStresses[i] = kernelPreConsolidationStressType;
+ kernelPreConsolidationStresses[i] = kernelPreConsolidationStressType;
i++;
}
}
- private static void TransferSoilProfileSoilLayers2D(SoilProfile2D damSoilProfile2D, SoilProfileType kernelSoilProfile, ObjectRegistry registry)
+ private static void TransferSoilProfileSoilLayers2D(SoilProfile2D damSoilProfile2D, SoilProfileType kernelSoilProfile,
+ ObjectRegistry registry)
{
var i = 0;
foreach (SoilLayer2D damSoilLayer2D in damSoilProfile2D.Surfaces)
@@ -450,18 +478,18 @@
GeometrySurface = registry.GetId(damSoilLayer2D.GeometrySurface),
Soil = registry.GetId(damSoilLayer2D.Soil),
WaterPressureInterpolationModelSpecified = true,
- WaterPressureInterpolationModel = InputConversionHelper.ConvertToMacroStabilityWaterPressureInterpolationModel(damSoilLayer2D
- .WaterpressureInterpolationModel)
+ WaterPressureInterpolationModel = InputConversionHelper.ConvertToMacroStabilityWaterPressureInterpolationModel(
+ damSoilLayer2D.WaterpressureInterpolationModel)
};
kernelSoilProfile.SoilSurfaces[i] = kernelSoilLayer2D;
i++;
}
}
- private static void TransferSoilProfileGeometrySurfaces(SoilProfile2D damSoilProfile2D, SoilProfileType kernelSoilProfile, ObjectRegistry registry)
+ private static void TransferSoilProfileGeometrySurfaces(SoilProfile2D damSoilProfile2D, SoilProfileType kernelSoilProfile,
+ ObjectRegistry registry)
{
- int i;
- i = 0;
+ int i = 0;
foreach (SoilLayer2D damSurface in damSoilProfile2D.Surfaces)
{
var kernelGeometrySurface = new GeometrySurfaceType
@@ -484,7 +512,8 @@
}
}
- private static void TransferSoilProfileGeometryLoops(SoilProfile2D damSoilProfile2D, SoilProfileType kernelSoilProfile, ObjectRegistry registry)
+ private static void TransferSoilProfileGeometryLoops(SoilProfile2D damSoilProfile2D, SoilProfileType kernelSoilProfile,
+ ObjectRegistry registry)
{
var i = 0;
foreach (GeometryLoop damLoop in damSoilProfile2D.Geometry.Loops)
@@ -495,11 +524,11 @@
Curves = new LoopTypeCurve[damLoop.CurveList.Count]
};
var j = 0;
- foreach (GeometryCurve geometryCurve in damLoop.CurveList)
+ foreach (GeometryCurve damCurve in damLoop.CurveList)
{
var kernelCurve = new LoopTypeCurve
{
- Curve = registry.GetId(geometryCurve)
+ Curve = registry.GetId(damCurve)
};
kernelLoop.Curves[j] = kernelCurve;
j++;
@@ -510,7 +539,8 @@
}
}
- private static void TransferSoilProfileGeometryCurves(SoilProfile2D damSoilProfile2D, SoilProfileType kernelSoilProfile, ObjectRegistry registry)
+ private static void TransferSoilProfileGeometryCurves(SoilProfile2D damSoilProfile2D, SoilProfileType kernelSoilProfile,
+ ObjectRegistry registry)
{
var i = 0;
foreach (GeometryCurve damCurve in damSoilProfile2D.Geometry.Curves)
@@ -526,7 +556,8 @@
}
}
- private static void TransferSoilProfileGeometryPoints(SoilProfile2D damSoilProfile2D, SoilProfileType kernelSoilProfile, ObjectRegistry registry)
+ private static void TransferSoilProfileGeometryPoints(SoilProfile2D damSoilProfile2D, SoilProfileType kernelSoilProfile,
+ ObjectRegistry registry)
{
var i = 0;
foreach (Point2D damPoint in damSoilProfile2D.Geometry.Points)
@@ -542,36 +573,134 @@
}
}
- private void TransferUniformLoads(TrafficLoad damTrafficLoad, UniformLoadType[] kernelUniformLoads, ObjectRegistry registry)
+ private UniformLoadType[] TransferUniformLoads(TrafficLoad damTrafficLoad, ObjectRegistry registry)
{
if (damTrafficLoad != null)
{
- kernelUniformLoads[0].XStart = damTrafficLoad.XStart;
- kernelUniformLoads[0].XEnd = damTrafficLoad.XEnd;
- kernelUniformLoads[0].Pressure = damTrafficLoad.Pressure;
- kernelUniformLoads[0].DistributionAngle = 0.0;
- kernelUniformLoads[0].Key = registry.GetId(damTrafficLoad);
- };
+ var kernelUniformLoads = new UniformLoadType[1];
+ var kernelUniformLoad = new UniformLoadType
+ {
+ XStart = damTrafficLoad.XStart,
+ XEnd = damTrafficLoad.XEnd,
+ Pressure = damTrafficLoad.Pressure,
+ DistributionAngle = 0.0,
+ Key = registry.GetId(damTrafficLoad)
+ };
+ kernelUniformLoads[0] = kernelUniformLoad;
+ return kernelUniformLoads;
+ }
+ return null;
}
- private static void TransferTrafficLoadDegreeOfConsolidation(TrafficLoad damTrafficLoad, SoilProfile2D soilProfile,
+ private static void TransferTrafficLoadDegreeOfConsolidation(TrafficLoad damTrafficLoad, SoilProfile2D damSoilProfile,
IList damDegreeOfConsolidations,
- ConstructionStageInputType stage, ObjectRegistry registry)
+ ConstructionStageInputType kernelStage, ObjectRegistry registry)
{
- if (damDegreeOfConsolidations != null && stage.UniformLoads.Length == 1)
+ if (damDegreeOfConsolidations != null && kernelStage.UniformLoads.Length == 1)
{
int i = 0;
- stage.ConsolidationValues = new ConsolidationValuesTypeConsolidationValue[damDegreeOfConsolidations.Count];
- foreach (SoilLayer2D surface in soilProfile.Surfaces)
+ kernelStage.ConsolidationValues = new ConsolidationValuesTypeConsolidationValue[damDegreeOfConsolidations.Count];
+ foreach (SoilLayer2D damSurface in damSoilProfile.Surfaces)
{
- stage.ConsolidationValues[i] = new ConsolidationValuesTypeConsolidationValue
+ kernelStage.ConsolidationValues[i] = new ConsolidationValuesTypeConsolidationValue
{
Consolidator = registry.GetId(damTrafficLoad),
- Consolidated = registry.GetId(surface),
- Value = damDegreeOfConsolidations.Find(t => t.SoilName == surface.Soil.Name).DegreeOfConsolidation
+ Consolidated = registry.GetId(damSurface),
+ Value = damDegreeOfConsolidations.Find(t => t.SoilName == damSurface.Soil.Name).DegreeOfConsolidation
};
i++;
}
}
}
+
+ private static void TransferWaternet(Waternet damWaternet, WaternetType kernelWaternet, ObjectRegistry registry)
+ {
+ kernelWaternet.Name = damWaternet.Name;
+ kernelWaternet.UnitWeightWater = damWaternet.UnitWeight;
+ kernelWaternet.UnitWeightWaterSpecified = true;
+
+ // Head Lines
+ kernelWaternet.HeadLines = new HeadLineType[damWaternet.HeadLineList.Count];
+ int i = 0;
+ foreach (HeadLine damHeadLine in damWaternet.HeadLineList)
+ {
+ HeadLineType kernelHeadLine = CreateHeadLine(damHeadLine, registry);
+ kernelWaternet.HeadLines[i] = kernelHeadLine;
+ i++;
+ }
+
+ // Phreatic Line
+ kernelWaternet.PhreaticLine = CreatePhreaticLine(damWaternet.PhreaticLine, registry);
+
+ // Waternet Lines
+ kernelWaternet.WaternetLines = new WaternetTypeWaternetLine[damWaternet.WaternetLineList.Count];
+ i = 0;
+ foreach (WaternetLine damWaternetLine in damWaternet.WaternetLineList)
+ {
+ WaternetTypeWaternetLine waternetTypeWaternetLine = CreateWaternetTypeWaternetLine(damWaternetLine, registry);
+ kernelWaternet.WaternetLines[i] = waternetTypeWaternetLine;
+ }
+ }
+
+ private static HeadLineType CreateHeadLine(HeadLine damHeadLine, ObjectRegistry registry)
+ {
+ return new HeadLineType
+ {
+ Key = registry.GetId(damHeadLine),
+ WaternetLine = CreateWaternetLineType(damHeadLine)
+ };
+ }
+
+ private static HeadLineType CreatePhreaticLine(PhreaticLine damPhreaticLine, ObjectRegistry registry)
+ {
+ return new HeadLineType
+ {
+ Key = registry.GetId(damPhreaticLine),
+ WaternetLine = CreateWaternetLineType(damPhreaticLine)
+ };
+ }
+
+ private static WaternetTypeWaternetLine CreateWaternetTypeWaternetLine(WaternetLine damWaternetLine, ObjectRegistry registry)
+ {
+ var waternetTypeWaternetLine = new WaternetTypeWaternetLine
+ {
+ Name = damWaternetLine.Name,
+ AssociatedHeadLineSpecified = true,
+ AssociatedHeadLine = registry.GetId(damWaternetLine.HeadLine),
+ Points = new Point2DType[damWaternetLine.Points.Count]
+ };
+ for (int i = 0; i < damWaternetLine.Points.Count; i++)
+ {
+ waternetTypeWaternetLine.Points[i] = CreateWaternetLinePoint(damWaternetLine.Points[i]);
+ }
+ return waternetTypeWaternetLine;
+ }
+
+ private static WaternetLineType CreateWaternetLineType(GeometryPointString damWaternetLine)
+ {
+ var waternetLineType = new WaternetLineType
+ {
+ Name = damWaternetLine.Name,
+ Points = new Point2DType[damWaternetLine.Points.Count]
+ };
+ for (int i = 0; i < damWaternetLine.Points.Count; i++)
+ {
+ waternetLineType.Points[i] = CreateWaternetLinePoint(damWaternetLine.Points[i]);
+ }
+ return waternetLineType;
+ }
+
+ private static Point2DType CreateWaternetLinePoint(Point2D damPoint)
+ {
+ if (damPoint == null)
+ {
+ return null;
+ }
+
+ return new Point2DType
+ {
+ X = damPoint.X,
+ Z = damPoint.Z
+ };
+ }
}
\ No newline at end of file