Index: dam clients/DamUI/trunk/src/Dam/Data/DamEngineIo/FillXmlInputFromDamUi.cs =================================================================== diff -u -r547 -r552 --- dam clients/DamUI/trunk/src/Dam/Data/DamEngineIo/FillXmlInputFromDamUi.cs (.../FillXmlInputFromDamUi.cs) (revision 547) +++ dam clients/DamUI/trunk/src/Dam/Data/DamEngineIo/FillXmlInputFromDamUi.cs (.../FillXmlInputFromDamUi.cs) (revision 552) @@ -68,6 +68,13 @@ { throw new NullReferenceException("No locations defined in this project"); } + foreach (Location location in dike.Locations) + { + if (location.Scenarios == null) + { + throw new NullReferenceException("No scenarios defined in location"); + } + } if (dike.SurfaceLines2 == null) { throw new NullReferenceException("No surfacelines defined in this project"); @@ -166,6 +173,46 @@ waternetOptions.Pl1BelowToeDikePolderside = location.PlLineOffsetBelowDikeToeAtPolder; inputLocation.WaternetOptions = waternetOptions; + inputLocation.DesignScenarios = new LocationDesignScenario[location.Scenarios.Count]; + for (int j = 0; j < location.Scenarios.Count; j++) + { + var designScenario = location.Scenarios[j]; + var inputDesignScenario = new LocationDesignScenario(); + inputDesignScenario.RiverLevel = designScenario.RiverLevel; + + inputDesignScenario.RiverLevelLowSpecified = designScenario.RiverLevelLow.HasValue; + inputDesignScenario.RiverLevelLow = designScenario.RiverLevelLow ?? 0.0; + inputDesignScenario.DikeTableHeightSpecified = designScenario.DikeTableHeight.HasValue; + inputDesignScenario.DikeTableHeight = designScenario.DikeTableHeight ?? 0.0; + inputDesignScenario.PlLineOffsetBelowDikeTopAtRiverSpecified = designScenario.PlLineOffsetBelowDikeTopAtRiver.HasValue; + inputDesignScenario.PlLineOffsetBelowDikeTopAtRiver = designScenario.PlLineOffsetBelowDikeTopAtRiver ?? 0.0; + inputDesignScenario.PlLineOffsetBelowDikeTopAtPolderSpecified = designScenario.PlLineOffsetBelowDikeTopAtPolder.HasValue; + inputDesignScenario.PlLineOffsetBelowDikeTopAtPolder = designScenario.PlLineOffsetBelowDikeTopAtPolder ?? 0.0; + inputDesignScenario.PlLineOffsetBelowShoulderBaseInsideSpecified = designScenario.PlLineOffsetBelowShoulderBaseInside.HasValue; + inputDesignScenario.PlLineOffsetBelowShoulderBaseInside = designScenario.PlLineOffsetBelowShoulderBaseInside ?? 0.0; + inputDesignScenario.PlLineOffsetBelowDikeToeAtPolderSpecified = designScenario.PlLineOffsetBelowDikeToeAtPolder.HasValue; + inputDesignScenario.PlLineOffsetBelowDikeToeAtPolder = designScenario.PlLineOffsetBelowDikeToeAtPolder ?? 0.0; + inputDesignScenario.PlLineOffsetBelowDikeCrestMiddleSpecified = designScenario.UsePlLineOffsetBelowDikeCrestMiddle.Value; + inputDesignScenario.PlLineOffsetBelowDikeCrestMiddle = designScenario.PlLineOffsetBelowDikeCrestMiddle.Value; + inputDesignScenario.PlLineOffsetFactorBelowShoulderCrestSpecified = designScenario.UsePlLineOffsetFactorBelowShoulderCrest.Value; + inputDesignScenario.PlLineOffsetFactorBelowShoulderCrest = designScenario.PlLineOffsetFactorBelowShoulderCrest.Value; + inputDesignScenario.HeadPl3Specified = designScenario.HeadPl3.HasValue; + inputDesignScenario.HeadPl3 = designScenario.HeadPl3 ?? 0.0; + inputDesignScenario.HeadPl4Specified = designScenario.HeadPl4.HasValue; + inputDesignScenario.HeadPl4 = designScenario.HeadPl4 ?? 0.0; + inputDesignScenario.UpliftCriterionStabilitySpecified = designScenario.UpliftCriterionStability.HasValue; + inputDesignScenario.UpliftCriterionStability = designScenario.UpliftCriterionStability ?? 0.0; + inputDesignScenario.UpliftCriterionPipingSpecified = designScenario.UpliftCriterionPiping.HasValue; + inputDesignScenario.UpliftCriterionPiping = designScenario.UpliftCriterionPiping ?? 0.0; + inputDesignScenario.RequiredSafetyFactorStabilityInnerSlopeSpecified = designScenario.RequiredSafetyFactorStabilityInnerSlope.HasValue; + inputDesignScenario.RequiredSafetyFactorStabilityInnerSlope = designScenario.RequiredSafetyFactorStabilityInnerSlope ?? 0.0; + inputDesignScenario.RequiredSafetyFactorStabilityOuterSlopeSpecified = designScenario.RequiredSafetyFactorStabilityOuterSlope.HasValue; + inputDesignScenario.RequiredSafetyFactorStabilityOuterSlope = designScenario.RequiredSafetyFactorStabilityOuterSlope ?? 0.0; + inputDesignScenario.RequiredSafetyFactorPipingSpecified = designScenario.RequiredSafetyFactorPiping.HasValue; + inputDesignScenario.RequiredSafetyFactorPiping = designScenario.RequiredSafetyFactorPiping ?? 0.0; + + inputLocation.DesignScenarios[j] = inputDesignScenario; + } inputLocations[i] = inputLocation; } } Index: dam clients/DamUI/trunk/src/Dam/Tests/DamEngineIo/FillXmlInputFromDamUiTests.cs =================================================================== diff -u -r547 -r552 --- dam clients/DamUI/trunk/src/Dam/Tests/DamEngineIo/FillXmlInputFromDamUiTests.cs (.../FillXmlInputFromDamUiTests.cs) (revision 547) +++ dam clients/DamUI/trunk/src/Dam/Tests/DamEngineIo/FillXmlInputFromDamUiTests.cs (.../FillXmlInputFromDamUiTests.cs) (revision 552) @@ -120,10 +120,38 @@ location.HeadPl3 = 1.0 * i + 0.25; location.HeadPl4 = 1.0 * i + 0.21; location.SurfaceLine2 = dike.SurfaceLines2[i]; + for (int j = 0; j < 3; j++) + { + var designScenario = FillDesignScenario(i * j); + location.Scenarios.Add(designScenario); + } dike.Locations.Add(location); } } + private static Scenario FillDesignScenario(int factor) + { + var designScenario = new Scenario(); + designScenario.RiverLevel = 1.0 * factor + 0.51; + designScenario.RiverLevelLow = 1.0 * factor + 0.52; + designScenario.DikeTableHeight = 1.0 * factor + 0.53; + designScenario.PlLineOffsetBelowDikeTopAtRiver = 1.0 * factor + 0.54; + designScenario.PlLineOffsetBelowDikeTopAtPolder = 1.0 * factor + 0.55; + designScenario.PlLineOffsetBelowShoulderBaseInside = 1.0 * factor + 0.56; + designScenario.PlLineOffsetBelowDikeToeAtPolder = 1.0 * factor + 0.57; + designScenario.PlLineOffsetBelowDikeCrestMiddle = 1.0 * factor + 0.58; + designScenario.UsePlLineOffsetBelowDikeCrestMiddle = true; + designScenario.PlLineOffsetFactorBelowShoulderCrest = 1.0 * factor + 0.59; + designScenario.UsePlLineOffsetFactorBelowShoulderCrest = true; + designScenario.HeadPl3 = 1.0 * factor + 0.60; + designScenario.HeadPl4 = 1.0 * factor + 0.61; + designScenario.UpliftCriterionStability = 1.0 * factor + 0.62; + designScenario.UpliftCriterionPiping = 1.0 * factor + 0.63; + designScenario.RequiredSafetyFactorStabilityInnerSlope = 1.0 * factor + 0.64; + designScenario.RequiredSafetyFactorStabilityOuterSlope = 1.0 * factor + 0.65; + designScenario.RequiredSafetyFactorPiping = 1.0 * factor + 0.66; + return designScenario; + } private void FillSurfaceLines(Dike dike) { const int surfaceLineCount = 3; Index: dam clients/DamUI/trunk/src/Dam/Data/DamEngineIo/FillDamUiFromXmlInput.cs =================================================================== diff -u -r547 -r552 --- dam clients/DamUI/trunk/src/Dam/Data/DamEngineIo/FillDamUiFromXmlInput.cs (.../FillDamUiFromXmlInput.cs) (revision 547) +++ dam clients/DamUI/trunk/src/Dam/Data/DamEngineIo/FillDamUiFromXmlInput.cs (.../FillDamUiFromXmlInput.cs) (revision 552) @@ -69,6 +69,13 @@ { throw new NullReferenceException("No locations defined in the input"); } + foreach (DamEngine.Io.XmlInput.Location location in input.Locations) + { + if (location.DesignScenarios == null) + { + throw new NullReferenceException("No design scenarios defined in location"); + } + } if (input.SurfaceLines == null) { throw new NullReferenceException("No surfacelines defined in the input"); @@ -154,6 +161,34 @@ location.PlLineOffsetBelowDikeToeAtPolder = waternetOptions.Pl1BelowToeDikePolderside; SurfaceLine2 surfaceLine = dikeSurfaceLines2.First(n => n.Name.Equals(inputLocation.SurfaceLineName)); location.SurfaceLine2 = surfaceLine; + if (inputLocation.DesignScenarios != null) + { + for (int j = 0; j < inputLocation.DesignScenarios.Length; j++) + { + var designScenario = new Scenario(); + var inputLocationDesignScenario = inputLocation.DesignScenarios[j]; + designScenario.RiverLevel = inputLocationDesignScenario.RiverLevel; + designScenario.RiverLevelLow = (inputLocationDesignScenario.RiverLevelLowSpecified ? (double?)inputLocationDesignScenario.RiverLevelLow : null); + designScenario.DikeTableHeight = (inputLocationDesignScenario.DikeTableHeightSpecified ? (double?)inputLocationDesignScenario.DikeTableHeight : null); + designScenario.PlLineOffsetBelowDikeTopAtRiver = (inputLocationDesignScenario.PlLineOffsetBelowDikeTopAtRiverSpecified ? (double?)inputLocationDesignScenario.PlLineOffsetBelowDikeTopAtRiver : null); + designScenario.PlLineOffsetBelowDikeTopAtPolder = (inputLocationDesignScenario.PlLineOffsetBelowDikeTopAtPolderSpecified ? (double?)inputLocationDesignScenario.PlLineOffsetBelowDikeTopAtPolder : null); + designScenario.PlLineOffsetBelowShoulderBaseInside = (inputLocationDesignScenario.PlLineOffsetBelowShoulderBaseInsideSpecified ? (double?)inputLocationDesignScenario.PlLineOffsetBelowShoulderBaseInside : null); + designScenario.PlLineOffsetBelowDikeToeAtPolder = (inputLocationDesignScenario.PlLineOffsetBelowDikeToeAtPolderSpecified ? (double?)inputLocationDesignScenario.PlLineOffsetBelowDikeToeAtPolder : null); + designScenario.UsePlLineOffsetBelowDikeCrestMiddle = inputLocationDesignScenario.PlLineOffsetBelowDikeCrestMiddleSpecified; + designScenario.PlLineOffsetBelowDikeCrestMiddle = inputLocationDesignScenario.PlLineOffsetBelowDikeCrestMiddle; + designScenario.UsePlLineOffsetFactorBelowShoulderCrest = inputLocationDesignScenario.PlLineOffsetFactorBelowShoulderCrestSpecified; + designScenario.PlLineOffsetFactorBelowShoulderCrest = inputLocationDesignScenario.PlLineOffsetFactorBelowShoulderCrest; + designScenario.HeadPl3 = (inputLocationDesignScenario.HeadPl3Specified ? (double?)inputLocationDesignScenario.HeadPl3 : null); + designScenario.HeadPl4 = (inputLocationDesignScenario.HeadPl4Specified ? (double?)inputLocationDesignScenario.HeadPl4 : null); + designScenario.UpliftCriterionStability = (inputLocationDesignScenario.UpliftCriterionStabilitySpecified ? (double?)inputLocationDesignScenario.UpliftCriterionStability : null); + designScenario.UpliftCriterionPiping = (inputLocationDesignScenario.UpliftCriterionStabilitySpecified ? (double?)inputLocationDesignScenario.UpliftCriterionPiping : null); + designScenario.RequiredSafetyFactorStabilityInnerSlope = (inputLocationDesignScenario.RequiredSafetyFactorStabilityInnerSlopeSpecified ? (double?)inputLocationDesignScenario.RequiredSafetyFactorStabilityInnerSlope : null); + designScenario.RequiredSafetyFactorStabilityOuterSlope = (inputLocationDesignScenario.RequiredSafetyFactorStabilityOuterSlopeSpecified ? (double?)inputLocationDesignScenario.RequiredSafetyFactorStabilityOuterSlope : null); + designScenario.RequiredSafetyFactorPiping = (inputLocationDesignScenario.RequiredSafetyFactorPipingSpecified ? (double?)inputLocationDesignScenario.RequiredSafetyFactorPiping : null); + + location.Scenarios.Add(designScenario); + } + } dikeLocations.Add(location); } }