Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Services/HydraRingConfigurationService.cs =================================================================== diff -u -rbdb164e866b612ba16bbe82aa181dfc7010c7e2b -rf8c28b3b04cdabb62ea37772efcb1f4ebbbf2b9e --- Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Services/HydraRingConfigurationService.cs (.../HydraRingConfigurationService.cs) (revision bdb164e866b612ba16bbe82aa181dfc7010c7e2b) +++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Services/HydraRingConfigurationService.cs (.../HydraRingConfigurationService.cs) (revision f8c28b3b04cdabb62ea37772efcb1f4ebbbf2b9e) @@ -62,8 +62,8 @@ private const double defaultLayerId = 1; private const double defaultAlternativeId = 1; private const double defaultHydraRingValue = 0.0; - private readonly double? defaultHydraRingNullValue = null; + private readonly double? defaultHydraRingNullValue = null; private readonly IList hydraRingInputs = new List(); private readonly FailureMechanismDefaultsProvider failureMechanismDefaultsProvider = new FailureMechanismDefaultsProvider(); private readonly VariableDefaultsProvider variableDefaultsProvider = new VariableDefaultsProvider(); @@ -121,6 +121,7 @@ configurationDictionary["Sections"] = GetSectionsConfiguration(); configurationDictionary["SectionCalculationSchemes"] = GetSectionCalculationSchemesConfiguration(); configurationDictionary["DesignTables"] = GetDesignTablesConfiguration(); + configurationDictionary["PreprocessorSettings"] = GetPreprocessorSettingsConfiguration(); configurationDictionary["Numerics"] = GetNumericsConfiguration(); configurationDictionary["VariableDatas"] = GetVariableDatasConfiguration(); configurationDictionary["CalculationProfiles"] = GetCalculationProfilesConfiguration(); @@ -303,87 +304,131 @@ return orderedDictionaries; } - private IList GetNumericsConfiguration() + private IList GetPreprocessorSettingsConfiguration() { - var orderDictionaries = new List(); + var orderedDictionaries = new List(); foreach (HydraRingCalculationInput hydraRingCalculationInput in hydraRingInputs) { - FailureMechanismDefaults failureMechanismDefaults = failureMechanismDefaultsProvider.GetFailureMechanismDefaults(hydraRingCalculationInput.FailureMechanismType); + PreprocessorSetting preprocessorSetting = hydraRingCalculationInput.PreprocessorSetting; - foreach (int subMechanismId in failureMechanismDefaults.SubMechanismIds) + if (preprocessorSetting.RunPreprocessor) { - NumericsSetting numericsSetting = hydraRingCalculationInput.NumericsSettings[subMechanismId]; - - orderDictionaries.Add(new OrderedDictionary + orderedDictionaries.Add(new OrderedDictionary { { "SectionId", hydraRingCalculationInput.Section.SectionId }, { - "MechanismId", failureMechanismDefaults.MechanismId + "MinValueRunPreprocessor", preprocessorSetting.ValueMin }, { - "LayerId", defaultLayerId // Fixed: no support for revetments - }, - { - "AlternativeId", defaultAlternativeId // Fixed: no support for piping - }, - { - "SubMechanismId", subMechanismId - }, - { - "Method", numericsSetting.CalculationTechniqueId - }, - { - "FormStartMethod", numericsSetting.FormStartMethod - }, - { - "FormNumberOfIterations", numericsSetting.FormNumberOfIterations - }, - { - "FormRelaxationFactor", GetHydraRingValue(numericsSetting.FormRelaxationFactor) - }, - { - "FormEpsBeta", GetHydraRingValue(numericsSetting.FormEpsBeta) - }, - { - "FormEpsHOH", GetHydraRingValue(numericsSetting.FormEpsHoh) - }, - { - "FormEpsZFunc", GetHydraRingValue(numericsSetting.FormEpsZFunc) - }, - { - "DsStartMethod", numericsSetting.DsStartMethod - }, - { - "DsIterationmethod", 3 // Fixed: not relevant - }, - { - "DsMinNumberOfIterations", numericsSetting.DsMinNumberOfIterations - }, - { - "DsMaxNumberOfIterations", numericsSetting.DsMaxNumberOfIterations - }, - { - "DsVarCoefficient", GetHydraRingValue(numericsSetting.DsVarCoefficient) - }, - { - "NiUMin", GetHydraRingValue(numericsSetting.NiUMin) - }, - { - "NiUMax", GetHydraRingValue(numericsSetting.NiUMax) - }, - { - "NiNumberSteps", numericsSetting.NiNumberSteps + "MaxValueRunPreprocessor", preprocessorSetting.ValueMax } }); } } + return orderedDictionaries; + } + + private IList GetNumericsConfiguration() + { + var orderDictionaries = new List(); + + foreach (HydraRingCalculationInput hydraRingCalculationInput in hydraRingInputs) + { + FailureMechanismDefaults failureMechanismDefaults = failureMechanismDefaultsProvider.GetFailureMechanismDefaults(hydraRingCalculationInput.FailureMechanismType); + + foreach (int subMechanismId in failureMechanismDefaults.SubMechanismIds) + { + NumericsSetting numericsSetting = hydraRingCalculationInput.NumericsSettings[subMechanismId]; + + orderDictionaries.Add(CreateNumericsRecord(hydraRingCalculationInput.Section.SectionId, + failureMechanismDefaults.MechanismId, + subMechanismId, + numericsSetting)); + } + + if (hydraRingCalculationInput.PreprocessorSetting.RunPreprocessor) + { + orderDictionaries.Add(CreateNumericsRecord(hydraRingCalculationInput.Section.SectionId, + failureMechanismDefaults.MechanismId, + failureMechanismDefaults.PreprocessorSubMechanismId, + hydraRingCalculationInput.PreprocessorSetting.NumericsSetting)); + } + } + return orderDictionaries; } + private static OrderedDictionary CreateNumericsRecord(int sectionId, int mechanismId, int subMechanismId, NumericsSetting numericsSetting) + { + return new OrderedDictionary + { + { + "SectionId", sectionId + }, + { + "MechanismId", mechanismId + }, + { + "LayerId", defaultLayerId // Fixed: no support for revetments + }, + { + "AlternativeId", defaultAlternativeId // Fixed: no support for piping + }, + { + "SubMechanismId", subMechanismId + }, + { + "Method", numericsSetting.CalculationTechniqueId + }, + { + "FormStartMethod", numericsSetting.FormStartMethod + }, + { + "FormNumberOfIterations", numericsSetting.FormNumberOfIterations + }, + { + "FormRelaxationFactor", GetHydraRingValue(numericsSetting.FormRelaxationFactor) + }, + { + "FormEpsBeta", GetHydraRingValue(numericsSetting.FormEpsBeta) + }, + { + "FormEpsHOH", GetHydraRingValue(numericsSetting.FormEpsHoh) + }, + { + "FormEpsZFunc", GetHydraRingValue(numericsSetting.FormEpsZFunc) + }, + { + "DsStartMethod", numericsSetting.DsStartMethod + }, + { + "DsIterationmethod", 3 // Fixed: not relevant + }, + { + "DsMinNumberOfIterations", numericsSetting.DsMinNumberOfIterations + }, + { + "DsMaxNumberOfIterations", numericsSetting.DsMaxNumberOfIterations + }, + { + "DsVarCoefficient", GetHydraRingValue(numericsSetting.DsVarCoefficient) + }, + { + "NiUMin", GetHydraRingValue(numericsSetting.NiUMin) + }, + { + "NiUMax", GetHydraRingValue(numericsSetting.NiUMax) + }, + { + "NiNumberSteps", numericsSetting.NiNumberSteps + } + }; + } + private IList GetVariableDatasConfiguration() { var orderDictionaries = new List(); @@ -595,29 +640,43 @@ { FailureMechanismDefaults failureMechanismDefaults = failureMechanismDefaultsProvider.GetFailureMechanismDefaults(hydraRingCalculationInput.FailureMechanismType); - orderedDictionaries.Add(new OrderedDictionary + orderedDictionaries.Add(CreateFaultTreeModelsRecord(hydraRingCalculationInput.Section.SectionId, + failureMechanismDefaults.MechanismId, + failureMechanismDefaults.FaultTreeModelId)); + + if (hydraRingCalculationInput.PreprocessorSetting.RunPreprocessor) { - { - "SectionId", hydraRingCalculationInput.Section.SectionId - }, - { - "MechanismId", failureMechanismDefaults.MechanismId - }, - { - "LayerId", defaultLayerId // Fixed: no support for revetments - }, - { - "AlternativeId", defaultAlternativeId // Fixed: no support for piping - }, - { - "FaultTreeModelId", failureMechanismDefaults.FaultTreeModelId - } - }); + orderedDictionaries.Add(CreateFaultTreeModelsRecord(hydraRingCalculationInput.Section.SectionId, + failureMechanismDefaults.MechanismId, + failureMechanismDefaults.PreprocessorFaultTreeModelId)); + } } return orderedDictionaries; } + private static OrderedDictionary CreateFaultTreeModelsRecord(int sectionId, int mechanismId, int faultTreeModelId) + { + return new OrderedDictionary + { + { + "SectionId", sectionId + }, + { + "MechanismId", mechanismId + }, + { + "LayerId", defaultLayerId // Fixed: no support for revetments + }, + { + "AlternativeId", defaultAlternativeId // Fixed: no support for piping + }, + { + "FaultTreeModelId", faultTreeModelId + } + }; + } + private IList GetSectionSubMechanismModelsConfiguration() { var orderedDictionaries = new List();