Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesOperational/OperationalCalculator.cs =================================================================== diff -u -r2656 -r2695 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesOperational/OperationalCalculator.cs (.../OperationalCalculator.cs) (revision 2656) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesOperational/OperationalCalculator.cs (.../OperationalCalculator.cs) (revision 2695) @@ -130,19 +130,25 @@ FailureMechanismSystemType soilProbabilityFailureMechanismSystemType = damProjectData.DamProjectCalculationSpecification.CurrentSpecification.FailureMechanismSystemType; var soiProfileProbability = location.Segment.GetMostProbableSoilGeometryProbability( ConversionHelper.ConvertToSegmentFailureMechanismType(soilProbabilityFailureMechanismSystemType)); - var projectPath = damProjectData.ProjectPath != "" ? damProjectData.ProjectPath : Directory.GetCurrentDirectory(); - var calculationMessages = new List(); - operationalCalculatorTasks.Add(new OperationalCalculatorTask() + if (soiProfileProbability != null) { - Location = location, - SoiProfileProbability = soiProfileProbability, - ProjectPath = projectPath, - CalculationMap = damProjectData.CalculationMap, - FailureMechanismeCalculationSpecification = damProjectData.DamProjectCalculationSpecification.CurrentSpecification, - TimeSerieEntry = entry, - TimeStepIndex = entryIndex, - CalculationMessages = calculationMessages - }); + var projectPath = damProjectData.ProjectPath != "" + ? damProjectData.ProjectPath + : Directory.GetCurrentDirectory(); + var calculationMessages = new List(); + operationalCalculatorTasks.Add(new OperationalCalculatorTask() + { + Location = location, + SoiProfileProbability = soiProfileProbability, + ProjectPath = projectPath, + CalculationMap = damProjectData.CalculationMap, + FailureMechanismeCalculationSpecification = damProjectData + .DamProjectCalculationSpecification.CurrentSpecification, + TimeSerieEntry = entry, + TimeStepIndex = entryIndex, + CalculationMessages = calculationMessages + }); + } } else { @@ -153,13 +159,29 @@ } } - // Perform the calculation - Parallel.Run(operationalCalculatorTasks, RunOperationalCalculatorTask, null, damProjectData.MaxCalculationCores); - foreach (var operationalCalculatorTask in operationalCalculatorTasks) + if (operationalCalculatorTasks.Count > 0) { - damProjectData.CalculationMessages.AddRange(operationalCalculatorTask.CalculationMessages); + // Perform the calculation + Parallel.Run(operationalCalculatorTasks, RunOperationalCalculatorTask, null, + damProjectData.MaxCalculationCores); + foreach (var operationalCalculatorTask in operationalCalculatorTasks) + { + damProjectData.CalculationMessages.AddRange(operationalCalculatorTask.CalculationMessages); + } + + damProjectData.OutputTimeSerieCollection = outputTimeSerieCollection; } - damProjectData.OutputTimeSerieCollection = outputTimeSerieCollection; + else + { + var logMessage = new LogMessage + { + MessageType = LogMessageType.Error, + Subject = null, + Message = string.Format(Resources.DesignCalculatorNoSegmentsWithFailureMechanismTypePresent, + damProjectData.DamProjectCalculationSpecification.CurrentSpecification.FailureMechanismSystemType.ToString()) + }; + damProjectData.CalculationMessages.Add(logMessage); + } } private void RunOperationalCalculatorTask(object operationalCalculatorTask) @@ -341,7 +363,20 @@ } break; case FailureMechanismSystemType.Piping: - throw new NotImplementedException(); + switch (currentSpecification.PipingModelType) + { + case PipingModelType.Bligh: + throw new NotImplementedException(); + case PipingModelType.SellmeijerVnk: + throw new NotImplementedException(); + case PipingModelType.Sellmeijer4Forces: + throw new NotImplementedException(); + case PipingModelType.Wti2017: + parameter = TimeSerieParameters.StabilityInsideFactor.ToString(); + break; + } + break; + } return parameter; }