Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesDesign/DesignCalculator.cs =================================================================== diff -u -r1129 -r1131 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesDesign/DesignCalculator.cs (.../DesignCalculator.cs) (revision 1129) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesDesign/DesignCalculator.cs (.../DesignCalculator.cs) (revision 1131) @@ -32,6 +32,7 @@ using Deltares.DamEngine.Data.General.Results; using Deltares.DamEngine.Data.Geometry; using Deltares.DamEngine.Data.Geotechnics; +using Deltares.DamEngine.Data.Standard.Calculation; using Deltares.DamEngine.Data.Standard.Logging; namespace Deltares.DamEngine.Calculators.DikesDesign @@ -198,38 +199,50 @@ List calculationMessages, List designCalculations) { // Perform validation + var designResults = new List(); List locationCalculationMessages = new List(); List validationMessages; - int errorCount = kernelWrapper.Validate(kernelDataInput, kernelDataOutput, out validationMessages); - if (errorCount > 0) + try { - locationCalculationMessages.Add(new LogMessage(LogMessageType.Error, null, - string.Format(Resources.DesignCalculatorValidationFailed, - damKernelInput.Location.Name, - damKernelInput.SubSoilScenario.ToString(), - damKernelInput.DesignScenario.LocationScenarioID))); - locationCalculationMessages.AddRange(validationMessages); + int errorCount = kernelWrapper.Validate(kernelDataInput, kernelDataOutput, out validationMessages); + if (errorCount > 0) + { + locationCalculationMessages.Add(new LogMessage(LogMessageType.Error, null, + string.Format(Resources.DesignCalculatorValidationFailed, + damKernelInput.Location.Name, + damKernelInput.SubSoilScenario.ToString(), + damKernelInput.DesignScenario.LocationScenarioID))); + locationCalculationMessages.AddRange(validationMessages); + } + else + { + // Perform calculation + kernelWrapper.Execute(kernelDataInput, kernelDataOutput, out locationCalculationMessages); + } + // Process output + calculationMessages.AddRange(locationCalculationMessages); + StringBuilder sb = new StringBuilder(); + foreach (var message in locationCalculationMessages) + { + sb.Append(message.Message + Environment.NewLine); + } + + string resultMessage = sb.ToString(); + kernelWrapper.PostProcess(damKernelInput, kernelDataOutput, resultMessage, out designResults); + } - else + catch (Exception exception) { - // Perform calculation - kernelWrapper.Execute(kernelDataInput, kernelDataOutput, out locationCalculationMessages); + string resultMessage = exception.Message; + kernelWrapper.PostProcess(damKernelInput, kernelDataOutput, resultMessage, out designResults); } - // Process output - calculationMessages.AddRange(locationCalculationMessages); - List designResults; - StringBuilder sb = new StringBuilder(); - foreach (var message in locationCalculationMessages) + finally { - sb.Append(message.Message + Environment.NewLine); + foreach (var designResult in designResults) + { + designCalculations.Add(designResult); + } } - string resultMessage = sb.ToString(); - - kernelWrapper.PostProcess(damKernelInput, kernelDataOutput, resultMessage, out designResults); - foreach (var designResult in designResults) - { - designCalculations.Add(designResult); - } } ///