Index: DamEngine/trunk/src/Deltares.DamEngine.Data/General/DamFailureMechanismeCalculationSpecification.cs =================================================================== diff -u -r1212 -r1575 --- DamEngine/trunk/src/Deltares.DamEngine.Data/General/DamFailureMechanismeCalculationSpecification.cs (.../DamFailureMechanismeCalculationSpecification.cs) (revision 1212) +++ DamEngine/trunk/src/Deltares.DamEngine.Data/General/DamFailureMechanismeCalculationSpecification.cs (.../DamFailureMechanismeCalculationSpecification.cs) (revision 1575) @@ -169,7 +169,7 @@ public void Assign(DamFailureMechanismeCalculationSpecification damFailureMechanismeCalculation) { this.FailureMechanismSystemType = damFailureMechanismeCalculation.failureMechanismSystemType; - this.FailureMechanismParametersMStab.Assign(damFailureMechanismeCalculation.FailureMechanismParametersMStab); + this.FailureMechanismParametersMStab.Assign(damFailureMechanismeCalculation.FailureMechanismParametersMStab.Clone()); //assign interface } Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesAssessmentRegional/RegionalScenariosCalculation.cs =================================================================== diff -u -r1394 -r1575 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesAssessmentRegional/RegionalScenariosCalculation.cs (.../RegionalScenariosCalculation.cs) (revision 1394) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesAssessmentRegional/RegionalScenariosCalculation.cs (.../RegionalScenariosCalculation.cs) (revision 1575) @@ -63,7 +63,6 @@ private readonly Dictionary runningJobs = new Dictionary(); private bool isSkipStabilityCalculation; private PipingModelType pipingModelType; - private MStabParameters mStabParameters; /// /// Executes the specified a dam project data. @@ -82,7 +81,6 @@ damProjectData.CalculationMessages.Clear(); } maxCalculationCores = damProjectData.MaxCalculationCores; - mStabParameters = damProjectData.DamProjectCalculationSpecification.CurrentSpecification.FailureMechanismParametersMStab.MStabParameters; pipingModelType = damProjectData.DamProjectCalculationSpecification.CurrentSpecification.PipingModelType; var dj = damProjectData.DikeJob; foreach (var locationJob in damProjectData.LocationJobs) @@ -308,10 +306,9 @@ private IList GetRegionalScenarios(Location location, SoilGeometryProbability soilGeometryProbability) { - RegionalScenarioSelector selector = new RegionalScenarioSelector - { - PipingModelType = pipingModelType, - MStabParameters = mStabParameters + RegionalScenarioSelector selector = new RegionalScenarioSelector() + { + PipingModelType = pipingModelType }; return selector.GetScenarios(location, soilGeometryProbability); } @@ -344,7 +341,7 @@ /// private void ProcessJob(RegionalScenarioProfileResult job) { - Debug.WriteLine("Job {0}, location {1}, Scenario {2}", job.FailureMechanismType.ToString(), job.LocationName, job.ScenarioType.ToString()); + Debug.WriteLine("Job {0}, Location {1}, Profile {2}, Scenario {3}, LoadSituation {4}", job.FailureMechanismType.ToString(), job.LocationName, job.SoilProfileName, job.ScenarioType.ToString(), job.LoadSituation.ToString()); switch (job.FailureMechanismType) { case FailureMechanismSystemType.StabilityInside: @@ -364,25 +361,25 @@ /// private void ProcessJobStability(RegionalScenarioProfileResult job) { - job.CurrentSpecification = damProjectData.DamProjectCalculationSpecification.CurrentSpecification; // must this be a copy? + job.CurrentSpecification = damProjectData.DamProjectCalculationSpecification.CurrentSpecification.Clone(); + job.CurrentSpecification.CalculationModel = job.MstabModelOption; + job.CurrentSpecification.StabilityModelType = job.MstabModelOption; job.CurrentSpecification.FailureMechanismSystemType = job.FailureMechanismType; job.CurrentSpecification.FailureMechanismParametersMStab.MStabParameters.Model = job.MstabModelOption; job.CurrentSpecification.AssessmentScenarioJobSettings.LoadSituation = job.LoadSituation; job.CurrentSpecification.AssessmentScenarioJobSettings.DikeDrySensitivity = job.DikeDrySensitivity; job.CurrentSpecification.AssessmentScenarioJobSettings.HydraulicShortcutType = job.HydraulicShortcutType; var calculator = CreateKernelWrapper(job.CurrentSpecification); - - var boezemLevelHbp = job.Location.BoezemLevelHbp; - var boezemLevelLbp = job.Location.BoezemLevelLbp; - // Adapt used waterlevel(s) when needed + + job.Hbp = job.Location.BoezemLevelHbp; + job.Lbp = job.Location.BoezemLevelLbp; + //Adapt used waterlevel(s) when needed if (job.LoadSituation == LoadSituation.Wet) { - job.Location.BoezemLevelHbp = job.Location.BoezemLevelTp; - job.Location.BoezemLevelLbp = job.Location.BoezemLevelTp; + job.Hbp = job.Location.BoezemLevelTp; + job.Lbp = job.Location.BoezemLevelTp; } PerformJob(job, calculator); - job.Location.BoezemLevelHbp = boezemLevelHbp; - job.Location.BoezemLevelLbp = boezemLevelLbp; } /// @@ -393,26 +390,25 @@ { if (job.Location.ModelFactors.UpliftCriterionPiping.HasValue) { - job.CurrentSpecification = damProjectData.DamProjectCalculationSpecification.CurrentSpecification; // must this be a copy? + job.CurrentSpecification = damProjectData.DamProjectCalculationSpecification.CurrentSpecification.Clone(); // must this be a copy? job.CurrentSpecification.FailureMechanismSystemType = job.FailureMechanismType; job.CurrentSpecification.PipingModelType = job.PipingModelOption; job.CurrentSpecification.AssessmentScenarioJobSettings.LoadSituation = job.LoadSituation; job.CurrentSpecification.AssessmentScenarioJobSettings.DikeDrySensitivity = job.DikeDrySensitivity; job.CurrentSpecification.AssessmentScenarioJobSettings.HydraulicShortcutType = job.HydraulicShortcutType; var calculator = CreateKernelWrapper(job.CurrentSpecification); // For piping waterlevel needs to be set here. Piping kernel only uses waterlevelhigh which is set from BoezemLevelHbp. - var boezemLevelHbp = job.Location.BoezemLevelHbp; + job.Hbp = job.Location.BoezemLevelHbp; switch (job.LoadSituation) { case LoadSituation.Dry: - job.Location.BoezemLevelHbp = job.Location.BoezemLevelLbp; + job.Hbp = job.Location.BoezemLevelLbp; break; case LoadSituation.Wet: - job.Location.BoezemLevelHbp = job.Location.BoezemLevelTp; + job.Hbp = job.Location.BoezemLevelTp; break; } PerformJob(job, calculator); - job.Location.BoezemLevelHbp = boezemLevelHbp; } else { @@ -526,16 +522,16 @@ damKernelInput.CalculationDir = Path.Combine(projectPath, damProjectData.CalculationMap); damKernelInput.Location = job.Location; damKernelInput.SubSoilScenario = job.SoilGeometryProbability; - damKernelInput.DamFailureMechanismeCalculationSpecification = damProjectData.DamProjectCalculationSpecification.CurrentSpecification; + damKernelInput.DamFailureMechanismeCalculationSpecification = job.CurrentSpecification; damKernelInput.DamFailureMechanismeCalculationSpecification.FailureMechanismSystemType = job.FailureMechanismType; - damKernelInput.RiverLevelHigh = job.Location.BoezemLevelHbp; - damKernelInput.RiverLevelLow = job.Location.BoezemLevelLbp; + damKernelInput.RiverLevelHigh = job.Hbp; + damKernelInput.RiverLevelLow = job.Lbp; damKernelInput.FilenamePrefix = string.Format("Loc({0})_Sce({1})", job.Location.Name, job.ScenarioType); damKernelInput.SubSoilScenario.SegmentFailureMechanismType = job.FailureMechanismType; IKernelDataInput kernelDataInput; IKernelDataOutput kernelDataOutput; - PrepareResult prepareResult = kernelWrapper.Prepare(damKernelInput, 0, out kernelDataInput, out kernelDataOutput); + PrepareResult prepareResult = kernelWrapper.Prepare(job.DamKernelInput as DamKernelInput, 0, out kernelDataInput, out kernelDataOutput); job.KernelDataInput = kernelDataInput; job.KernelDataOutput = kernelDataOutput; // Sometimes the kernelDataInput is not created (p.e when soilprofileprobablility is meant for @@ -556,7 +552,7 @@ string.Format(Resources.DesignCalculatorPrepareError, job.Location.Name, job.SoilGeometryProbability, ""))); // TODO #The correct regional scenario ID? } - } + } } /// Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesAssessmentRegional/RegionalScenarioSelector.cs =================================================================== diff -u -r1065 -r1575 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesAssessmentRegional/RegionalScenarioSelector.cs (.../RegionalScenarioSelector.cs) (revision 1065) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesAssessmentRegional/RegionalScenarioSelector.cs (.../RegionalScenarioSelector.cs) (revision 1575) @@ -43,14 +43,6 @@ public PipingModelType PipingModelType { get; set; } /// - /// Gets or sets the m stab parameters. - /// - /// - /// The m stab parameters. - /// - public MStabParameters MStabParameters { get; set; } - - /// /// Gets the scenarios. /// /// The location. Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/RegionalAssessment/RegionalScenariosCalculationTests.cs =================================================================== diff -u -r1285 -r1575 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/RegionalAssessment/RegionalScenariosCalculationTests.cs (.../RegionalScenariosCalculationTests.cs) (revision 1285) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/RegionalAssessment/RegionalScenariosCalculationTests.cs (.../RegionalScenariosCalculationTests.cs) (revision 1575) @@ -38,7 +38,7 @@ TestScenario3And7And8And10(1); } - [Test, Category("Work_In_Progress")] + [Test, Category("MultiCore")] public void TestScenario3And7And8And10MultiCore() { TestScenario3And7And8And10(7); @@ -50,12 +50,24 @@ TestScenario1And3And5And6And7And8And9And10And11(1); } + [Test, Category("MultiCore")] + public void TestScenario1And3And5And6And7And8And9And10And11MultiCore() + { + TestScenario1And3And5And6And7And8And9And10And11(7); + } + [Test, Category("Slow")] public void TestScenario3And4And7And8And10SingleCore() { TestScenario3And4And7And8And10(1); } + [Test, Category("MultiCore")] + public void TestScenario3And4And7And8And10MultiCore() + { + TestScenario3And4And7And8And10(7); + } + private void TestScenario3And7And8And10(int numberOfCores) { const string calcDir = "TestOutAssessment"; @@ -85,6 +97,14 @@ Assert.AreEqual(4, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult.Length); // scenario03: 3 results Assert.AreEqual(3, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[0].RegionalScenarioProfileResults.Length); + // scenario07: 3 results + Assert.AreEqual(3, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[1].RegionalScenarioProfileResults.Length); + // scenario08: 9 results + Assert.AreEqual(9, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[3].RegionalScenarioProfileResults.Length); + // scenario10: 3 results + Assert.AreEqual(3, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[2].RegionalScenarioProfileResults.Length); + + // scenario03 Assert.AreEqual("Segment_235_1D1", output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[0].RegionalScenarioProfileResults[0].SoilProfileName); Assert.AreEqual(0.261, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[0].RegionalScenarioProfileResults[0].RegionalResult.SafetyFactor, tolerance); Assert.AreEqual("Segment_235_1D3", output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[0].RegionalScenarioProfileResults[1].SoilProfileName); Index: DamEngine/trunk/src/Deltares.DamEngine.Data/RegionalAssessmentResults/RegionalScenarioProfileResult.cs =================================================================== diff -u -r1372 -r1575 --- DamEngine/trunk/src/Deltares.DamEngine.Data/RegionalAssessmentResults/RegionalScenarioProfileResult.cs (.../RegionalScenarioProfileResult.cs) (revision 1372) +++ DamEngine/trunk/src/Deltares.DamEngine.Data/RegionalAssessmentResults/RegionalScenarioProfileResult.cs (.../RegionalScenarioProfileResult.cs) (revision 1575) @@ -283,5 +283,20 @@ /// public List Results { get; set; } + /// + /// Gets or sets the HBP. + /// + /// + /// The HBP. + /// + public double Hbp { get; set; } + + /// + /// Gets or sets the LBP. + /// + /// + /// The LBP. + /// + public double Lbp { get; set; } } }