Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesDesign/DesignCalculator.cs =================================================================== diff -u -r1394 -r1432 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesDesign/DesignCalculator.cs (.../DesignCalculator.cs) (revision 1394) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesDesign/DesignCalculator.cs (.../DesignCalculator.cs) (revision 1432) @@ -29,6 +29,7 @@ using Deltares.DamEngine.Data.General; using Deltares.DamEngine.Data.General.Results; using Deltares.DamEngine.Data.Geotechnics; +using Deltares.DamEngine.Data.Standard.Calculation; using Deltares.DamEngine.Data.Standard.Logging; namespace Deltares.DamEngine.Calculators.DikesDesign @@ -38,13 +39,17 @@ /// public class DesignCalculator { + + private ProgressDelegate progressDelegate; + /// /// Performs the design calculation /// /// The dam project data. /// public void Execute(DamProjectData damProjectData) { + progressDelegate?.Invoke(0); damProjectData.DesignCalculations = new List(); if (damProjectData.CalculationMessages == null) { @@ -54,7 +59,8 @@ { damProjectData.CalculationMessages.Clear(); } - + var total = DetermineMainNumberOfCalculations(damProjectData.Dike.Locations); + var current = 0; for (int locationIndex = 0; locationIndex < damProjectData.Dike.Locations.Count; locationIndex++) { var location = damProjectData.Dike.Locations[locationIndex]; @@ -138,6 +144,8 @@ e.Message))); } } + current++; + progressDelegate?.Invoke(Convert.ToDouble(current) / Convert.ToDouble(total)); } } } @@ -292,5 +300,28 @@ } } + /// + /// Registers the progress. + /// + /// The progress delegate. + /// + public CalculationResult RegisterProgress(ProgressDelegate aProgressDelegate) + { + progressDelegate = aProgressDelegate; + return CalculationResult.Succeeded; + } + + private int DetermineMainNumberOfCalculations(IList locations) + { + var total = 0; + foreach (var location in locations) + { + for (int subSoilScenarioIndex = 0; subSoilScenarioIndex < location.Segment.SoilProfileProbabilities.Count; subSoilScenarioIndex++) + { + total++; + } + } + return total; + } } }