Index: DamClients/DamUI/trunk/src/Dam/Deltares.Dam.TestHelper/ComputeHelper.cs =================================================================== diff -u -r6793 -r6798 --- DamClients/DamUI/trunk/src/Dam/Deltares.Dam.TestHelper/ComputeHelper.cs (.../ComputeHelper.cs) (revision 6793) +++ DamClients/DamUI/trunk/src/Dam/Deltares.Dam.TestHelper/ComputeHelper.cs (.../ComputeHelper.cs) (revision 6798) @@ -27,36 +27,49 @@ using Deltares.DamEngine.Io.XmlInput; using Deltares.DamEngine.Io.XmlOutput; using Deltares.Standard.Logging; +using DGeoSuite.Common; using NUnit.Framework; namespace Deltares.Dam.TestHelper { + /// + /// Input parameters for computing a stability project + /// + public class ComputeStabilityProjectParameters + { + public List LocationNames { get; set; } = null; + public StabilityModelType ModelType { get; set; } = StabilityModelType.Bishop; + public bool IsStabilityInside { get; set; } = true; + public int ExpectedLocations { get; set; } = 1; + public int MaxCores { get; set; } = 1; + } + + /// + /// Helper class to compute stability projects + /// public class ComputeHelper { /// /// Compute stability project /// - /// - /// - /// - /// - /// - /// + /// The filename of the project to compute + /// Parameteres to compute a stability project + /// The log messages of the computation /// - public static List ComputeStabilityProject(string projectFilename, StabilityModelType modelType, bool isStabilityInside, - int expectedLocations, int maxCores, out List logMessages) + public static List ComputeStabilityProject(string projectFilename, ComputeStabilityProjectParameters computeStabilityProjectParameters, + out List logMessages) { using DamProjectData damProjectData = ProjectLoader.LoadProjectData(projectFilename); Assert.That(damProjectData.WaterBoard.Dikes.Count, Is.EqualTo(1)); Dike dike = damProjectData.WaterBoard.Dikes[0]; - Assert.That(dike.Locations.Count, Is.EqualTo(expectedLocations)); + Assert.That(dike.Locations.Count, Is.EqualTo(computeStabilityProjectParameters.ExpectedLocations)); // Specify calculation - damProjectData.MaxCalculationCores = maxCores; - damProjectData.DamProjectCalculationSpecification.CurrentSpecification.StabilityModelType = modelType; + damProjectData.MaxCalculationCores = computeStabilityProjectParameters.MaxCores; + damProjectData.DamProjectCalculationSpecification.CurrentSpecification.StabilityModelType = computeStabilityProjectParameters.ModelType; damProjectData.DamProjectCalculationSpecification.CurrentSpecification.FailureMechanismeParamatersMStab .MStabParameters.SearchMethod = StabilitySearchMethod.Grid; - if (isStabilityInside) + if (computeStabilityProjectParameters.IsStabilityInside) { damProjectData.DamProjectCalculationSpecification.CurrentSpecification.FailureMechanismSystemType = FailureMechanismSystemType.StabilityInside; } @@ -65,10 +78,21 @@ damProjectData.DamProjectCalculationSpecification.CurrentSpecification.FailureMechanismSystemType = FailureMechanismSystemType.StabilityOutside; } - foreach (var locationJob in damProjectData.LocationJobs) + // Determine locations to calculate + foreach (LocationJob locationJob in damProjectData.LocationJobs) { - locationJob.Run = true; + if (computeStabilityProjectParameters.LocationNames.IsNullOrEmpty()) + { + // If no location names specified, run all locations + locationJob.Run = true; + } + else + { + // Only run specified locations + locationJob.Run = computeStabilityProjectParameters.LocationNames.Contains(locationJob.Location.Name); + } } + DamProjectCalculationSpecification.SelectedAnalysisType = AnalysisType.NoAdaption; Input input = FillXmlInputFromDamUi.CreateInput(damProjectData); Index: DamClients/DamUI/trunk/src/Dam/Deltares.Dam.IntegrationTests/FailureMechanismTests.cs =================================================================== diff -u -r6788 -r6798 --- DamClients/DamUI/trunk/src/Dam/Deltares.Dam.IntegrationTests/FailureMechanismTests.cs (.../FailureMechanismTests.cs) (revision 6788) +++ DamClients/DamUI/trunk/src/Dam/Deltares.Dam.IntegrationTests/FailureMechanismTests.cs (.../FailureMechanismTests.cs) (revision 6798) @@ -40,7 +40,7 @@ public void TestStabilityOutsideWith2DStixFiles() { string projectFilename = Path.Combine(Directory.GetCurrentDirectory(), @"TestData\StabilityOutside2DFromStixTest\BishopOutside.damx"); - List allCalculationResults = ComputeStabilityOutsideProject(projectFilename, 1); + List allCalculationResults = ComputeStabilityOutsideProject(projectFilename, new List(), 1); Assert.That(allCalculationResults, Has.Count.EqualTo(1)); Assert.Multiple(() => @@ -100,23 +100,29 @@ [Test] public void TestStabilityOutsideWith1DProfiles() { + const string locationToCalculate = "RK212-50"; string projectFilename = Path.Combine(Directory.GetCurrentDirectory(), @"TestData\StabilityOutside1DProfileTest\Actualisatie.damx"); - List allCalculationResults = ComputeStabilityOutsideProject(projectFilename, 59); + var locationsToCalculate = new List + { + locationToCalculate + }; + List allCalculationResults = ComputeStabilityOutsideProject(projectFilename, locationsToCalculate, 59); - Assert.That(allCalculationResults, Has.Count.EqualTo(100)); + // Only 1 location (locationToCalculate) is calculated and it has 36 profiles + Assert.That(allCalculationResults, Has.Count.EqualTo(36)); Assert.Multiple(() => { - Assert.That(allCalculationResults[1].LocationName, Is.EqualTo("RK210-560")); + Assert.That(allCalculationResults[1].LocationName, Is.EqualTo(locationToCalculate)); Assert.That(allCalculationResults[1].CalculationResult, Is.EqualTo(CalculationResult.Succeeded)); - Assert.That(allCalculationResults[1].X, Is.EqualTo(88218.047).Within(tolerance3Decimals)); - Assert.That(allCalculationResults[1].Y, Is.EqualTo(448871.233).Within(tolerance3Decimals)); + Assert.That(allCalculationResults[1].X, Is.EqualTo(88157.270).Within(tolerance3Decimals)); + Assert.That(allCalculationResults[1].Y, Is.EqualTo(448925.910).Within(tolerance3Decimals)); Assert.That(allCalculationResults[1].AnalysisType, Is.EqualTo(AnalysisType.NoAdaption)); Assert.That(allCalculationResults[1].IsUplift, Is.EqualTo(false)); Assert.That(allCalculationResults[1].ProfileName, Is.EqualTo("Segment_1_1D2")); Assert.That(allCalculationResults[1].ProfileProbability, Is.EqualTo(2.43)); Assert.That(allCalculationResults[1].StabilityModel, Is.EqualTo(StabilityModelType.Bishop)); // In version 19.2.1, the safety factor was 1.079 - Assert.That(allCalculationResults[1].SafetyFactor, Is.EqualTo(1.129).Within(tolerance3Decimals)); + Assert.That(allCalculationResults[1].SafetyFactor, Is.EqualTo(1.142).Within(tolerance3Decimals)); Assert.That(allCalculationResults[1].ShoulderHeight, Is.EqualTo(null)); Assert.That(allCalculationResults[1].ToeAtPolderX, Is.EqualTo(null)); Assert.That(allCalculationResults[1].ToeAtPolderZ, Is.EqualTo(null)); @@ -125,7 +131,7 @@ Assert.That(allCalculationResults[1].RiverLevelLow, Is.EqualTo(-2.520)); Assert.That(allCalculationResults[1].DikeTableHeight, Is.EqualTo(-2.000).Within(tolerance3Decimals)); Assert.That(allCalculationResults[1].SlopeDampingPiezometricHeightPolderSide, Is.EqualTo(0.000)); - Assert.That(allCalculationResults[1].DikeLength, Is.EqualTo(14.12).Within(tolerance3Decimals * 10)); + Assert.That(allCalculationResults[1].DikeLength, Is.EqualTo(10.73).Within(tolerance3Decimals * 10)); Assert.That(allCalculationResults[1].Pl3MinUplift, Is.EqualTo(null)); Assert.That(allCalculationResults[1].Pl3HeadAdjusted, Is.EqualTo(null)); @@ -138,9 +144,9 @@ Assert.That(allCalculationResults[1].Pl4LocationXMinUplift, Is.EqualTo(null)); Assert.That(allCalculationResults[1].Pl4LocationYMinUplift, Is.EqualTo(null)); - Assert.That(allCalculationResults[1].LocalPipingEntryPointX, Is.EqualTo(9.798).Within(tolerance3Decimals)); - Assert.That(allCalculationResults[1].PipingEntryPointX, Is.EqualTo(88216.844).Within(tolerance3Decimals)); - Assert.That(allCalculationResults[1].PipingEntryPointY, Is.EqualTo(448870.287).Within(tolerance3Decimals)); + Assert.That(allCalculationResults[1].LocalPipingEntryPointX, Is.EqualTo(9.581).Within(tolerance3Decimals)); + Assert.That(allCalculationResults[1].PipingEntryPointX, Is.EqualTo(88158.879).Within(tolerance3Decimals)); + Assert.That(allCalculationResults[1].PipingEntryPointY, Is.EqualTo(448927.141).Within(tolerance3Decimals)); Assert.That(allCalculationResults[1].LocalPipingExitPointX, Is.EqualTo(null)); Assert.That(allCalculationResults[1].PipingExitPointX, Is.EqualTo(null)); Assert.That(allCalculationResults[1].PipingExitPointY, Is.EqualTo(null)); @@ -155,15 +161,15 @@ // Check safety factors of few other soil profiles // In version 19.2.1, safety factors were: [4]=1.079, [8]=0.967, [10]=1.046, [11]=1.225 [12]=1.046 Assert.That(allCalculationResults[4].ProfileName, Is.EqualTo("Segment_1_1D5")); - Assert.That(allCalculationResults[4].SafetyFactor, Is.EqualTo(1.129).Within(tolerance3Decimals)); + Assert.That(allCalculationResults[4].SafetyFactor, Is.EqualTo(1.142).Within(tolerance3Decimals)); Assert.That(allCalculationResults[8].ProfileName, Is.EqualTo("Segment_1_1D9")); - Assert.That(allCalculationResults[8].SafetyFactor, Is.EqualTo(1.049).Within(tolerance3Decimals)); + Assert.That(allCalculationResults[8].SafetyFactor, Is.EqualTo(0.838).Within(tolerance3Decimals)); Assert.That(allCalculationResults[10].ProfileName, Is.EqualTo("Segment_1_1D11")); - Assert.That(allCalculationResults[10].SafetyFactor, Is.EqualTo(1.111).Within(tolerance3Decimals)); + Assert.That(allCalculationResults[10].SafetyFactor, Is.EqualTo(1.000).Within(tolerance3Decimals)); Assert.That(allCalculationResults[11].ProfileName, Is.EqualTo("Segment_1_1D12")); - Assert.That(allCalculationResults[11].SafetyFactor, Is.EqualTo(1.253).Within(tolerance3Decimals)); + Assert.That(allCalculationResults[11].SafetyFactor, Is.EqualTo(0.873).Within(tolerance3Decimals)); Assert.That(allCalculationResults[12].ProfileName, Is.EqualTo("Segment_1_1D13")); - Assert.That(allCalculationResults[12].SafetyFactor, Is.EqualTo(1.111).Within(tolerance3Decimals)); + Assert.That(allCalculationResults[12].SafetyFactor, Is.EqualTo(1.000).Within(tolerance3Decimals)); }); } @@ -173,9 +179,18 @@ /// /// /// - private static List ComputeStabilityOutsideProject(string projectFilename, int expectedLocations) + private static List ComputeStabilityOutsideProject(string projectFilename, List locationsToCalculate, + int expectedLocations) { - return ComputeHelper.ComputeStabilityProject(projectFilename, StabilityModelType.Bishop, false, expectedLocations, 1, out List _); + var computeStabilityProjectParameters = new ComputeStabilityProjectParameters + { + LocationNames = locationsToCalculate, + ModelType = StabilityModelType.Bishop, + IsStabilityInside = false, + ExpectedLocations = expectedLocations, + MaxCores = 1 + }; + return ComputeHelper.ComputeStabilityProject(projectFilename, computeStabilityProjectParameters, out List _); } } } \ No newline at end of file