Index: DamEngine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlInput.cs =================================================================== diff -u -r3893 -r4000 --- DamEngine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlInput.cs (.../FillDamFromXmlInput.cs) (revision 3893) +++ DamEngine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlInput.cs (.../FillDamFromXmlInput.cs) (revision 4000) @@ -34,6 +34,9 @@ using Deltares.DamEngine.Io.XmlInput; using Location = Deltares.DamEngine.Data.General.Location; using Segment = Deltares.DamEngine.Data.General.Segment; +using Sensor = Deltares.DamEngine.Io.XmlInput.Sensor; +using SensorGroup = Deltares.DamEngine.Io.XmlInput.SensorGroup; +using SensorLocation = Deltares.DamEngine.Io.XmlInput.SensorLocation; using Soil = Deltares.DamEngine.Io.XmlInput.Soil; using SoilProfile1D = Deltares.DamEngine.Data.Geotechnics.SoilProfile1D; using SoilProfile2D = Deltares.DamEngine.Data.Geotechnics.SoilProfile2D; @@ -67,17 +70,19 @@ { damProjectData.MaxCalculationCores = input.MaxCalculationCores; } + TransferAnalysisSpecification(input, damProjectData); TransferStabilityParameters(input, damProjectData); TransferSurfaceLines(input.SurfaceLines, dike.SurfaceLines2); dike.SoilList = new SoilList(); TransferSoils(input.Soils, dike.SoilList.Soils); - var messages = TransferAquiferSoils(input.AquiferSoils, dike.SoilList); + 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); @@ -87,6 +92,7 @@ dike.InputTimeSerieCollection = new TimeSerieCollection(); TransferInputTimeSeries(input.OperationalInputTimeSeries, dike.InputTimeSerieCollection); } + if (input.SensorData != null) { damProjectData.SensorData = new SensorData(); @@ -98,19 +104,58 @@ return damProjectData; } + /// + /// Finds the SoilProfile1D by name. + /// + /// The soil profiles. + /// The name. + /// + public static SoilProfile1D FindSoilProfile1DByName(IList soilProfiles, string name) + { + foreach (SoilProfile1D soilProfile1D in soilProfiles) + { + if (soilProfile1D.Name == name) + { + return soilProfile1D; + } + } + + 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) + { + if (soilProfile2D.Name == name) + { + return soilProfile2D; + } + } + + return null; + } + private static void TransferSensorData(InputSensorData inputSensorData, SensorData sensorData, IList locations) { // Transfer sensors - foreach (var inputSensor in inputSensorData.Sensors) + foreach (Sensor inputSensor in inputSensorData.Sensors) { var plLineMappings = new PlLineType[inputSensor.PlLineMapping.Length]; - int plLineMappingIndex = 0; - foreach (var plLineMapping in inputSensor.PlLineMapping) + var plLineMappingIndex = 0; + foreach (SensorPlLineMapping plLineMapping in inputSensor.PlLineMapping) { plLineMappings[plLineMappingIndex] = ConversionHelper.ConvertToPlLineType(plLineMapping.PLineType); plLineMappingIndex++; } - sensorData.Sensors.Add(new Data.General.Sensors.Sensor() + + sensorData.Sensors.Add(new Data.General.Sensors.Sensor { ID = inputSensor.Id, Name = inputSensor.Name, @@ -121,20 +166,21 @@ } // Transfer sensorgroups - foreach (var inputSensorGroup in inputSensorData.SensorGroups) + foreach (SensorGroup inputSensorGroup in inputSensorData.SensorGroups) { var sensorGroup = new Data.General.Sensors.SensorGroup(); sensorGroup.ID = inputSensorGroup.Id; - foreach (var sensorId in inputSensorGroup.SensorIds) + foreach (SensorGroupSensorIds sensorId in inputSensorGroup.SensorIds) { - var sensor = sensorData.Sensors.First(s => s.ID.Equals(sensorId.SensorId)); + Data.General.Sensors.Sensor sensor = sensorData.Sensors.First(s => s.ID.Equals(sensorId.SensorId)); sensorGroup.Add(sensor); } + sensorData.SensorGroups.Add(sensorGroup); } // Transfer sensorlocations - foreach (var inputSensorLocation in inputSensorData.SensorLocations) + foreach (SensorLocation inputSensorLocation in inputSensorData.SensorLocations) { var sensorLocation = new Data.General.Sensors.SensorLocation(); sensorLocation.Location = locations.First(l => l.Name.Equals(inputSensorLocation.LocationId)); @@ -154,9 +200,9 @@ private static void TransferInputTimeSeries(TimeSerie[] inputOperationalInputTimeSeries, TimeSerieCollection timeSerieCollection) { - foreach (var inputTimeSerie in inputOperationalInputTimeSeries) + foreach (TimeSerie inputTimeSerie in inputOperationalInputTimeSeries) { - var timeSerie = timeSerieCollection.AddNewSeries(inputTimeSerie.LocationId); + Data.General.TimeSeries.TimeSerie timeSerie = timeSerieCollection.AddNewSeries(inputTimeSerie.LocationId); timeSerie.ParameterId = inputTimeSerie.ParameterId; timeSerie.ForecastDateTime = inputTimeSerie.ForecastDateTime; timeSerie.Type = inputTimeSerie.Type; @@ -177,20 +223,21 @@ timeSerie.TimeStep.Unit = ConversionHelper.ConvertToTimeStepUnit(inputTimeSerie.TimeStep.TimeStepUnit); if (inputTimeSerie.Entries.TimeSerieEntry != null) { - for (int i = 0; i < inputTimeSerie.Entries.TimeSerieEntry.Length; i++) + for (var i = 0; i < inputTimeSerie.Entries.TimeSerieEntry.Length; i++) { - var entry = inputTimeSerie.Entries.TimeSerieEntry[i]; + 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 }; } - TimeSerieEntry timeSerieEntry = new TimeSerieEntry() + + var timeSerieEntry = new TimeSerieEntry { DateTime = entry.DateTime, Value = entry.Value, @@ -207,13 +254,13 @@ private static List TransferAquiferSoils(InputAquiferSoil[] inputAquiferSoils, SoilList soilList) { - List validationMessages = new List(); + var validationMessages = new List(); if (inputAquiferSoils != null) { soilList.AquiferDictionary.Clear(); foreach (InputAquiferSoil aquiferSoil in inputAquiferSoils) { - var soil = soilList.GetSoilByName(aquiferSoil.Soilname); + Data.Geotechnics.Soil soil = soilList.GetSoilByName(aquiferSoil.Soilname); if (!soilList.AquiferDictionary.ContainsKey(soil.Name)) { soilList.AquiferDictionary.Add(soil.Name, aquiferSoil.IsAquifer); @@ -229,6 +276,7 @@ } } } + return validationMessages; } @@ -254,6 +302,7 @@ { calculationSpecification.StabilityModelType = ConversionHelper.ConvertToStabilityModelType(input.StabilityModelType); } + damProjectData.DamProjectCalculationSpecification.DamCalculationSpecifications.Add(calculationSpecification); } @@ -263,82 +312,98 @@ { if (damProjectData.DamProjectCalculationSpecification != null) { - var curSpec = damProjectData.DamProjectCalculationSpecification.CurrentSpecification; + DamFailureMechanismeCalculationSpecification curSpec = damProjectData.DamProjectCalculationSpecification.CurrentSpecification; if (curSpec != null) { curSpec.FailureMechanismParametersMStab = new FailureMechanismParametersMStab(); curSpec.FailureMechanismParametersMStab.MStabParameters = new MStabParameters(); - var curStabParamas = curSpec.FailureMechanismParametersMStab.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.SlipCircleDefinition = new SlipCircleDefinition(); - var slipCircleDefinition = curStabParamas.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.BishopTangentLinesDistanceSpecified) { slipCircleDefinition.BishopTangentLinesDistance = input.StabilityParameters.BishopTangentLinesDistance; } + if (input.StabilityParameters.BishopGridVerticalPointsCountSpecified) { slipCircleDefinition.BishopGridVerticalPointCount = input.StabilityParameters.BishopGridVerticalPointsCount; } + if (input.StabilityParameters.BishopGridVerticalPointsDistanceSpecified) { slipCircleDefinition.BishopGridVerticalPointDistance = input.StabilityParameters.BishopGridVerticalPointsDistance; } + if (input.StabilityParameters.BishopGridHorizontalPointsCountSpecified) { slipCircleDefinition.BishopGridHorizontalPointCount = input.StabilityParameters.BishopGridHorizontalPointsCount; } + if (input.StabilityParameters.BishopGridHorizontalPointsDistanceSpecified) { slipCircleDefinition.BishopGridHorizontalPointDistance = input.StabilityParameters.BishopGridHorizontalPointsDistance; } + if (input.StabilityParameters.UpliftVanTangentLinesDefinitionSpecified) { slipCircleDefinition.UpliftVanTangentLinesDefinition = ConversionHelper.ConvertToTangentLinesDefinition(input.StabilityParameters.UpliftVanTangentLinesDefinition); } + if (input.StabilityParameters.UpliftVanTangentLinesDistanceSpecified) { slipCircleDefinition.UpliftVanTangentLinesDistance = input.StabilityParameters.UpliftVanTangentLinesDistance; } + if (input.StabilityParameters.UpliftVanGridLeftVerticalPointsCountSpecified) { slipCircleDefinition.UpliftVanLeftGridVerticalPointCount = input.StabilityParameters.UpliftVanGridLeftVerticalPointsCount; } + if (input.StabilityParameters.UpliftVanGridLeftVerticalPointsDistanceSpecified) { slipCircleDefinition.UpliftVanLeftGridVerticalPointDistance = input.StabilityParameters.UpliftVanGridLeftVerticalPointsDistance; } + if (input.StabilityParameters.UpliftVanGridLeftHorizontalPointsCountSpecified) { slipCircleDefinition.UpliftVanLeftGridHorizontalPointCount = input.StabilityParameters.UpliftVanGridLeftHorizontalPointsCount; } + if (input.StabilityParameters.UpliftVanGridLeftHorizontalPointsDistanceSpecified) { slipCircleDefinition.UpliftVanLeftGridHorizontalPointDistance = input.StabilityParameters.UpliftVanGridLeftHorizontalPointsDistance; } + if (input.StabilityParameters.UpliftVanGridRightVerticalPointsCountSpecified) { slipCircleDefinition.UpliftVanRightGridVerticalPointCount = input.StabilityParameters.UpliftVanGridRightVerticalPointsCount; } + if (input.StabilityParameters.UpliftVanGridRightVerticalPointsDistanceSpecified) { slipCircleDefinition.UpliftVanRightGridVerticalPointDistance = input.StabilityParameters.UpliftVanGridRightVerticalPointsDistance; } + if (input.StabilityParameters.UpliftVanGridRightHorizontalPointsCountSpecified) { slipCircleDefinition.UpliftVanRightGridHorizontalPointCount = input.StabilityParameters.UpliftVanGridRightHorizontalPointsCount; } + if (input.StabilityParameters.UpliftVanGridRightHorizontalPointsDistanceSpecified) { slipCircleDefinition.UpliftVanRightGridHorizontalPointDistance = input.StabilityParameters.UpliftVanGridRightHorizontalPointsDistance; @@ -354,35 +419,38 @@ { throw new ArgumentNullException(Resources.NoInputDefined); } + if (input.Locations == null) { throw new ArgumentNullException(Resources.NoLocationsDefined); } + foreach (Io.XmlInput.Location location in input.Locations) { if (location.DesignScenarios == null) { throw new ArgumentNullException(Resources.NoDesignScenariosInLocation); } } + if (input.SurfaceLines == null) { throw new ArgumentNullException(Resources.NoSurfaceLinesDefined); } - else + + foreach (SurfaceLine surfaceLine in input.SurfaceLines) { - foreach (var surfaceLine in input.SurfaceLines) + if ((surfaceLine.Points == null) || (surfaceLine.Points.Length < 1)) { - if ((surfaceLine.Points == null) || (surfaceLine.Points.Length < 1)) - { - throw new ArgumentNullException(string.Format(Resources.NoPointsInSurfaceLine, surfaceLine.Name)); - } + throw new ArgumentNullException(string.Format(Resources.NoPointsInSurfaceLine, surfaceLine.Name)); } } + if (input.Soils == null) { throw new ArgumentNullException(Resources.NoSoilsDefined); } + if (input.Segments == null) { throw new ArgumentNullException(Resources.NoSegmentsDefined); @@ -396,40 +464,41 @@ private static void PostProcess(DamProjectData project) { // find proper profiles for segments - foreach (var segment in project.Segments) + foreach (Segment segment in project.Segments) { - foreach (var segmentSoilProfileProbability in segment.SoilProfileProbabilities) + foreach (SoilGeometryProbability segmentSoilProfileProbability in segment.SoilProfileProbabilities) { if (segmentSoilProfileProbability.SoilProfileType == SoilProfileType.ProfileType1D) { segmentSoilProfileProbability.SoilProfile1D = FindSoilProfile1DByName(project.Dike.SoilProfiles, - segmentSoilProfileProbability.SoilProfile1DName); + segmentSoilProfileProbability.SoilProfile1DName); } else { segmentSoilProfileProbability.SoilProfile2D = FindSoilProfile2DByName(project.Dike.SoilProfiles2D, - segmentSoilProfileProbability.SoilProfile2DName); + segmentSoilProfileProbability.SoilProfile2DName); } } } // Set locations for scenarios - foreach (var location in project.Dike.Locations) + foreach (Location location in project.Dike.Locations) { - foreach (var designScenario in location.Scenarios) + foreach (DesignScenario designScenario in location.Scenarios) { designScenario.Location = location; } + location.SoilList = project.Dike.SoilList; } } private static void TransferSoils(Soil[] inputSoils, List soils) { - for (int i = 0; i < inputSoils.Length; i++) + for (var i = 0; i < inputSoils.Length; i++) { var soil = new Data.Geotechnics.Soil(); - var inputSoil = inputSoils[i]; + Soil inputSoil = inputSoils[i]; soil.Name = inputSoil.Name; soil.AbovePhreaticLevel = inputSoil.AbovePhreaticLevelSpecified ? inputSoil.AbovePhreaticLevel : double.NaN; soil.BelowPhreaticLevel = inputSoil.BelowPhreaticLevelSpecified ? inputSoil.BelowPhreaticLevel : double.NaN; @@ -439,21 +508,19 @@ 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 ? - (ShearStrengthModel?)ConversionHelper.ConvertToShearStrengthModel(inputSoil.ShearStrengthModel) : null; - soil.UseDefaultShearStrengthModel = inputSoil.UseDefaultShearStrengthModelSpecified ? - (bool?)inputSoil.UseDefaultShearStrengthModel : null; - if (soil.UseDefaultShearStrengthModel.HasValue && soil.UseDefaultShearStrengthModel.Value && + 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 ? - (DilatancyType?)ConversionHelper.ConvertToDilatancyType(inputSoil.DilatancyType) : null; + 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; @@ -463,10 +530,10 @@ private static void TransferSurfaceLines(SurfaceLine[] inputSurfaceLines, IList dikeSurfaceLines) { - for (int i = 0; i < inputSurfaceLines.Length; i++) + for (var i = 0; i < inputSurfaceLines.Length; i++) { var surfaceLine = new SurfaceLine2(); - var inputSurfaceLine = inputSurfaceLines[i]; + SurfaceLine inputSurfaceLine = inputSurfaceLines[i]; surfaceLine.Name = inputSurfaceLine.Name; surfaceLine.CharacteristicPoints.Geometry = surfaceLine.Geometry; AddPointsToSurfaceLine(inputSurfaceLine, surfaceLine); @@ -477,45 +544,51 @@ private static void AddPointsToSurfaceLine(SurfaceLine inputSurfaceLine, SurfaceLine2 surfaceLine) { surfaceLine.Geometry = new GeometryPointString(); - for (int j = 0; j < inputSurfaceLine.Points.Length; j++) + for (var j = 0; j < inputSurfaceLine.Points.Length; j++) { - var inputPoint = inputSurfaceLine.Points[j]; - var geometryPoint = new GeometryPoint() + 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)); } + surfaceLine.Geometry.SyncCalcPoints(); } private static void TransferLocations(string projectPath, Io.XmlInput.Location[] inputLocations, - IList dikeLocations, IList dikeSurfaceLines, IList segments) + IList dikeLocations, IList dikeSurfaceLines, IList segments) { - for (int i = 0; i < inputLocations.Length; i++) + for (var i = 0; i < inputLocations.Length; i++) { var location = new Location(); - var inputLocation = inputLocations[i]; + Io.XmlInput.Location inputLocation = inputLocations[i]; location.Name = inputLocation.Name; if (inputLocation.DistanceToEntryPointSpecified) { location.DistanceToEntryPoint = inputLocation.DistanceToEntryPoint; } - if (inputLocation.XSoilGeometry2DOriginSpecified) location.XSoilGeometry2DOrigin = inputLocation.XSoilGeometry2DOrigin; + + if (inputLocation.XSoilGeometry2DOriginSpecified) + { + location.XSoilGeometry2DOrigin = inputLocation.XSoilGeometry2DOrigin; + } + // Waternet options - var waternetOptions = inputLocation.WaternetOptions; + 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; - + // Design options - var designOptions = inputLocation.DesignOptions; + LocationDesignOptions designOptions = inputLocation.DesignOptions; if (designOptions != null) { location.RedesignDikeHeight = designOptions.RedesignDikeHeight; @@ -528,23 +601,63 @@ location.SlopeAdaptionEndCotangent = designOptions.SlopeAdaptionEndCotangent; location.SlopeAdaptionStepCotangent = designOptions.SlopeAdaptionStepCotangent; location.UseNewDikeTopWidth = designOptions.NewDikeTopWidthSpecified; - if (designOptions.NewDikeTopWidthSpecified) location.NewDikeTopWidth = designOptions.NewDikeTopWidth; + if (designOptions.NewDikeTopWidthSpecified) + { + location.NewDikeTopWidth = designOptions.NewDikeTopWidth; + } + location.UseNewDikeSlopeInside = designOptions.NewDikeSlopeInsideSpecified; - if (designOptions.NewDikeSlopeInsideSpecified) location.NewDikeSlopeInside = designOptions.NewDikeSlopeInside; + if (designOptions.NewDikeSlopeInsideSpecified) + { + location.NewDikeSlopeInside = designOptions.NewDikeSlopeInside; + } + location.UseNewDikeSlopeOutside = designOptions.NewDikeSlopeOutsideSpecified; - if (designOptions.NewDikeSlopeOutsideSpecified) location.NewDikeSlopeOutside = designOptions.NewDikeSlopeOutside; + if (designOptions.NewDikeSlopeOutsideSpecified) + { + location.NewDikeSlopeOutside = designOptions.NewDikeSlopeOutside; + } + location.UseNewShoulderTopSlope = designOptions.NewShoulderTopSlopeSpecified; - if (designOptions.NewShoulderTopSlopeSpecified) location.NewShoulderTopSlope = designOptions.NewShoulderTopSlope; + if (designOptions.NewShoulderTopSlopeSpecified) + { + location.NewShoulderTopSlope = designOptions.NewShoulderTopSlope; + } + location.UseNewShoulderBaseSlope = designOptions.NewShoulderBaseSlopeSpecified; - if (designOptions.NewShoulderBaseSlopeSpecified) location.NewShoulderBaseSlope = designOptions.NewShoulderBaseSlope; + if (designOptions.NewShoulderBaseSlopeSpecified) + { + location.NewShoulderBaseSlope = designOptions.NewShoulderBaseSlope; + } + location.UseNewMaxHeightShoulderAsFraction = designOptions.NewMaxHeightShoulderAsFractionSpecified; - if (designOptions.NewMaxHeightShoulderAsFractionSpecified) location.NewMaxHeightShoulderAsFraction = designOptions.NewMaxHeightShoulderAsFraction; + if (designOptions.NewMaxHeightShoulderAsFractionSpecified) + { + location.NewMaxHeightShoulderAsFraction = designOptions.NewMaxHeightShoulderAsFraction; + } + location.UseNewMinDistanceDikeToeStartDitch = designOptions.NewMinDistanceDikeToeStartDitchSpecified; - if (designOptions.NewMinDistanceDikeToeStartDitchSpecified) location.NewMinDistanceDikeToeStartDitch = designOptions.NewMinDistanceDikeToeStartDitch; + if (designOptions.NewMinDistanceDikeToeStartDitchSpecified) + { + location.NewMinDistanceDikeToeStartDitch = designOptions.NewMinDistanceDikeToeStartDitch; + } + location.UseNewDitchDefinition = designOptions.UseNewDitchDefinition; - if (designOptions.NewWidthDitchBottomSpecified) location.NewWidthDitchBottom = designOptions.NewWidthDitchBottom; - if (designOptions.NewSlopeAngleDitchSpecified) location.NewSlopeAngleDitch = designOptions.NewSlopeAngleDitch; - if (designOptions.NewDepthDitchSpecified) location.NewDepthDitch = designOptions.NewDepthDitch; + if (designOptions.NewWidthDitchBottomSpecified) + { + location.NewWidthDitchBottom = designOptions.NewWidthDitchBottom; + } + + if (designOptions.NewSlopeAngleDitchSpecified) + { + location.NewSlopeAngleDitch = designOptions.NewSlopeAngleDitch; + } + + if (designOptions.NewDepthDitchSpecified) + { + location.NewDepthDitch = designOptions.NewDepthDitch; + } + location.StabilityDesignMethod = ConversionHelper.ConvertToDamStabilityDesignMethod(designOptions.StabilityDesignMethod); } @@ -555,19 +668,20 @@ { segment = segments.First(s => s.Name.Equals(inputLocation.SegmentName)); } + location.Segment = segment; if (inputLocation.DesignScenarios != null) { - for (int j = 0; j < inputLocation.DesignScenarios.Length; j++) + for (var j = 0; j < inputLocation.DesignScenarios.Length; j++) { var designScenario = new DesignScenario(); - var inputLocationDesignScenario = inputLocation.DesignScenarios[j]; + LocationDesignScenario inputLocationDesignScenario = inputLocation.DesignScenarios[j]; designScenario.LocationScenarioID = inputLocationDesignScenario.Id; designScenario.PolderLevel = inputLocationDesignScenario.PolderLevel; designScenario.RiverLevel = inputLocationDesignScenario.RiverLevel; - designScenario.RiverLevelLow = (inputLocationDesignScenario.RiverLevelLowSpecified ? (double?)inputLocationDesignScenario.RiverLevelLow : null); - designScenario.DikeTableHeight = (inputLocationDesignScenario.DikeTableHeightSpecified ? (double?)inputLocationDesignScenario.DikeTableHeight : null); + 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; @@ -576,9 +690,9 @@ designScenario.PlLineOffsetBelowDikeCrestMiddle = inputLocationDesignScenario.PlLineOffsetBelowDikeCrestMiddle; designScenario.UsePlLineOffsetFactorBelowShoulderCrest = inputLocationDesignScenario.PlLineOffsetFactorBelowShoulderCrestSpecified; designScenario.PlLineOffsetFactorBelowShoulderCrest = inputLocationDesignScenario.PlLineOffsetFactorBelowShoulderCrest; - designScenario.HeadPl2 = (inputLocationDesignScenario.HeadPl2Specified ? (double?)inputLocationDesignScenario.HeadPl2 : null); - designScenario.HeadPl3 = (inputLocationDesignScenario.HeadPl3Specified ? (double?)inputLocationDesignScenario.HeadPl3 : null); - designScenario.HeadPl4 = (inputLocationDesignScenario.HeadPl4Specified ? (double?)inputLocationDesignScenario.HeadPl4 : null); + 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; @@ -588,10 +702,11 @@ location.Scenarios.Add(designScenario); } } + location.DikeEmbankmentMaterial = inputLocation.DikeEmbankmentMaterial; if (inputLocation.StabilityOptions != null) { - var tmpPath = projectPath ?? Directory.GetCurrentDirectory(); + string tmpPath = projectPath ?? Directory.GetCurrentDirectory(); location.StabilityOptions = new StabilityOptions { SoilGeometries2DPath = Path.Combine(tmpPath, inputLocation.StabilityOptions.MapForSoilgeometries2D), @@ -602,32 +717,36 @@ { 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; } } + dikeLocations.Add(location); } } private static void TransferSoilProfiles1D(Io.XmlInput.SoilProfile1D[] inputSoilProfiles1D, - IList dikeSoilProfiles, SoilList soils) + IList dikeSoilProfiles, SoilList soils) { if (inputSoilProfiles1D != null) { - for (int i = 0; i < inputSoilProfiles1D.Length; i++) + for (var i = 0; i < inputSoilProfiles1D.Length; i++) { var soilProfile1D = new SoilProfile1D(); - var inputSoilProfile1D = inputSoilProfiles1D[i]; + Io.XmlInput.SoilProfile1D inputSoilProfile1D = inputSoilProfiles1D[i]; soilProfile1D.Name = inputSoilProfile1D.Name; soilProfile1D.BottomLevel = inputSoilProfile1D.BottomLevel; AddLayers1D(inputSoilProfile1D, soilProfile1D, soils); @@ -640,10 +759,10 @@ { if (inputSoilProfile1D != null) { - for (int i = 0; i < inputSoilProfile1D.Layers1D.Length; i++) + for (var i = 0; i < inputSoilProfile1D.Layers1D.Length; i++) { var layer = new SoilLayer1D(); - var inputLayer = inputSoilProfile1D.Layers1D[i]; + SoilProfile1DLayer1D inputLayer = inputSoilProfile1D.Layers1D[i]; layer.Name = inputLayer.Name; layer.Soil = soils.GetSoilByName(inputLayer.SoilName); layer.TopLevel = inputLayer.TopLevel; @@ -656,14 +775,14 @@ } private static void TransferSoilProfiles2D(Io.XmlInput.SoilProfile2D[] inputSoilProfiles2D, - IList dikeSoilProfiles, SoilList soils) + IList dikeSoilProfiles, SoilList soils) { if (inputSoilProfiles2D != null) { - for (int i = 0; i < inputSoilProfiles2D.Length; i++) + for (var i = 0; i < inputSoilProfiles2D.Length; i++) { var soilProfile2D = new SoilProfile2D(); - var inputSoilProfile2D = inputSoilProfiles2D[i]; + Io.XmlInput.SoilProfile2D inputSoilProfile2D = inputSoilProfiles2D[i]; soilProfile2D.Name = inputSoilProfile2D.Name; AddPreconsolidationStresses(inputSoilProfile2D, soilProfile2D); AddLayers2D(inputSoilProfile2D, soilProfile2D, soils); @@ -676,10 +795,10 @@ { if (inputSoilProfile2D.PreconsolidationStresses != null) { - for (int i = 0; i < inputSoilProfile2D.PreconsolidationStresses.Length; i++) + for (var i = 0; i < inputSoilProfile2D.PreconsolidationStresses.Length; i++) { var precon = new PreConsolidationStress(); - var inputPrecon = inputSoilProfile2D.PreconsolidationStresses[i]; + SoilProfile2DPreconsolidationStress inputPrecon = inputSoilProfile2D.PreconsolidationStresses[i]; precon.Name = inputPrecon.Name; precon.StressValue = inputPrecon.StressValue; precon.X = inputPrecon.X; @@ -693,46 +812,49 @@ { if (inputSoilProfile2D != null) { - for (int i = 0; i < inputSoilProfile2D.Layers2D.Length; i++) + for (var i = 0; i < inputSoilProfile2D.Layers2D.Length; i++) { var layer = new SoilLayer2D { GeometrySurface = new GeometrySurface() }; - var inputLayer = inputSoilProfile2D.Layers2D[i]; + 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); - var loop = inputLayer.Surface.OuterLoop; - for (int j = 0; j < loop.Length; j++) + 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); } - var innerloop = inputLayer.Surface.Innerloop; + + SoilProfile2DLayer2DSurfaceInnerPoint[] innerloop = inputLayer.Surface.Innerloop; if (innerloop != null) { var newloop = new GeometryLoop(); - for (int j = 0; j < innerloop.Length; j++) + 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); } + soilProfile2D.Surfaces.Add(layer); } } } private static void TransferSegments(Io.XmlInput.Segment[] inputSegments, IList segments) { - for (int i = 0; i < inputSegments.Length; i++) + for (var i = 0; i < inputSegments.Length; i++) { var segment = new Segment(); - var inputSegment = inputSegments[i]; + Io.XmlInput.Segment inputSegment = inputSegments[i]; segment.Name = inputSegment.Name; AddSoilProfileProbabilities(inputSegment, segment); segments.Add(segment); @@ -743,10 +865,10 @@ { if (inputSegment.SoilGeometryProbability != null) { - for (int i = 0; i < inputSegment.SoilGeometryProbability.Length; i++) + for (var i = 0; i < inputSegment.SoilGeometryProbability.Length; i++) { var soilGeometryProbability = new SoilGeometryProbability(); - var inputSoilGeometryProbability = inputSegment.SoilGeometryProbability[i]; + SegmentSoilGeometryProbability inputSoilGeometryProbability = inputSegment.SoilGeometryProbability[i]; soilGeometryProbability.Probability = inputSoilGeometryProbability.Probability; if (inputSoilGeometryProbability.SegmentFailureMechanismTypeSpecified) { @@ -756,62 +878,30 @@ { soilGeometryProbability.SegmentFailureMechanismType = null; } + soilGeometryProbability.SoilProfileType = ConversionHelper.ConvertToSoilGeometryType(inputSoilGeometryProbability.SoilProfileType); switch (soilGeometryProbability.SoilProfileType) { case SoilProfileType.ProfileType1D: - { - soilGeometryProbability.SoilProfile1DName = inputSoilGeometryProbability.SoilProfileName; - break; - } + { + soilGeometryProbability.SoilProfile1DName = inputSoilGeometryProbability.SoilProfileName; + break; + } case SoilProfileType.ProfileType2D: - { - soilGeometryProbability.SoilProfile2DName = inputSoilGeometryProbability.SoilProfileName; - break; - } + { + soilGeometryProbability.SoilProfile2DName = inputSoilGeometryProbability.SoilProfileName; + break; + } case SoilProfileType.ProfileTypeStiFile: - { - soilGeometryProbability.StiFileName = inputSoilGeometryProbability.SoilProfileName; - break; - } + { + soilGeometryProbability.StiFileName = inputSoilGeometryProbability.SoilProfileName; + break; + } } segment.SoilProfileProbabilities.Add(soilGeometryProbability); } } } - - /// - /// Finds the SoilProfile1D by name. - /// - /// The soil profiles. - /// The name. - /// - public static SoilProfile1D FindSoilProfile1DByName(IList soilProfiles, string name) - { - foreach (var soilProfile1D in soilProfiles) - { - if (soilProfile1D.Name == name) - return soilProfile1D; - } - return null; - } - - /// - /// Finds the SoilProfile2D by name. - /// - /// The soil profiles. - /// The name. - /// - public static SoilProfile2D FindSoilProfile2DByName(IList soilProfiles, string name) - { - foreach (var soilProfile2D in soilProfiles) - { - if (soilProfile2D.Name == name) - return soilProfile2D; - } - return null; - } - } -} +} \ No newline at end of file