Index: Ringtoets/Common/src/Ringtoets.Common.IO/HydraRing/HydraRingSettingsDatabaseReader.cs =================================================================== diff -u -re4565100f14feece0bea5bc7acf9eef9acf7a8e6 -r23925d0f05558876349015afc3f698789699a0e3 --- Ringtoets/Common/src/Ringtoets.Common.IO/HydraRing/HydraRingSettingsDatabaseReader.cs (.../HydraRingSettingsDatabaseReader.cs) (revision e4565100f14feece0bea5bc7acf9eef9acf7a8e6) +++ Ringtoets/Common/src/Ringtoets.Common.IO/HydraRing/HydraRingSettingsDatabaseReader.cs (.../HydraRingSettingsDatabaseReader.cs) (revision 23925d0f05558876349015afc3f698789699a0e3) @@ -37,6 +37,10 @@ /// public class HydraRingSettingsDatabaseReader : SqLiteDatabaseReaderBase { + private const string minColumn = "Min"; + private const string maxColumn = "Max"; + + private const string subMechanismIdColumn = "SubMechanismID"; private const string calculationTechniqueIdColumn = "CalculationMethod"; private const string formStartMethodColumn = "FORM_StartMethod"; private const string formNumberOfIterationsColumn = "FORM_NIterations"; @@ -52,16 +56,13 @@ private const string niUMaxColumn = "NI_UMax"; private const string niNumberStepsColumn = "NI_NumberSteps"; - private const string minColumn = "Min"; - private const string maxColumn = "Max"; + private const string timeIntegrationSchemeIdColumn = "TimeIntegrationSchemeID"; private string locationIdColumn = "LocationID"; private const string locationIdParameterName = "@locationId"; private const string calculationTypeIdParameterName = "@calculationTypeId"; private const string mechanismIdParameterName = "@mechanismID"; - private const string subMechanismIdParameterName = "@subMechanismID"; - private const string timeIntegrationSchemeIdColumn = "TimeIntegrationSchemeID"; private readonly string designTableSettingsForLocationAndCalculationTypeQuery; private readonly string numericSettingsForLocationMechanismAndSubMechanismQuery; @@ -90,8 +91,9 @@ calculationTypeIdParameterName); numericSettingsForLocationMechanismAndSubMechanismQuery = string.Format( - "SELECT {0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11}, {12}, {13} " + - "FROM NumericsSettings WHERE LocationID = {14} AND MechanismID = {15} AND SubMechanismID = {16}", + "SELECT {0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11}, {12}, {13}, {14} " + + "FROM NumericsSettings WHERE LocationID = {15} AND MechanismID = {16}", + subMechanismIdColumn, calculationTechniqueIdColumn, formStartMethodColumn, formNumberOfIterationsColumn, @@ -107,8 +109,7 @@ niUMaxColumn, niNumberStepsColumn, locationIdParameterName, - mechanismIdParameterName, - subMechanismIdParameterName); + mechanismIdParameterName); timeIntegrationSettingsForLocationAndCalculationTypeQuery = string.Format( "SELECT {0} FROM TimeIntegrationSettings WHERE LocationID = {1} AND CalculationTypeID = {2}", @@ -151,30 +152,33 @@ /// /// The id of a hydraulic boundary location. /// The mechanism id to obtain the for. - /// The sub mechanism id to obtain the for. - /// A new containing values read from the database. - public NumericsSetting ReadNumericsSetting(long locationId, int mechanimsId, int subMechanismId) + /// A new where the key is the submechanism id, and the value is + /// the containing values read from the database. + public Dictionary ReadNumericsSetting(long locationId, int mechanimsId) { - var reader = CreateNumericsSettingsDataReader(locationId, mechanimsId, subMechanismId); - if (MoveNext(reader)) + var settings = new Dictionary(); + var reader = CreateNumericsSettingsDataReader(locationId, mechanimsId); + while (MoveNext(reader)) { - return new NumericsSetting( - Convert.ToInt32(reader[calculationTechniqueIdColumn]), - Convert.ToInt32(reader[formStartMethodColumn]), - Convert.ToInt32(reader[formNumberOfIterationsColumn]), - Convert.ToDouble(reader[formRelaxationFactorColumn]), - Convert.ToDouble(reader[formEpsBetaColumn]), - Convert.ToDouble(reader[formEpsHohColumn]), - Convert.ToDouble(reader[formEpsZFuncColumn]), - Convert.ToInt32(reader[dsStartMethodColumn]), - Convert.ToInt32(reader[dsMinNumberOfIterationsColumn]), - Convert.ToInt32(reader[dsMaxNumberOfIterationsColumn]), - Convert.ToDouble(reader[dsVarCoefficientColumn]), - Convert.ToDouble(reader[niUMinColumn]), - Convert.ToDouble(reader[niUMaxColumn]), - Convert.ToInt32(reader[niNumberStepsColumn])); + settings.Add( + Convert.ToInt32(reader[subMechanismIdColumn]), + new NumericsSetting( + Convert.ToInt32(reader[calculationTechniqueIdColumn]), + Convert.ToInt32(reader[formStartMethodColumn]), + Convert.ToInt32(reader[formNumberOfIterationsColumn]), + Convert.ToDouble(reader[formRelaxationFactorColumn]), + Convert.ToDouble(reader[formEpsBetaColumn]), + Convert.ToDouble(reader[formEpsHohColumn]), + Convert.ToDouble(reader[formEpsZFuncColumn]), + Convert.ToInt32(reader[dsStartMethodColumn]), + Convert.ToInt32(reader[dsMinNumberOfIterationsColumn]), + Convert.ToInt32(reader[dsMaxNumberOfIterationsColumn]), + Convert.ToDouble(reader[dsVarCoefficientColumn]), + Convert.ToDouble(reader[niUMinColumn]), + Convert.ToDouble(reader[niUMaxColumn]), + Convert.ToInt32(reader[niNumberStepsColumn]))); } - return null; + return settings; } /// @@ -236,7 +240,7 @@ typeParameter); } - private SQLiteDataReader CreateNumericsSettingsDataReader(long locationId, int mechanimsId, int subMechanismId) + private SQLiteDataReader CreateNumericsSettingsDataReader(long locationId, int mechanimsId) { var locationParameter = new SQLiteParameter { @@ -252,18 +256,10 @@ Value = mechanimsId }; - var subMechanismIdParameter = new SQLiteParameter - { - DbType = DbType.Int32, - ParameterName = subMechanismIdParameterName, - Value = subMechanismId - }; - return CreateDataReader( numericSettingsForLocationMechanismAndSubMechanismQuery, locationParameter, - mechanismIdParameter, - subMechanismIdParameter); + mechanismIdParameter); } private SQLiteDataReader CreateTimeIntegrationDataReader(long locationId, HydraRingFailureMechanismType calculationType) Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/HydraRing/HydraRingSettingsDatabaseReaderTest.cs =================================================================== diff -u -re4565100f14feece0bea5bc7acf9eef9acf7a8e6 -r23925d0f05558876349015afc3f698789699a0e3 --- Ringtoets/Common/test/Ringtoets.Common.IO.Test/HydraRing/HydraRingSettingsDatabaseReaderTest.cs (.../HydraRingSettingsDatabaseReaderTest.cs) (revision e4565100f14feece0bea5bc7acf9eef9acf7a8e6) +++ Ringtoets/Common/test/Ringtoets.Common.IO.Test/HydraRing/HydraRingSettingsDatabaseReaderTest.cs (.../HydraRingSettingsDatabaseReaderTest.cs) (revision 23925d0f05558876349015afc3f698789699a0e3) @@ -167,13 +167,14 @@ } [Test] - [TestCase(700132, 11, 16, 1, 4, 50, 0.15, 0.05, 0.01, 0.01, 0, 2, 20000, 100000.0, 0.1, -6.0, 6)] - [TestCase(700135, 3, 5, 4, 1, 50, 0.15, 0.05, 0.01, 0.01, 0, 2, 10000, 10000.0, 0.1, -6.0, 6)] - [TestCase(700135, 101, 102, 1, 4, 50, 0.15, 0.05, 0.01, 0.01, 0, 2, 20000, 100000.0, 0.1, -6.0, 6)] + [TestCase(700132, 11, 3, 16, 1, 4, 50, 0.15, 0.05, 0.01, 0.01, 0, 2, 20000, 100000.0, 0.1, -6.0, 6)] + [TestCase(700135, 3, 1, 5, 4, 1, 50, 0.15, 0.05, 0.01, 0.01, 0, 2, 10000, 10000.0, 0.1, -6.0, 6)] + [TestCase(700135, 101, 1, 102, 1, 4, 50, 0.15, 0.05, 0.01, 0.01, 0, 2, 20000, 100000.0, 0.1, -6.0, 6)] public void ReadNumericsSetting_ValidLocationIdAndFailureMechanismType_DesignTableSettingWithExpectedValues( - long locationId, - int mechanismId, - int subMechanismId, + long locationId, + int mechanismId, + int expectedNumberOfSettings, + int subMechanismIdForSample, int expectedCalculationTechniqueId, int expectedFormStartMethod, int expectedFormNumberOfIterations, @@ -193,9 +194,11 @@ var reader = new HydraRingSettingsDatabaseReader(completeDatabaseDataPath); // Call - NumericsSetting setting = reader.ReadNumericsSetting(locationId, mechanismId, subMechanismId); + Dictionary settings = reader.ReadNumericsSetting(locationId, mechanismId); // Assert + Assert.AreEqual(expectedNumberOfSettings, settings.Count); + var setting = settings[subMechanismIdForSample]; Assert.AreEqual(expectedCalculationTechniqueId, setting.CalculationTechniqueId); Assert.AreEqual(expectedFormStartMethod, setting.FormStartMethod); Assert.AreEqual(expectedFormNumberOfIterations, setting.FormNumberOfIterations); @@ -213,33 +216,33 @@ } [Test] - [TestCase(700134, 7, 14)] - [TestCase(0, 5, 11)] - [TestCase(700134, 5, 25)] - public void ReadNumericsSetting_ValidLocationIdFailureMechanismTypeAndSubMechanismIdNotInDatabase_ReturnNull( - long locationId, int mechanismId, int subMechanismId) + [TestCase(700134, 7)] + [TestCase(0, 5)] + [TestCase(700134, 5)] + public void ReadNumericsSetting_ValidLocationIdFailureMechanismTypeNotInDatabase_ReturnEmptyDictionary( + long locationId, int mechanismId) { // Setup var reader = new HydraRingSettingsDatabaseReader(completeDatabaseDataPath); // Call - NumericsSetting setting = reader.ReadNumericsSetting(locationId, mechanismId, subMechanismId); + Dictionary setting = reader.ReadNumericsSetting(locationId, mechanismId); // Assert - Assert.IsNull(setting); + Assert.IsEmpty(setting); } [Test] - public void ReadNumericsSetting_EmptyTable_ReturnNull() + public void ReadNumericsSetting_EmptyTable_ReturnEmptyDictionary() { // Setup var reader = new HydraRingSettingsDatabaseReader(emptyDatabaseDataPath); // Call - NumericsSetting setting = reader.ReadNumericsSetting(700135, 101, 102); + Dictionary setting = reader.ReadNumericsSetting(700135, 101); // Assert - Assert.IsNull(setting); + Assert.IsEmpty(setting); } [Test] Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Calculator/HydraRingCalculatorBase.cs =================================================================== diff -u -rce5d60b8a5c520faec45cce64de6957dce747449 -r23925d0f05558876349015afc3f698789699a0e3 --- Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Calculator/HydraRingCalculatorBase.cs (.../HydraRingCalculatorBase.cs) (revision ce5d60b8a5c520faec45cce64de6957dce747449) +++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Calculator/HydraRingCalculatorBase.cs (.../HydraRingCalculatorBase.cs) (revision 23925d0f05558876349015afc3f698789699a0e3) @@ -25,6 +25,7 @@ using System.IO; using Ringtoets.HydraRing.Calculation.Data; using Ringtoets.HydraRing.Calculation.Data.Input; +using Ringtoets.HydraRing.Calculation.Data.Settings; using Ringtoets.HydraRing.Calculation.Parsers; using Ringtoets.HydraRing.Calculation.Services; Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Services/HydraRingConfigurationService.cs =================================================================== diff -u -r5cbdfc02ed72dd65d6d6eea33a33804ea6cf6b02 -r23925d0f05558876349015afc3f698789699a0e3 --- Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Services/HydraRingConfigurationService.cs (.../HydraRingConfigurationService.cs) (revision 5cbdfc02ed72dd65d6d6eea33a33804ea6cf6b02) +++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Services/HydraRingConfigurationService.cs (.../HydraRingConfigurationService.cs) (revision 23925d0f05558876349015afc3f698789699a0e3) @@ -28,6 +28,7 @@ using Ringtoets.HydraRing.Calculation.Data; using Ringtoets.HydraRing.Calculation.Data.Defaults; using Ringtoets.HydraRing.Calculation.Data.Input; +using Ringtoets.HydraRing.Calculation.Data.Settings; using Ringtoets.HydraRing.Calculation.Providers; namespace Ringtoets.HydraRing.Calculation.Services @@ -56,18 +57,36 @@ /// internal class HydraRingConfigurationService { + private struct InputWithSettings + { + public HydraRingCalculationInput Input; + public DesignTablesSetting DesignTablesSetting; + public HydraulicModelsSetting HydraulicModelsSetting; + public Dictionary NumericsSetting; + + public InputWithSettings(HydraRingCalculationInput hydraRingCalculationInput, DesignTablesSetting designTablesSetting, HydraulicModelsSetting hydraulicModelsSetting, Dictionary numericsSetting) + { + Input = hydraRingCalculationInput; + DesignTablesSetting = designTablesSetting; + NumericsSetting = numericsSetting; + HydraulicModelsSetting = hydraulicModelsSetting; + } + } + private const double defaultLayerId = 1; private const double defaultAlternativeId = 1; private const double defaultHydraRingValue = 0.0; private readonly double? defaultHydraRingNullValue = null; private readonly string ringId; - private readonly IList hydraRingCalculationInputs; + private readonly IList hydraRingInputsAndSettings = new List(); + private readonly FailureMechanismDefaultsProvider failureMechanismDefaultsProvider = new FailureMechanismDefaultsProvider(); + private readonly VariableDefaultsProvider variableDefaultsProvider = new VariableDefaultsProvider(); + private readonly NumericsSettingsProvider numericsSettingsProvider = new NumericsSettingsProvider(); private readonly DesignTablesSettingsProvider designTablesSettingsProvider = new DesignTablesSettingsProvider(); private readonly HydraulicModelsSettingsProvider hydraulicModelsSettingsProvider = new HydraulicModelsSettingsProvider(); - private readonly FailureMechanismDefaultsProvider failureMechanismDefaultsProvider = new FailureMechanismDefaultsProvider(); - private readonly VariableDefaultsProvider variableDefaultsProvider = new VariableDefaultsProvider(); + private readonly HydraRingUncertaintiesType uncertaintiesType; /// @@ -77,8 +96,6 @@ /// The to use while performing Hydra-Ring calculations. public HydraRingConfigurationService(string ringId, HydraRingUncertaintiesType uncertaintiesType) { - hydraRingCalculationInputs = new List(); - this.ringId = ringId; this.uncertaintiesType = uncertaintiesType; } @@ -113,17 +130,38 @@ /// the same has already been added. public void AddHydraRingCalculationInput(HydraRingCalculationInput hydraRingCalculationInput) { - if (hydraRingCalculationInputs.Any(h => h.Section.SectionId == hydraRingCalculationInput.Section.SectionId)) + AddHydraRingCalculationInput(hydraRingCalculationInput, + null, + null, + null); + } + + /// + /// Adds Hydra-Ring calculation input to the configuration. + /// + /// The calculation input to add to the configuration. + /// The settings for the design table when performing the calculation with given . + /// The dictionary containing numerics settings per submechanism for the given . + /// The settings for the hydraulic models when performing the calculation with given . + /// Thrown when with + /// the same has already been added. + public void AddHydraRingCalculationInput(HydraRingCalculationInput input, DesignTablesSetting designTablesSetting, + Dictionary numericsSettings, HydraulicModelsSetting hydraulicModelsSetting) + { + if (hydraRingInputsAndSettings.Any(h => h.Input.Section.SectionId == input.Section.SectionId)) { - throw new ArgumentException(@"Section id is not unique", "hydraRingCalculationInput"); + throw new ArgumentException(@"Section id is not unique", "input"); } - if (hydraRingCalculationInputs.Count > 0 && hydraRingCalculationInputs.First().FailureMechanismType != hydraRingCalculationInput.FailureMechanismType) + if (hydraRingInputsAndSettings.Count > 0 && hydraRingInputsAndSettings.First().Input.FailureMechanismType != input.FailureMechanismType) { throw new NotSupportedException("Running calculations for multiple failure mechanism types is not supported."); } - hydraRingCalculationInputs.Add(hydraRingCalculationInput); + hydraRingInputsAndSettings.Add(new InputWithSettings( + input, + designTablesSetting, + hydraulicModelsSetting, numericsSettings)); } /// @@ -163,11 +201,14 @@ private IList GetHydraulicModelsConfiguration() { var timeIntegrationSchemeId = 1; - var input = hydraRingCalculationInputs.FirstOrDefault(); - if (input != null) + if(hydraRingInputsAndSettings.Count > 0) { - timeIntegrationSchemeId = hydraulicModelsSettingsProvider.GetHydraulicModelsSetting(input.FailureMechanismType, ringId).TimeIntegrationSchemeId; + HydraulicModelsSetting hydraulicModelsSetting = hydraulicModelsSettingsProvider.GetHydraulicModelsSetting( + hydraRingInputsAndSettings.First().Input.FailureMechanismType, + ringId); + + timeIntegrationSchemeId = hydraulicModelsSetting.TimeIntegrationSchemeId; } return new List @@ -191,9 +232,10 @@ { var orderedDictionaries = new List(); - foreach (var hydraRingCalculationInput in hydraRingCalculationInputs) + foreach (InputWithSettings inputWithSettings in hydraRingInputsAndSettings) { - var hydraRingSection = hydraRingCalculationInput.Section; + HydraRingCalculationInput hydraRingCalculationInput = inputWithSettings.Input; + HydraRingSection hydraRingSection = hydraRingCalculationInput.Section; orderedDictionaries.Add(new OrderedDictionary { @@ -249,10 +291,11 @@ { var orderedDictionaries = new List(); - foreach (var hydraRingCalculationInput in hydraRingCalculationInputs) + foreach (InputWithSettings inputWithSettings in hydraRingInputsAndSettings) { - var failureMechanismDefaults = failureMechanismDefaultsProvider.GetFailureMechanismDefaults(hydraRingCalculationInput.FailureMechanismType); - var designTablesSetting = designTablesSettingsProvider.GetDesignTablesSetting(hydraRingCalculationInput.FailureMechanismType, ringId); + HydraRingCalculationInput hydraRingCalculationInput = inputWithSettings.Input; + FailureMechanismDefaults failureMechanismDefaults = failureMechanismDefaultsProvider.GetFailureMechanismDefaults(hydraRingCalculationInput.FailureMechanismType); + DesignTablesSetting designTablesSetting = designTablesSettingsProvider.GetDesignTablesSetting(hydraRingCalculationInput.FailureMechanismType, ringId); orderedDictionaries.Add(new OrderedDictionary { @@ -305,11 +348,12 @@ { var orderDictionaries = new List(); - foreach (var hydraRingCalculationInput in hydraRingCalculationInputs) + foreach (InputWithSettings inputWithSettings in hydraRingInputsAndSettings) { - var failureMechanismDefaults = failureMechanismDefaultsProvider.GetFailureMechanismDefaults(hydraRingCalculationInput.FailureMechanismType); + HydraRingCalculationInput hydraRingCalculationInput = inputWithSettings.Input; + FailureMechanismDefaults failureMechanismDefaults = failureMechanismDefaultsProvider.GetFailureMechanismDefaults(hydraRingCalculationInput.FailureMechanismType); - foreach (var subMechanismId in failureMechanismDefaults.SubMechanismIds) + foreach (int subMechanismId in failureMechanismDefaults.SubMechanismIds) { var numericsSetting = numericsSettingsProvider.GetNumericsSetting(hydraRingCalculationInput.FailureMechanismType, subMechanismId, ringId); @@ -386,11 +430,12 @@ { var orderDictionaries = new List(); - foreach (var hydraRingCalculationInput in hydraRingCalculationInputs) + foreach (InputWithSettings inputWithSettings in hydraRingInputsAndSettings) { - var failureMechanismDefaults = failureMechanismDefaultsProvider.GetFailureMechanismDefaults(hydraRingCalculationInput.FailureMechanismType); + HydraRingCalculationInput hydraRingCalculationInput = inputWithSettings.Input; + FailureMechanismDefaults failureMechanismDefaults = failureMechanismDefaultsProvider.GetFailureMechanismDefaults(hydraRingCalculationInput.FailureMechanismType); - foreach (var hydraRingVariable in hydraRingCalculationInput.Variables) + foreach (HydraRingVariable hydraRingVariable in hydraRingCalculationInput.Variables) { var variableDefaults = variableDefaultsProvider.GetVariableDefaults(hydraRingCalculationInput.FailureMechanismType, hydraRingVariable.VariableId); @@ -459,11 +504,12 @@ { var orderDictionaries = new List(); - foreach (var hydraRingCalculationInput in hydraRingCalculationInputs) + foreach (InputWithSettings inputWithSettings in hydraRingInputsAndSettings) { + HydraRingCalculationInput hydraRingCalculationInput = inputWithSettings.Input; for (var i = 0; i < hydraRingCalculationInput.ProfilePoints.Count(); i++) { - var hydraRingProfilePoint = hydraRingCalculationInput.ProfilePoints.ElementAt(i); + HydraRingProfilePoint hydraRingProfilePoint = hydraRingCalculationInput.ProfilePoints.ElementAt(i); orderDictionaries.Add(new OrderedDictionary { @@ -489,12 +535,13 @@ private IList GetCalculationProfilesConfiguration() { var orderDictionaries = new List(); - - foreach (var hydraRingCalculationInput in hydraRingCalculationInputs) + + foreach (InputWithSettings inputWithSettings in hydraRingInputsAndSettings) { + HydraRingCalculationInput hydraRingCalculationInput = inputWithSettings.Input; for (var i = 0; i < hydraRingCalculationInput.ProfilePoints.Count(); i++) { - var hydraRingProfilePoint = hydraRingCalculationInput.ProfilePoints.ElementAt(i); + HydraRingProfilePoint hydraRingProfilePoint = hydraRingCalculationInput.ProfilePoints.ElementAt(i); orderDictionaries.Add(new OrderedDictionary { @@ -523,8 +570,9 @@ private IList GetForlandModelsConfiguration() { var orderDictionaries = new List(); - foreach (HydraRingCalculationInput input in hydraRingCalculationInputs.Where(i => i.ForelandsPoints.Any())) + foreach (InputWithSettings inputWithSettings in hydraRingInputsAndSettings.Where(i => i.Input.ForelandsPoints.Any())) { + HydraRingCalculationInput input = inputWithSettings.Input; FailureMechanismDefaults failureMechanismDefaults = failureMechanismDefaultsProvider.GetFailureMechanismDefaults(input.FailureMechanismType); orderDictionaries.Add(new OrderedDictionary { @@ -545,8 +593,9 @@ private IList GetForelandsConfiguration() { var orderDictionaries = new List(); - foreach (var hydraRingCalculationInput in hydraRingCalculationInputs) + foreach (InputWithSettings inputWithSettings in hydraRingInputsAndSettings) { + HydraRingCalculationInput hydraRingCalculationInput = inputWithSettings.Input; for (var i = 0; i < hydraRingCalculationInput.ForelandsPoints.Count(); i++) { var forelandPoint = hydraRingCalculationInput.ForelandsPoints.ElementAt(i); @@ -574,8 +623,9 @@ private IList GetBreakWatersConfiguration() { var orderedDictionaries = new List(); - foreach (var hydraRingCalculationInput in hydraRingCalculationInputs) + foreach (InputWithSettings inputWithSettings in hydraRingInputsAndSettings) { + HydraRingCalculationInput hydraRingCalculationInput = inputWithSettings.Input; if (hydraRingCalculationInput.BreakWater != null) { orderedDictionaries.Add(new OrderedDictionary @@ -599,9 +649,10 @@ { var orderedDictionaries = new List(); - foreach (var hydraRingCalculationInput in hydraRingCalculationInputs) + foreach (InputWithSettings inputWithSettings in hydraRingInputsAndSettings) { - var failureMechanismDefaults = failureMechanismDefaultsProvider.GetFailureMechanismDefaults(hydraRingCalculationInput.FailureMechanismType); + HydraRingCalculationInput hydraRingCalculationInput = inputWithSettings.Input; + FailureMechanismDefaults failureMechanismDefaults = failureMechanismDefaultsProvider.GetFailureMechanismDefaults(hydraRingCalculationInput.FailureMechanismType); orderedDictionaries.Add(new OrderedDictionary { @@ -630,9 +681,10 @@ { var orderedDictionaries = new List(); - foreach (var hydraRingCalculationInput in hydraRingCalculationInputs) + foreach (InputWithSettings inputWithSettings in hydraRingInputsAndSettings) { - var failureMechanismDefaults = failureMechanismDefaultsProvider.GetFailureMechanismDefaults(hydraRingCalculationInput.FailureMechanismType); + HydraRingCalculationInput hydraRingCalculationInput = inputWithSettings.Input; + FailureMechanismDefaults failureMechanismDefaults = failureMechanismDefaultsProvider.GetFailureMechanismDefaults(hydraRingCalculationInput.FailureMechanismType); foreach (var subMechanismId in failureMechanismDefaults.SubMechanismIds) {