Index: DamEngine/trunk/src/Deltares.DamEngine.Interface/FillXmlInputFromDam.cs
===================================================================
diff -u -r4000 -r4052
--- DamEngine/trunk/src/Deltares.DamEngine.Interface/FillXmlInputFromDam.cs (.../FillXmlInputFromDam.cs) (revision 4000)
+++ DamEngine/trunk/src/Deltares.DamEngine.Interface/FillXmlInputFromDam.cs (.../FillXmlInputFromDam.cs) (revision 4052)
@@ -42,809 +42,808 @@
using SoilProfile2D = Deltares.DamEngine.Data.Geotechnics.SoilProfile2D;
using TimeSerie = Deltares.DamEngine.Io.XmlInput.TimeSerie;
-namespace Deltares.DamEngine.Interface
+namespace Deltares.DamEngine.Interface;
+
+public class FillXmlInputFromDam
{
- public class FillXmlInputFromDam
+ ///
+ /// Creates the input from Dam data.
+ ///
+ /// The dam project data.
+ ///
+ public static Input CreateInput(DamProjectData damProjectData)
{
- ///
- /// Creates the input from Dam data.
- ///
- /// The dam project data.
- ///
- public static Input CreateInput(DamProjectData damProjectData)
+ ValidateDamProjectData(damProjectData);
+
+ var input = new Input();
+ input.ProjectPath = damProjectData.ProjectPath;
+ input.CalculationMap = damProjectData.CalculationMap;
+ input.MaxCalculationCoresSpecified = true;
+ input.MaxCalculationCores = damProjectData.MaxCalculationCores;
+ TransferAnalysisSpecification(damProjectData, input);
+ TransferStabilityParameters(damProjectData, input);
+
+ Dike dike = damProjectData.Dike;
+ input.Locations = new Io.XmlInput.Location[dike.Locations.Count];
+ TransferLocations(damProjectData.ProjectPath, dike.Locations, input.Locations);
+ input.SurfaceLines = new SurfaceLine[dike.SurfaceLines2.Count];
+ TransferSurfaceLines(dike.SurfaceLines2, input.SurfaceLines);
+ input.Soils = new Io.XmlInput.Soil[dike.SoilList.Soils.Count];
+ TransferSoils(dike.SoilList.Soils, input.Soils);
+ TransferAquiferSoils(dike.SoilList.AquiferDictionary, input);
+ if (dike.SoilProfiles != null)
{
- ValidateDamProjectData(damProjectData);
+ int profilesCount = dike.SoilProfiles.Count;
+ input.SoilProfiles1D = new Io.XmlInput.SoilProfile1D[profilesCount];
+ TransferSoilProfiles1D(dike.SoilProfiles, input.SoilProfiles1D);
+ }
- var input = new Input();
- input.ProjectPath = damProjectData.ProjectPath;
- input.CalculationMap = damProjectData.CalculationMap;
- input.MaxCalculationCoresSpecified = true;
- input.MaxCalculationCores = damProjectData.MaxCalculationCores;
- TransferAnalysisSpecification(damProjectData, input);
- TransferStabilityParameters(damProjectData, input);
+ if (dike.SoilProfiles2D != null)
+ {
+ int profilesCount = dike.SoilProfiles2D.Count;
+ input.SoilProfiles2D = new Io.XmlInput.SoilProfile2D[profilesCount];
+ TransferSoilProfiles2D(dike.SoilProfiles2D, input.SoilProfiles2D);
+ }
- Dike dike = damProjectData.Dike;
- input.Locations = new Io.XmlInput.Location[dike.Locations.Count];
- TransferLocations(damProjectData.ProjectPath, dike.Locations, input.Locations);
- input.SurfaceLines = new SurfaceLine[dike.SurfaceLines2.Count];
- TransferSurfaceLines(dike.SurfaceLines2, input.SurfaceLines);
- input.Soils = new Io.XmlInput.Soil[dike.SoilList.Soils.Count];
- TransferSoils(dike.SoilList.Soils, input.Soils);
- TransferAquiferSoils(dike.SoilList.AquiferDictionary, input);
- if (dike.SoilProfiles != null)
- {
- int profilesCount = dike.SoilProfiles.Count;
- input.SoilProfiles1D = new Io.XmlInput.SoilProfile1D[profilesCount];
- TransferSoilProfiles1D(dike.SoilProfiles, input.SoilProfiles1D);
- }
+ if (damProjectData.Segments != null)
+ {
+ input.Segments = new Io.XmlInput.Segment[damProjectData.Segments.Count];
+ TransferSegments(damProjectData.Segments, input.Segments);
+ }
- if (dike.SoilProfiles2D != null)
- {
- int profilesCount = dike.SoilProfiles2D.Count;
- input.SoilProfiles2D = new Io.XmlInput.SoilProfile2D[profilesCount];
- TransferSoilProfiles2D(dike.SoilProfiles2D, input.SoilProfiles2D);
- }
+ if (dike.InputTimeSerieCollection != null)
+ {
+ input.OperationalInputTimeSeries = new TimeSerie[dike.InputTimeSerieCollection.Series.Count];
+ TransferInputTimeSeries(dike.InputTimeSerieCollection, input.OperationalInputTimeSeries);
+ }
- if (damProjectData.Segments != null)
- {
- input.Segments = new Io.XmlInput.Segment[damProjectData.Segments.Count];
- TransferSegments(damProjectData.Segments, input.Segments);
- }
+ if (damProjectData.SensorData != null)
+ {
+ input.SensorData = new InputSensorData();
+ TransferSensorData(damProjectData.SensorData, input.SensorData);
+ }
- if (dike.InputTimeSerieCollection != null)
- {
- input.OperationalInputTimeSeries = new TimeSerie[dike.InputTimeSerieCollection.Series.Count];
- TransferInputTimeSeries(dike.InputTimeSerieCollection, input.OperationalInputTimeSeries);
- }
+ return input;
+ }
- if (damProjectData.SensorData != null)
+ private static void TransferSensorData(SensorData sensorData, InputSensorData inputSensorData)
+ {
+ // Transfer sensorgroups
+ var sensorGroupIndex = 0;
+ inputSensorData.SensorGroups = new SensorGroup[sensorData.SensorGroups.Count];
+ foreach (Data.General.Sensors.SensorGroup sensorGroup in sensorData.SensorGroups)
+ {
+ var inputSensorGroup = new SensorGroup();
+ inputSensorGroup.SensorIds = new SensorGroupSensorIds[sensorGroup.SensorCount];
+ inputSensorGroup.Id = sensorGroup.ID;
+ var sensorIdIndex = 0;
+ foreach (Sensor sensor in sensorGroup.SensorArray)
{
- input.SensorData = new InputSensorData();
- TransferSensorData(damProjectData.SensorData, input.SensorData);
+ inputSensorGroup.SensorIds[sensorIdIndex] = new SensorGroupSensorIds
+ {
+ SensorId = sensor.ID
+ };
+ sensorIdIndex++;
}
- return input;
+ inputSensorData.SensorGroups[sensorGroupIndex] = inputSensorGroup;
+ sensorGroupIndex++;
}
- private static void TransferSensorData(SensorData sensorData, InputSensorData inputSensorData)
+ // Transfer sensorlocations
+ var senserLocationIndex = 0;
+ inputSensorData.SensorLocations = new SensorLocation[sensorData.SensorLocations.Count];
+ foreach (Data.General.Sensors.SensorLocation sensorLocation in sensorData.SensorLocations)
{
- // Transfer sensorgroups
- var sensorGroupIndex = 0;
- inputSensorData.SensorGroups = new SensorGroup[sensorData.SensorGroups.Count];
- foreach (Data.General.Sensors.SensorGroup sensorGroup in sensorData.SensorGroups)
+ var inputSensorLocation = new SensorLocation();
+ inputSensorLocation.GroupId = sensorLocation.GroupId;
+ inputSensorLocation.LocationId = sensorLocation.LocationName;
+ inputSensorLocation.SourceTypePl1PlLineOffsetBelowDikeToeAtPolder = ConversionHelper.ConvertToInputDataSourceTypeSensors(sensorLocation.SourceTypePl1PlLineOffsetBelowDikeToeAtPolder);
+ inputSensorLocation.SourceTypePl1PlLineOffsetBelowDikeTopAtPolder = ConversionHelper.ConvertToInputDataSourceTypeSensors(sensorLocation.SourceTypePl1PlLineOffsetBelowDikeTopAtPolder);
+ inputSensorLocation.SourceTypePl1PlLineOffsetBelowDikeTopAtRiver = ConversionHelper.ConvertToInputDataSourceTypeSensors(sensorLocation.SourceTypePl1PlLineOffsetBelowDikeTopAtRiver);
+ inputSensorLocation.SourceTypePl1PlLineOffsetBelowShoulderBaseInside = ConversionHelper.ConvertToInputDataSourceTypeSensors(sensorLocation.SourceTypePl1PlLineOffsetBelowShoulderBaseInside);
+ inputSensorLocation.SourceTypePl1WaterLevelAtRiver = ConversionHelper.ConvertToInputDataSourceTypeSensors(sensorLocation.SourceTypePl1WaterLevelAtRiver);
+ inputSensorLocation.SourceTypePl1WaterLevelAtPolder = ConversionHelper.ConvertToInputDataSourceTypeSensors(sensorLocation.SourceTypePl1WaterLevelAtPolder);
+ inputSensorLocation.SourceTypePl3 = ConversionHelper.ConvertToInputDataSourceTypeSensors(sensorLocation.SourceTypePl3);
+ inputSensorLocation.SourceTypePl4 = ConversionHelper.ConvertToInputDataSourceTypeSensors(sensorLocation.SourceTypePl4);
+ inputSensorData.SensorLocations[senserLocationIndex] = inputSensorLocation;
+ senserLocationIndex++;
+ }
+
+ // Transfer sensors
+ inputSensorData.Sensors = new Io.XmlInput.Sensor[sensorData.Sensors.Count];
+ var sensorIndex = 0;
+ foreach (Sensor sensor in sensorData.Sensors)
+ {
+ var inputSensor = new Io.XmlInput.Sensor();
+ inputSensor.Id = sensor.ID;
+ inputSensor.Name = sensor.Name;
+ inputSensor.RelativeLocation = sensor.RelativeLocation;
+ inputSensor.SensorType = ConversionHelper.ConvertToInputSensorType(sensor.SensorType);
+ inputSensor.PlLineMapping = new SensorPlLineMapping[sensor.PlLineMappings.Length];
+ var mappingIndex = 0;
+ foreach (PlLineType plLineMapping in sensor.PlLineMappings)
{
- var inputSensorGroup = new SensorGroup();
- inputSensorGroup.SensorIds = new SensorGroupSensorIds[sensorGroup.SensorCount];
- inputSensorGroup.Id = sensorGroup.ID;
- var sensorIdIndex = 0;
- foreach (Sensor sensor in sensorGroup.SensorArray)
+ inputSensor.PlLineMapping[mappingIndex] = new SensorPlLineMapping
{
- inputSensorGroup.SensorIds[sensorIdIndex] = new SensorGroupSensorIds
- {
- SensorId = sensor.ID
- };
- sensorIdIndex++;
- }
-
- inputSensorData.SensorGroups[sensorGroupIndex] = inputSensorGroup;
- sensorGroupIndex++;
+ PLineType = ConversionHelper.ConvertToInputPlLineType(plLineMapping)
+ };
+ mappingIndex++;
}
- // Transfer sensorlocations
- var senserLocationIndex = 0;
- inputSensorData.SensorLocations = new SensorLocation[sensorData.SensorLocations.Count];
- foreach (Data.General.Sensors.SensorLocation sensorLocation in sensorData.SensorLocations)
- {
- var inputSensorLocation = new SensorLocation();
- inputSensorLocation.GroupId = sensorLocation.GroupId;
- inputSensorLocation.LocationId = sensorLocation.LocationName;
- inputSensorLocation.SourceTypePl1PlLineOffsetBelowDikeToeAtPolder = ConversionHelper.ConvertToInputDataSourceTypeSensors(sensorLocation.SourceTypePl1PlLineOffsetBelowDikeToeAtPolder);
- inputSensorLocation.SourceTypePl1PlLineOffsetBelowDikeTopAtPolder = ConversionHelper.ConvertToInputDataSourceTypeSensors(sensorLocation.SourceTypePl1PlLineOffsetBelowDikeTopAtPolder);
- inputSensorLocation.SourceTypePl1PlLineOffsetBelowDikeTopAtRiver = ConversionHelper.ConvertToInputDataSourceTypeSensors(sensorLocation.SourceTypePl1PlLineOffsetBelowDikeTopAtRiver);
- inputSensorLocation.SourceTypePl1PlLineOffsetBelowShoulderBaseInside = ConversionHelper.ConvertToInputDataSourceTypeSensors(sensorLocation.SourceTypePl1PlLineOffsetBelowShoulderBaseInside);
- inputSensorLocation.SourceTypePl1WaterLevelAtRiver = ConversionHelper.ConvertToInputDataSourceTypeSensors(sensorLocation.SourceTypePl1WaterLevelAtRiver);
- inputSensorLocation.SourceTypePl1WaterLevelAtPolder = ConversionHelper.ConvertToInputDataSourceTypeSensors(sensorLocation.SourceTypePl1WaterLevelAtPolder);
- inputSensorLocation.SourceTypePl3 = ConversionHelper.ConvertToInputDataSourceTypeSensors(sensorLocation.SourceTypePl3);
- inputSensorLocation.SourceTypePl4 = ConversionHelper.ConvertToInputDataSourceTypeSensors(sensorLocation.SourceTypePl4);
- inputSensorData.SensorLocations[senserLocationIndex] = inputSensorLocation;
- senserLocationIndex++;
- }
+ inputSensorData.Sensors[sensorIndex] = inputSensor;
+ sensorIndex++;
+ }
+ }
- // Transfer sensors
- inputSensorData.Sensors = new Io.XmlInput.Sensor[sensorData.Sensors.Count];
- var sensorIndex = 0;
- foreach (Sensor sensor in sensorData.Sensors)
+ private static void TransferInputTimeSeries(TimeSerieCollection inputTimeSerieCollection, TimeSerie[] operationalInputTimeSeries)
+ {
+ var timeSerieIndex = 0;
+ foreach (Data.General.TimeSeries.TimeSerie timeSerie in inputTimeSerieCollection.Series)
+ {
+ var inputTimeSerie = new TimeSerie();
+ inputTimeSerie.Entries = new TimeSerieEntries();
+ inputTimeSerie.Entries.TimeSerieEntry = new TimeSerieEntriesTimeSerieEntry[timeSerie.Entries.Count];
+ inputTimeSerie.TimeStep = new TimeSerieTimeStep();
+ inputTimeSerie.LocationId = timeSerie.LocationId;
+ inputTimeSerie.ParameterId = timeSerie.ParameterId;
+ inputTimeSerie.ForecastDateTime = timeSerie.ForecastDateTime;
+ inputTimeSerie.Type = timeSerie.Type;
+ inputTimeSerie.StartDateTime = timeSerie.StartDateTime;
+ inputTimeSerie.EndDateTime = timeSerie.EndDateTime;
+ inputTimeSerie.MissVal = timeSerie.MissVal;
+ inputTimeSerie.LongName = timeSerie.LongName;
+ inputTimeSerie.StationName = timeSerie.StationName;
+ inputTimeSerie.Units = timeSerie.Units;
+ inputTimeSerie.SourceOrganisation = timeSerie.SourceOrganisation;
+ inputTimeSerie.SourceSystem = timeSerie.SourceSystem;
+ inputTimeSerie.FileDescription = timeSerie.FileDescription;
+ inputTimeSerie.Region = timeSerie.Region;
+ inputTimeSerie.TimeStep.Multiplier = timeSerie.TimeStep.Multiplier;
+ inputTimeSerie.TimeStep.Divider = timeSerie.TimeStep.Divider;
+ inputTimeSerie.TimeStep.MultiplierSpecified1 = timeSerie.TimeStep.MultiplierSpecified;
+ inputTimeSerie.TimeStep.DividerSpecified1 = timeSerie.TimeStep.DividerSpecified;
+ inputTimeSerie.TimeStep.TimeStepUnit = ConversionHelper.ConvertToInputTimeStepUnit(timeSerie.TimeStep.Unit);
+ var timeSerieEntryIndex = 0;
+ foreach (TimeSerieEntry timestepEntry in timeSerie.Entries)
{
- var inputSensor = new Io.XmlInput.Sensor();
- inputSensor.Id = sensor.ID;
- inputSensor.Name = sensor.Name;
- inputSensor.RelativeLocation = sensor.RelativeLocation;
- inputSensor.SensorType = ConversionHelper.ConvertToInputSensorType(sensor.SensorType);
- inputSensor.PlLineMapping = new SensorPlLineMapping[sensor.PlLineMappings.Length];
- var mappingIndex = 0;
- foreach (PlLineType plLineMapping in sensor.PlLineMappings)
+ TimeSerieEntriesTimeSerieEntryStochastValue stochastValue = null;
+ if (timestepEntry.StochastValue != null)
{
- inputSensor.PlLineMapping[mappingIndex] = new SensorPlLineMapping
+ stochastValue = new TimeSerieEntriesTimeSerieEntryStochastValue
{
- PLineType = ConversionHelper.ConvertToInputPlLineType(plLineMapping)
+ Distribution = timestepEntry.StochastValue.Distribution,
+ Mean = timestepEntry.StochastValue.Mean,
+ StandardDeviation = timestepEntry.StochastValue.StandardDeviation
};
- mappingIndex++;
}
- inputSensorData.Sensors[sensorIndex] = inputSensor;
- sensorIndex++;
+ var timeStep = new TimeSerieEntriesTimeSerieEntry
+ {
+ DateTime = timestepEntry.DateTime,
+ Value = timestepEntry.Value,
+ BasisFileNameWMF = timestepEntry.BasisFileName,
+ Flagnietechtgebruikt = timestepEntry.Flag,
+ RelativeCalculationPathName = timestepEntry.RelativeCalculationPathName,
+ StochastValue = stochastValue
+ };
+ inputTimeSerie.Entries.TimeSerieEntry[timeSerieEntryIndex] = timeStep;
+ timeSerieEntryIndex++;
}
+
+ operationalInputTimeSeries[timeSerieIndex] = inputTimeSerie;
+ timeSerieIndex++;
}
+ }
- private static void TransferInputTimeSeries(TimeSerieCollection inputTimeSerieCollection, TimeSerie[] operationalInputTimeSeries)
+ private static void TransferAquiferSoils(Dictionary aquiferDictionary, Input input)
+ {
+ InputAquiferSoil[] aquiferSoils;
+ if (aquiferDictionary != null && aquiferDictionary.Count > 0)
{
- var timeSerieIndex = 0;
- foreach (Data.General.TimeSeries.TimeSerie timeSerie in inputTimeSerieCollection.Series)
+ aquiferSoils = new InputAquiferSoil[aquiferDictionary.Count];
+ var soilIndex = 0;
+ foreach (KeyValuePair keyValuePair in aquiferDictionary)
{
- var inputTimeSerie = new TimeSerie();
- inputTimeSerie.Entries = new TimeSerieEntries();
- inputTimeSerie.Entries.TimeSerieEntry = new TimeSerieEntriesTimeSerieEntry[timeSerie.Entries.Count];
- inputTimeSerie.TimeStep = new TimeSerieTimeStep();
- inputTimeSerie.LocationId = timeSerie.LocationId;
- inputTimeSerie.ParameterId = timeSerie.ParameterId;
- inputTimeSerie.ForecastDateTime = timeSerie.ForecastDateTime;
- inputTimeSerie.Type = timeSerie.Type;
- inputTimeSerie.StartDateTime = timeSerie.StartDateTime;
- inputTimeSerie.EndDateTime = timeSerie.EndDateTime;
- inputTimeSerie.MissVal = timeSerie.MissVal;
- inputTimeSerie.LongName = timeSerie.LongName;
- inputTimeSerie.StationName = timeSerie.StationName;
- inputTimeSerie.Units = timeSerie.Units;
- inputTimeSerie.SourceOrganisation = timeSerie.SourceOrganisation;
- inputTimeSerie.SourceSystem = timeSerie.SourceSystem;
- inputTimeSerie.FileDescription = timeSerie.FileDescription;
- inputTimeSerie.Region = timeSerie.Region;
- inputTimeSerie.TimeStep.Multiplier = timeSerie.TimeStep.Multiplier;
- inputTimeSerie.TimeStep.Divider = timeSerie.TimeStep.Divider;
- inputTimeSerie.TimeStep.MultiplierSpecified1 = timeSerie.TimeStep.MultiplierSpecified;
- inputTimeSerie.TimeStep.DividerSpecified1 = timeSerie.TimeStep.DividerSpecified;
- inputTimeSerie.TimeStep.TimeStepUnit = ConversionHelper.ConvertToInputTimeStepUnit(timeSerie.TimeStep.Unit);
- var timeSerieEntryIndex = 0;
- foreach (TimeSerieEntry timestepEntry in timeSerie.Entries)
+ aquiferSoils[soilIndex] = new InputAquiferSoil
{
- TimeSerieEntriesTimeSerieEntryStochastValue stochastValue = null;
- if (timestepEntry.StochastValue != null)
- {
- stochastValue = new TimeSerieEntriesTimeSerieEntryStochastValue
- {
- Distribution = timestepEntry.StochastValue.Distribution,
- Mean = timestepEntry.StochastValue.Mean,
- StandardDeviation = timestepEntry.StochastValue.StandardDeviation
- };
- }
+ Soilname = keyValuePair.Key,
+ IsAquifer = keyValuePair.Value
+ };
+ soilIndex++;
+ }
+ }
+ else
+ {
+ aquiferSoils = null;
+ }
- var timeStep = new TimeSerieEntriesTimeSerieEntry
- {
- DateTime = timestepEntry.DateTime,
- Value = timestepEntry.Value,
- BasisFileNameWMF = timestepEntry.BasisFileName,
- Flagnietechtgebruikt = timestepEntry.Flag,
- RelativeCalculationPathName = timestepEntry.RelativeCalculationPathName,
- StochastValue = stochastValue
- };
- inputTimeSerie.Entries.TimeSerieEntry[timeSerieEntryIndex] = timeStep;
- timeSerieEntryIndex++;
- }
+ input.AquiferSoils = aquiferSoils;
+ }
- operationalInputTimeSeries[timeSerieIndex] = inputTimeSerie;
- timeSerieIndex++;
- }
+ private static void TransferAnalysisSpecification(DamProjectData damProjectData, Input input)
+ {
+ input.DamProjectType = ConversionHelper.ConvertToInputDamProjectType(damProjectData.DamProjectType);
+ input.FailureMechanismSystemType = ConversionHelper.ConvertToInputFailureMechanismSystemType(damProjectData.DamProjectCalculationSpecification.CurrentSpecification.FailureMechanismSystemType);
+
+ input.AnalysisTypeSpecified = (input.DamProjectType == InputDamProjectType.Design);
+ if (input.AnalysisTypeSpecified)
+ {
+ input.AnalysisType = ConversionHelper.ConvertToInputAnalysisType(DamProjectCalculationSpecification.SelectedAnalysisType);
}
- private static void TransferAquiferSoils(Dictionary aquiferDictionary, Input input)
+ input.PipingModelTypeSpecified = (input.FailureMechanismSystemType == ConversionHelper.InputFailureMechanismPiping);
+ if (input.PipingModelTypeSpecified)
{
- InputAquiferSoil[] aquiferSoils;
- if (aquiferDictionary != null && aquiferDictionary.Count > 0)
+ input.PipingModelType = ConversionHelper.ConvertToInputPipingModelType(damProjectData.DamProjectCalculationSpecification.CurrentSpecification.PipingModelType);
+ }
+
+ input.StabilityModelTypeSpecified = (input.FailureMechanismSystemType == ConversionHelper.InputFailureMechanismStabilityInside) || (input.FailureMechanismSystemType == ConversionHelper.InputFailureMechanismStabilityOutside);
+ if (input.StabilityModelTypeSpecified)
+ {
+ input.StabilityModelType = ConversionHelper.ConvertToInputStabilityModelType(damProjectData.DamProjectCalculationSpecification.CurrentSpecification.StabilityModelType);
+ }
+ }
+
+ private static void TransferStabilityParameters(DamProjectData damProjectData, Input input)
+ {
+ if (damProjectData.DamProjectCalculationSpecification != null && damProjectData.DamProjectCalculationSpecification.CurrentSpecification != null)
+ {
+ DamFailureMechanismeCalculationSpecification curSpec = damProjectData.DamProjectCalculationSpecification.CurrentSpecification;
+ if (curSpec.FailureMechanismParametersMStab != null && curSpec.FailureMechanismParametersMStab.MStabParameters != null)
{
- aquiferSoils = new InputAquiferSoil[aquiferDictionary.Count];
- var soilIndex = 0;
- foreach (KeyValuePair keyValuePair in aquiferDictionary)
+ input.StabilityParameters = new StabilityParameters();
+ input.StabilityParameters.SearchMethod = ConversionHelper.ConvertToInputSearchMethod(curSpec.FailureMechanismParametersMStab.MStabParameters.SearchMethod);
+ SlipCircleDefinition slipCircleDefinition = curSpec.FailureMechanismParametersMStab.MStabParameters.SlipCircleDefinition;
+ if (slipCircleDefinition != null)
{
- aquiferSoils[soilIndex] = new InputAquiferSoil
- {
- Soilname = keyValuePair.Key,
- IsAquifer = keyValuePair.Value
- };
- soilIndex++;
+ input.StabilityParameters.GridDetermination = ConversionHelper.ConvertToInputGridDetermination(slipCircleDefinition.GridSizeDetermination);
+ input.StabilityParameters.BishopTangentLinesDefinitionSpecified = true;
+ input.StabilityParameters.BishopTangentLinesDefinition = ConversionHelper.ConvertToInputTangentLinesDefinition(slipCircleDefinition.BishopTangentLinesDefinition);
+ input.StabilityParameters.BishopTangentLinesDistanceSpecified = true;
+ input.StabilityParameters.BishopTangentLinesDistance = slipCircleDefinition.BishopTangentLinesDistance;
+ input.StabilityParameters.BishopGridVerticalPointsCountSpecified = true;
+ input.StabilityParameters.BishopGridVerticalPointsCount = slipCircleDefinition.BishopGridVerticalPointCount;
+ input.StabilityParameters.BishopGridVerticalPointsDistanceSpecified = true;
+ input.StabilityParameters.BishopGridVerticalPointsDistance = slipCircleDefinition.BishopGridVerticalPointDistance;
+ input.StabilityParameters.BishopGridHorizontalPointsCountSpecified = true;
+ input.StabilityParameters.BishopGridHorizontalPointsCount = slipCircleDefinition.BishopGridHorizontalPointCount;
+ input.StabilityParameters.BishopGridHorizontalPointsDistanceSpecified = true;
+ input.StabilityParameters.BishopGridHorizontalPointsDistance = slipCircleDefinition.BishopGridHorizontalPointDistance;
+ input.StabilityParameters.UpliftVanTangentLinesDefinitionSpecified = true;
+ input.StabilityParameters.UpliftVanTangentLinesDefinition = ConversionHelper.ConvertToInputTangentLinesDefinition(slipCircleDefinition.UpliftVanTangentLinesDefinition);
+ input.StabilityParameters.UpliftVanTangentLinesDistanceSpecified = true;
+ input.StabilityParameters.UpliftVanTangentLinesDistance = slipCircleDefinition.UpliftVanTangentLinesDistance;
+ input.StabilityParameters.UpliftVanGridLeftVerticalPointsCountSpecified = true;
+ input.StabilityParameters.UpliftVanGridLeftVerticalPointsCount = slipCircleDefinition.UpliftVanLeftGridVerticalPointCount;
+ input.StabilityParameters.UpliftVanGridLeftVerticalPointsDistanceSpecified = true;
+ input.StabilityParameters.UpliftVanGridLeftVerticalPointsDistance = slipCircleDefinition.UpliftVanLeftGridVerticalPointDistance;
+ input.StabilityParameters.UpliftVanGridLeftHorizontalPointsCountSpecified = true;
+ input.StabilityParameters.UpliftVanGridLeftHorizontalPointsCount = slipCircleDefinition.UpliftVanLeftGridHorizontalPointCount;
+ input.StabilityParameters.UpliftVanGridLeftHorizontalPointsDistanceSpecified = true;
+ input.StabilityParameters.UpliftVanGridLeftHorizontalPointsDistance = slipCircleDefinition.UpliftVanLeftGridHorizontalPointDistance;
+ input.StabilityParameters.UpliftVanGridRightVerticalPointsCountSpecified = true;
+ input.StabilityParameters.UpliftVanGridRightVerticalPointsCount = slipCircleDefinition.UpliftVanRightGridVerticalPointCount;
+ input.StabilityParameters.UpliftVanGridRightVerticalPointsDistanceSpecified = true;
+ input.StabilityParameters.UpliftVanGridRightVerticalPointsDistance = slipCircleDefinition.UpliftVanRightGridVerticalPointDistance;
+ input.StabilityParameters.UpliftVanGridRightHorizontalPointsCountSpecified = true;
+ input.StabilityParameters.UpliftVanGridRightHorizontalPointsCount = slipCircleDefinition.UpliftVanRightGridHorizontalPointCount;
+ input.StabilityParameters.UpliftVanGridRightHorizontalPointsDistanceSpecified = true;
+ input.StabilityParameters.UpliftVanGridRightHorizontalPointsDistance = slipCircleDefinition.UpliftVanRightGridHorizontalPointDistance;
}
}
- else
- {
- aquiferSoils = null;
- }
+ }
+ }
- input.AquiferSoils = aquiferSoils;
+ private static void ValidateDamProjectData(DamProjectData damProjectData)
+ {
+ if (damProjectData.Dike == null)
+ {
+ throw new ArgumentNullException(Resources.NoDikeInProject);
}
- private static void TransferAnalysisSpecification(DamProjectData damProjectData, Input input)
+ if (damProjectData.Dike.Locations == null)
{
- input.DamProjectType = ConversionHelper.ConvertToInputDamProjectType(damProjectData.DamProjectType);
- input.FailureMechanismSystemType = ConversionHelper.ConvertToInputFailureMechanismSystemType(damProjectData.DamProjectCalculationSpecification.CurrentSpecification.FailureMechanismSystemType);
+ throw new ArgumentNullException(Resources.NoLocationsInProject);
+ }
- input.AnalysisTypeSpecified = (input.DamProjectType == InputDamProjectType.Design);
- if (input.AnalysisTypeSpecified)
+ foreach (Location location in damProjectData.Dike.Locations)
+ {
+ if (location.Scenarios == null)
{
- input.AnalysisType = ConversionHelper.ConvertToInputAnalysisType(DamProjectCalculationSpecification.SelectedAnalysisType);
+ throw new ArgumentNullException(Resources.NoDesignScenariosInLocationProject);
}
+ }
- input.PipingModelTypeSpecified = (input.FailureMechanismSystemType == ConversionHelper.InputFailureMechanismPiping);
- if (input.PipingModelTypeSpecified)
+ if (damProjectData.Dike.SurfaceLines2 == null)
+ {
+ throw new ArgumentNullException(Resources.NoSurfaceLinesInProject);
+ }
+
+ foreach (SurfaceLine2 surfaceLine in damProjectData.Dike.SurfaceLines2)
+ {
+ if ((surfaceLine.CharacteristicPoints == null) || (surfaceLine.CharacteristicPoints.Count < 1))
{
- input.PipingModelType = ConversionHelper.ConvertToInputPipingModelType(damProjectData.DamProjectCalculationSpecification.CurrentSpecification.PipingModelType);
+ throw new ArgumentNullException(string.Format(Resources.NoCharacteristicPointsInSurfaceLineProject, surfaceLine.Name));
}
- input.StabilityModelTypeSpecified = (input.FailureMechanismSystemType == ConversionHelper.InputFailureMechanismStabilityInside) || (input.FailureMechanismSystemType == ConversionHelper.InputFailureMechanismStabilityOutside);
- if (input.StabilityModelTypeSpecified)
+ if ((surfaceLine.Geometry == null) || (surfaceLine.Geometry.Count < 2))
{
- input.StabilityModelType = ConversionHelper.ConvertToInputStabilityModelType(damProjectData.DamProjectCalculationSpecification.CurrentSpecification.StabilityModelType);
+ throw new ArgumentNullException(string.Format(Resources.NoPointsInSurfaceLineProject, surfaceLine.Name));
}
}
- private static void TransferStabilityParameters(DamProjectData damProjectData, Input input)
+ if (damProjectData.Dike.SoilList == null)
{
- if (damProjectData.DamProjectCalculationSpecification != null && damProjectData.DamProjectCalculationSpecification.CurrentSpecification != null)
- {
- DamFailureMechanismeCalculationSpecification curSpec = damProjectData.DamProjectCalculationSpecification.CurrentSpecification;
- if (curSpec.FailureMechanismParametersMStab != null && curSpec.FailureMechanismParametersMStab.MStabParameters != null)
- {
- input.StabilityParameters = new StabilityParameters();
- input.StabilityParameters.SearchMethod = ConversionHelper.ConvertToInputSearchMethod(curSpec.FailureMechanismParametersMStab.MStabParameters.SearchMethod);
- SlipCircleDefinition slipCircleDefinition = curSpec.FailureMechanismParametersMStab.MStabParameters.SlipCircleDefinition;
- if (slipCircleDefinition != null)
- {
- input.StabilityParameters.GridDetermination = ConversionHelper.ConvertToInputGridDetermination(slipCircleDefinition.GridSizeDetermination);
- input.StabilityParameters.BishopTangentLinesDefinitionSpecified = true;
- input.StabilityParameters.BishopTangentLinesDefinition = ConversionHelper.ConvertToInputTangentLinesDefinition(slipCircleDefinition.BishopTangentLinesDefinition);
- input.StabilityParameters.BishopTangentLinesDistanceSpecified = true;
- input.StabilityParameters.BishopTangentLinesDistance = slipCircleDefinition.BishopTangentLinesDistance;
- input.StabilityParameters.BishopGridVerticalPointsCountSpecified = true;
- input.StabilityParameters.BishopGridVerticalPointsCount = slipCircleDefinition.BishopGridVerticalPointCount;
- input.StabilityParameters.BishopGridVerticalPointsDistanceSpecified = true;
- input.StabilityParameters.BishopGridVerticalPointsDistance = slipCircleDefinition.BishopGridVerticalPointDistance;
- input.StabilityParameters.BishopGridHorizontalPointsCountSpecified = true;
- input.StabilityParameters.BishopGridHorizontalPointsCount = slipCircleDefinition.BishopGridHorizontalPointCount;
- input.StabilityParameters.BishopGridHorizontalPointsDistanceSpecified = true;
- input.StabilityParameters.BishopGridHorizontalPointsDistance = slipCircleDefinition.BishopGridHorizontalPointDistance;
- input.StabilityParameters.UpliftVanTangentLinesDefinitionSpecified = true;
- input.StabilityParameters.UpliftVanTangentLinesDefinition = ConversionHelper.ConvertToInputTangentLinesDefinition(slipCircleDefinition.UpliftVanTangentLinesDefinition);
- input.StabilityParameters.UpliftVanTangentLinesDistanceSpecified = true;
- input.StabilityParameters.UpliftVanTangentLinesDistance = slipCircleDefinition.UpliftVanTangentLinesDistance;
- input.StabilityParameters.UpliftVanGridLeftVerticalPointsCountSpecified = true;
- input.StabilityParameters.UpliftVanGridLeftVerticalPointsCount = slipCircleDefinition.UpliftVanLeftGridVerticalPointCount;
- input.StabilityParameters.UpliftVanGridLeftVerticalPointsDistanceSpecified = true;
- input.StabilityParameters.UpliftVanGridLeftVerticalPointsDistance = slipCircleDefinition.UpliftVanLeftGridVerticalPointDistance;
- input.StabilityParameters.UpliftVanGridLeftHorizontalPointsCountSpecified = true;
- input.StabilityParameters.UpliftVanGridLeftHorizontalPointsCount = slipCircleDefinition.UpliftVanLeftGridHorizontalPointCount;
- input.StabilityParameters.UpliftVanGridLeftHorizontalPointsDistanceSpecified = true;
- input.StabilityParameters.UpliftVanGridLeftHorizontalPointsDistance = slipCircleDefinition.UpliftVanLeftGridHorizontalPointDistance;
- input.StabilityParameters.UpliftVanGridRightVerticalPointsCountSpecified = true;
- input.StabilityParameters.UpliftVanGridRightVerticalPointsCount = slipCircleDefinition.UpliftVanRightGridVerticalPointCount;
- input.StabilityParameters.UpliftVanGridRightVerticalPointsDistanceSpecified = true;
- input.StabilityParameters.UpliftVanGridRightVerticalPointsDistance = slipCircleDefinition.UpliftVanRightGridVerticalPointDistance;
- input.StabilityParameters.UpliftVanGridRightHorizontalPointsCountSpecified = true;
- input.StabilityParameters.UpliftVanGridRightHorizontalPointsCount = slipCircleDefinition.UpliftVanRightGridHorizontalPointCount;
- input.StabilityParameters.UpliftVanGridRightHorizontalPointsDistanceSpecified = true;
- input.StabilityParameters.UpliftVanGridRightHorizontalPointsDistance = slipCircleDefinition.UpliftVanRightGridHorizontalPointDistance;
- }
- }
- }
+ throw new ArgumentNullException(Resources.NoSoilsInProject);
}
- private static void ValidateDamProjectData(DamProjectData damProjectData)
+ if (damProjectData.Dike.SoilList.Soils == null)
{
- if (damProjectData.Dike == null)
+ throw new ArgumentNullException(Resources.NoSoilsInProject);
+ }
+
+ if (damProjectData.Dike.SoilProfiles == null)
+ {
+ throw new ArgumentNullException(Resources.NoSoilProfiles1DInProject);
+ }
+
+ // Check for invalid Id names
+ foreach (Location location in damProjectData.Dike.Locations)
+ {
+ if (!IdValidator.IsCorrectName(location.Name))
{
- throw new ArgumentNullException(Resources.NoDikeInProject);
+ throw new IdValidatorException(string.Format(Resources.NoValidId, Resources.Location, location.Name));
}
+ }
- if (damProjectData.Dike.Locations == null)
+ foreach (Segment segment in damProjectData.Segments)
+ {
+ if (!IdValidator.IsCorrectName(segment.Name))
{
- throw new ArgumentNullException(Resources.NoLocationsInProject);
+ throw new IdValidatorException(string.Format(Resources.NoValidId, Resources.Segment, segment.Name));
}
+ }
- foreach (Location location in damProjectData.Dike.Locations)
+ foreach (SurfaceLine2 surfaceLine2 in damProjectData.Dike.SurfaceLines2)
+ {
+ if (!IdValidator.IsCorrectName(surfaceLine2.Name))
{
- if (location.Scenarios == null)
- {
- throw new ArgumentNullException(Resources.NoDesignScenariosInLocationProject);
- }
+ throw new IdValidatorException(string.Format(Resources.NoValidId, Resources.SurfaceLine, surfaceLine2.Name));
}
+ }
- if (damProjectData.Dike.SurfaceLines2 == null)
+ foreach (SoilProfile1D soilProfile in damProjectData.Dike.SoilProfiles)
+ {
+ if (!IdValidator.IsCorrectName(soilProfile.Name))
{
- throw new ArgumentNullException(Resources.NoSurfaceLinesInProject);
+ throw new IdValidatorException(string.Format(Resources.NoValidId, Resources.SoilProfile1D, soilProfile.Name));
}
+ }
- foreach (SurfaceLine2 surfaceLine in damProjectData.Dike.SurfaceLines2)
+ foreach (SoilProfile2D soilProfile2D in damProjectData.Dike.SoilProfiles2D)
+ {
+ if (!IdValidator.IsCorrectName(soilProfile2D.Name))
{
- if ((surfaceLine.CharacteristicPoints == null) || (surfaceLine.CharacteristicPoints.Count < 1))
- {
- throw new ArgumentNullException(string.Format(Resources.NoCharacteristicPointsInSurfaceLineProject, surfaceLine.Name));
- }
-
- if ((surfaceLine.Geometry == null) || (surfaceLine.Geometry.Count < 2))
- {
- throw new ArgumentNullException(string.Format(Resources.NoPointsInSurfaceLineProject, surfaceLine.Name));
- }
+ throw new IdValidatorException(string.Format(Resources.NoValidId, Resources.SoilProfile2D, soilProfile2D.Name));
}
+ }
- if (damProjectData.Dike.SoilList == null)
+ foreach (Soil soil in damProjectData.Dike.SoilList.Soils)
+ {
+ if (!IdValidator.IsCorrectName(soil.Name))
{
- throw new ArgumentNullException(Resources.NoSoilsInProject);
+ throw new IdValidatorException(string.Format(Resources.NoValidId, Resources.Soil, soil.Name));
}
+ }
+ }
- if (damProjectData.Dike.SoilList.Soils == null)
+ private static void TransferSoils(List soils, Io.XmlInput.Soil[] inputSoils)
+ {
+ for (var i = 0; i < soils.Count; i++)
+ {
+ Soil soil = soils[i];
+ var inputSoil = new Io.XmlInput.Soil();
+ inputSoil.Name = soil.Name;
+ inputSoil.AbovePhreaticLevelSpecified = !double.IsNaN(soil.AbovePhreaticLevel);
+ inputSoil.AbovePhreaticLevel = soil.AbovePhreaticLevel;
+ inputSoil.BelowPhreaticLevelSpecified = !double.IsNaN(soil.BelowPhreaticLevel);
+ inputSoil.BelowPhreaticLevel = soil.BelowPhreaticLevel;
+ inputSoil.DryUnitWeightSpecified = !double.IsNaN(soil.DryUnitWeight);
+ inputSoil.DryUnitWeight = soil.DryUnitWeight;
+ inputSoil.BeddingAngleSpecified = !double.IsNaN(soil.BeddingAngle);
+ inputSoil.BeddingAngle = soil.BeddingAngle;
+ inputSoil.DiameterD70Specified = !double.IsNaN(soil.DiameterD70);
+ inputSoil.DiameterD70 = soil.DiameterD70;
+ inputSoil.DiameterD90Specified = !double.IsNaN(soil.DiameterD90);
+ inputSoil.DiameterD90 = soil.DiameterD90;
+ inputSoil.PermeabKxSpecified = !double.IsNaN(soil.PermeabKx);
+ inputSoil.PermeabKx = soil.PermeabKx;
+ inputSoil.WhitesConstantSpecified = !double.IsNaN(soil.WhitesConstant);
+ inputSoil.WhitesConstant = soil.WhitesConstant;
+ inputSoil.ShearStrengthModelSpecified = (soil.ShearStrengthModel != null);
+ if (inputSoil.ShearStrengthModelSpecified)
{
- throw new ArgumentNullException(Resources.NoSoilsInProject);
+ inputSoil.ShearStrengthModel = ConversionHelper.ConvertToSoilShearStrengthModel(soil.ShearStrengthModel.Value);
}
- if (damProjectData.Dike.SoilProfiles == null)
+ inputSoil.UseDefaultShearStrengthModelSpecified = (soil.UseDefaultShearStrengthModel != null);
+ if (inputSoil.UseDefaultShearStrengthModelSpecified)
{
- throw new ArgumentNullException(Resources.NoSoilProfiles1DInProject);
+ inputSoil.UseDefaultShearStrengthModel = soil.UseDefaultShearStrengthModel.Value;
}
- // Check for invalid Id names
- foreach (Location location in damProjectData.Dike.Locations)
+ inputSoil.CohesionSpecified = !double.IsNaN(soil.Cohesion);
+ inputSoil.Cohesion = soil.Cohesion;
+ inputSoil.FrictionAngleSpecified = !double.IsNaN(soil.FrictionAngle);
+ inputSoil.FrictionAngle = soil.FrictionAngle;
+ inputSoil.OcrSpecified = !double.IsNaN(soil.Ocr);
+ inputSoil.Ocr = soil.Ocr;
+ inputSoil.SlopeRestProfileSpecified = !double.IsNaN(soil.SlopeRestProfile);
+ inputSoil.SlopeRestProfile = soil.SlopeRestProfile;
+ inputSoil.DilatancyTypeSpecified = (soil.DilatancyType != null);
+ if (inputSoil.DilatancyTypeSpecified)
{
- if (!IdValidator.IsCorrectName(location.Name))
- {
- throw new IdValidatorException(string.Format(Resources.NoValidId, Resources.Location, location.Name));
- }
+ inputSoil.DilatancyType = ConversionHelper.ConvertToSoilDilatancyType(soil.DilatancyType.Value);
}
- foreach (Segment segment in damProjectData.Segments)
+ inputSoil.RRatioSpecified = !double.IsNaN(soil.RRatio);
+ inputSoil.RRatio = soil.RRatio;
+ inputSoil.StrengthIncreaseExponentSpecified = !double.IsNaN(soil.StrengthIncreaseExponent);
+ inputSoil.StrengthIncreaseExponent = soil.StrengthIncreaseExponent;
+ inputSoil.RatioCuPcSpecified = !double.IsNaN(soil.RatioCuPc);
+ inputSoil.RatioCuPc = soil.RatioCuPc;
+ inputSoils[i] = inputSoil;
+ }
+ }
+
+ private static void TransferSurfaceLines(IList dikeSurfaceLines, SurfaceLine[] inputSurfaceLines)
+ {
+ for (var i = 0; i < dikeSurfaceLines.Count; i++)
+ {
+ SurfaceLine2 surfaceLine = dikeSurfaceLines[i];
+ var inputSurfaceLine = new SurfaceLine();
+ inputSurfaceLine.Name = surfaceLine.Name;
+ inputSurfaceLine.Points = new SurfaceLinePoint[surfaceLine.CharacteristicPoints.Count];
+ for (var j = 0; j < surfaceLine.CharacteristicPoints.Count; j++)
{
- if (!IdValidator.IsCorrectName(segment.Name))
+ CharacteristicPoint characteristicPoint = surfaceLine.CharacteristicPoints[j];
+ var inputPoint = new SurfaceLinePoint
{
- throw new IdValidatorException(string.Format(Resources.NoValidId, Resources.Segment, segment.Name));
- }
+ PointType = ConversionHelper.ConvertToInputPointType(characteristicPoint.CharacteristicPointType),
+ X = characteristicPoint.X,
+ Z = characteristicPoint.Z
+ };
+ inputSurfaceLine.Points[j] = inputPoint;
}
- foreach (SurfaceLine2 surfaceLine2 in damProjectData.Dike.SurfaceLines2)
+ inputSurfaceLines[i] = inputSurfaceLine;
+ }
+ }
+
+ private static void TransferLocations(string projectPath, IList dikeLocations, Io.XmlInput.Location[] inputLocations)
+ {
+ int locationCount = dikeLocations.Count;
+ for (var i = 0; i < locationCount; i++)
+ {
+ Location location = dikeLocations[i];
+
+ var inputLocation = new Io.XmlInput.Location();
+ inputLocation.Name = location.Name;
+ inputLocation.DistanceToEntryPoint = location.DistanceToEntryPoint;
+ inputLocation.DistanceToEntryPointSpecified = true;
+ inputLocation.XSoilGeometry2DOrigin = location.XSoilGeometry2DOrigin;
+ inputLocation.XSoilGeometry2DOriginSpecified = true;
+ inputLocation.SurfaceLineName = location.SurfaceLine.Name;
+ inputLocation.SegmentName = location.Segment.Name;
+ var waternetOptions = new LocationWaternetOptions();
+ waternetOptions.PhreaticLineCreationMethod = ConversionHelper.ConvertToInputPhreaticLineCreationMethod(location.ModelParametersForPlLines.PlLineCreationMethod);
+ waternetOptions.IntrusionVerticalWaterPressure = ConversionHelper.ConvertToInputIntrusionVerticalWaterPressure(location.IntrusionVerticalWaterPressure ?? IntrusionVerticalWaterPressureType.Standard);
+ waternetOptions.DampingFactorPl3 = location.ModelParametersForPlLines.DampingFactorPl3;
+ waternetOptions.DampingFactorPl4 = location.ModelParametersForPlLines.DampingFactorPl4;
+ waternetOptions.PenetrationLength = location.ModelParametersForPlLines.PenetrationLength;
+ waternetOptions.DikeSoilScenario = ConversionHelper.ConvertToInputDikeSoilScenario(location.DikeSoilScenario);
+ waternetOptions.SlopeDampingFactor = location.SlopeDampingPiezometricHeightPolderSide;
+ inputLocation.WaternetOptions = waternetOptions;
+
+ // Design options
+ var designOptions = new LocationDesignOptions();
+ designOptions.RedesignDikeHeight = location.RedesignDikeHeight;
+ designOptions.RedesignDikeShoulder = location.RedesignDikeShoulder;
+ designOptions.ShoulderEmbankmentMaterial = location.ShoulderEmbankmentMaterial;
+ designOptions.StabilityShoulderGrowSlope = location.StabilityShoulderGrowSlope;
+ designOptions.StabilityShoulderGrowDeltaX = location.StabilityShoulderGrowDeltaX;
+ designOptions.StabilitySlopeAdaptionDeltaX = location.StabilitySlopeAdaptionDeltaX;
+ designOptions.SlopeAdaptionStartCotangent = location.SlopeAdaptionStartCotangent;
+ designOptions.SlopeAdaptionEndCotangent = location.SlopeAdaptionEndCotangent;
+ designOptions.SlopeAdaptionStepCotangent = location.SlopeAdaptionStepCotangent;
+ designOptions.NewDikeTopWidthSpecified = location.UseNewDikeTopWidth;
+ designOptions.NewDikeTopWidth = location.NewDikeTopWidth;
+ designOptions.NewDikeSlopeInsideSpecified = location.UseNewDikeSlopeInside;
+ designOptions.NewDikeSlopeInside = location.NewDikeSlopeInside;
+ designOptions.NewDikeSlopeOutsideSpecified = location.UseNewDikeSlopeOutside;
+ designOptions.NewDikeSlopeOutside = location.NewDikeSlopeOutside;
+ designOptions.NewShoulderTopSlopeSpecified = location.UseNewShoulderTopSlope;
+ designOptions.NewShoulderTopSlope = location.NewShoulderTopSlope;
+ designOptions.NewShoulderBaseSlopeSpecified = location.UseNewShoulderBaseSlope;
+ designOptions.NewShoulderBaseSlope = location.NewShoulderBaseSlope;
+ designOptions.NewMaxHeightShoulderAsFractionSpecified = location.UseNewMaxHeightShoulderAsFraction;
+ designOptions.NewMaxHeightShoulderAsFraction = location.NewMaxHeightShoulderAsFraction;
+ designOptions.NewMinDistanceDikeToeStartDitchSpecified = location.UseNewMinDistanceDikeToeStartDitch;
+ designOptions.NewMinDistanceDikeToeStartDitch = location.NewMinDistanceDikeToeStartDitch;
+ designOptions.UseNewDitchDefinition = location.UseNewDitchDefinition;
+ designOptions.NewWidthDitchBottomSpecified = location.UseNewDitchDefinition;
+ designOptions.NewWidthDitchBottom = location.NewWidthDitchBottom;
+ designOptions.NewSlopeAngleDitchSpecified = location.UseNewDitchDefinition;
+ designOptions.NewSlopeAngleDitch = location.NewSlopeAngleDitch;
+ designOptions.NewDepthDitchSpecified = location.UseNewDitchDefinition;
+ designOptions.NewDepthDitch = location.NewDepthDitch;
+ designOptions.StabilityDesignMethod = ConversionHelper.ConvertToInputStabilityDesignMethod(location.StabilityDesignMethod);
+ inputLocation.DesignOptions = designOptions;
+
+ inputLocation.DesignScenarios = new LocationDesignScenario[location.Scenarios.Count];
+ for (var j = 0; j < location.Scenarios.Count; j++)
{
- if (!IdValidator.IsCorrectName(surfaceLine2.Name))
- {
- throw new IdValidatorException(string.Format(Resources.NoValidId, Resources.SurfaceLine, surfaceLine2.Name));
- }
+ DesignScenario designScenario = location.Scenarios[j];
+ var inputDesignScenario = new LocationDesignScenario();
+ inputDesignScenario.RiverLevel = designScenario.RiverLevel;
+ inputDesignScenario.Id = designScenario.LocationScenarioID;
+ inputDesignScenario.PolderLevel = designScenario.PolderLevel;
+ inputDesignScenario.RiverLevelLowSpecified = designScenario.RiverLevelLow.HasValue;
+ inputDesignScenario.RiverLevelLow = designScenario.RiverLevelLow ?? 0.0;
+ inputDesignScenario.DikeTableHeightSpecified = designScenario.DikeTableHeight.HasValue;
+ inputDesignScenario.DikeTableHeight = designScenario.DikeTableHeight ?? 0.0;
+ inputDesignScenario.PlLineOffsetBelowDikeTopAtRiver = designScenario.PlLineOffsetBelowDikeTopAtRiver;
+ inputDesignScenario.PlLineOffsetBelowDikeTopAtPolder = designScenario.PlLineOffsetBelowDikeTopAtPolder;
+ inputDesignScenario.PlLineOffsetBelowShoulderBaseInside = designScenario.PlLineOffsetBelowShoulderBaseInside;
+ inputDesignScenario.PlLineOffsetBelowDikeToeAtPolder = designScenario.PlLineOffsetBelowDikeToeAtPolder;
+ inputDesignScenario.PlLineOffsetBelowDikeCrestMiddleSpecified = designScenario.UsePlLineOffsetBelowDikeCrestMiddle.Value;
+ inputDesignScenario.PlLineOffsetBelowDikeCrestMiddle = designScenario.PlLineOffsetBelowDikeCrestMiddle.Value;
+ inputDesignScenario.PlLineOffsetFactorBelowShoulderCrestSpecified = designScenario.UsePlLineOffsetFactorBelowShoulderCrest.Value;
+ inputDesignScenario.PlLineOffsetFactorBelowShoulderCrest = designScenario.PlLineOffsetFactorBelowShoulderCrest.Value;
+ inputDesignScenario.HeadPl2Specified = designScenario.HeadPl2.HasValue;
+ inputDesignScenario.HeadPl2 = designScenario.HeadPl2 ?? 0.0;
+ inputDesignScenario.HeadPl3Specified = designScenario.HeadPl3.HasValue;
+ inputDesignScenario.HeadPl3 = designScenario.HeadPl3 ?? 0.0;
+ inputDesignScenario.HeadPl4Specified = designScenario.HeadPl4.HasValue;
+ inputDesignScenario.HeadPl4 = designScenario.HeadPl4 ?? 0.0;
+ inputDesignScenario.UpliftCriterionStability = designScenario.UpliftCriterionStability;
+ inputDesignScenario.UpliftCriterionPiping = designScenario.UpliftCriterionPiping;
+ inputDesignScenario.RequiredSafetyFactorStabilityInnerSlope = designScenario.RequiredSafetyFactorStabilityInnerSlope;
+ inputDesignScenario.RequiredSafetyFactorStabilityOuterSlope = designScenario.RequiredSafetyFactorStabilityOuterSlope;
+ inputDesignScenario.RequiredSafetyFactorPiping = designScenario.RequiredSafetyFactorPiping;
+
+ inputLocation.DesignScenarios[j] = inputDesignScenario;
}
- foreach (SoilProfile1D soilProfile in damProjectData.Dike.SoilProfiles)
+ inputLocation.DikeEmbankmentMaterial = location.DikeEmbankmentMaterial;
+ if (location.StabilityOptions != null)
{
- if (!IdValidator.IsCorrectName(soilProfile.Name))
+ string tmpPath = projectPath ?? Directory.GetCurrentDirectory();
+ string tmpMap = location.StabilityOptions.SoilGeometries2DPath;
+ if (tmpMap.StartsWith(tmpPath))
{
- throw new IdValidatorException(string.Format(Resources.NoValidId, Resources.SoilProfile1D, soilProfile.Name));
+ tmpMap = tmpMap.Remove(0, tmpPath.Length);
}
- }
- foreach (SoilProfile2D soilProfile2D in damProjectData.Dike.SoilProfiles2D)
- {
- if (!IdValidator.IsCorrectName(soilProfile2D.Name))
+ if (tmpMap.StartsWith(Path.DirectorySeparatorChar.ToString()))
{
- throw new IdValidatorException(string.Format(Resources.NoValidId, Resources.SoilProfile2D, soilProfile2D.Name));
+ tmpMap = tmpMap.Remove(0, 1);
}
- }
- foreach (Soil soil in damProjectData.Dike.SoilList.Soils)
- {
- if (!IdValidator.IsCorrectName(soil.Name))
+ inputLocation.StabilityOptions = new LocationStabilityOptions
{
- throw new IdValidatorException(string.Format(Resources.NoValidId, Resources.Soil, soil.Name));
+ MapForSoilgeometries2D = tmpMap,
+ SoilDatabaseName = location.StabilityOptions.SoilDatabaseName,
+ ZoneType = ConversionHelper.ConvertToInputZoneType(location.StabilityOptions.StabilityZoneType),
+ ForbiddenZoneFactorSpecified = location.StabilityOptions.ForbiddenZoneFactor.HasValue
+ };
+ if (inputLocation.StabilityOptions.ForbiddenZoneFactorSpecified)
+ {
+ inputLocation.StabilityOptions.ForbiddenZoneFactor = location.StabilityOptions.ForbiddenZoneFactor.Value;
}
- }
- }
- private static void TransferSoils(List soils, Io.XmlInput.Soil[] inputSoils)
- {
- for (var i = 0; i < soils.Count; i++)
- {
- Soil soil = soils[i];
- var inputSoil = new Io.XmlInput.Soil();
- inputSoil.Name = soil.Name;
- inputSoil.AbovePhreaticLevelSpecified = !double.IsNaN(soil.AbovePhreaticLevel);
- inputSoil.AbovePhreaticLevel = soil.AbovePhreaticLevel;
- inputSoil.BelowPhreaticLevelSpecified = !double.IsNaN(soil.BelowPhreaticLevel);
- inputSoil.BelowPhreaticLevel = soil.BelowPhreaticLevel;
- inputSoil.DryUnitWeightSpecified = !double.IsNaN(soil.DryUnitWeight);
- inputSoil.DryUnitWeight = soil.DryUnitWeight;
- inputSoil.BeddingAngleSpecified = !double.IsNaN(soil.BeddingAngle);
- inputSoil.BeddingAngle = soil.BeddingAngle;
- inputSoil.DiameterD70Specified = !double.IsNaN(soil.DiameterD70);
- inputSoil.DiameterD70 = soil.DiameterD70;
- inputSoil.DiameterD90Specified = !double.IsNaN(soil.DiameterD90);
- inputSoil.DiameterD90 = soil.DiameterD90;
- inputSoil.PermeabKxSpecified = !double.IsNaN(soil.PermeabKx);
- inputSoil.PermeabKx = soil.PermeabKx;
- inputSoil.WhitesConstantSpecified = !double.IsNaN(soil.WhitesConstant);
- inputSoil.WhitesConstant = soil.WhitesConstant;
- inputSoil.ShearStrengthModelSpecified = (soil.ShearStrengthModel != null);
- if (inputSoil.ShearStrengthModelSpecified)
+ inputLocation.StabilityOptions.TrafficLoadSpecified = location.StabilityOptions.TrafficLoad.HasValue;
+ if (inputLocation.StabilityOptions.TrafficLoadSpecified)
{
- inputSoil.ShearStrengthModel = ConversionHelper.ConvertToSoilShearStrengthModel(soil.ShearStrengthModel.Value);
+ inputLocation.StabilityOptions.TrafficLoad = location.StabilityOptions.TrafficLoad.Value;
}
- inputSoil.UseDefaultShearStrengthModelSpecified = (soil.UseDefaultShearStrengthModel != null);
- if (inputSoil.UseDefaultShearStrengthModelSpecified)
+ inputLocation.StabilityOptions.TrafficLoadDegreeOfConsolidationSpecified = location.StabilityOptions.TrafficLoadDegreeOfConsolidation.HasValue;
+ if (inputLocation.StabilityOptions.TrafficLoadDegreeOfConsolidationSpecified)
{
- inputSoil.UseDefaultShearStrengthModel = soil.UseDefaultShearStrengthModel.Value;
+ inputLocation.StabilityOptions.TrafficLoadDegreeOfConsolidation = location.StabilityOptions.TrafficLoadDegreeOfConsolidation.Value;
}
- inputSoil.CohesionSpecified = !double.IsNaN(soil.Cohesion);
- inputSoil.Cohesion = soil.Cohesion;
- inputSoil.FrictionAngleSpecified = !double.IsNaN(soil.FrictionAngle);
- inputSoil.FrictionAngle = soil.FrictionAngle;
- inputSoil.OcrSpecified = !double.IsNaN(soil.Ocr);
- inputSoil.Ocr = soil.Ocr;
- inputSoil.SlopeRestProfileSpecified = !double.IsNaN(soil.SlopeRestProfile);
- inputSoil.SlopeRestProfile = soil.SlopeRestProfile;
- inputSoil.DilatancyTypeSpecified = (soil.DilatancyType != null);
- if (inputSoil.DilatancyTypeSpecified)
+ inputLocation.StabilityOptions.MinimumCircleDepthSpecified = location.StabilityOptions.MinimalCircleDepth.HasValue;
+ if (inputLocation.StabilityOptions.MinimumCircleDepthSpecified)
{
- inputSoil.DilatancyType = ConversionHelper.ConvertToSoilDilatancyType(soil.DilatancyType.Value);
+ inputLocation.StabilityOptions.MinimumCircleDepth = location.StabilityOptions.MinimalCircleDepth.Value;
}
-
- inputSoil.RRatioSpecified = !double.IsNaN(soil.RRatio);
- inputSoil.RRatio = soil.RRatio;
- inputSoil.StrengthIncreaseExponentSpecified = !double.IsNaN(soil.StrengthIncreaseExponent);
- inputSoil.StrengthIncreaseExponent = soil.StrengthIncreaseExponent;
- inputSoil.RatioCuPcSpecified = !double.IsNaN(soil.RatioCuPc);
- inputSoil.RatioCuPc = soil.RatioCuPc;
- inputSoils[i] = inputSoil;
}
+
+ inputLocations[i] = inputLocation;
}
+ }
- private static void TransferSurfaceLines(IList dikeSurfaceLines, SurfaceLine[] inputSurfaceLines)
+ private static void TransferSoilProfiles1D(IList dikeSoilProfiles, Io.XmlInput.SoilProfile1D[] inputSoilProfiles1D)
+ {
+ int profilesCount = dikeSoilProfiles.Count;
+ for (var i = 0; i < profilesCount; i++)
{
- for (var i = 0; i < dikeSurfaceLines.Count; i++)
+ SoilProfile1D soilProfile1D = dikeSoilProfiles[i];
+ var inputSoilProfile1D = new Io.XmlInput.SoilProfile1D
{
- SurfaceLine2 surfaceLine = dikeSurfaceLines[i];
- var inputSurfaceLine = new SurfaceLine();
- inputSurfaceLine.Name = surfaceLine.Name;
- inputSurfaceLine.Points = new SurfaceLinePoint[surfaceLine.CharacteristicPoints.Count];
- for (var j = 0; j < surfaceLine.CharacteristicPoints.Count; j++)
- {
- CharacteristicPoint characteristicPoint = surfaceLine.CharacteristicPoints[j];
- var inputPoint = new SurfaceLinePoint
- {
- PointType = ConversionHelper.ConvertToInputPointType(characteristicPoint.CharacteristicPointType),
- X = characteristicPoint.X,
- Z = characteristicPoint.Z
- };
- inputSurfaceLine.Points[j] = inputPoint;
- }
-
- inputSurfaceLines[i] = inputSurfaceLine;
- }
+ Name = soilProfile1D.Name,
+ BottomLevel = soilProfile1D.BottomLevel,
+ Layers1D = new SoilProfile1DLayer1D[soilProfile1D.LayerCount]
+ };
+ AddLayers1D(soilProfile1D, inputSoilProfile1D);
+ inputSoilProfiles1D[i] = inputSoilProfile1D;
}
+ }
- private static void TransferLocations(string projectPath, IList dikeLocations, Io.XmlInput.Location[] inputLocations)
+ private static void AddLayers1D(SoilProfile1D soilProfile1D, Io.XmlInput.SoilProfile1D inputSoilProfile1D)
+ {
+ for (var i = 0; i < soilProfile1D.LayerCount; i++)
{
- int locationCount = dikeLocations.Count;
- for (var i = 0; i < locationCount; i++)
+ SoilLayer1D layer = soilProfile1D.Layers[i];
+ var inputLayer = new SoilProfile1DLayer1D
{
- Location location = dikeLocations[i];
+ Name = layer.Name,
+ SoilName = layer.Soil.Name,
+ TopLevel = layer.TopLevel,
+ IsAquifer = layer.IsAquifer,
+ WaterpressureInterpolationModel = ConversionHelper.ConvertToInputWaterpressureInterpolationModel(
+ layer.WaterpressureInterpolationModel)
+ };
+ inputSoilProfile1D.Layers1D[i] = inputLayer;
+ }
+ }
- var inputLocation = new Io.XmlInput.Location();
- inputLocation.Name = location.Name;
- inputLocation.DistanceToEntryPoint = location.DistanceToEntryPoint;
- inputLocation.DistanceToEntryPointSpecified = true;
- inputLocation.XSoilGeometry2DOrigin = location.XSoilGeometry2DOrigin;
- inputLocation.XSoilGeometry2DOriginSpecified = true;
- inputLocation.SurfaceLineName = location.SurfaceLine.Name;
- inputLocation.SegmentName = location.Segment.Name;
- var waternetOptions = new LocationWaternetOptions();
- waternetOptions.PhreaticLineCreationMethod = ConversionHelper.ConvertToInputPhreaticLineCreationMethod(location.ModelParametersForPlLines.PlLineCreationMethod);
- waternetOptions.IntrusionVerticalWaterPressure = ConversionHelper.ConvertToInputIntrusionVerticalWaterPressure(location.IntrusionVerticalWaterPressure ?? IntrusionVerticalWaterPressureType.Standard);
- waternetOptions.DampingFactorPl3 = location.ModelParametersForPlLines.DampingFactorPl3;
- waternetOptions.DampingFactorPl4 = location.ModelParametersForPlLines.DampingFactorPl4;
- waternetOptions.PenetrationLength = location.ModelParametersForPlLines.PenetrationLength;
- waternetOptions.DikeSoilScenario = ConversionHelper.ConvertToInputDikeSoilScenario(location.DikeSoilScenario);
- waternetOptions.SlopeDampingFactor = location.SlopeDampingPiezometricHeightPolderSide;
- inputLocation.WaternetOptions = waternetOptions;
-
- // Design options
- var designOptions = new LocationDesignOptions();
- designOptions.RedesignDikeHeight = location.RedesignDikeHeight;
- designOptions.RedesignDikeShoulder = location.RedesignDikeShoulder;
- designOptions.ShoulderEmbankmentMaterial = location.ShoulderEmbankmentMaterial;
- designOptions.StabilityShoulderGrowSlope = location.StabilityShoulderGrowSlope;
- designOptions.StabilityShoulderGrowDeltaX = location.StabilityShoulderGrowDeltaX;
- designOptions.StabilitySlopeAdaptionDeltaX = location.StabilitySlopeAdaptionDeltaX;
- designOptions.SlopeAdaptionStartCotangent = location.SlopeAdaptionStartCotangent;
- designOptions.SlopeAdaptionEndCotangent = location.SlopeAdaptionEndCotangent;
- designOptions.SlopeAdaptionStepCotangent = location.SlopeAdaptionStepCotangent;
- designOptions.NewDikeTopWidthSpecified = location.UseNewDikeTopWidth;
- designOptions.NewDikeTopWidth = location.NewDikeTopWidth;
- designOptions.NewDikeSlopeInsideSpecified = location.UseNewDikeSlopeInside;
- designOptions.NewDikeSlopeInside = location.NewDikeSlopeInside;
- designOptions.NewDikeSlopeOutsideSpecified = location.UseNewDikeSlopeOutside;
- designOptions.NewDikeSlopeOutside = location.NewDikeSlopeOutside;
- designOptions.NewShoulderTopSlopeSpecified = location.UseNewShoulderTopSlope;
- designOptions.NewShoulderTopSlope = location.NewShoulderTopSlope;
- designOptions.NewShoulderBaseSlopeSpecified = location.UseNewShoulderBaseSlope;
- designOptions.NewShoulderBaseSlope = location.NewShoulderBaseSlope;
- designOptions.NewMaxHeightShoulderAsFractionSpecified = location.UseNewMaxHeightShoulderAsFraction;
- designOptions.NewMaxHeightShoulderAsFraction = location.NewMaxHeightShoulderAsFraction;
- designOptions.NewMinDistanceDikeToeStartDitchSpecified = location.UseNewMinDistanceDikeToeStartDitch;
- designOptions.NewMinDistanceDikeToeStartDitch = location.NewMinDistanceDikeToeStartDitch;
- designOptions.UseNewDitchDefinition = location.UseNewDitchDefinition;
- designOptions.NewWidthDitchBottomSpecified = location.UseNewDitchDefinition;
- designOptions.NewWidthDitchBottom = location.NewWidthDitchBottom;
- designOptions.NewSlopeAngleDitchSpecified = location.UseNewDitchDefinition;
- designOptions.NewSlopeAngleDitch = location.NewSlopeAngleDitch;
- designOptions.NewDepthDitchSpecified = location.UseNewDitchDefinition;
- designOptions.NewDepthDitch = location.NewDepthDitch;
- designOptions.StabilityDesignMethod = ConversionHelper.ConvertToInputStabilityDesignMethod(location.StabilityDesignMethod);
- inputLocation.DesignOptions = designOptions;
-
- inputLocation.DesignScenarios = new LocationDesignScenario[location.Scenarios.Count];
- for (var j = 0; j < location.Scenarios.Count; j++)
- {
- DesignScenario designScenario = location.Scenarios[j];
- var inputDesignScenario = new LocationDesignScenario();
- inputDesignScenario.RiverLevel = designScenario.RiverLevel;
- inputDesignScenario.Id = designScenario.LocationScenarioID;
- inputDesignScenario.PolderLevel = designScenario.PolderLevel;
- inputDesignScenario.RiverLevelLowSpecified = designScenario.RiverLevelLow.HasValue;
- inputDesignScenario.RiverLevelLow = designScenario.RiverLevelLow ?? 0.0;
- inputDesignScenario.DikeTableHeightSpecified = designScenario.DikeTableHeight.HasValue;
- inputDesignScenario.DikeTableHeight = designScenario.DikeTableHeight ?? 0.0;
- inputDesignScenario.PlLineOffsetBelowDikeTopAtRiver = designScenario.PlLineOffsetBelowDikeTopAtRiver;
- inputDesignScenario.PlLineOffsetBelowDikeTopAtPolder = designScenario.PlLineOffsetBelowDikeTopAtPolder;
- inputDesignScenario.PlLineOffsetBelowShoulderBaseInside = designScenario.PlLineOffsetBelowShoulderBaseInside;
- inputDesignScenario.PlLineOffsetBelowDikeToeAtPolder = designScenario.PlLineOffsetBelowDikeToeAtPolder;
- inputDesignScenario.PlLineOffsetBelowDikeCrestMiddleSpecified = designScenario.UsePlLineOffsetBelowDikeCrestMiddle.Value;
- inputDesignScenario.PlLineOffsetBelowDikeCrestMiddle = designScenario.PlLineOffsetBelowDikeCrestMiddle.Value;
- inputDesignScenario.PlLineOffsetFactorBelowShoulderCrestSpecified = designScenario.UsePlLineOffsetFactorBelowShoulderCrest.Value;
- inputDesignScenario.PlLineOffsetFactorBelowShoulderCrest = designScenario.PlLineOffsetFactorBelowShoulderCrest.Value;
- inputDesignScenario.HeadPl2Specified = designScenario.HeadPl2.HasValue;
- inputDesignScenario.HeadPl2 = designScenario.HeadPl2 ?? 0.0;
- inputDesignScenario.HeadPl3Specified = designScenario.HeadPl3.HasValue;
- inputDesignScenario.HeadPl3 = designScenario.HeadPl3 ?? 0.0;
- inputDesignScenario.HeadPl4Specified = designScenario.HeadPl4.HasValue;
- inputDesignScenario.HeadPl4 = designScenario.HeadPl4 ?? 0.0;
- inputDesignScenario.UpliftCriterionStability = designScenario.UpliftCriterionStability;
- inputDesignScenario.UpliftCriterionPiping = designScenario.UpliftCriterionPiping;
- inputDesignScenario.RequiredSafetyFactorStabilityInnerSlope = designScenario.RequiredSafetyFactorStabilityInnerSlope;
- inputDesignScenario.RequiredSafetyFactorStabilityOuterSlope = designScenario.RequiredSafetyFactorStabilityOuterSlope;
- inputDesignScenario.RequiredSafetyFactorPiping = designScenario.RequiredSafetyFactorPiping;
-
- inputLocation.DesignScenarios[j] = inputDesignScenario;
- }
-
- inputLocation.DikeEmbankmentMaterial = location.DikeEmbankmentMaterial;
- if (location.StabilityOptions != null)
- {
- string tmpPath = projectPath ?? Directory.GetCurrentDirectory();
- string tmpMap = location.StabilityOptions.SoilGeometries2DPath;
- if (tmpMap.StartsWith(tmpPath))
- {
- tmpMap = tmpMap.Remove(0, tmpPath.Length);
- }
-
- if (tmpMap.StartsWith(Path.DirectorySeparatorChar.ToString()))
- {
- tmpMap = tmpMap.Remove(0, 1);
- }
-
- inputLocation.StabilityOptions = new LocationStabilityOptions
- {
- MapForSoilgeometries2D = tmpMap,
- SoilDatabaseName = location.StabilityOptions.SoilDatabaseName,
- ZoneType = ConversionHelper.ConvertToInputZoneType(location.StabilityOptions.StabilityZoneType),
- ForbiddenZoneFactorSpecified = location.StabilityOptions.ForbiddenZoneFactor.HasValue
- };
- if (inputLocation.StabilityOptions.ForbiddenZoneFactorSpecified)
- {
- inputLocation.StabilityOptions.ForbiddenZoneFactor = location.StabilityOptions.ForbiddenZoneFactor.Value;
- }
-
- inputLocation.StabilityOptions.TrafficLoadSpecified = location.StabilityOptions.TrafficLoad.HasValue;
- if (inputLocation.StabilityOptions.TrafficLoadSpecified)
- {
- inputLocation.StabilityOptions.TrafficLoad = location.StabilityOptions.TrafficLoad.Value;
- }
-
- inputLocation.StabilityOptions.TrafficLoadDegreeOfConsolidationSpecified = location.StabilityOptions.TrafficLoadDegreeOfConsolidation.HasValue;
- if (inputLocation.StabilityOptions.TrafficLoadDegreeOfConsolidationSpecified)
- {
- inputLocation.StabilityOptions.TrafficLoadDegreeOfConsolidation = location.StabilityOptions.TrafficLoadDegreeOfConsolidation.Value;
- }
-
- inputLocation.StabilityOptions.MinimumCircleDepthSpecified = location.StabilityOptions.MinimalCircleDepth.HasValue;
- if (inputLocation.StabilityOptions.MinimumCircleDepthSpecified)
- {
- inputLocation.StabilityOptions.MinimumCircleDepth = location.StabilityOptions.MinimalCircleDepth.Value;
- }
- }
-
- inputLocations[i] = inputLocation;
- }
+ private static void TransferSoilProfiles2D(IList dikeSoilProfiles2D,
+ Io.XmlInput.SoilProfile2D[] inputSoilProfiles2D)
+ {
+ int profilesCount = dikeSoilProfiles2D.Count;
+ for (var i = 0; i < profilesCount; i++)
+ {
+ SoilProfile2D soilProfile2D = dikeSoilProfiles2D[i];
+ var inputSoilProfile2D = new Io.XmlInput.SoilProfile2D
+ {
+ Name = soilProfile2D.Name,
+ Layers2D = new SoilProfile2DLayer2D[soilProfile2D.Surfaces.Count]
+ };
+ AddPreconsolidationStresses(soilProfile2D, inputSoilProfile2D);
+ AddLayers2D(soilProfile2D, inputSoilProfile2D);
+ inputSoilProfiles2D[i] = inputSoilProfile2D;
}
+ }
- private static void TransferSoilProfiles1D(IList dikeSoilProfiles, Io.XmlInput.SoilProfile1D[] inputSoilProfiles1D)
+ private static void AddPreconsolidationStresses(SoilProfile2D soilProfile2D, Io.XmlInput.SoilProfile2D inputSoilProfile2D)
+ {
+ if (soilProfile2D.PreconsolidationStresses != null)
{
- int profilesCount = dikeSoilProfiles.Count;
- for (var i = 0; i < profilesCount; i++)
+ int preconCount = soilProfile2D.PreconsolidationStresses.Count;
+ inputSoilProfile2D.PreconsolidationStresses = new SoilProfile2DPreconsolidationStress[preconCount];
+ for (var i = 0; i < preconCount; i++)
{
- SoilProfile1D soilProfile1D = dikeSoilProfiles[i];
- var inputSoilProfile1D = new Io.XmlInput.SoilProfile1D
+ PreConsolidationStress precon = soilProfile2D.PreconsolidationStresses[i];
+ var inputPrecon = new SoilProfile2DPreconsolidationStress
{
- Name = soilProfile1D.Name,
- BottomLevel = soilProfile1D.BottomLevel,
- Layers1D = new SoilProfile1DLayer1D[soilProfile1D.LayerCount]
+ Name = precon.Name,
+ StressValue = precon.StressValue,
+ X = precon.X,
+ Z = precon.Z
};
- AddLayers1D(soilProfile1D, inputSoilProfile1D);
- inputSoilProfiles1D[i] = inputSoilProfile1D;
+ inputSoilProfile2D.PreconsolidationStresses[i] = inputPrecon;
}
}
+ }
- private static void AddLayers1D(SoilProfile1D soilProfile1D, Io.XmlInput.SoilProfile1D inputSoilProfile1D)
+ private static void AddLayers2D(SoilProfile2D soilProfile2D, Io.XmlInput.SoilProfile2D inputSoilProfile2D)
+ {
+ if (soilProfile2D != null)
{
- for (var i = 0; i < soilProfile1D.LayerCount; i++)
+ for (var i = 0; i < soilProfile2D.Surfaces.Count; i++)
{
- SoilLayer1D layer = soilProfile1D.Layers[i];
- var inputLayer = new SoilProfile1DLayer1D
+ SoilLayer2D layer = soilProfile2D.Surfaces[i];
+ var inputLayer = new SoilProfile2DLayer2D
{
- Name = layer.Name,
SoilName = layer.Soil.Name,
- TopLevel = layer.TopLevel,
IsAquifer = layer.IsAquifer,
WaterpressureInterpolationModel = ConversionHelper.ConvertToInputWaterpressureInterpolationModel(
- layer.WaterpressureInterpolationModel)
+ layer.WaterpressureInterpolationModel),
+ Surface = new SoilProfile2DLayer2DSurface()
};
- inputSoilProfile1D.Layers1D[i] = inputLayer;
- }
- }
- private static void TransferSoilProfiles2D(IList dikeSoilProfiles2D,
- Io.XmlInput.SoilProfile2D[] inputSoilProfiles2D)
- {
- int profilesCount = dikeSoilProfiles2D.Count;
- for (var i = 0; i < profilesCount; i++)
- {
- SoilProfile2D soilProfile2D = dikeSoilProfiles2D[i];
- var inputSoilProfile2D = new Io.XmlInput.SoilProfile2D
+ GeometryLoop loop = layer.GeometrySurface.OuterLoop;
+ inputLayer.Surface.OuterLoop = new SoilProfile2DLayer2DSurfaceOuterPoint[loop.CalcPoints.Count];
+ for (var j = 0; j < loop.CalcPoints.Count; j++)
{
- Name = soilProfile2D.Name,
- Layers2D = new SoilProfile2DLayer2D[soilProfile2D.Surfaces.Count]
- };
- AddPreconsolidationStresses(soilProfile2D, inputSoilProfile2D);
- AddLayers2D(soilProfile2D, inputSoilProfile2D);
- inputSoilProfiles2D[i] = inputSoilProfile2D;
- }
- }
-
- private static void AddPreconsolidationStresses(SoilProfile2D soilProfile2D, Io.XmlInput.SoilProfile2D inputSoilProfile2D)
- {
- if (soilProfile2D.PreconsolidationStresses != null)
- {
- int preconCount = soilProfile2D.PreconsolidationStresses.Count;
- inputSoilProfile2D.PreconsolidationStresses = new SoilProfile2DPreconsolidationStress[preconCount];
- for (var i = 0; i < preconCount; i++)
- {
- PreConsolidationStress precon = soilProfile2D.PreconsolidationStresses[i];
- var inputPrecon = new SoilProfile2DPreconsolidationStress
+ var point = new SoilProfile2DLayer2DSurfaceOuterPoint
{
- Name = precon.Name,
- StressValue = precon.StressValue,
- X = precon.X,
- Z = precon.Z
+ X = loop.CalcPoints[j].X,
+ Z = loop.CalcPoints[j].Z
};
- inputSoilProfile2D.PreconsolidationStresses[i] = inputPrecon;
+ inputLayer.Surface.OuterLoop[j] = point;
}
- }
- }
- private static void AddLayers2D(SoilProfile2D soilProfile2D, Io.XmlInput.SoilProfile2D inputSoilProfile2D)
- {
- if (soilProfile2D != null)
- {
- for (var i = 0; i < soilProfile2D.Surfaces.Count; i++)
+ GeometryLoop innerloop = layer.GeometrySurface.InnerLoops.FirstOrDefault();
+ if (innerloop != null)
{
- SoilLayer2D layer = soilProfile2D.Surfaces[i];
- var inputLayer = new SoilProfile2DLayer2D
+ inputLayer.Surface.Innerloop = new SoilProfile2DLayer2DSurfaceInnerPoint[innerloop.CalcPoints.Count];
+ for (var j = 0; j < innerloop.CalcPoints.Count; j++)
{
- SoilName = layer.Soil.Name,
- IsAquifer = layer.IsAquifer,
- WaterpressureInterpolationModel = ConversionHelper.ConvertToInputWaterpressureInterpolationModel(
- layer.WaterpressureInterpolationModel),
- Surface = new SoilProfile2DLayer2DSurface()
- };
-
- GeometryLoop loop = layer.GeometrySurface.OuterLoop;
- inputLayer.Surface.OuterLoop = new SoilProfile2DLayer2DSurfaceOuterPoint[loop.CalcPoints.Count];
- for (var j = 0; j < loop.CalcPoints.Count; j++)
- {
- var point = new SoilProfile2DLayer2DSurfaceOuterPoint
+ var point = new SoilProfile2DLayer2DSurfaceInnerPoint
{
- X = loop.CalcPoints[j].X,
- Z = loop.CalcPoints[j].Z
+ X = innerloop.CalcPoints[j].X,
+ Z = innerloop.CalcPoints[j].Z
};
- inputLayer.Surface.OuterLoop[j] = point;
+ inputLayer.Surface.Innerloop[j] = point;
}
-
- GeometryLoop innerloop = layer.GeometrySurface.InnerLoops.FirstOrDefault();
- if (innerloop != null)
- {
- inputLayer.Surface.Innerloop = new SoilProfile2DLayer2DSurfaceInnerPoint[innerloop.CalcPoints.Count];
- for (var j = 0; j < innerloop.CalcPoints.Count; j++)
- {
- var point = new SoilProfile2DLayer2DSurfaceInnerPoint
- {
- X = innerloop.CalcPoints[j].X,
- Z = innerloop.CalcPoints[j].Z
- };
- inputLayer.Surface.Innerloop[j] = point;
- }
- }
-
- inputSoilProfile2D.Layers2D[i] = inputLayer;
}
+
+ inputSoilProfile2D.Layers2D[i] = inputLayer;
}
}
+ }
- private static void TransferSegments(IList segments, Io.XmlInput.Segment[] inputSegments)
+ private static void TransferSegments(IList segments, Io.XmlInput.Segment[] inputSegments)
+ {
+ for (var i = 0; i < segments.Count; i++)
{
- for (var i = 0; i < segments.Count; i++)
+ Segment segment = segments[i];
+ var inputSegment = new Io.XmlInput.Segment
{
- Segment segment = segments[i];
- var inputSegment = new Io.XmlInput.Segment
- {
- Name = segment.Name
- };
- AddSoilProfileProbabilities(segment, inputSegment);
- inputSegments[i] = inputSegment;
- }
+ Name = segment.Name
+ };
+ AddSoilProfileProbabilities(segment, inputSegment);
+ inputSegments[i] = inputSegment;
}
+ }
- private static void AddSoilProfileProbabilities(Segment segment, Io.XmlInput.Segment inputSegment)
+ private static void AddSoilProfileProbabilities(Segment segment, Io.XmlInput.Segment inputSegment)
+ {
+ if (segment.SoilProfileProbabilities != null)
{
- if (segment.SoilProfileProbabilities != null)
+ int probabilityCount = segment.SoilProfileProbabilities.Count;
+ inputSegment.SoilGeometryProbability = new SegmentSoilGeometryProbability[probabilityCount];
+ for (var i = 0; i < probabilityCount; i++)
{
- int probabilityCount = segment.SoilProfileProbabilities.Count;
- inputSegment.SoilGeometryProbability = new SegmentSoilGeometryProbability[probabilityCount];
- for (var i = 0; i < probabilityCount; i++)
+ SoilGeometryProbability soilGeometryProbability = segment.SoilProfileProbabilities[i];
+ var inputSoilGeometryProbability = new SegmentSoilGeometryProbability();
+ inputSoilGeometryProbability.Probability = soilGeometryProbability.Probability;
+ if (soilGeometryProbability.SegmentFailureMechanismType.HasValue)
{
- SoilGeometryProbability soilGeometryProbability = segment.SoilProfileProbabilities[i];
- var inputSoilGeometryProbability = new SegmentSoilGeometryProbability();
- inputSoilGeometryProbability.Probability = soilGeometryProbability.Probability;
- if (soilGeometryProbability.SegmentFailureMechanismType.HasValue)
+ inputSoilGeometryProbability.SegmentFailureMechanismType = ConversionHelper.ConvertToInputSegmentFailureMechanismSystemType(soilGeometryProbability.SegmentFailureMechanismType.Value);
+ inputSoilGeometryProbability.SegmentFailureMechanismTypeSpecified = true;
+ }
+ else
+ {
+ inputSoilGeometryProbability.SegmentFailureMechanismTypeSpecified = false;
+ }
+
+ inputSoilGeometryProbability.SoilProfileType = ConversionHelper.ConvertToInputSoilGeometryType(soilGeometryProbability.SoilProfileType);
+ switch (soilGeometryProbability.SoilProfileType)
+ {
+ case SoilProfileType.ProfileType1D:
{
- inputSoilGeometryProbability.SegmentFailureMechanismType = ConversionHelper.ConvertToInputSegmentFailureMechanismSystemType(soilGeometryProbability.SegmentFailureMechanismType.Value);
- inputSoilGeometryProbability.SegmentFailureMechanismTypeSpecified = true;
+ inputSoilGeometryProbability.SoilProfileName = soilGeometryProbability.SoilProfile1DName;
+ break;
}
- else
+ case SoilProfileType.ProfileType2D:
{
- inputSoilGeometryProbability.SegmentFailureMechanismTypeSpecified = false;
+ inputSoilGeometryProbability.SoilProfileName = soilGeometryProbability.SoilProfile2DName;
+ break;
}
-
- inputSoilGeometryProbability.SoilProfileType = ConversionHelper.ConvertToInputSoilGeometryType(soilGeometryProbability.SoilProfileType);
- switch (soilGeometryProbability.SoilProfileType)
+ case SoilProfileType.ProfileTypeStiFile:
{
- case SoilProfileType.ProfileType1D:
- {
- inputSoilGeometryProbability.SoilProfileName = soilGeometryProbability.SoilProfile1DName;
- break;
- }
- case SoilProfileType.ProfileType2D:
- {
- inputSoilGeometryProbability.SoilProfileName = soilGeometryProbability.SoilProfile2DName;
- break;
- }
- case SoilProfileType.ProfileTypeStiFile:
- {
- inputSoilGeometryProbability.SoilProfileName = soilGeometryProbability.StiFileName;
- break;
- }
+ inputSoilGeometryProbability.SoilProfileName = soilGeometryProbability.StiFileName;
+ break;
}
-
- inputSegment.SoilGeometryProbability[i] = inputSoilGeometryProbability;
}
+
+ inputSegment.SoilGeometryProbability[i] = inputSoilGeometryProbability;
}
}
}