Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.IO/Configurations/MacroStabilityInwardsCalculationConfigurationReader.cs =================================================================== diff -u -rf0525483bb0f01219ec1990b2e366de5faa7cb96 -r6d2a451c86300fe64ea80a345ab6d37549007ea0 --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.IO/Configurations/MacroStabilityInwardsCalculationConfigurationReader.cs (.../MacroStabilityInwardsCalculationConfigurationReader.cs) (revision f0525483bb0f01219ec1990b2e366de5faa7cb96) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.IO/Configurations/MacroStabilityInwardsCalculationConfigurationReader.cs (.../MacroStabilityInwardsCalculationConfigurationReader.cs) (revision 6d2a451c86300fe64ea80a345ab6d37549007ea0) @@ -96,10 +96,6 @@ AdjustPhreaticLine3And4ForUplift = calculationElement.GetBoolValueFromDescendantElement(MacroStabilityInwardsCalculationConfigurationSchemaIdentifiers.AdjustPhreaticLine3And4ForUpliftElement), - PhreaticLine2 = calculationElement.GetMacroStabilityInwardsPhreaticLineConfiguration(MacroStabilityInwardsCalculationConfigurationSchemaIdentifiers.PhreaticLine2PiezometricHeadElement), - PhreaticLine3 = calculationElement.GetMacroStabilityInwardsPhreaticLineConfiguration(MacroStabilityInwardsCalculationConfigurationSchemaIdentifiers.PhreaticLine3LeakageLengthElement), - PhreaticLine4 = calculationElement.GetMacroStabilityInwardsPhreaticLineConfiguration(MacroStabilityInwardsCalculationConfigurationSchemaIdentifiers.PhreaticLine4LeakageLengthElement), - LocationInputDaily = calculationElement.GetMacroStabilityInwardsLocationInputConfiguration(), LocationInputExtreme = calculationElement.GetMacroStabilityInwardsLocationInputExtremeConfiguration(), @@ -111,6 +107,9 @@ }; SetPhreaticLine1Properties(configuration, calculationElement); + SetPhreaticLine2Properties(configuration, calculationElement); + SetPhreaticLine3Properties(configuration, calculationElement); + SetPhreaticLine4Properties(configuration, calculationElement); SetZonesProperties(configuration, calculationElement); SetGridProperties(configuration, calculationElement); @@ -128,17 +127,80 @@ /// Thrown when any conversion cannot be performed. private static void SetPhreaticLine1Properties(MacroStabilityInwardsCalculationConfiguration configuration, XElement calculationElement) { - XElement phreaticLine1Element = calculationElement.GetDescendantElement(MacroStabilityInwardsCalculationConfigurationSchemaIdentifiers.PhreaticLine1MinimumLevelElement); + XElement descendantElement = calculationElement.GetDescendantElement(MacroStabilityInwardsCalculationConfigurationSchemaIdentifiers.PhreaticLine1MinimumLevelElement); + if (descendantElement == null) + { + return; + } + + configuration.MinimumLevelPhreaticLineAtDikeTopPolder = descendantElement.GetDoubleValueFromDescendantElement(MacroStabilityInwardsCalculationConfigurationSchemaIdentifiers.MinimumLevelPhreaticLineAtDikeTopPolderElement); + configuration.MinimumLevelPhreaticLineAtDikeTopRiver = descendantElement.GetDoubleValueFromDescendantElement(MacroStabilityInwardsCalculationConfigurationSchemaIdentifiers.MinimumLevelPhreaticLineAtDikeTopRiverElement); + } + + /// + /// Sets the phreatic line 2 related parameters to . + /// + /// The configuration to set to the phreatic line 2 properties, if any. + /// The that contains the phreatic line 2 element. + /// Thrown when the value for a parameter isn't in the correct format. + /// Thrown when the value for a parameter represents a number less + /// than or greater than . + /// Thrown when any conversion cannot be performed. + private static void SetPhreaticLine2Properties(MacroStabilityInwardsCalculationConfiguration configuration, XElement calculationElement) + { + XElement descendantElement = calculationElement.GetDescendantElement(MacroStabilityInwardsCalculationConfigurationSchemaIdentifiers.PhreaticLine2PiezometricHeadElement); + if (descendantElement == null) + { + return; + } + + configuration.PiezometricHeadPhreaticLine2Inwards = descendantElement.GetDoubleValueFromDescendantElement(MacroStabilityInwardsCalculationConfigurationSchemaIdentifiers.PhreaticLineInwardsElement); + configuration.PiezometricHeadPhreaticLine2Outwards = descendantElement.GetDoubleValueFromDescendantElement(MacroStabilityInwardsCalculationConfigurationSchemaIdentifiers.PhreaticLineOutwardsElement); + } + + /// + /// Sets the phreatic line 3 related parameters to . + /// + /// The configuration to set to the phreatic line 3 properties, if any. + /// The that contains the phreatic line 3 element. + /// Thrown when the value for a parameter isn't in the correct format. + /// Thrown when the value for a parameter represents a number less + /// than or greater than . + /// Thrown when any conversion cannot be performed. + private static void SetPhreaticLine3Properties(MacroStabilityInwardsCalculationConfiguration configuration, XElement calculationElement) + { + XElement phreaticLine1Element = calculationElement.GetDescendantElement(MacroStabilityInwardsCalculationConfigurationSchemaIdentifiers.PhreaticLine3LeakageLengthElement); if (phreaticLine1Element == null) { return; } - configuration.MinimumLevelPhreaticLineAtDikeTopPolder = phreaticLine1Element.GetDoubleValueFromDescendantElement(MacroStabilityInwardsCalculationConfigurationSchemaIdentifiers.MinimumLevelPhreaticLineAtDikeTopPolderElement); - configuration.MinimumLevelPhreaticLineAtDikeTopRiver = phreaticLine1Element.GetDoubleValueFromDescendantElement(MacroStabilityInwardsCalculationConfigurationSchemaIdentifiers.MinimumLevelPhreaticLineAtDikeTopRiverElement); + configuration.LeakageLengthInwardsPhreaticLine3 = phreaticLine1Element.GetDoubleValueFromDescendantElement(MacroStabilityInwardsCalculationConfigurationSchemaIdentifiers.PhreaticLineInwardsElement); + configuration.LeakageLengthOutwardsPhreaticLine3 = phreaticLine1Element.GetDoubleValueFromDescendantElement(MacroStabilityInwardsCalculationConfigurationSchemaIdentifiers.PhreaticLineOutwardsElement); } /// + /// Sets the phreatic line 4 related parameters to . + /// + /// The configuration to set to the phreatic line 4 properties, if any. + /// The that contains the phreatic line 4 element. + /// Thrown when the value for a parameter isn't in the correct format. + /// Thrown when the value for a parameter represents a number less + /// than or greater than . + /// Thrown when any conversion cannot be performed. + private static void SetPhreaticLine4Properties(MacroStabilityInwardsCalculationConfiguration configuration, XElement calculationElement) + { + XElement phreaticLine1Element = calculationElement.GetDescendantElement(MacroStabilityInwardsCalculationConfigurationSchemaIdentifiers.PhreaticLine4LeakageLengthElement); + if (phreaticLine1Element == null) + { + return; + } + + configuration.LeakageLengthInwardsPhreaticLine4 = phreaticLine1Element.GetDoubleValueFromDescendantElement(MacroStabilityInwardsCalculationConfigurationSchemaIdentifiers.PhreaticLineInwardsElement); + configuration.LeakageLengthOutwardsPhreaticLine4 = phreaticLine1Element.GetDoubleValueFromDescendantElement(MacroStabilityInwardsCalculationConfigurationSchemaIdentifiers.PhreaticLineOutwardsElement); + } + + /// /// Sets the zone related parameters to . /// /// The configuration to set to the zone properties, if any.