Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamEngineIo/FillXmlInputFromDamUi.cs =================================================================== diff -u -r2109 -r2135 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamEngineIo/FillXmlInputFromDamUi.cs (.../FillXmlInputFromDamUi.cs) (revision 2109) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamEngineIo/FillXmlInputFromDamUi.cs (.../FillXmlInputFromDamUi.cs) (revision 2135) @@ -26,8 +26,10 @@ using Deltares.Dam.Data.Sensors; using Deltares.DamEngine.Io; using Deltares.DamEngine.Io.XmlInput; +using Deltares.Geotechnics.Soils; using Deltares.Geotechnics.SurfaceLines; using Soil = Deltares.Geotechnics.Soils.Soil; +using SoilProfile1D = Deltares.DamEngine.Io.XmlInput.SoilProfile1D; using SurfaceLine = Deltares.DamEngine.Io.XmlInput.SurfaceLine; namespace Deltares.Dam.Data.DamEngineIo @@ -84,16 +86,65 @@ input.Soils = new DamEngine.Io.XmlInput.Soil[dike.SoilList.Soils.Count]; TransferSoils(dike.SoilList.Soils, input.Soils); TransferAquiferSoils(dike.SoilList.AquiferDictionary, input); - + //var sf = dike.Scenarios[0].Location.SurfaceLine2; + // Process soilprofiles - if (dike.SoilProfiles != null) + if (damProjectData.DamProjectCalculationSpecification.SelectedStabilityKernelType == StabilityKernelType.DamClassicStability) { - var profilesCount = dike.SoilProfiles.Count; - input.SoilProfiles1D = new DamEngine.Io.XmlInput.SoilProfile1D[profilesCount]; - TransferSoilProfiles1D(dike.SoilProfiles, input.SoilProfiles1D); + // Fill 1D profiles in case of DamClassicStability + if (dike.SoilProfiles != null) + { + var profilesCount = dike.SoilProfiles.Count; + input.SoilProfiles1D = new DamEngine.Io.XmlInput.SoilProfile1D[profilesCount]; + TransferSoilProfiles1D(dike.SoilProfiles, input.SoilProfiles1D); + // Fill profiles2D too + //DataEventPublisher.InvokeAndPublish(() => +// { +// var soilSurfaceProfile = new SoilSurfaceProfile(); +// soilSurfaceProfile.SoilProfile = (Geotechnics.Soils.SoilProfile1D)input.SoilProfiles1D; +// soilSurfaceProfile.SurfaceLine2 = surfaceLine; +// soilSurfaceProfile.DikeEmbankmentMaterial = dikeEmbankmentMaterial; +// }); + input.SoilProfiles2D = new DamEngine.Io.XmlInput.SoilProfile2D[dike.SoilProfiles.Count]; + //TransferSoilProfiles2D(dike.SoilProfiles, input.SoilProfiles2D); + } } var localSegments = EnsureInputLocationsSegmentsAreInSegments(damProjectData.WaterBoard.Segments, localLocations); + if (damProjectData.DamProjectCalculationSpecification.SelectedStabilityKernelType == StabilityKernelType.WtiMacroStabilityKernel) + { + // fill 2D profiles in case of WtiMacroStabilityKernel + var i = 0; + foreach (var localSegment in localSegments) + { + foreach (var localSegmentSoilProfileProbability in localSegment.SoilProfileProbabilities) + { + if (localSegmentSoilProfileProbability.SegmentFailureMechanismType == + FailureMechanismSystemType.StabilityInside) + { + //var p2D = localLocations[0].GetSoilSurfaceProfile(FailureMechanismSystemType.StabilityInside, 0, out prob); + var soilSurfaceProfile = new SoilSurfaceProfile(); + var soilProfile1D = new Deltares.Geotechnics.Soils.SoilProfile1D(); + soilProfile1D.Assign(localSegmentSoilProfileProbability.SoilProfile); + soilSurfaceProfile.SoilProfile = soilProfile1D; + soilSurfaceProfile.SurfaceLine2 = localLocations[i].LocalXZSurfaceLine2; + var dikeSoil = localLocations[i].GetDikeEmbankmentSoil(); + soilSurfaceProfile.DikeEmbankmentMaterial = dikeSoil; + foreach (SoilLayer2D layer in soilSurfaceProfile.Surfaces) + { + if (layer.Soil == null) + { + layer.Soil = dikeSoil; + } + } + + } + } + i++; + } + TransferSoilProfiles2D(dike.SoilProfiles, input.SoilProfiles2D); + } + // Process segments if (localSegments != null) { @@ -284,13 +335,14 @@ input.AnalysisType = ConversionHelper.ConvertToInputAnalysisType(DamProjectCalculationSpecification.SelectedAnalysisType); } - input.PipingModelTypeSpecified = (input.FailureMechanismSystemType == ConversionHelper.InputFailureMechanismPiping) || (input.DamProjectType == InputDamProjectType.AssessmentRegional); + input.PipingModelTypeSpecified = input.FailureMechanismSystemType == ConversionHelper.InputFailureMechanismPiping; if (input.PipingModelTypeSpecified) { input.PipingModelType = ConversionHelper.ConvertToInputPipingModelType(damProjectData.DamProjectCalculationSpecification.CurrentSpecification.PipingModelType); } - input.StabilityModelTypeSpecified = (input.FailureMechanismSystemType == ConversionHelper.InputFailureMechanismStabilityInside) || (input.FailureMechanismSystemType == ConversionHelper.InputFailureMechanismStabilityOutside) || (input.DamProjectType == InputDamProjectType.AssessmentRegional); + input.StabilityModelTypeSpecified = input.FailureMechanismSystemType ==ConversionHelper.InputFailureMechanismStabilityInside || + input.FailureMechanismSystemType == ConversionHelper.InputFailureMechanismStabilityOutside; if (input.StabilityModelTypeSpecified) { input.StabilityModelType = ConversionHelper.ConvertToInputStabilityModelType(damProjectData.DamProjectCalculationSpecification.CurrentSpecification.StabilityModelType); @@ -520,19 +572,13 @@ waternetOptions.PhreaticLineCreationMethod = ConversionHelper.ConvertToInputPhreaticLineCreationMethod(location.PLLineCreationMethod); waternetOptions.IntrusionVerticalWaterPressure = ConversionHelper.ConvertToInputIntrusionVerticalWaterPressure(location.IntrusionVerticalWaterPressure ?? IntrusionVerticalWaterPressureType.Standard); waternetOptions.PolderLevel = location.PolderLevel; - waternetOptions.PolderLevelLow = location.PolderLevelLow; - waternetOptions.PolderLevelLowSpecified = true; waternetOptions.DampingFactorPl3 = location.DampingFactorPL4; waternetOptions.DampingFactorPl4 = location.DampingFactorPL3; waternetOptions.PenetrationLength = location.PenetrationLength; waternetOptions.Pl1BelowCrestMiddleSpecified = location.PlLineOffsetBelowDikeCrestMiddle.HasValue; waternetOptions.Pl1BelowCrestMiddle = location.PlLineOffsetBelowDikeCrestMiddle ?? 0.0; waternetOptions.Pl1FactorBelowShoulderCrestSpecified = location.UsePlLineOffsetFactorBelowShoulderCrest ?? false; waternetOptions.Pl1FactorBelowShoulderCrest = location.PlLineOffsetFactorBelowShoulderCrest ?? 0.0; - waternetOptions.DryPl1BelowCrestMiddleSpecified = location.PlLineOffsetDryBelowDikeCrestMiddle.HasValue; - waternetOptions.DryPl1BelowCrestMiddle = location.PlLineOffsetDryBelowDikeCrestMiddle ?? 0.0; - waternetOptions.DryPl1FactorBelowShoulderCrestSpecified = location.UsePlLineOffsetDryFactorBelowShoulderCrest ?? false; - waternetOptions.DryPl1FactorBelowShoulderCrest = location.PlLineOffsetDryFactorBelowShoulderCrest ?? 0.0; waternetOptions.HeadPl2Specified = location.HeadPL2.HasValue; waternetOptions.HeadPl2 = location.HeadPL2 ?? 0.0; waternetOptions.HeadPl3Specified = location.HeadPl3.HasValue; @@ -544,28 +590,8 @@ waternetOptions.Pl1BelowCrestPolderside = location.PlLineOffsetBelowDikeTopAtPolder; waternetOptions.Pl1BelowShoulderCrestPolderside = location.PlLineOffsetBelowShoulderBaseInside; waternetOptions.Pl1BelowToeDikePolderside = location.PlLineOffsetBelowDikeToeAtPolder; - waternetOptions.DryPl1BelowDikeTopAtRiver = location.PLLineOffsetDryBelowDikeTopAtRiver; - waternetOptions.DryPl1BelowDikeTopAtRiverSpecified = true; - waternetOptions.DryPl1DryBelowDikeTopAtPolder = location.PLLineOffsetDryBelowDikeTopAtPolder; - waternetOptions.DryPl1DryBelowDikeTopAtPolderSpecified = true; - waternetOptions.DryPl1BelowShoulderBaseInside = location.PLLineOffsetDryBelowShoulderBaseInside; - waternetOptions.DryPl1BelowShoulderBaseInsideSpecified = true; - waternetOptions.DryPl1DryBelowDikeToeAtPolder = location.PLLineOffsetDryBelowDikeToeAtPolder; - waternetOptions.DryPl1DryBelowDikeToeAtPolderSpecified = true; inputLocation.WaternetOptions = waternetOptions; - - // Regional settings - var assesmentRegionalOptions = new LocationAssesmentRegionalOptions(); inputLocation.DikeTableHeight = location.DikeTableHeight; - assesmentRegionalOptions.BoezemLevelHbp = location.BoezemLevelHbp; - assesmentRegionalOptions.BoezemLevelLbp = location.BoezemLevelLbp; - assesmentRegionalOptions.BoezemLevelTp = location.BoezemLevelTp; - assesmentRegionalOptions.RegionalBankProtectionBottomLevel = location.RwBankProtectionBottomLevel; - assesmentRegionalOptions.DredgingDepth = location.DredgingDepth; - assesmentRegionalOptions.DetrimentFactor = location.DetrimentFactor; - assesmentRegionalOptions.DikeSoilType = ConversionHelper.ConvertToInputSoilType(location.DikeMaterialType); - assesmentRegionalOptions.DikeSoilTypeSpecified = true; - inputLocation.AssesmentRegionalOptions = assesmentRegionalOptions; inputLocation.DesignScenarios = new LocationDesignScenario[location.Scenarios.Count]; for (int j = 0; j < location.Scenarios.Count; j++) @@ -677,6 +703,7 @@ inputLocations[i] = inputLocation; } } + private static void TransferSoilProfiles1D(IList dikeSoilProfiles, DamEngine.Io.XmlInput.SoilProfile1D[] inputSoilProfiles1D) { var profilesCount = dikeSoilProfiles.Count; @@ -694,6 +721,23 @@ } } + private static void TransferSoilProfiles2D(IList dikeSoilProfiles, DamEngine.Io.XmlInput.SoilProfile2D[] inputSoilProfiles2D) + { + var profilesCount = dikeSoilProfiles.Count; + for (int i = 0; i < profilesCount; i++) + { + var soilProfile2D = dikeSoilProfiles[i]; + var inputSoilProfile2D = new DamEngine.Io.XmlInput.SoilProfile2D + { + Name = soilProfile2D.Name, + + Layers2D = new SoilProfile2DLayer2D[soilProfile2D.LayerCount] + }; + // AddLayers2D(soilProfile2D, inputSoilProfile2D); + inputSoilProfiles2D[i] = inputSoilProfile2D; + } + } + private static void AddLayers1D(Deltares.Geotechnics.Soils.SoilProfile1D soilProfile1D, DamEngine.Io.XmlInput.SoilProfile1D inputSoilProfile1D) { for (int i = 0; i < soilProfile1D.LayerCount; i++) @@ -745,14 +789,18 @@ { inputSoilGeometryProbability.FailureMechanismSystemTypeSpecified = false; } - if (soilGeometryProbability.SoilProfileType == SoilProfileType.SoilProfile1D) + + switch (soilGeometryProbability.SoilProfileType) { - inputSoilGeometryProbability.SoilProfileName = soilGeometryProbability.SoilGeometryName; + case SoilProfileType.SoilProfile1D: + case SoilProfileType.SoilProfile2D: + inputSoilGeometryProbability.SoilProfileName = soilGeometryProbability.SoilGeometryName; + break; + default: + inputSoilGeometryProbability.SoilProfileName = soilGeometryProbability.SoilGeometry2DName; + break; + } - else - { - inputSoilGeometryProbability.SoilProfileName = soilGeometryProbability.SoilGeometry2DName; - } inputSoilGeometryProbability.SoilProfileType = ConversionHelper.ConvertToInputSoilProfileType(soilGeometryProbability.SoilProfileType); inputSegment.SoilGeometryProbability[i] = inputSoilGeometryProbability; }