Index: DamEngine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlInput.cs =================================================================== diff -u -r4000 -r4052 --- DamEngine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlInput.cs (.../FillDamFromXmlInput.cs) (revision 4000) +++ DamEngine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlInput.cs (.../FillDamFromXmlInput.cs) (revision 4052) @@ -42,865 +42,864 @@ using SoilProfile2D = Deltares.DamEngine.Data.Geotechnics.SoilProfile2D; using TimeSerie = Deltares.DamEngine.Io.XmlInput.TimeSerie; -namespace Deltares.DamEngine.Interface +namespace Deltares.DamEngine.Interface; + +/// +/// Fill Dam Engine data object from Input serializer object +/// +public class FillDamFromXmlInput { /// - /// Fill Dam Engine data object from Input serializer object + /// Creates the dam project data from an Input serializer object /// - public class FillDamFromXmlInput + /// The input. + /// + public static DamProjectData CreateDamProjectData(Input input) { - /// - /// Creates the dam project data from an Input serializer object - /// - /// The input. - /// - public static DamProjectData CreateDamProjectData(Input input) + ValidateInput(input); + var damProjectData = new DamProjectData { - ValidateInput(input); - var damProjectData = new DamProjectData - { - Dike = new Dike() - }; + Dike = new Dike() + }; - Dike dike = damProjectData.Dike; + Dike dike = damProjectData.Dike; - damProjectData.ProjectPath = input.ProjectPath; - damProjectData.CalculationMap = input.CalculationMap; - if (input.MaxCalculationCoresSpecified) - { - damProjectData.MaxCalculationCores = input.MaxCalculationCores; - } + damProjectData.ProjectPath = input.ProjectPath; + damProjectData.CalculationMap = input.CalculationMap; + if (input.MaxCalculationCoresSpecified) + { + damProjectData.MaxCalculationCores = input.MaxCalculationCores; + } - TransferAnalysisSpecification(input, damProjectData); - TransferStabilityParameters(input, damProjectData); + TransferAnalysisSpecification(input, damProjectData); + TransferStabilityParameters(input, damProjectData); - TransferSurfaceLines(input.SurfaceLines, dike.SurfaceLines2); - dike.SoilList = new SoilList(); - TransferSoils(input.Soils, dike.SoilList.Soils); - List messages = TransferAquiferSoils(input.AquiferSoils, dike.SoilList); - if (messages.Count > 0) - { - damProjectData.CalculationMessages = messages; - } + TransferSurfaceLines(input.SurfaceLines, dike.SurfaceLines2); + dike.SoilList = new SoilList(); + TransferSoils(input.Soils, dike.SoilList.Soils); + List messages = TransferAquiferSoils(input.AquiferSoils, dike.SoilList); + if (messages.Count > 0) + { + damProjectData.CalculationMessages = messages; + } - TransferSoilProfiles1D(input.SoilProfiles1D, dike.SoilProfiles, dike.SoilList); - TransferSoilProfiles2D(input.SoilProfiles2D, dike.SoilProfiles2D, dike.SoilList); - TransferSegments(input.Segments, damProjectData.Segments); - TransferLocations(input.ProjectPath, input.Locations, dike.Locations, dike.SurfaceLines2, damProjectData.Segments); - if (input.OperationalInputTimeSeries != null) - { - dike.InputTimeSerieCollection = new TimeSerieCollection(); - TransferInputTimeSeries(input.OperationalInputTimeSeries, dike.InputTimeSerieCollection); - } + TransferSoilProfiles1D(input.SoilProfiles1D, dike.SoilProfiles, dike.SoilList); + TransferSoilProfiles2D(input.SoilProfiles2D, dike.SoilProfiles2D, dike.SoilList); + TransferSegments(input.Segments, damProjectData.Segments); + TransferLocations(input.ProjectPath, input.Locations, dike.Locations, dike.SurfaceLines2, damProjectData.Segments); + if (input.OperationalInputTimeSeries != null) + { + dike.InputTimeSerieCollection = new TimeSerieCollection(); + TransferInputTimeSeries(input.OperationalInputTimeSeries, dike.InputTimeSerieCollection); + } - if (input.SensorData != null) - { - damProjectData.SensorData = new SensorData(); - TransferSensorData(input.SensorData, damProjectData.SensorData, damProjectData.Dike.Locations); - } + if (input.SensorData != null) + { + damProjectData.SensorData = new SensorData(); + TransferSensorData(input.SensorData, damProjectData.SensorData, damProjectData.Dike.Locations); + } - PostProcess(damProjectData); + PostProcess(damProjectData); - return damProjectData; - } + return damProjectData; + } - /// - /// Finds the SoilProfile1D by name. - /// - /// The soil profiles. - /// The name. - /// - public static SoilProfile1D FindSoilProfile1DByName(IList soilProfiles, string name) + /// + /// Finds the SoilProfile1D by name. + /// + /// The soil profiles. + /// The name. + /// + public static SoilProfile1D FindSoilProfile1DByName(IList soilProfiles, string name) + { + foreach (SoilProfile1D soilProfile1D in soilProfiles) { - foreach (SoilProfile1D soilProfile1D in soilProfiles) + if (soilProfile1D.Name == name) { - if (soilProfile1D.Name == name) - { - return soilProfile1D; - } + return soilProfile1D; } - - return null; } - /// - /// Finds the SoilProfile2D by name. - /// - /// The soil profiles. - /// The name. - /// - public static SoilProfile2D FindSoilProfile2DByName(IList soilProfiles, string name) + return null; + } + + /// + /// Finds the SoilProfile2D by name. + /// + /// The soil profiles. + /// The name. + /// + public static SoilProfile2D FindSoilProfile2DByName(IList soilProfiles, string name) + { + foreach (SoilProfile2D soilProfile2D in soilProfiles) { - foreach (SoilProfile2D soilProfile2D in soilProfiles) + if (soilProfile2D.Name == name) { - if (soilProfile2D.Name == name) - { - return soilProfile2D; - } + return soilProfile2D; } - - return null; } - private static void TransferSensorData(InputSensorData inputSensorData, SensorData sensorData, IList locations) + return null; + } + + private static void TransferSensorData(InputSensorData inputSensorData, SensorData sensorData, IList locations) + { + // Transfer sensors + foreach (Sensor inputSensor in inputSensorData.Sensors) { - // Transfer sensors - foreach (Sensor inputSensor in inputSensorData.Sensors) + var plLineMappings = new PlLineType[inputSensor.PlLineMapping.Length]; + var plLineMappingIndex = 0; + foreach (SensorPlLineMapping plLineMapping in inputSensor.PlLineMapping) { - var plLineMappings = new PlLineType[inputSensor.PlLineMapping.Length]; - var plLineMappingIndex = 0; - foreach (SensorPlLineMapping plLineMapping in inputSensor.PlLineMapping) - { - plLineMappings[plLineMappingIndex] = ConversionHelper.ConvertToPlLineType(plLineMapping.PLineType); - plLineMappingIndex++; - } - - sensorData.Sensors.Add(new Data.General.Sensors.Sensor - { - ID = inputSensor.Id, - Name = inputSensor.Name, - RelativeLocation = inputSensor.RelativeLocation, - SensorType = ConversionHelper.ConvertToSensorType(inputSensor.SensorType), - PlLineMappings = plLineMappings - }); + plLineMappings[plLineMappingIndex] = ConversionHelper.ConvertToPlLineType(plLineMapping.PLineType); + plLineMappingIndex++; } - // Transfer sensorgroups - foreach (SensorGroup inputSensorGroup in inputSensorData.SensorGroups) + sensorData.Sensors.Add(new Data.General.Sensors.Sensor { - var sensorGroup = new Data.General.Sensors.SensorGroup(); - sensorGroup.ID = inputSensorGroup.Id; - foreach (SensorGroupSensorIds sensorId in inputSensorGroup.SensorIds) - { - Data.General.Sensors.Sensor sensor = sensorData.Sensors.First(s => s.ID.Equals(sensorId.SensorId)); - sensorGroup.Add(sensor); - } + ID = inputSensor.Id, + Name = inputSensor.Name, + RelativeLocation = inputSensor.RelativeLocation, + SensorType = ConversionHelper.ConvertToSensorType(inputSensor.SensorType), + PlLineMappings = plLineMappings + }); + } - sensorData.SensorGroups.Add(sensorGroup); - } - - // Transfer sensorlocations - foreach (SensorLocation inputSensorLocation in inputSensorData.SensorLocations) + // Transfer sensorgroups + foreach (SensorGroup inputSensorGroup in inputSensorData.SensorGroups) + { + var sensorGroup = new Data.General.Sensors.SensorGroup(); + sensorGroup.ID = inputSensorGroup.Id; + foreach (SensorGroupSensorIds sensorId in inputSensorGroup.SensorIds) { - var sensorLocation = new Data.General.Sensors.SensorLocation(); - sensorLocation.Location = locations.First(l => l.Name.Equals(inputSensorLocation.LocationId)); - sensorLocation.Location.SensorLocation = sensorLocation; - sensorLocation.SensorGroup = sensorData.SensorGroups.First(sg => sg.ID.Equals(inputSensorLocation.GroupId)); - sensorLocation.SourceTypePl1PlLineOffsetBelowDikeTopAtPolder = ConversionHelper.ConvertToDataSourceTypeSensors(inputSensorLocation.SourceTypePl1PlLineOffsetBelowDikeTopAtPolder); - sensorLocation.SourceTypePl1PlLineOffsetBelowDikeToeAtPolder = ConversionHelper.ConvertToDataSourceTypeSensors(inputSensorLocation.SourceTypePl1PlLineOffsetBelowDikeToeAtPolder); - sensorLocation.SourceTypePl1PlLineOffsetBelowDikeTopAtRiver = ConversionHelper.ConvertToDataSourceTypeSensors(inputSensorLocation.SourceTypePl1PlLineOffsetBelowDikeTopAtRiver); - sensorLocation.SourceTypePl1PlLineOffsetBelowShoulderBaseInside = ConversionHelper.ConvertToDataSourceTypeSensors(inputSensorLocation.SourceTypePl1PlLineOffsetBelowShoulderBaseInside); - sensorLocation.SourceTypePl1WaterLevelAtPolder = ConversionHelper.ConvertToDataSourceTypeSensors(inputSensorLocation.SourceTypePl1WaterLevelAtPolder); - sensorLocation.SourceTypePl1WaterLevelAtRiver = ConversionHelper.ConvertToDataSourceTypeSensors(inputSensorLocation.SourceTypePl1WaterLevelAtRiver); - sensorLocation.SourceTypePl3 = ConversionHelper.ConvertToDataSourceTypeSensors(inputSensorLocation.SourceTypePl3); - sensorLocation.SourceTypePl4 = ConversionHelper.ConvertToDataSourceTypeSensors(inputSensorLocation.SourceTypePl4); - sensorData.SensorLocations.Add(sensorLocation); + Data.General.Sensors.Sensor sensor = sensorData.Sensors.First(s => s.ID.Equals(sensorId.SensorId)); + sensorGroup.Add(sensor); } + + sensorData.SensorGroups.Add(sensorGroup); } - private static void TransferInputTimeSeries(TimeSerie[] inputOperationalInputTimeSeries, TimeSerieCollection timeSerieCollection) + // Transfer sensorlocations + foreach (SensorLocation inputSensorLocation in inputSensorData.SensorLocations) { - foreach (TimeSerie inputTimeSerie in inputOperationalInputTimeSeries) + var sensorLocation = new Data.General.Sensors.SensorLocation(); + sensorLocation.Location = locations.First(l => l.Name.Equals(inputSensorLocation.LocationId)); + sensorLocation.Location.SensorLocation = sensorLocation; + sensorLocation.SensorGroup = sensorData.SensorGroups.First(sg => sg.ID.Equals(inputSensorLocation.GroupId)); + sensorLocation.SourceTypePl1PlLineOffsetBelowDikeTopAtPolder = ConversionHelper.ConvertToDataSourceTypeSensors(inputSensorLocation.SourceTypePl1PlLineOffsetBelowDikeTopAtPolder); + sensorLocation.SourceTypePl1PlLineOffsetBelowDikeToeAtPolder = ConversionHelper.ConvertToDataSourceTypeSensors(inputSensorLocation.SourceTypePl1PlLineOffsetBelowDikeToeAtPolder); + sensorLocation.SourceTypePl1PlLineOffsetBelowDikeTopAtRiver = ConversionHelper.ConvertToDataSourceTypeSensors(inputSensorLocation.SourceTypePl1PlLineOffsetBelowDikeTopAtRiver); + sensorLocation.SourceTypePl1PlLineOffsetBelowShoulderBaseInside = ConversionHelper.ConvertToDataSourceTypeSensors(inputSensorLocation.SourceTypePl1PlLineOffsetBelowShoulderBaseInside); + sensorLocation.SourceTypePl1WaterLevelAtPolder = ConversionHelper.ConvertToDataSourceTypeSensors(inputSensorLocation.SourceTypePl1WaterLevelAtPolder); + sensorLocation.SourceTypePl1WaterLevelAtRiver = ConversionHelper.ConvertToDataSourceTypeSensors(inputSensorLocation.SourceTypePl1WaterLevelAtRiver); + sensorLocation.SourceTypePl3 = ConversionHelper.ConvertToDataSourceTypeSensors(inputSensorLocation.SourceTypePl3); + sensorLocation.SourceTypePl4 = ConversionHelper.ConvertToDataSourceTypeSensors(inputSensorLocation.SourceTypePl4); + sensorData.SensorLocations.Add(sensorLocation); + } + } + + private static void TransferInputTimeSeries(TimeSerie[] inputOperationalInputTimeSeries, TimeSerieCollection timeSerieCollection) + { + foreach (TimeSerie inputTimeSerie in inputOperationalInputTimeSeries) + { + Data.General.TimeSeries.TimeSerie timeSerie = timeSerieCollection.AddNewSeries(inputTimeSerie.LocationId); + timeSerie.ParameterId = inputTimeSerie.ParameterId; + timeSerie.ForecastDateTime = inputTimeSerie.ForecastDateTime; + timeSerie.Type = inputTimeSerie.Type; + timeSerie.StartDateTime = inputTimeSerie.StartDateTime; + timeSerie.EndDateTime = inputTimeSerie.EndDateTime; + timeSerie.MissVal = inputTimeSerie.MissVal; + timeSerie.LongName = inputTimeSerie.LongName; + timeSerie.StationName = inputTimeSerie.StationName; + timeSerie.Units = inputTimeSerie.Units; + timeSerie.SourceOrganisation = inputTimeSerie.SourceOrganisation; + timeSerie.SourceSystem = inputTimeSerie.SourceSystem; + timeSerie.FileDescription = inputTimeSerie.FileDescription; + timeSerie.Region = inputTimeSerie.Region; + timeSerie.TimeStep.Multiplier = inputTimeSerie.TimeStep.Multiplier; + timeSerie.TimeStep.Divider = inputTimeSerie.TimeStep.Divider; + timeSerie.TimeStep.MultiplierSpecified = inputTimeSerie.TimeStep.MultiplierSpecified1; + timeSerie.TimeStep.DividerSpecified = inputTimeSerie.TimeStep.DividerSpecified1; + timeSerie.TimeStep.Unit = ConversionHelper.ConvertToTimeStepUnit(inputTimeSerie.TimeStep.TimeStepUnit); + if (inputTimeSerie.Entries.TimeSerieEntry != null) { - Data.General.TimeSeries.TimeSerie timeSerie = timeSerieCollection.AddNewSeries(inputTimeSerie.LocationId); - timeSerie.ParameterId = inputTimeSerie.ParameterId; - timeSerie.ForecastDateTime = inputTimeSerie.ForecastDateTime; - timeSerie.Type = inputTimeSerie.Type; - timeSerie.StartDateTime = inputTimeSerie.StartDateTime; - timeSerie.EndDateTime = inputTimeSerie.EndDateTime; - timeSerie.MissVal = inputTimeSerie.MissVal; - timeSerie.LongName = inputTimeSerie.LongName; - timeSerie.StationName = inputTimeSerie.StationName; - timeSerie.Units = inputTimeSerie.Units; - timeSerie.SourceOrganisation = inputTimeSerie.SourceOrganisation; - timeSerie.SourceSystem = inputTimeSerie.SourceSystem; - timeSerie.FileDescription = inputTimeSerie.FileDescription; - timeSerie.Region = inputTimeSerie.Region; - timeSerie.TimeStep.Multiplier = inputTimeSerie.TimeStep.Multiplier; - timeSerie.TimeStep.Divider = inputTimeSerie.TimeStep.Divider; - timeSerie.TimeStep.MultiplierSpecified = inputTimeSerie.TimeStep.MultiplierSpecified1; - timeSerie.TimeStep.DividerSpecified = inputTimeSerie.TimeStep.DividerSpecified1; - timeSerie.TimeStep.Unit = ConversionHelper.ConvertToTimeStepUnit(inputTimeSerie.TimeStep.TimeStepUnit); - if (inputTimeSerie.Entries.TimeSerieEntry != null) + for (var i = 0; i < inputTimeSerie.Entries.TimeSerieEntry.Length; i++) { - for (var i = 0; i < inputTimeSerie.Entries.TimeSerieEntry.Length; i++) + TimeSerieEntriesTimeSerieEntry entry = inputTimeSerie.Entries.TimeSerieEntry[i]; + Stochast stochastValue = null; + if (entry.StochastValue != null) { - TimeSerieEntriesTimeSerieEntry entry = inputTimeSerie.Entries.TimeSerieEntry[i]; - Stochast stochastValue = null; - if (entry.StochastValue != null) + stochastValue = new Stochast { - stochastValue = new Stochast - { - Distribution = entry.StochastValue.Distribution, - Mean = entry.StochastValue.Mean, - StandardDeviation = entry.StochastValue.StandardDeviation - }; - } - - var timeSerieEntry = new TimeSerieEntry - { - DateTime = entry.DateTime, - Value = entry.Value, - BasisFileName = entry.BasisFileNameWMF, - Flag = entry.Flagnietechtgebruikt, - RelativeCalculationPathName = entry.RelativeCalculationPathName, - StochastValue = stochastValue + Distribution = entry.StochastValue.Distribution, + Mean = entry.StochastValue.Mean, + StandardDeviation = entry.StochastValue.StandardDeviation }; - timeSerie.Entries.Add(timeSerieEntry); } + + var timeSerieEntry = new TimeSerieEntry + { + DateTime = entry.DateTime, + Value = entry.Value, + BasisFileName = entry.BasisFileNameWMF, + Flag = entry.Flagnietechtgebruikt, + RelativeCalculationPathName = entry.RelativeCalculationPathName, + StochastValue = stochastValue + }; + timeSerie.Entries.Add(timeSerieEntry); } } } + } - private static List TransferAquiferSoils(InputAquiferSoil[] inputAquiferSoils, SoilList soilList) + private static List TransferAquiferSoils(InputAquiferSoil[] inputAquiferSoils, SoilList soilList) + { + var validationMessages = new List(); + if (inputAquiferSoils != null) { - var validationMessages = new List(); - if (inputAquiferSoils != null) + soilList.AquiferDictionary.Clear(); + foreach (InputAquiferSoil aquiferSoil in inputAquiferSoils) { - soilList.AquiferDictionary.Clear(); - foreach (InputAquiferSoil aquiferSoil in inputAquiferSoils) + Data.Geotechnics.Soil soil = soilList.GetSoilByName(aquiferSoil.Soilname); + if (!soilList.AquiferDictionary.ContainsKey(soil.Name)) { - Data.Geotechnics.Soil soil = soilList.GetSoilByName(aquiferSoil.Soilname); - if (!soilList.AquiferDictionary.ContainsKey(soil.Name)) + soilList.AquiferDictionary.Add(soil.Name, aquiferSoil.IsAquifer); + } + else + { + // If a soil is (wrongly) in the list more than once, then prefer aquifer true. + if (aquiferSoil.IsAquifer) { - soilList.AquiferDictionary.Add(soil.Name, aquiferSoil.IsAquifer); + validationMessages.Add(new LogMessage(LogMessageType.Warning, aquiferSoil, string.Format(Resources.DoubleAquiferSoil, aquiferSoil.Soilname))); + soilList.AquiferDictionary[soil.Name] = true; } - else - { - // If a soil is (wrongly) in the list more than once, then prefer aquifer true. - if (aquiferSoil.IsAquifer) - { - validationMessages.Add(new LogMessage(LogMessageType.Warning, aquiferSoil, string.Format(Resources.DoubleAquiferSoil, aquiferSoil.Soilname))); - soilList.AquiferDictionary[soil.Name] = true; - } - } } } - - return validationMessages; } - private static void TransferAnalysisSpecification(Input input, DamProjectData damProjectData) - { - damProjectData.DamProjectType = ConversionHelper.ConvertToDamProjectType(input.DamProjectType); + return validationMessages; + } - var calculationSpecification = new DamFailureMechanismeCalculationSpecification(); + private static void TransferAnalysisSpecification(Input input, DamProjectData damProjectData) + { + damProjectData.DamProjectType = ConversionHelper.ConvertToDamProjectType(input.DamProjectType); - calculationSpecification.FailureMechanismSystemType = ConversionHelper.ConvertToFailureMechanismSystemType(input.FailureMechanismSystemType); + var calculationSpecification = new DamFailureMechanismeCalculationSpecification(); - if (input.AnalysisTypeSpecified) - { - DamProjectCalculationSpecification.SelectedAnalysisType = ConversionHelper.ConvertToAnalysisType(input.AnalysisType); - } + calculationSpecification.FailureMechanismSystemType = ConversionHelper.ConvertToFailureMechanismSystemType(input.FailureMechanismSystemType); - if (input.PipingModelTypeSpecified) - { - calculationSpecification.PipingModelType = ConversionHelper.ConvertToPipingModelType(input.PipingModelType); - } + if (input.AnalysisTypeSpecified) + { + DamProjectCalculationSpecification.SelectedAnalysisType = ConversionHelper.ConvertToAnalysisType(input.AnalysisType); + } - if (input.StabilityModelTypeSpecified) - { - calculationSpecification.StabilityModelType = ConversionHelper.ConvertToStabilityModelType(input.StabilityModelType); - } + if (input.PipingModelTypeSpecified) + { + calculationSpecification.PipingModelType = ConversionHelper.ConvertToPipingModelType(input.PipingModelType); + } - damProjectData.DamProjectCalculationSpecification.DamCalculationSpecifications.Add(calculationSpecification); + if (input.StabilityModelTypeSpecified) + { + calculationSpecification.StabilityModelType = ConversionHelper.ConvertToStabilityModelType(input.StabilityModelType); } - private static void TransferStabilityParameters(Input input, DamProjectData damProjectData) + damProjectData.DamProjectCalculationSpecification.DamCalculationSpecifications.Add(calculationSpecification); + } + + private static void TransferStabilityParameters(Input input, DamProjectData damProjectData) + { + if (input.StabilityParameters != null) { - if (input.StabilityParameters != null) + if (damProjectData.DamProjectCalculationSpecification != null) { - if (damProjectData.DamProjectCalculationSpecification != null) + DamFailureMechanismeCalculationSpecification curSpec = damProjectData.DamProjectCalculationSpecification.CurrentSpecification; + if (curSpec != null) { - DamFailureMechanismeCalculationSpecification curSpec = damProjectData.DamProjectCalculationSpecification.CurrentSpecification; - if (curSpec != null) + curSpec.FailureMechanismParametersMStab = new FailureMechanismParametersMStab(); + curSpec.FailureMechanismParametersMStab.MStabParameters = new MStabParameters(); + MStabParameters curStabParamas = curSpec.FailureMechanismParametersMStab.MStabParameters; + curStabParamas.SearchMethod = ConversionHelper.ConvertToSearchMethod(input.StabilityParameters.SearchMethod); + // ToDo zant2bka: Is this a good place to set the model? Is was also read in TransferAnalysisSpecification + if (input.StabilityModelTypeSpecified) { - curSpec.FailureMechanismParametersMStab = new FailureMechanismParametersMStab(); - curSpec.FailureMechanismParametersMStab.MStabParameters = new MStabParameters(); - MStabParameters curStabParamas = curSpec.FailureMechanismParametersMStab.MStabParameters; - curStabParamas.SearchMethod = ConversionHelper.ConvertToSearchMethod(input.StabilityParameters.SearchMethod); - // ToDo zant2bka: Is this a good place to set the model? Is was also read in TransferAnalysisSpecification - if (input.StabilityModelTypeSpecified) - { - curStabParamas.Model = ConversionHelper.ConvertToStabilityModelType(input.StabilityModelType); - } + curStabParamas.Model = ConversionHelper.ConvertToStabilityModelType(input.StabilityModelType); + } - curStabParamas.SlipCircleDefinition = new SlipCircleDefinition(); - SlipCircleDefinition slipCircleDefinition = curStabParamas.SlipCircleDefinition; - slipCircleDefinition.GridSizeDetermination = ConversionHelper.ConvertToGridDetermination(input.StabilityParameters.GridDetermination); + curStabParamas.SlipCircleDefinition = new SlipCircleDefinition(); + SlipCircleDefinition slipCircleDefinition = curStabParamas.SlipCircleDefinition; + slipCircleDefinition.GridSizeDetermination = ConversionHelper.ConvertToGridDetermination(input.StabilityParameters.GridDetermination); - if (input.StabilityParameters.BishopTangentLinesDefinitionSpecified) - { - slipCircleDefinition.BishopTangentLinesDefinition = ConversionHelper.ConvertToTangentLinesDefinition(input.StabilityParameters.BishopTangentLinesDefinition); - } + if (input.StabilityParameters.BishopTangentLinesDefinitionSpecified) + { + slipCircleDefinition.BishopTangentLinesDefinition = ConversionHelper.ConvertToTangentLinesDefinition(input.StabilityParameters.BishopTangentLinesDefinition); + } - if (input.StabilityParameters.BishopTangentLinesDistanceSpecified) - { - slipCircleDefinition.BishopTangentLinesDistance = input.StabilityParameters.BishopTangentLinesDistance; - } + if (input.StabilityParameters.BishopTangentLinesDistanceSpecified) + { + slipCircleDefinition.BishopTangentLinesDistance = input.StabilityParameters.BishopTangentLinesDistance; + } - if (input.StabilityParameters.BishopGridVerticalPointsCountSpecified) - { - slipCircleDefinition.BishopGridVerticalPointCount = input.StabilityParameters.BishopGridVerticalPointsCount; - } + if (input.StabilityParameters.BishopGridVerticalPointsCountSpecified) + { + slipCircleDefinition.BishopGridVerticalPointCount = input.StabilityParameters.BishopGridVerticalPointsCount; + } - if (input.StabilityParameters.BishopGridVerticalPointsDistanceSpecified) - { - slipCircleDefinition.BishopGridVerticalPointDistance = input.StabilityParameters.BishopGridVerticalPointsDistance; - } + if (input.StabilityParameters.BishopGridVerticalPointsDistanceSpecified) + { + slipCircleDefinition.BishopGridVerticalPointDistance = input.StabilityParameters.BishopGridVerticalPointsDistance; + } - if (input.StabilityParameters.BishopGridHorizontalPointsCountSpecified) - { - slipCircleDefinition.BishopGridHorizontalPointCount = input.StabilityParameters.BishopGridHorizontalPointsCount; - } + if (input.StabilityParameters.BishopGridHorizontalPointsCountSpecified) + { + slipCircleDefinition.BishopGridHorizontalPointCount = input.StabilityParameters.BishopGridHorizontalPointsCount; + } - if (input.StabilityParameters.BishopGridHorizontalPointsDistanceSpecified) - { - slipCircleDefinition.BishopGridHorizontalPointDistance = input.StabilityParameters.BishopGridHorizontalPointsDistance; - } + if (input.StabilityParameters.BishopGridHorizontalPointsDistanceSpecified) + { + slipCircleDefinition.BishopGridHorizontalPointDistance = input.StabilityParameters.BishopGridHorizontalPointsDistance; + } - if (input.StabilityParameters.UpliftVanTangentLinesDefinitionSpecified) - { - slipCircleDefinition.UpliftVanTangentLinesDefinition = ConversionHelper.ConvertToTangentLinesDefinition(input.StabilityParameters.UpliftVanTangentLinesDefinition); - } + if (input.StabilityParameters.UpliftVanTangentLinesDefinitionSpecified) + { + slipCircleDefinition.UpliftVanTangentLinesDefinition = ConversionHelper.ConvertToTangentLinesDefinition(input.StabilityParameters.UpliftVanTangentLinesDefinition); + } - if (input.StabilityParameters.UpliftVanTangentLinesDistanceSpecified) - { - slipCircleDefinition.UpliftVanTangentLinesDistance = input.StabilityParameters.UpliftVanTangentLinesDistance; - } + if (input.StabilityParameters.UpliftVanTangentLinesDistanceSpecified) + { + slipCircleDefinition.UpliftVanTangentLinesDistance = input.StabilityParameters.UpliftVanTangentLinesDistance; + } - if (input.StabilityParameters.UpliftVanGridLeftVerticalPointsCountSpecified) - { - slipCircleDefinition.UpliftVanLeftGridVerticalPointCount = input.StabilityParameters.UpliftVanGridLeftVerticalPointsCount; - } + if (input.StabilityParameters.UpliftVanGridLeftVerticalPointsCountSpecified) + { + slipCircleDefinition.UpliftVanLeftGridVerticalPointCount = input.StabilityParameters.UpliftVanGridLeftVerticalPointsCount; + } - if (input.StabilityParameters.UpliftVanGridLeftVerticalPointsDistanceSpecified) - { - slipCircleDefinition.UpliftVanLeftGridVerticalPointDistance = input.StabilityParameters.UpliftVanGridLeftVerticalPointsDistance; - } + if (input.StabilityParameters.UpliftVanGridLeftVerticalPointsDistanceSpecified) + { + slipCircleDefinition.UpliftVanLeftGridVerticalPointDistance = input.StabilityParameters.UpliftVanGridLeftVerticalPointsDistance; + } - if (input.StabilityParameters.UpliftVanGridLeftHorizontalPointsCountSpecified) - { - slipCircleDefinition.UpliftVanLeftGridHorizontalPointCount = input.StabilityParameters.UpliftVanGridLeftHorizontalPointsCount; - } + if (input.StabilityParameters.UpliftVanGridLeftHorizontalPointsCountSpecified) + { + slipCircleDefinition.UpliftVanLeftGridHorizontalPointCount = input.StabilityParameters.UpliftVanGridLeftHorizontalPointsCount; + } - if (input.StabilityParameters.UpliftVanGridLeftHorizontalPointsDistanceSpecified) - { - slipCircleDefinition.UpliftVanLeftGridHorizontalPointDistance = input.StabilityParameters.UpliftVanGridLeftHorizontalPointsDistance; - } + if (input.StabilityParameters.UpliftVanGridLeftHorizontalPointsDistanceSpecified) + { + slipCircleDefinition.UpliftVanLeftGridHorizontalPointDistance = input.StabilityParameters.UpliftVanGridLeftHorizontalPointsDistance; + } - if (input.StabilityParameters.UpliftVanGridRightVerticalPointsCountSpecified) - { - slipCircleDefinition.UpliftVanRightGridVerticalPointCount = input.StabilityParameters.UpliftVanGridRightVerticalPointsCount; - } + if (input.StabilityParameters.UpliftVanGridRightVerticalPointsCountSpecified) + { + slipCircleDefinition.UpliftVanRightGridVerticalPointCount = input.StabilityParameters.UpliftVanGridRightVerticalPointsCount; + } - if (input.StabilityParameters.UpliftVanGridRightVerticalPointsDistanceSpecified) - { - slipCircleDefinition.UpliftVanRightGridVerticalPointDistance = input.StabilityParameters.UpliftVanGridRightVerticalPointsDistance; - } + if (input.StabilityParameters.UpliftVanGridRightVerticalPointsDistanceSpecified) + { + slipCircleDefinition.UpliftVanRightGridVerticalPointDistance = input.StabilityParameters.UpliftVanGridRightVerticalPointsDistance; + } - if (input.StabilityParameters.UpliftVanGridRightHorizontalPointsCountSpecified) - { - slipCircleDefinition.UpliftVanRightGridHorizontalPointCount = input.StabilityParameters.UpliftVanGridRightHorizontalPointsCount; - } + if (input.StabilityParameters.UpliftVanGridRightHorizontalPointsCountSpecified) + { + slipCircleDefinition.UpliftVanRightGridHorizontalPointCount = input.StabilityParameters.UpliftVanGridRightHorizontalPointsCount; + } - if (input.StabilityParameters.UpliftVanGridRightHorizontalPointsDistanceSpecified) - { - slipCircleDefinition.UpliftVanRightGridHorizontalPointDistance = input.StabilityParameters.UpliftVanGridRightHorizontalPointsDistance; - } + if (input.StabilityParameters.UpliftVanGridRightHorizontalPointsDistanceSpecified) + { + slipCircleDefinition.UpliftVanRightGridHorizontalPointDistance = input.StabilityParameters.UpliftVanGridRightHorizontalPointsDistance; } } } } + } - private static void ValidateInput(Input input) + private static void ValidateInput(Input input) + { + if (input == null) { - if (input == null) - { - throw new ArgumentNullException(Resources.NoInputDefined); - } + throw new ArgumentNullException(Resources.NoInputDefined); + } - if (input.Locations == null) - { - throw new ArgumentNullException(Resources.NoLocationsDefined); - } + if (input.Locations == null) + { + throw new ArgumentNullException(Resources.NoLocationsDefined); + } - foreach (Io.XmlInput.Location location in input.Locations) + foreach (Io.XmlInput.Location location in input.Locations) + { + if (location.DesignScenarios == null) { - if (location.DesignScenarios == null) - { - throw new ArgumentNullException(Resources.NoDesignScenariosInLocation); - } + throw new ArgumentNullException(Resources.NoDesignScenariosInLocation); } + } - if (input.SurfaceLines == null) + if (input.SurfaceLines == null) + { + throw new ArgumentNullException(Resources.NoSurfaceLinesDefined); + } + + foreach (SurfaceLine surfaceLine in input.SurfaceLines) + { + if ((surfaceLine.Points == null) || (surfaceLine.Points.Length < 1)) { - throw new ArgumentNullException(Resources.NoSurfaceLinesDefined); + throw new ArgumentNullException(string.Format(Resources.NoPointsInSurfaceLine, surfaceLine.Name)); } + } - foreach (SurfaceLine surfaceLine in input.SurfaceLines) + if (input.Soils == null) + { + throw new ArgumentNullException(Resources.NoSoilsDefined); + } + + if (input.Segments == null) + { + throw new ArgumentNullException(Resources.NoSegmentsDefined); + } + } + + /// + /// Postprocess: connect all objects + /// + /// The project. + private static void PostProcess(DamProjectData project) + { + // find proper profiles for segments + foreach (Segment segment in project.Segments) + { + foreach (SoilGeometryProbability segmentSoilProfileProbability in segment.SoilProfileProbabilities) { - if ((surfaceLine.Points == null) || (surfaceLine.Points.Length < 1)) + if (segmentSoilProfileProbability.SoilProfileType == SoilProfileType.ProfileType1D) { - throw new ArgumentNullException(string.Format(Resources.NoPointsInSurfaceLine, surfaceLine.Name)); + segmentSoilProfileProbability.SoilProfile1D = FindSoilProfile1DByName(project.Dike.SoilProfiles, + segmentSoilProfileProbability.SoilProfile1DName); } + else + { + segmentSoilProfileProbability.SoilProfile2D = FindSoilProfile2DByName(project.Dike.SoilProfiles2D, + segmentSoilProfileProbability.SoilProfile2DName); + } } + } - if (input.Soils == null) + // Set locations for scenarios + foreach (Location location in project.Dike.Locations) + { + foreach (DesignScenario designScenario in location.Scenarios) { - throw new ArgumentNullException(Resources.NoSoilsDefined); + designScenario.Location = location; } - if (input.Segments == null) - { - throw new ArgumentNullException(Resources.NoSegmentsDefined); - } + location.SoilList = project.Dike.SoilList; } + } - /// - /// Postprocess: connect all objects - /// - /// The project. - private static void PostProcess(DamProjectData project) + private static void TransferSoils(Soil[] inputSoils, List soils) + { + for (var i = 0; i < inputSoils.Length; i++) { - // find proper profiles for segments - foreach (Segment segment in project.Segments) + var soil = new Data.Geotechnics.Soil(); + Soil inputSoil = inputSoils[i]; + soil.Name = inputSoil.Name; + soil.AbovePhreaticLevel = inputSoil.AbovePhreaticLevelSpecified ? inputSoil.AbovePhreaticLevel : double.NaN; + soil.BelowPhreaticLevel = inputSoil.BelowPhreaticLevelSpecified ? inputSoil.BelowPhreaticLevel : double.NaN; + soil.DryUnitWeight = inputSoil.DryUnitWeightSpecified ? inputSoil.DryUnitWeight : double.NaN; + soil.BeddingAngle = inputSoil.BeddingAngleSpecified ? inputSoil.BeddingAngle : double.NaN; + soil.DiameterD70 = inputSoil.DiameterD70Specified ? inputSoil.DiameterD70 : double.NaN; + soil.DiameterD90 = inputSoil.DiameterD90Specified ? inputSoil.DiameterD90 : double.NaN; + soil.PermeabKx = inputSoil.PermeabKxSpecified ? inputSoil.PermeabKx : double.NaN; + soil.WhitesConstant = inputSoil.WhitesConstantSpecified ? inputSoil.WhitesConstant : double.NaN; + soil.ShearStrengthModel = inputSoil.ShearStrengthModelSpecified ? ConversionHelper.ConvertToShearStrengthModel(inputSoil.ShearStrengthModel) : null; + soil.UseDefaultShearStrengthModel = inputSoil.UseDefaultShearStrengthModelSpecified ? inputSoil.UseDefaultShearStrengthModel : null; + if (soil.UseDefaultShearStrengthModel.HasValue && soil.UseDefaultShearStrengthModel.Value && + soil.ShearStrengthModel == ShearStrengthModel.None) { - foreach (SoilGeometryProbability segmentSoilProfileProbability in segment.SoilProfileProbabilities) - { - if (segmentSoilProfileProbability.SoilProfileType == SoilProfileType.ProfileType1D) - { - segmentSoilProfileProbability.SoilProfile1D = FindSoilProfile1DByName(project.Dike.SoilProfiles, - segmentSoilProfileProbability.SoilProfile1DName); - } - else - { - segmentSoilProfileProbability.SoilProfile2D = FindSoilProfile2DByName(project.Dike.SoilProfiles2D, - segmentSoilProfileProbability.SoilProfile2DName); - } - } + soil.ShearStrengthModel = ShearStrengthModel.CPhi; } - // Set locations for scenarios - foreach (Location location in project.Dike.Locations) - { - foreach (DesignScenario designScenario in location.Scenarios) - { - designScenario.Location = location; - } + soil.Cohesion = inputSoil.CohesionSpecified ? inputSoil.Cohesion : double.NaN; + soil.FrictionAngle = inputSoil.FrictionAngleSpecified ? inputSoil.FrictionAngle : double.NaN; + soil.Ocr = inputSoil.OcrSpecified ? inputSoil.Ocr : double.NaN; + soil.SlopeRestProfile = inputSoil.SlopeRestProfileSpecified ? inputSoil.SlopeRestProfile : double.NaN; + soil.DilatancyType = inputSoil.DilatancyTypeSpecified ? ConversionHelper.ConvertToDilatancyType(inputSoil.DilatancyType) : null; + soil.RRatio = inputSoil.RRatioSpecified ? inputSoil.RRatio : double.NaN; + soil.StrengthIncreaseExponent = inputSoil.StrengthIncreaseExponentSpecified ? inputSoil.StrengthIncreaseExponent : double.NaN; + soil.RatioCuPc = inputSoil.RatioCuPcSpecified ? inputSoil.RatioCuPc : double.NaN; + soils.Add(soil); + } + } - location.SoilList = project.Dike.SoilList; - } + private static void TransferSurfaceLines(SurfaceLine[] inputSurfaceLines, IList dikeSurfaceLines) + { + for (var i = 0; i < inputSurfaceLines.Length; i++) + { + var surfaceLine = new SurfaceLine2(); + SurfaceLine inputSurfaceLine = inputSurfaceLines[i]; + surfaceLine.Name = inputSurfaceLine.Name; + surfaceLine.CharacteristicPoints.Geometry = surfaceLine.Geometry; + AddPointsToSurfaceLine(inputSurfaceLine, surfaceLine); + dikeSurfaceLines.Add(surfaceLine); } + } - private static void TransferSoils(Soil[] inputSoils, List soils) + private static void AddPointsToSurfaceLine(SurfaceLine inputSurfaceLine, SurfaceLine2 surfaceLine) + { + surfaceLine.Geometry = new GeometryPointString(); + for (var j = 0; j < inputSurfaceLine.Points.Length; j++) { - for (var i = 0; i < inputSoils.Length; i++) + SurfaceLinePoint inputPoint = inputSurfaceLine.Points[j]; + var geometryPoint = new GeometryPoint { - var soil = new Data.Geotechnics.Soil(); - Soil inputSoil = inputSoils[i]; - soil.Name = inputSoil.Name; - soil.AbovePhreaticLevel = inputSoil.AbovePhreaticLevelSpecified ? inputSoil.AbovePhreaticLevel : double.NaN; - soil.BelowPhreaticLevel = inputSoil.BelowPhreaticLevelSpecified ? inputSoil.BelowPhreaticLevel : double.NaN; - soil.DryUnitWeight = inputSoil.DryUnitWeightSpecified ? inputSoil.DryUnitWeight : double.NaN; - soil.BeddingAngle = inputSoil.BeddingAngleSpecified ? inputSoil.BeddingAngle : double.NaN; - soil.DiameterD70 = inputSoil.DiameterD70Specified ? inputSoil.DiameterD70 : double.NaN; - soil.DiameterD90 = inputSoil.DiameterD90Specified ? inputSoil.DiameterD90 : double.NaN; - soil.PermeabKx = inputSoil.PermeabKxSpecified ? inputSoil.PermeabKx : double.NaN; - soil.WhitesConstant = inputSoil.WhitesConstantSpecified ? inputSoil.WhitesConstant : double.NaN; - soil.ShearStrengthModel = inputSoil.ShearStrengthModelSpecified ? ConversionHelper.ConvertToShearStrengthModel(inputSoil.ShearStrengthModel) : null; - soil.UseDefaultShearStrengthModel = inputSoil.UseDefaultShearStrengthModelSpecified ? inputSoil.UseDefaultShearStrengthModel : null; - if (soil.UseDefaultShearStrengthModel.HasValue && soil.UseDefaultShearStrengthModel.Value && - soil.ShearStrengthModel == ShearStrengthModel.None) - { - soil.ShearStrengthModel = ShearStrengthModel.CPhi; - } - - soil.Cohesion = inputSoil.CohesionSpecified ? inputSoil.Cohesion : double.NaN; - soil.FrictionAngle = inputSoil.FrictionAngleSpecified ? inputSoil.FrictionAngle : double.NaN; - soil.Ocr = inputSoil.OcrSpecified ? inputSoil.Ocr : double.NaN; - soil.SlopeRestProfile = inputSoil.SlopeRestProfileSpecified ? inputSoil.SlopeRestProfile : double.NaN; - soil.DilatancyType = inputSoil.DilatancyTypeSpecified ? ConversionHelper.ConvertToDilatancyType(inputSoil.DilatancyType) : null; - soil.RRatio = inputSoil.RRatioSpecified ? inputSoil.RRatio : double.NaN; - soil.StrengthIncreaseExponent = inputSoil.StrengthIncreaseExponentSpecified ? inputSoil.StrengthIncreaseExponent : double.NaN; - soil.RatioCuPc = inputSoil.RatioCuPcSpecified ? inputSoil.RatioCuPc : double.NaN; - soils.Add(soil); - } + X = inputPoint.X, + Y = 0.0, + Z = inputPoint.Z + }; + surfaceLine.AddCharacteristicPoint(geometryPoint, ConversionHelper.ConvertToDamPointType(inputPoint.PointType)); } - private static void TransferSurfaceLines(SurfaceLine[] inputSurfaceLines, IList dikeSurfaceLines) + surfaceLine.Geometry.SyncCalcPoints(); + } + + private static void TransferLocations(string projectPath, Io.XmlInput.Location[] inputLocations, + IList dikeLocations, IList dikeSurfaceLines, IList segments) + { + for (var i = 0; i < inputLocations.Length; i++) { - for (var i = 0; i < inputSurfaceLines.Length; i++) + var location = new Location(); + Io.XmlInput.Location inputLocation = inputLocations[i]; + location.Name = inputLocation.Name; + if (inputLocation.DistanceToEntryPointSpecified) { - var surfaceLine = new SurfaceLine2(); - SurfaceLine inputSurfaceLine = inputSurfaceLines[i]; - surfaceLine.Name = inputSurfaceLine.Name; - surfaceLine.CharacteristicPoints.Geometry = surfaceLine.Geometry; - AddPointsToSurfaceLine(inputSurfaceLine, surfaceLine); - dikeSurfaceLines.Add(surfaceLine); + location.DistanceToEntryPoint = inputLocation.DistanceToEntryPoint; } - } - private static void AddPointsToSurfaceLine(SurfaceLine inputSurfaceLine, SurfaceLine2 surfaceLine) - { - surfaceLine.Geometry = new GeometryPointString(); - for (var j = 0; j < inputSurfaceLine.Points.Length; j++) + if (inputLocation.XSoilGeometry2DOriginSpecified) { - SurfaceLinePoint inputPoint = inputSurfaceLine.Points[j]; - var geometryPoint = new GeometryPoint - { - X = inputPoint.X, - Y = 0.0, - Z = inputPoint.Z - }; - surfaceLine.AddCharacteristicPoint(geometryPoint, ConversionHelper.ConvertToDamPointType(inputPoint.PointType)); + location.XSoilGeometry2DOrigin = inputLocation.XSoilGeometry2DOrigin; } - surfaceLine.Geometry.SyncCalcPoints(); - } + // Waternet options + LocationWaternetOptions waternetOptions = inputLocation.WaternetOptions; + location.ModelParametersForPlLines.PlLineCreationMethod = ConversionHelper.ConvertToPhreaticLineCreationMethod(waternetOptions.PhreaticLineCreationMethod); + location.IntrusionVerticalWaterPressure = ConversionHelper.ConvertToIntrusionVerticalWaterPressure(waternetOptions.IntrusionVerticalWaterPressure); + location.ModelParametersForPlLines.DampingFactorPl3 = waternetOptions.DampingFactorPl3; + location.ModelParametersForPlLines.DampingFactorPl4 = waternetOptions.DampingFactorPl4; + location.ModelParametersForPlLines.PenetrationLength = waternetOptions.PenetrationLength; + location.DikeSoilScenario = ConversionHelper.ConvertToDikeSoilScenario(waternetOptions.DikeSoilScenario); + location.SlopeDampingPiezometricHeightPolderSide = waternetOptions.SlopeDampingFactor; - private static void TransferLocations(string projectPath, Io.XmlInput.Location[] inputLocations, - IList dikeLocations, IList dikeSurfaceLines, IList segments) - { - for (var i = 0; i < inputLocations.Length; i++) + // Design options + LocationDesignOptions designOptions = inputLocation.DesignOptions; + if (designOptions != null) { - var location = new Location(); - Io.XmlInput.Location inputLocation = inputLocations[i]; - location.Name = inputLocation.Name; - if (inputLocation.DistanceToEntryPointSpecified) + location.RedesignDikeHeight = designOptions.RedesignDikeHeight; + location.RedesignDikeShoulder = designOptions.RedesignDikeShoulder; + location.ShoulderEmbankmentMaterial = designOptions.ShoulderEmbankmentMaterial; + location.StabilityShoulderGrowSlope = designOptions.StabilityShoulderGrowSlope; + location.StabilityShoulderGrowDeltaX = designOptions.StabilityShoulderGrowDeltaX; + location.StabilitySlopeAdaptionDeltaX = designOptions.StabilitySlopeAdaptionDeltaX; + location.SlopeAdaptionStartCotangent = designOptions.SlopeAdaptionStartCotangent; + location.SlopeAdaptionEndCotangent = designOptions.SlopeAdaptionEndCotangent; + location.SlopeAdaptionStepCotangent = designOptions.SlopeAdaptionStepCotangent; + location.UseNewDikeTopWidth = designOptions.NewDikeTopWidthSpecified; + if (designOptions.NewDikeTopWidthSpecified) { - location.DistanceToEntryPoint = inputLocation.DistanceToEntryPoint; + location.NewDikeTopWidth = designOptions.NewDikeTopWidth; } - if (inputLocation.XSoilGeometry2DOriginSpecified) + location.UseNewDikeSlopeInside = designOptions.NewDikeSlopeInsideSpecified; + if (designOptions.NewDikeSlopeInsideSpecified) { - location.XSoilGeometry2DOrigin = inputLocation.XSoilGeometry2DOrigin; + location.NewDikeSlopeInside = designOptions.NewDikeSlopeInside; } - // Waternet options - LocationWaternetOptions waternetOptions = inputLocation.WaternetOptions; - location.ModelParametersForPlLines.PlLineCreationMethod = ConversionHelper.ConvertToPhreaticLineCreationMethod(waternetOptions.PhreaticLineCreationMethod); - location.IntrusionVerticalWaterPressure = ConversionHelper.ConvertToIntrusionVerticalWaterPressure(waternetOptions.IntrusionVerticalWaterPressure); - location.ModelParametersForPlLines.DampingFactorPl3 = waternetOptions.DampingFactorPl3; - location.ModelParametersForPlLines.DampingFactorPl4 = waternetOptions.DampingFactorPl4; - location.ModelParametersForPlLines.PenetrationLength = waternetOptions.PenetrationLength; - location.DikeSoilScenario = ConversionHelper.ConvertToDikeSoilScenario(waternetOptions.DikeSoilScenario); - location.SlopeDampingPiezometricHeightPolderSide = waternetOptions.SlopeDampingFactor; + location.UseNewDikeSlopeOutside = designOptions.NewDikeSlopeOutsideSpecified; + if (designOptions.NewDikeSlopeOutsideSpecified) + { + location.NewDikeSlopeOutside = designOptions.NewDikeSlopeOutside; + } - // Design options - LocationDesignOptions designOptions = inputLocation.DesignOptions; - if (designOptions != null) + location.UseNewShoulderTopSlope = designOptions.NewShoulderTopSlopeSpecified; + if (designOptions.NewShoulderTopSlopeSpecified) { - location.RedesignDikeHeight = designOptions.RedesignDikeHeight; - location.RedesignDikeShoulder = designOptions.RedesignDikeShoulder; - location.ShoulderEmbankmentMaterial = designOptions.ShoulderEmbankmentMaterial; - location.StabilityShoulderGrowSlope = designOptions.StabilityShoulderGrowSlope; - location.StabilityShoulderGrowDeltaX = designOptions.StabilityShoulderGrowDeltaX; - location.StabilitySlopeAdaptionDeltaX = designOptions.StabilitySlopeAdaptionDeltaX; - location.SlopeAdaptionStartCotangent = designOptions.SlopeAdaptionStartCotangent; - location.SlopeAdaptionEndCotangent = designOptions.SlopeAdaptionEndCotangent; - location.SlopeAdaptionStepCotangent = designOptions.SlopeAdaptionStepCotangent; - location.UseNewDikeTopWidth = designOptions.NewDikeTopWidthSpecified; - if (designOptions.NewDikeTopWidthSpecified) - { - location.NewDikeTopWidth = designOptions.NewDikeTopWidth; - } + location.NewShoulderTopSlope = designOptions.NewShoulderTopSlope; + } - location.UseNewDikeSlopeInside = designOptions.NewDikeSlopeInsideSpecified; - if (designOptions.NewDikeSlopeInsideSpecified) - { - location.NewDikeSlopeInside = designOptions.NewDikeSlopeInside; - } + location.UseNewShoulderBaseSlope = designOptions.NewShoulderBaseSlopeSpecified; + if (designOptions.NewShoulderBaseSlopeSpecified) + { + location.NewShoulderBaseSlope = designOptions.NewShoulderBaseSlope; + } - location.UseNewDikeSlopeOutside = designOptions.NewDikeSlopeOutsideSpecified; - if (designOptions.NewDikeSlopeOutsideSpecified) - { - location.NewDikeSlopeOutside = designOptions.NewDikeSlopeOutside; - } + location.UseNewMaxHeightShoulderAsFraction = designOptions.NewMaxHeightShoulderAsFractionSpecified; + if (designOptions.NewMaxHeightShoulderAsFractionSpecified) + { + location.NewMaxHeightShoulderAsFraction = designOptions.NewMaxHeightShoulderAsFraction; + } - location.UseNewShoulderTopSlope = designOptions.NewShoulderTopSlopeSpecified; - if (designOptions.NewShoulderTopSlopeSpecified) - { - location.NewShoulderTopSlope = designOptions.NewShoulderTopSlope; - } + location.UseNewMinDistanceDikeToeStartDitch = designOptions.NewMinDistanceDikeToeStartDitchSpecified; + if (designOptions.NewMinDistanceDikeToeStartDitchSpecified) + { + location.NewMinDistanceDikeToeStartDitch = designOptions.NewMinDistanceDikeToeStartDitch; + } - location.UseNewShoulderBaseSlope = designOptions.NewShoulderBaseSlopeSpecified; - if (designOptions.NewShoulderBaseSlopeSpecified) - { - location.NewShoulderBaseSlope = designOptions.NewShoulderBaseSlope; - } + location.UseNewDitchDefinition = designOptions.UseNewDitchDefinition; + if (designOptions.NewWidthDitchBottomSpecified) + { + location.NewWidthDitchBottom = designOptions.NewWidthDitchBottom; + } - location.UseNewMaxHeightShoulderAsFraction = designOptions.NewMaxHeightShoulderAsFractionSpecified; - if (designOptions.NewMaxHeightShoulderAsFractionSpecified) - { - location.NewMaxHeightShoulderAsFraction = designOptions.NewMaxHeightShoulderAsFraction; - } + if (designOptions.NewSlopeAngleDitchSpecified) + { + location.NewSlopeAngleDitch = designOptions.NewSlopeAngleDitch; + } - location.UseNewMinDistanceDikeToeStartDitch = designOptions.NewMinDistanceDikeToeStartDitchSpecified; - if (designOptions.NewMinDistanceDikeToeStartDitchSpecified) - { - location.NewMinDistanceDikeToeStartDitch = designOptions.NewMinDistanceDikeToeStartDitch; - } + if (designOptions.NewDepthDitchSpecified) + { + location.NewDepthDitch = designOptions.NewDepthDitch; + } - location.UseNewDitchDefinition = designOptions.UseNewDitchDefinition; - if (designOptions.NewWidthDitchBottomSpecified) - { - location.NewWidthDitchBottom = designOptions.NewWidthDitchBottom; - } + location.StabilityDesignMethod = ConversionHelper.ConvertToDamStabilityDesignMethod(designOptions.StabilityDesignMethod); + } - if (designOptions.NewSlopeAngleDitchSpecified) - { - location.NewSlopeAngleDitch = designOptions.NewSlopeAngleDitch; - } + SurfaceLine2 surfaceLine = dikeSurfaceLines.First(n => n.Name.Equals(inputLocation.SurfaceLineName)); + location.SurfaceLine = surfaceLine; + Segment segment = null; + if (segments.Count > 0) + { + segment = segments.First(s => s.Name.Equals(inputLocation.SegmentName)); + } - if (designOptions.NewDepthDitchSpecified) - { - location.NewDepthDitch = designOptions.NewDepthDitch; - } + location.Segment = segment; - location.StabilityDesignMethod = ConversionHelper.ConvertToDamStabilityDesignMethod(designOptions.StabilityDesignMethod); + if (inputLocation.DesignScenarios != null) + { + for (var j = 0; j < inputLocation.DesignScenarios.Length; j++) + { + var designScenario = new DesignScenario(); + LocationDesignScenario inputLocationDesignScenario = inputLocation.DesignScenarios[j]; + designScenario.LocationScenarioID = inputLocationDesignScenario.Id; + designScenario.PolderLevel = inputLocationDesignScenario.PolderLevel; + designScenario.RiverLevel = inputLocationDesignScenario.RiverLevel; + designScenario.RiverLevelLow = (inputLocationDesignScenario.RiverLevelLowSpecified ? inputLocationDesignScenario.RiverLevelLow : null); + designScenario.DikeTableHeight = (inputLocationDesignScenario.DikeTableHeightSpecified ? inputLocationDesignScenario.DikeTableHeight : null); + designScenario.PlLineOffsetBelowDikeTopAtRiver = inputLocationDesignScenario.PlLineOffsetBelowDikeTopAtRiver; + designScenario.PlLineOffsetBelowDikeTopAtPolder = inputLocationDesignScenario.PlLineOffsetBelowDikeTopAtPolder; + designScenario.PlLineOffsetBelowShoulderBaseInside = inputLocationDesignScenario.PlLineOffsetBelowShoulderBaseInside; + designScenario.PlLineOffsetBelowDikeToeAtPolder = inputLocationDesignScenario.PlLineOffsetBelowDikeToeAtPolder; + designScenario.UsePlLineOffsetBelowDikeCrestMiddle = inputLocationDesignScenario.PlLineOffsetBelowDikeCrestMiddleSpecified; + designScenario.PlLineOffsetBelowDikeCrestMiddle = inputLocationDesignScenario.PlLineOffsetBelowDikeCrestMiddle; + designScenario.UsePlLineOffsetFactorBelowShoulderCrest = inputLocationDesignScenario.PlLineOffsetFactorBelowShoulderCrestSpecified; + designScenario.PlLineOffsetFactorBelowShoulderCrest = inputLocationDesignScenario.PlLineOffsetFactorBelowShoulderCrest; + designScenario.HeadPl2 = (inputLocationDesignScenario.HeadPl2Specified ? inputLocationDesignScenario.HeadPl2 : null); + designScenario.HeadPl3 = (inputLocationDesignScenario.HeadPl3Specified ? inputLocationDesignScenario.HeadPl3 : null); + designScenario.HeadPl4 = (inputLocationDesignScenario.HeadPl4Specified ? inputLocationDesignScenario.HeadPl4 : null); + designScenario.UpliftCriterionStability = inputLocationDesignScenario.UpliftCriterionStability; + designScenario.UpliftCriterionPiping = inputLocationDesignScenario.UpliftCriterionPiping; + designScenario.RequiredSafetyFactorStabilityInnerSlope = inputLocationDesignScenario.RequiredSafetyFactorStabilityInnerSlope; + designScenario.RequiredSafetyFactorStabilityOuterSlope = inputLocationDesignScenario.RequiredSafetyFactorStabilityOuterSlope; + designScenario.RequiredSafetyFactorPiping = inputLocationDesignScenario.RequiredSafetyFactorPiping; + + location.Scenarios.Add(designScenario); } + } - SurfaceLine2 surfaceLine = dikeSurfaceLines.First(n => n.Name.Equals(inputLocation.SurfaceLineName)); - location.SurfaceLine = surfaceLine; - Segment segment = null; - if (segments.Count > 0) + location.DikeEmbankmentMaterial = inputLocation.DikeEmbankmentMaterial; + if (inputLocation.StabilityOptions != null) + { + string tmpPath = projectPath ?? Directory.GetCurrentDirectory(); + location.StabilityOptions = new StabilityOptions { - segment = segments.First(s => s.Name.Equals(inputLocation.SegmentName)); + SoilGeometries2DPath = Path.Combine(tmpPath, inputLocation.StabilityOptions.MapForSoilgeometries2D), + SoilDatabaseName = inputLocation.StabilityOptions.SoilDatabaseName, + StabilityZoneType = ConversionHelper.ConvertToZoneType(inputLocation.StabilityOptions.ZoneType) + }; + if (inputLocation.StabilityOptions.ForbiddenZoneFactorSpecified) + { + location.StabilityOptions.ForbiddenZoneFactor = inputLocation.StabilityOptions.ForbiddenZoneFactor; } - location.Segment = segment; - - if (inputLocation.DesignScenarios != null) + if (inputLocation.StabilityOptions.TrafficLoadSpecified) { - for (var j = 0; j < inputLocation.DesignScenarios.Length; j++) - { - var designScenario = new DesignScenario(); - LocationDesignScenario inputLocationDesignScenario = inputLocation.DesignScenarios[j]; - designScenario.LocationScenarioID = inputLocationDesignScenario.Id; - designScenario.PolderLevel = inputLocationDesignScenario.PolderLevel; - designScenario.RiverLevel = inputLocationDesignScenario.RiverLevel; - designScenario.RiverLevelLow = (inputLocationDesignScenario.RiverLevelLowSpecified ? inputLocationDesignScenario.RiverLevelLow : null); - designScenario.DikeTableHeight = (inputLocationDesignScenario.DikeTableHeightSpecified ? inputLocationDesignScenario.DikeTableHeight : null); - designScenario.PlLineOffsetBelowDikeTopAtRiver = inputLocationDesignScenario.PlLineOffsetBelowDikeTopAtRiver; - designScenario.PlLineOffsetBelowDikeTopAtPolder = inputLocationDesignScenario.PlLineOffsetBelowDikeTopAtPolder; - designScenario.PlLineOffsetBelowShoulderBaseInside = inputLocationDesignScenario.PlLineOffsetBelowShoulderBaseInside; - designScenario.PlLineOffsetBelowDikeToeAtPolder = inputLocationDesignScenario.PlLineOffsetBelowDikeToeAtPolder; - designScenario.UsePlLineOffsetBelowDikeCrestMiddle = inputLocationDesignScenario.PlLineOffsetBelowDikeCrestMiddleSpecified; - designScenario.PlLineOffsetBelowDikeCrestMiddle = inputLocationDesignScenario.PlLineOffsetBelowDikeCrestMiddle; - designScenario.UsePlLineOffsetFactorBelowShoulderCrest = inputLocationDesignScenario.PlLineOffsetFactorBelowShoulderCrestSpecified; - designScenario.PlLineOffsetFactorBelowShoulderCrest = inputLocationDesignScenario.PlLineOffsetFactorBelowShoulderCrest; - designScenario.HeadPl2 = (inputLocationDesignScenario.HeadPl2Specified ? inputLocationDesignScenario.HeadPl2 : null); - designScenario.HeadPl3 = (inputLocationDesignScenario.HeadPl3Specified ? inputLocationDesignScenario.HeadPl3 : null); - designScenario.HeadPl4 = (inputLocationDesignScenario.HeadPl4Specified ? inputLocationDesignScenario.HeadPl4 : null); - designScenario.UpliftCriterionStability = inputLocationDesignScenario.UpliftCriterionStability; - designScenario.UpliftCriterionPiping = inputLocationDesignScenario.UpliftCriterionPiping; - designScenario.RequiredSafetyFactorStabilityInnerSlope = inputLocationDesignScenario.RequiredSafetyFactorStabilityInnerSlope; - designScenario.RequiredSafetyFactorStabilityOuterSlope = inputLocationDesignScenario.RequiredSafetyFactorStabilityOuterSlope; - designScenario.RequiredSafetyFactorPiping = inputLocationDesignScenario.RequiredSafetyFactorPiping; - - location.Scenarios.Add(designScenario); - } + location.StabilityOptions.TrafficLoad = inputLocation.StabilityOptions.TrafficLoad; } - location.DikeEmbankmentMaterial = inputLocation.DikeEmbankmentMaterial; - if (inputLocation.StabilityOptions != null) + if (inputLocation.StabilityOptions.TrafficLoadDegreeOfConsolidationSpecified) { - string tmpPath = projectPath ?? Directory.GetCurrentDirectory(); - location.StabilityOptions = new StabilityOptions - { - SoilGeometries2DPath = Path.Combine(tmpPath, inputLocation.StabilityOptions.MapForSoilgeometries2D), - SoilDatabaseName = inputLocation.StabilityOptions.SoilDatabaseName, - StabilityZoneType = ConversionHelper.ConvertToZoneType(inputLocation.StabilityOptions.ZoneType) - }; - if (inputLocation.StabilityOptions.ForbiddenZoneFactorSpecified) - { - location.StabilityOptions.ForbiddenZoneFactor = inputLocation.StabilityOptions.ForbiddenZoneFactor; - } - - if (inputLocation.StabilityOptions.TrafficLoadSpecified) - { - location.StabilityOptions.TrafficLoad = inputLocation.StabilityOptions.TrafficLoad; - } - - if (inputLocation.StabilityOptions.TrafficLoadDegreeOfConsolidationSpecified) - { - location.StabilityOptions.TrafficLoadDegreeOfConsolidation = inputLocation.StabilityOptions.TrafficLoadDegreeOfConsolidation; - } - - if (inputLocation.StabilityOptions.MinimumCircleDepthSpecified) - { - location.StabilityOptions.MinimalCircleDepth = inputLocation.StabilityOptions.MinimumCircleDepth; - } + location.StabilityOptions.TrafficLoadDegreeOfConsolidation = inputLocation.StabilityOptions.TrafficLoadDegreeOfConsolidation; } - dikeLocations.Add(location); + if (inputLocation.StabilityOptions.MinimumCircleDepthSpecified) + { + location.StabilityOptions.MinimalCircleDepth = inputLocation.StabilityOptions.MinimumCircleDepth; + } } + + dikeLocations.Add(location); } + } - private static void TransferSoilProfiles1D(Io.XmlInput.SoilProfile1D[] inputSoilProfiles1D, - IList dikeSoilProfiles, SoilList soils) + private static void TransferSoilProfiles1D(Io.XmlInput.SoilProfile1D[] inputSoilProfiles1D, + IList dikeSoilProfiles, SoilList soils) + { + if (inputSoilProfiles1D != null) { - if (inputSoilProfiles1D != null) + for (var i = 0; i < inputSoilProfiles1D.Length; i++) { - for (var i = 0; i < inputSoilProfiles1D.Length; i++) - { - var soilProfile1D = new SoilProfile1D(); - Io.XmlInput.SoilProfile1D inputSoilProfile1D = inputSoilProfiles1D[i]; - soilProfile1D.Name = inputSoilProfile1D.Name; - soilProfile1D.BottomLevel = inputSoilProfile1D.BottomLevel; - AddLayers1D(inputSoilProfile1D, soilProfile1D, soils); - dikeSoilProfiles.Add(soilProfile1D); - } + var soilProfile1D = new SoilProfile1D(); + Io.XmlInput.SoilProfile1D inputSoilProfile1D = inputSoilProfiles1D[i]; + soilProfile1D.Name = inputSoilProfile1D.Name; + soilProfile1D.BottomLevel = inputSoilProfile1D.BottomLevel; + AddLayers1D(inputSoilProfile1D, soilProfile1D, soils); + dikeSoilProfiles.Add(soilProfile1D); } } + } - private static void AddLayers1D(Io.XmlInput.SoilProfile1D inputSoilProfile1D, SoilProfile1D soilProfile1D, SoilList soils) + private static void AddLayers1D(Io.XmlInput.SoilProfile1D inputSoilProfile1D, SoilProfile1D soilProfile1D, SoilList soils) + { + if (inputSoilProfile1D != null) { - if (inputSoilProfile1D != null) + for (var i = 0; i < inputSoilProfile1D.Layers1D.Length; i++) { - for (var i = 0; i < inputSoilProfile1D.Layers1D.Length; i++) - { - var layer = new SoilLayer1D(); - SoilProfile1DLayer1D inputLayer = inputSoilProfile1D.Layers1D[i]; - layer.Name = inputLayer.Name; - layer.Soil = soils.GetSoilByName(inputLayer.SoilName); - layer.TopLevel = inputLayer.TopLevel; - layer.IsAquifer = inputLayer.IsAquifer; - layer.WaterpressureInterpolationModel = ConversionHelper.ConvertToWaterpressureInterpolationModel( - inputLayer.WaterpressureInterpolationModel); - soilProfile1D.Layers.Add(layer); - } + var layer = new SoilLayer1D(); + SoilProfile1DLayer1D inputLayer = inputSoilProfile1D.Layers1D[i]; + layer.Name = inputLayer.Name; + layer.Soil = soils.GetSoilByName(inputLayer.SoilName); + layer.TopLevel = inputLayer.TopLevel; + layer.IsAquifer = inputLayer.IsAquifer; + layer.WaterpressureInterpolationModel = ConversionHelper.ConvertToWaterpressureInterpolationModel( + inputLayer.WaterpressureInterpolationModel); + soilProfile1D.Layers.Add(layer); } } + } - private static void TransferSoilProfiles2D(Io.XmlInput.SoilProfile2D[] inputSoilProfiles2D, - IList dikeSoilProfiles, SoilList soils) + private static void TransferSoilProfiles2D(Io.XmlInput.SoilProfile2D[] inputSoilProfiles2D, + IList dikeSoilProfiles, SoilList soils) + { + if (inputSoilProfiles2D != null) { - if (inputSoilProfiles2D != null) + for (var i = 0; i < inputSoilProfiles2D.Length; i++) { - for (var i = 0; i < inputSoilProfiles2D.Length; i++) - { - var soilProfile2D = new SoilProfile2D(); - Io.XmlInput.SoilProfile2D inputSoilProfile2D = inputSoilProfiles2D[i]; - soilProfile2D.Name = inputSoilProfile2D.Name; - AddPreconsolidationStresses(inputSoilProfile2D, soilProfile2D); - AddLayers2D(inputSoilProfile2D, soilProfile2D, soils); - dikeSoilProfiles.Add(soilProfile2D); - } + var soilProfile2D = new SoilProfile2D(); + Io.XmlInput.SoilProfile2D inputSoilProfile2D = inputSoilProfiles2D[i]; + soilProfile2D.Name = inputSoilProfile2D.Name; + AddPreconsolidationStresses(inputSoilProfile2D, soilProfile2D); + AddLayers2D(inputSoilProfile2D, soilProfile2D, soils); + dikeSoilProfiles.Add(soilProfile2D); } } + } - private static void AddPreconsolidationStresses(Io.XmlInput.SoilProfile2D inputSoilProfile2D, SoilProfile2D soilProfile2D) + private static void AddPreconsolidationStresses(Io.XmlInput.SoilProfile2D inputSoilProfile2D, SoilProfile2D soilProfile2D) + { + if (inputSoilProfile2D.PreconsolidationStresses != null) { - if (inputSoilProfile2D.PreconsolidationStresses != null) + for (var i = 0; i < inputSoilProfile2D.PreconsolidationStresses.Length; i++) { - for (var i = 0; i < inputSoilProfile2D.PreconsolidationStresses.Length; i++) - { - var precon = new PreConsolidationStress(); - SoilProfile2DPreconsolidationStress inputPrecon = inputSoilProfile2D.PreconsolidationStresses[i]; - precon.Name = inputPrecon.Name; - precon.StressValue = inputPrecon.StressValue; - precon.X = inputPrecon.X; - precon.Z = inputPrecon.Z; - soilProfile2D.PreconsolidationStresses.Add(precon); - } + var precon = new PreConsolidationStress(); + SoilProfile2DPreconsolidationStress inputPrecon = inputSoilProfile2D.PreconsolidationStresses[i]; + precon.Name = inputPrecon.Name; + precon.StressValue = inputPrecon.StressValue; + precon.X = inputPrecon.X; + precon.Z = inputPrecon.Z; + soilProfile2D.PreconsolidationStresses.Add(precon); } } + } - private static void AddLayers2D(Io.XmlInput.SoilProfile2D inputSoilProfile2D, SoilProfile2D soilProfile2D, SoilList soils) + private static void AddLayers2D(Io.XmlInput.SoilProfile2D inputSoilProfile2D, SoilProfile2D soilProfile2D, SoilList soils) + { + if (inputSoilProfile2D != null) { - if (inputSoilProfile2D != null) + for (var i = 0; i < inputSoilProfile2D.Layers2D.Length; i++) { - for (var i = 0; i < inputSoilProfile2D.Layers2D.Length; i++) + var layer = new SoilLayer2D { - var layer = new SoilLayer2D - { - GeometrySurface = new GeometrySurface() - }; - SoilProfile2DLayer2D inputLayer = inputSoilProfile2D.Layers2D[i]; - layer.Name = inputLayer.SoilName; - layer.Soil = soils.GetSoilByName(inputLayer.SoilName); - layer.IsAquifer = inputLayer.IsAquifer; - layer.WaterpressureInterpolationModel = ConversionHelper.ConvertToWaterpressureInterpolationModel( - inputLayer.WaterpressureInterpolationModel); - SoilProfile2DLayer2DSurfaceOuterPoint[] loop = inputLayer.Surface.OuterLoop; - for (var j = 0; j < loop.Length; j++) - { - var point = new Point2D(loop[j].X, loop[j].Z); - layer.GeometrySurface.OuterLoop.CalcPoints.Add(point); - } + GeometrySurface = new GeometrySurface() + }; + SoilProfile2DLayer2D inputLayer = inputSoilProfile2D.Layers2D[i]; + layer.Name = inputLayer.SoilName; + layer.Soil = soils.GetSoilByName(inputLayer.SoilName); + layer.IsAquifer = inputLayer.IsAquifer; + layer.WaterpressureInterpolationModel = ConversionHelper.ConvertToWaterpressureInterpolationModel( + inputLayer.WaterpressureInterpolationModel); + SoilProfile2DLayer2DSurfaceOuterPoint[] loop = inputLayer.Surface.OuterLoop; + for (var j = 0; j < loop.Length; j++) + { + var point = new Point2D(loop[j].X, loop[j].Z); + layer.GeometrySurface.OuterLoop.CalcPoints.Add(point); + } - SoilProfile2DLayer2DSurfaceInnerPoint[] innerloop = inputLayer.Surface.Innerloop; - if (innerloop != null) + SoilProfile2DLayer2DSurfaceInnerPoint[] innerloop = inputLayer.Surface.Innerloop; + if (innerloop != null) + { + var newloop = new GeometryLoop(); + for (var j = 0; j < innerloop.Length; j++) { - var newloop = new GeometryLoop(); - for (var j = 0; j < innerloop.Length; j++) - { - var point = new Point2D(innerloop[j].X, innerloop[j].Z); - newloop.CalcPoints.Add(point); - } - - layer.GeometrySurface.InnerLoops.Add(newloop); + var point = new Point2D(innerloop[j].X, innerloop[j].Z); + newloop.CalcPoints.Add(point); } - soilProfile2D.Surfaces.Add(layer); + layer.GeometrySurface.InnerLoops.Add(newloop); } + + soilProfile2D.Surfaces.Add(layer); } } + } - private static void TransferSegments(Io.XmlInput.Segment[] inputSegments, IList segments) + private static void TransferSegments(Io.XmlInput.Segment[] inputSegments, IList segments) + { + for (var i = 0; i < inputSegments.Length; i++) { - for (var i = 0; i < inputSegments.Length; i++) - { - var segment = new Segment(); - Io.XmlInput.Segment inputSegment = inputSegments[i]; - segment.Name = inputSegment.Name; - AddSoilProfileProbabilities(inputSegment, segment); - segments.Add(segment); - } + var segment = new Segment(); + Io.XmlInput.Segment inputSegment = inputSegments[i]; + segment.Name = inputSegment.Name; + AddSoilProfileProbabilities(inputSegment, segment); + segments.Add(segment); } + } - private static void AddSoilProfileProbabilities(Io.XmlInput.Segment inputSegment, Segment segment) + private static void AddSoilProfileProbabilities(Io.XmlInput.Segment inputSegment, Segment segment) + { + if (inputSegment.SoilGeometryProbability != null) { - if (inputSegment.SoilGeometryProbability != null) + for (var i = 0; i < inputSegment.SoilGeometryProbability.Length; i++) { - for (var i = 0; i < inputSegment.SoilGeometryProbability.Length; i++) + var soilGeometryProbability = new SoilGeometryProbability(); + SegmentSoilGeometryProbability inputSoilGeometryProbability = inputSegment.SoilGeometryProbability[i]; + soilGeometryProbability.Probability = inputSoilGeometryProbability.Probability; + if (inputSoilGeometryProbability.SegmentFailureMechanismTypeSpecified) { - var soilGeometryProbability = new SoilGeometryProbability(); - SegmentSoilGeometryProbability inputSoilGeometryProbability = inputSegment.SoilGeometryProbability[i]; - soilGeometryProbability.Probability = inputSoilGeometryProbability.Probability; - if (inputSoilGeometryProbability.SegmentFailureMechanismTypeSpecified) + soilGeometryProbability.SegmentFailureMechanismType = ConversionHelper.ConvertToSegmentFailureMechanismSystemType(inputSoilGeometryProbability.SegmentFailureMechanismType); + } + else + { + soilGeometryProbability.SegmentFailureMechanismType = null; + } + + soilGeometryProbability.SoilProfileType = ConversionHelper.ConvertToSoilGeometryType(inputSoilGeometryProbability.SoilProfileType); + switch (soilGeometryProbability.SoilProfileType) + { + case SoilProfileType.ProfileType1D: { - soilGeometryProbability.SegmentFailureMechanismType = ConversionHelper.ConvertToSegmentFailureMechanismSystemType(inputSoilGeometryProbability.SegmentFailureMechanismType); + soilGeometryProbability.SoilProfile1DName = inputSoilGeometryProbability.SoilProfileName; + break; } - else + case SoilProfileType.ProfileType2D: { - soilGeometryProbability.SegmentFailureMechanismType = null; + soilGeometryProbability.SoilProfile2DName = inputSoilGeometryProbability.SoilProfileName; + break; } - - soilGeometryProbability.SoilProfileType = ConversionHelper.ConvertToSoilGeometryType(inputSoilGeometryProbability.SoilProfileType); - switch (soilGeometryProbability.SoilProfileType) + case SoilProfileType.ProfileTypeStiFile: { - case SoilProfileType.ProfileType1D: - { - soilGeometryProbability.SoilProfile1DName = inputSoilGeometryProbability.SoilProfileName; - break; - } - case SoilProfileType.ProfileType2D: - { - soilGeometryProbability.SoilProfile2DName = inputSoilGeometryProbability.SoilProfileName; - break; - } - case SoilProfileType.ProfileTypeStiFile: - { - soilGeometryProbability.StiFileName = inputSoilGeometryProbability.SoilProfileName; - break; - } + soilGeometryProbability.StiFileName = inputSoilGeometryProbability.SoilProfileName; + break; } - - segment.SoilProfileProbabilities.Add(soilGeometryProbability); } + + segment.SoilProfileProbabilities.Add(soilGeometryProbability); } } }