Index: dam engine/trunk/src/Deltares.DamEngine.Calculators/Dikes Assessment Regional/RWScenariosCalculation.cs =================================================================== diff -u -r334 -r404 --- dam engine/trunk/src/Deltares.DamEngine.Calculators/Dikes Assessment Regional/RWScenariosCalculation.cs (.../RWScenariosCalculation.cs) (revision 334) +++ dam engine/trunk/src/Deltares.DamEngine.Calculators/Dikes Assessment Regional/RWScenariosCalculation.cs (.../RWScenariosCalculation.cs) (revision 404) @@ -22,6 +22,7 @@ using System; using System.Collections.Generic; using System.Diagnostics; +using System.IO; using System.Linq; using System.Text.RegularExpressions; using Deltares.DamEngine.Calculators.SchematizationFactor; @@ -33,6 +34,7 @@ using Deltares.DamEngine.Data.Standard.Calculation; using Deltares.DamEngine.Data.Standard.Language; using Deltares.DamEngine.Data.Standard.Logging; +using Deltares.Stability.Calculation; namespace Deltares.DamEngine.Calculators.Dikes_Assessment_Regional { @@ -291,7 +293,7 @@ catch (Exception e) { job.CalculationResult = CalculationResult.UnexpectedError; - sendMessageDelegate(new LogMessage(LogMessageType.Warning, job.Location, String.Format("Error: {0}", e.Message))); + sendMessageDelegate(new LogMessage(LogMessageType.Warning, job, String.Format(job.LocationName + " Error: {0}", e.Message))); } } @@ -335,9 +337,9 @@ // waterLevel = job.Location.BoezemLevelTp; // break; // } -// job.SoilGeometryProbability.SoilProfile.EnsureUniqueLayerIds(); +// //job.SoilGeometryProbability.SoilProfile.EnsureUniqueLayerIds(); // var calculationName = GetCalculationNameForPipingCalculator(job); -// calculator.FilenameCalculation = Path.Combine(Path.Combine(DamProject.ProjectWorkingPath, job.FailureMechanismType.ToString()), calculationName); +// calculator.FilenameCalculation = Path.Combine(Path.Combine(DamProjectData.ProjectWorkingPath, job.FailureMechanismType.ToString()), calculationName); // calculator.IsHydraulicShortcut = (job.HydraulicShortcutType == HydraulicShortcutType.HydraulicShortcut); // double? pipingFactor = calculator.CalculatePipingFactor(job.Location, job.Location.LocalXZSurfaceLine2, job.SoilGeometryProbability.SoilProfile, waterLevel); // job.BaseFileName = calculator.FilenameCalculation; @@ -360,7 +362,7 @@ // else // { // throw new RWScenariosCalculationException(String.Format("Uplift criterion not defined for location {0}", job.Location.Name)); -// } ##Bka +// } //##Bka } @@ -369,18 +371,15 @@ string calculationName; switch (job.PipingModelOption) { - case PipingModelType.Sellmeijer : calculationName = String.Format("Calc(Sellmeijer)_Loc({0})_Pro({1}))", - job.Location.Name, job.SoilGeometryProbability.SoilProfile.Name); + case PipingModelType.SellmeijerVnk : calculationName = String.Format("Calc(SellmeijerVnk)_Loc({0})_Pro({1}))", + job.LocationName, job.SoilProfileName); break; - case PipingModelType.Sellmeijer2Forces: calculationName = String.Format("Calc(Sellmeijer2Forces)_Loc({0})_Pro({1}))", - job.Location.Name, job.SoilGeometryProbability.SoilProfile.Name); - break; case PipingModelType.Sellmeijer4Forces: calculationName = String.Format("Calc(Sellmeijer4Forces)_Loc({0})_Pro({1}))", - job.Location.Name, job.SoilGeometryProbability.SoilProfile.Name); + job.LocationName, job.SoilProfileName); break; // Set Sellmeijer4Forces as default. default: calculationName = String.Format("Calc(Sellmeijer4Forces)_Loc({0})_Pro({1}))", - job.Location.Name, job.SoilGeometryProbability.SoilProfile.Name); + job.LocationName, job.SoilProfileName); break; } calculationName = Regex.Replace(calculationName, @"[\\\/:\*\?""'<>|.]", "_"); @@ -398,7 +397,7 @@ // PipingCalculator calculator; // switch (job.PipingModelOption) // { -// case PipingModelType.Sellmeijer: calculator = new PipingCalculatorSellmeijer(modelParametersForPLLines, +// case PipingModelType.SellmeijerVnk: calculator = new PipingCalculatorSellmeijer(modelParametersForPLLines, // 1.0, null, null, null, job.Location.ModelFactors.UpliftCriterionPiping.Value); // break; // case PipingModelType.Sellmeijer2Forces: calculator = new PipingCalculatorSellmeijer2Forces(modelParametersForPLLines, @@ -422,54 +421,54 @@ /// private void ProcessJobStability(RWScenarioProfileResult job) { -// StabilityCalculation calculator = new StabilityCalculation(); -// -// lock (runningJobs) -// { -// runningJobs[calculator] = job; -// } -// -// calculator.MStabExePath = this.MStabExePath; -// calculator.RegisterSendMessage(this.SendStabilityMessage); -// -// string soilDatabaseName = job.Location.SoildatabaseName; + StabilityCalculation calculator = new StabilityCalculation(); + + lock (runningJobs) + { + runningJobs[calculator] = job; + } + + // calculator.MStabExePath = this.MStabExePath; + calculator.RegisterSendMessage(this.SendStabilityMessage); + + string soilDatabaseName = job.Location.SoildatabaseName; // DamFailureMechanismeCalculationSpecification damCalculation = // calculator.GetSpecification(this.evaluationJob.DikeName, soilDatabaseName, job.Location, new SoilGeometry(job.SoilGeometryProbability.SoilProfile, null), // (MStabModelType)job.MstabModelOption, job.LoadSituation, job.DikeDrySensitivity, job.HydraulicShortcutType, MStabParameters); // // calculator.SaveToFile(damCalculation.FailureMechanismeParamatersMStab); -// + // string inputFile = damCalculation.FailureMechanismeParamatersMStab.MStabParameters.ProjectFileName; // // job.BaseFileName = inputFile.Replace(DamProject.ProjectWorkingPath, @"").Replace(".sti", ""); -// + // calculator.Load(inputFile); -// job.CalculationResult = calculator.Run(); -// -// if (job.CalculationResult == CalculationResult.Succeeded) -// { -// string results = ""; -// -// job.CalculationResult = calculator.GetResults(ref results); -// XmlDeserializer deserializer = new XmlDeserializer(); + job.CalculationResult = calculator.Run(); + + if (job.CalculationResult == CalculationResult.Succeeded) + { + string results = ""; + + job.CalculationResult = calculator.GetResults(ref results); + //XmlDeserializer deserializer = new XmlDeserializer(); // RWResult result = (RWResult)deserializer.XmlDeserializeFromString(results, typeof(RWResult)); -// + // job.SafetyFactor = result.SafetyFactor; // job.ProbabilityOfFailure = result.ProbabilityOfFailure; // job.RwResultType = result.RwResultType; // job.CalculationResult = result.CalculationResult; -// } -// else -// { + } + else + { // job.RwResultType = (damCalculation.FailureMechanismeParamatersMStab.MStabParameters.IsProbabilistic ? RWResultType.ProbabilityOfFailure : RWResultType.SafetyFactor); -// job.SafetyFactor = double.NaN; -// job.ProbabilityOfFailure = double.NaN; -// } -// -// lock (runningJobs) -// { -// runningJobs.Remove(calculator); -// } ##Bka + job.SafetyFactor = double.NaN; + job.ProbabilityOfFailure = double.NaN; + } + + lock (runningJobs) + { + runningJobs.Remove(calculator); + } } /// @@ -483,8 +482,7 @@ if (logMessage.Subject != null) { RWScenarioProfileResult job = (RWScenarioProfileResult)runningJobs[(ICalculation)logMessage.Subject]; - logMessage.Subject = job.Location; - // logMessage.Detail = job.SoilGeometryProbability.SoilProfile.Name; + logMessage.Subject = job.Location; } } @@ -509,7 +507,7 @@ // scenarios were succesfully created, so results are available foreach (RWScenarioProfileResult job in tasks) { - if (job.Location.Name.Equals(location.Name)) + if (job.LocationName.Equals(location.Name)) { RWScenarioResult scenarioResult = null; foreach (RWScenarioResult existingScenarioResult in scenariosResult.RWScenarioResults)