Index: dam engine/trunk/src/Deltares.DamEngine.Calculators/General/DamCalculation.cs =================================================================== diff -u -r334 -r346 --- dam engine/trunk/src/Deltares.DamEngine.Calculators/General/DamCalculation.cs (.../DamCalculation.cs) (revision 334) +++ dam engine/trunk/src/Deltares.DamEngine.Calculators/General/DamCalculation.cs (.../DamCalculation.cs) (revision 346) @@ -22,8 +22,11 @@ using System; using System.IO; using System.Threading.Tasks; +using Deltares.DamEngine.Calculators.Dikes_Operational; using Deltares.DamEngine.Data.General; using Deltares.DamEngine.Data.Standard.Calculation; +using Deltares.DamEngine.Calculators.General; +using Deltares.DamEngine.Data.General.TimeSeries; namespace Deltares.DamEngine.Calculators { @@ -218,57 +221,56 @@ /// /// /// -// private void CalculateFailureMechanismStabilityInsideMStab( -// DamFailureMechanismeCalculationSpecification failureMechanismeCalculationSpecification, -// string failureMechanismWorkingDirectory) -// { -// if (string.IsNullOrWhiteSpace(failureMechanismWorkingDirectory)) -// throw new ArgumentException("Invalid working directory. The supplied string is empty or null.", "failureMechanismWorkingDirectory"); -// -// string stabilityWorkingPath = Path.GetFullPath(failureMechanismWorkingDirectory); -// -// var timeSerieStabilityCalculator = new TimeSerieStabilityCalculator -// { -// StabilityWorkingPath = stabilityWorkingPath, -// IsMStabCalculationOff = false, -// MStabExePath = this.mstabExePath, -// SendMessageDelegate = sendMessageDelegate -// }; -// -// if (!Directory.Exists(timeSerieStabilityCalculator.StabilityWorkingPath)) -// { -// Directory.CreateDirectory(timeSerieStabilityCalculator.StabilityWorkingPath); -// } -// int locationCounter = 0; -// var safetyFactorsTimeSerieCollection = new TimeSerieCollection(); -// foreach (DamJob damJob in (damProjectData.WaterBoardJob as WaterBoardJob).Jobs) -// { -// DikeJob dikeJob = damJob as DikeJob; -// foreach (LocationJob locationJob in dikeJob.Jobs) -// { -// if (locationJob.Run.Value && locationJob.WaterLevelTimeSerie != null) -// { -// TimeSerie safefactorsTimeSerie = timeSerieStabilityCalculator.CreateStabilityInsideSafetyFactorTimeSerie( -// locationJob.WaterLevelTimeSerie, -// dikeJob.Dike, -// locationJob.Location, -// locationCounter, -// ProjectDataDirectory, -// failureMechanismeCalculationSpecification.FailureMechanismeParamatersMStab.MStabParameters, -// null); -// locationJob.LocationResult.StabilityTimeSerie = safefactorsTimeSerie; -// safefactorsTimeSerie.LocationId = locationJob.Location.Name; -// safetyFactorsTimeSerieCollection.Series.Add(safefactorsTimeSerie); -// locationCounter++; -// } -// } -// timeSerieStabilityCalculator.IsCalculateAllStabilityProjectsAtOnce = true; -// timeSerieStabilityCalculator.CalculateSafetyFactorFromTimeSeries(TimeSerieParameters.StabilityInsideFactor.ToString(), -// dikeJob.Dike, safetyFactorsTimeSerieCollection); -// } -// ThrowHelper.ThrowWhenConditionIsTrue("No locations specified.",() => locationCounter == 0); -// } + private void CalculateFailureMechanismStabilityInsideMStab( + DamFailureMechanismeCalculationSpecification failureMechanismeCalculationSpecification, + string failureMechanismWorkingDirectory) + { + if (string.IsNullOrWhiteSpace(failureMechanismWorkingDirectory)) + throw new ArgumentException("Invalid working directory. The supplied string is empty or null.", "failureMechanismWorkingDirectory"); + string stabilityWorkingPath = Path.GetFullPath(failureMechanismWorkingDirectory); + + var timeSerieStabilityCalculator = new TimeSerieStabilityCalculator + { + StabilityWorkingPath = stabilityWorkingPath, + IsMStabCalculationOff = false, + MStabExePath = this.mstabExePath, + SendMessageDelegate = sendMessageDelegate + }; + + if (!Directory.Exists(timeSerieStabilityCalculator.StabilityWorkingPath)) + { + Directory.CreateDirectory(timeSerieStabilityCalculator.StabilityWorkingPath); + } + int locationCounter = 0; + var safetyFactorsTimeSerieCollection = new TimeSerieCollection(); + + DikeJob dikeJob = damProjectData.DikeJob as DikeJob; + foreach (LocationJob locationJob in dikeJob.Jobs) + { + if (locationJob.Run.Value && locationJob.WaterLevelTimeSerie != null) + { + TimeSerie safefactorsTimeSerie = timeSerieStabilityCalculator.CreateStabilityInsideSafetyFactorTimeSerie( + locationJob.WaterLevelTimeSerie, + dikeJob.Dike, + locationJob.Location, + locationCounter, + ProjectDataDirectory, + failureMechanismeCalculationSpecification.FailureMechanismeParamatersMStab.MStabParameters, + null); + locationJob.LocationResult.StabilityTimeSerie = safefactorsTimeSerie; + safefactorsTimeSerie.LocationId = locationJob.Location.Name; + safetyFactorsTimeSerieCollection.Series.Add(safefactorsTimeSerie); + locationCounter++; + } + } + timeSerieStabilityCalculator.IsCalculateAllStabilityProjectsAtOnce = true; + timeSerieStabilityCalculator.CalculateSafetyFactorFromTimeSeries(TimeSerieParameters.StabilityInsideFactor.ToString(), + dikeJob.Dike, safetyFactorsTimeSerieCollection); + + ThrowHelper.ThrowWhenConditionIsTrue("No locations specified.",() => locationCounter == 0); + } + public void CalculateDamProject(DamProjectData damProject, string defaultProjectWorkingPath) { // damProjectData = damProject; ##Bka