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;
+ }
}
}