Index: dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingSellmeijer4Forces/DamPipingSellmeijer4ForcesKernelWrapper.cs
===================================================================
diff -u -r687 -r694
--- dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingSellmeijer4Forces/DamPipingSellmeijer4ForcesKernelWrapper.cs (.../DamPipingSellmeijer4ForcesKernelWrapper.cs) (revision 687)
+++ dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingSellmeijer4Forces/DamPipingSellmeijer4ForcesKernelWrapper.cs (.../DamPipingSellmeijer4ForcesKernelWrapper.cs) (revision 694)
@@ -122,17 +122,25 @@
/// Validates the specified kernel data input.
///
/// The kernel data input.
+ /// The kernel data output.
/// The return messages.
- ///
- public int Validate(IKernelDataInput kernelDataInput, out List messages)
+ ///
+ /// Number of errors that prevent a calculation
+ ///
+ public int Validate(IKernelDataInput kernelDataInput, IKernelDataOutput kernelDataOutput, out List messages)
{
+ DamPipingSellmeijer4ForcesOutput damPipingOutput = (DamPipingSellmeijer4ForcesOutput)kernelDataOutput;
var calculator = CreatePipingCalculatorSellmeijer4Forces(kernelDataInput);
List kernelMessages = calculator.Validate();
messages = new List();
foreach (string stringMessage in kernelMessages)
{
messages.Add(new LogMessage() { Message = stringMessage, MessageType = LogMessageType.Error });
}
+ if (messages.Count > 0)
+ {
+ damPipingOutput.CalculationResult = CalculationResult.InvalidInputData;
+ }
return messages.Count;
}
@@ -196,9 +204,10 @@
///
/// The dam kernel input.
/// The kernel data output.
+ /// The result message.
/// The design result.
/// No input or output object defined
- public void PostProcess(DamKernelInput damKernelInput, IKernelDataOutput kernelDataOutput, out DesignResult designResult)
+ public void PostProcess(DamKernelInput damKernelInput, IKernelDataOutput kernelDataOutput, string resultMessage, out DesignResult designResult)
{
DamPipingSellmeijer4ForcesOutput damPipingOutput = kernelDataOutput as DamPipingSellmeijer4ForcesOutput;
if (damPipingOutput == null)
@@ -216,14 +225,18 @@
var soilProfile1D = damKernelInput.SubSoilScenario.SoilProfile1D;
designResult = new DesignResult(d, designScenario, soilProfile1D, soilProfile2DName, AnalysisType.NoAdaption);
- var pipingDesignResults = new PipingDesignResults(PipingModelType.Sellmeijer4Forces);
- pipingDesignResults.Sellmeijer4ForcesFactor = damPipingOutput.FoSp;
- pipingDesignResults.Sellmeijer4ForcesHcritical = damPipingOutput.Hc;
designResult.CalculationResult = damPipingOutput.CalculationResult;
- designResult.PipingDesignResults = pipingDesignResults;
- pipingDesignResults.LocalExitPointX = damPipingOutput.ExitPointX;
- pipingDesignResults.UpliftFactor = damPipingOutput.UpliftFactor;
- pipingDesignResults.UpliftSituation = damPipingOutput.UpliftSituation;
+ var pipingDesignResults = new PipingDesignResults(PipingModelType.Sellmeijer4Forces);
+ pipingDesignResults.ResultMessage = resultMessage;
+ if (designResult.CalculationResult == CalculationResult.Succeeded)
+ {
+ pipingDesignResults.Sellmeijer4ForcesFactor = damPipingOutput.FoSp;
+ pipingDesignResults.Sellmeijer4ForcesHcritical = damPipingOutput.Hc;
+ designResult.PipingDesignResults = pipingDesignResults;
+ pipingDesignResults.LocalExitPointX = damPipingOutput.ExitPointX;
+ pipingDesignResults.UpliftFactor = damPipingOutput.UpliftFactor;
+ pipingDesignResults.UpliftSituation = damPipingOutput.UpliftSituation;
+ }
}
}
Index: dam engine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamPipingSellmeijer4Forces/DamPipingSellmeijer4ForcesKernelWrapperTests.cs
===================================================================
diff -u -r686 -r694
--- dam engine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamPipingSellmeijer4Forces/DamPipingSellmeijer4ForcesKernelWrapperTests.cs (.../DamPipingSellmeijer4ForcesKernelWrapperTests.cs) (revision 686)
+++ dam engine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamPipingSellmeijer4Forces/DamPipingSellmeijer4ForcesKernelWrapperTests.cs (.../DamPipingSellmeijer4ForcesKernelWrapperTests.cs) (revision 694)
@@ -77,7 +77,7 @@
// Validate the input
List messages;
- kernelWrapper.Validate(damPipingInput, out messages);
+ kernelWrapper.Validate(damPipingInput, kernelDataOutput, out messages);
Assert.AreEqual(0, messages.Count);
// Run the dll
@@ -89,7 +89,7 @@
// Fill the design results
DesignResult result;
- kernelWrapper.PostProcess(damKernelInput, damPipingOutput, out result);
+ kernelWrapper.PostProcess(damKernelInput, damPipingOutput, "", out result);
Assert.AreEqual(11.899117458988471, result.PipingDesignResults.Sellmeijer4ForcesFactor, diff);
Assert.AreEqual(4.7596469835953883, result.PipingDesignResults.Sellmeijer4ForcesHcritical, diff);
}
@@ -142,8 +142,9 @@
// Validate without setting values. Expected error messages.
var damPipingInput = new DamPipingSellmeijer4ForcesInput();
+ var damPipingOutput = new DamPipingSellmeijer4ForcesOutput();
List messages;
- kernelWrapper.Validate(damPipingInput, out messages);
+ kernelWrapper.Validate(damPipingInput, damPipingOutput, out messages);
Assert.IsTrue(messages.Count > 0);
// Validate the input when valid input is provided. Expected no messages.
@@ -162,7 +163,7 @@
PermeabilityKx = 0.0001
};
messages.Clear();
- kernelWrapper.Validate(damPipingInput, out messages);
+ kernelWrapper.Validate(damPipingInput, damPipingOutput, out messages);
Assert.AreEqual(0, messages.Count);
}
@@ -186,7 +187,7 @@
};
DesignResult result;
- kernelWrapper.PostProcess(input, output, out result);
+ kernelWrapper.PostProcess(input, output, "", out result);
Assert.AreEqual(output.FoSp, result.PipingDesignResults.Sellmeijer4ForcesFactor);
Assert.AreEqual(output.Hc, result.PipingDesignResults.Sellmeijer4ForcesHcritical);
}
@@ -218,7 +219,7 @@
{
var kernelWrapper = new DamPipingSellmeijer4ForcesKernelWrapper();
DesignResult result;
- kernelWrapper.PostProcess(new DamKernelInput(), null, out result);
+ kernelWrapper.PostProcess(new DamKernelInput(), null, "", out result);
}
[Test]
@@ -228,7 +229,7 @@
{
var kernelWrapper = new DamPipingSellmeijer4ForcesKernelWrapper();
DesignResult result;
- kernelWrapper.PostProcess(null, new DamPipingSellmeijer4ForcesOutput(), out result);
+ kernelWrapper.PostProcess(null, new DamPipingSellmeijer4ForcesOutput(), "", out result);
}
private static SoilProfile1D CreatePipingSellmeijerProfileWithOneSandlayer()
Index: dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Interfaces/IKernelWrapper.cs
===================================================================
diff -u -r686 -r694
--- dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Interfaces/IKernelWrapper.cs (.../IKernelWrapper.cs) (revision 686)
+++ dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Interfaces/IKernelWrapper.cs (.../IKernelWrapper.cs) (revision 694)
@@ -36,11 +36,14 @@
/// Validates the kernel data input.
///
/// The kernel data input.
+ /// The kernel data output.
/// The messages.
- /// Number of errors that prevent a calculation
- int Validate(IKernelDataInput kernelDataInput, out List messages);
+ ///
+ /// Number of errors that prevent a calculation
+ ///
+ int Validate(IKernelDataInput kernelDataInput, IKernelDataOutput kernelDataOutput, out List messages);
///
- /// Performs a failure mechanism calcualtion based on the input.
+ /// Performs a failure mechanism calculation based on the input.
///
/// The kernel data input.
/// The kernel data output.
@@ -51,7 +54,8 @@
///
/// The dam kernel input.
/// The kernel data output.
+ /// The result message.
/// The design result.
- void PostProcess(DamKernelInput damKernelInput, IKernelDataOutput kernelDataOutput, out DesignResult designResult);
+ void PostProcess(DamKernelInput damKernelInput, IKernelDataOutput kernelDataOutput, string resultMessage, out DesignResult designResult);
}
}
Index: dam engine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamMacroStability/DamMacroStabilityKernelWrapperTests.cs
===================================================================
diff -u -r686 -r694
--- dam engine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamMacroStability/DamMacroStabilityKernelWrapperTests.cs (.../DamMacroStabilityKernelWrapperTests.cs) (revision 686)
+++ dam engine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamMacroStability/DamMacroStabilityKernelWrapperTests.cs (.../DamMacroStabilityKernelWrapperTests.cs) (revision 694)
@@ -55,7 +55,7 @@
// Validate the input
List messages;
- kernelWrapper.Validate(damStabilityInput, out messages);
+ kernelWrapper.Validate(damStabilityInput, kernelOutput, out messages);
Assert.AreEqual(0, messages.Count);
// Run the dll
@@ -67,7 +67,7 @@
// Fill the design results
DesignResult result;
- kernelWrapper.PostProcess(damKernelInput, damMacroStabilityOutput, out result);
+ kernelWrapper.PostProcess(damKernelInput, damMacroStabilityOutput, "", out result);
Assert.AreEqual(1.71, result.StabilityDesignResults.SafetyFactor, diff);
}
@@ -159,7 +159,7 @@
// ToDo zant Fill input
};
// messages.Clear();
- kernelWrapper.Validate(damStabilityInput, out messages);
+ kernelWrapper.Validate(damStabilityInput, null, out messages);
Assert.AreEqual(0, messages.Count);
}
@@ -181,7 +181,7 @@
output.Zone2 = zone2;
DesignResult result;
- kernelWrapper.PostProcess(null, output, out result);
+ kernelWrapper.PostProcess(null, output, "", out result);
Assert.AreEqual(0.9, result.StabilityDesignResults.SafetyFactor);
Assert.AreEqual(1.1, result.StabilityDesignResults.Zone1SafetyFactor);
Assert.AreEqual(1.2, result.StabilityDesignResults.LocalZone1EntryPointX);
@@ -214,7 +214,7 @@
{
var kernelWrapper = new DamMacroStabilityKernelWrapper();
DesignResult result;
- kernelWrapper.PostProcess(null, null, out result);
+ kernelWrapper.PostProcess(null, null, "", out result);
}
}
Index: dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStability/DamMacroStabilityKernelWrapper.cs
===================================================================
diff -u -r686 -r694
--- dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStability/DamMacroStabilityKernelWrapper.cs (.../DamMacroStabilityKernelWrapper.cs) (revision 686)
+++ dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStability/DamMacroStabilityKernelWrapper.cs (.../DamMacroStabilityKernelWrapper.cs) (revision 694)
@@ -53,9 +53,12 @@
/// Validates the specified kernel data input.
///
/// The kernel data input.
+ /// The kernel data output.
/// The return messages.
- ///
- public int Validate(IKernelDataInput kernelDataInput, out List messages)
+ ///
+ /// Number of errors that prevent a calculation
+ ///
+ public int Validate(IKernelDataInput kernelDataInput, IKernelDataOutput kernelDataOutput, out List messages)
{
var calculator = StabilityCalculator(kernelDataInput);
//ToDo zant calculator has no Validate.
@@ -193,11 +196,11 @@
/// Fills the design results with the kernel output.
///
/// The dam kernel input.
- /// The .
/// The kernel data output.
+ /// The result message.
/// The design result.
///
- public void PostProcess(DamKernelInput damKernelInput, IKernelDataOutput kernelDataOutput, out DesignResult designResult)
+ public void PostProcess(DamKernelInput damKernelInput, IKernelDataOutput kernelDataOutput, string resultMessage, out DesignResult designResult)
{
DamMacroStabilityOutput damPipingOutput = kernelDataOutput as DamMacroStabilityOutput;
if (damPipingOutput == null)
Index: dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingBligh/DamPipingBlighKernelWrapper.cs
===================================================================
diff -u -r686 -r694
--- dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingBligh/DamPipingBlighKernelWrapper.cs (.../DamPipingBlighKernelWrapper.cs) (revision 686)
+++ dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingBligh/DamPipingBlighKernelWrapper.cs (.../DamPipingBlighKernelWrapper.cs) (revision 694)
@@ -107,10 +107,14 @@
/// Validates the kernel data input.
///
/// The kernel data input.
+ /// The kernel data output.
/// The messages.
- ///
- public int Validate(IKernelDataInput kernelDataInput, out List messages)
+ ///
+ /// Number of errors that prevent a calculation
+ ///
+ public int Validate(IKernelDataInput kernelDataInput, IKernelDataOutput kernelDataOutput, out List messages)
{
+ DamPipingBlighOutput damPipingBlighOutput = (DamPipingBlighOutput) kernelDataOutput;
var calculatorBligh = CreatePipingCalculatorBligh(kernelDataInput);
List kernelMessages = calculatorBligh.Validate();
messages = new List();
@@ -122,6 +126,10 @@
MessageType = LogMessageType.Error
});
}
+ if (messages.Count > 0)
+ {
+ damPipingBlighOutput.CalculationResult = CalculationResult.InvalidInputData;
+ }
return messages.Count;
}
@@ -192,9 +200,10 @@
///
/// The dam kernel input.
/// The kernel data output.
+ /// The result message.
/// The design result.
/// No output object defined for Bligh
- public void PostProcess(DamKernelInput damKernelInput, IKernelDataOutput kernelDataOutput, out DesignResult designResult)
+ public void PostProcess(DamKernelInput damKernelInput, IKernelDataOutput kernelDataOutput, string resultMessage, out DesignResult designResult)
{
DamPipingBlighOutput damPipingBlighOutput = kernelDataOutput as DamPipingBlighOutput;
if (damPipingBlighOutput == null)
@@ -217,17 +226,18 @@
DamProjectCalculationSpecification.SelectedAnalysisType);
designResult.CalculationResult = damPipingBlighOutput.CalculationResult;
var pipingDesignResults = new PipingDesignResults(PipingModelType.Bligh);
- pipingDesignResults.BlighFactor = damPipingBlighOutput.FoSp;
- pipingDesignResults.BlighHcritical = damPipingBlighOutput.Hc;
- // TODO: for now this only works for NoAdaption of geometry; if adaption is enabled, the real redesigned surfaceline has to be assigned
- pipingDesignResults.RedesignedSurfaceLine = damKernelInput.Location.SurfaceLine;
- designResult.PipingDesignResults = pipingDesignResults;
- designResult.CalculationResult = damPipingBlighOutput.CalculationResult;
- pipingDesignResults.UpliftSituation = damPipingBlighOutput.UpliftSituation;
- pipingDesignResults.LocalExitPointX = damPipingBlighOutput.ExitPointX;
- pipingDesignResults.UpliftFactor = damPipingBlighOutput.UpliftFactor;
-
-
+ pipingDesignResults.ResultMessage = resultMessage;
+ if (designResult.CalculationResult == CalculationResult.Succeeded)
+ {
+ pipingDesignResults.BlighFactor = damPipingBlighOutput.FoSp;
+ pipingDesignResults.BlighHcritical = damPipingBlighOutput.Hc;
+ // TODO: for now this only works for NoAdaption of geometry; if adaption is enabled, the real redesigned surfaceline has to be assigned
+ pipingDesignResults.RedesignedSurfaceLine = damKernelInput.Location.SurfaceLine;
+ designResult.PipingDesignResults = pipingDesignResults;
+ pipingDesignResults.UpliftSituation = damPipingBlighOutput.UpliftSituation;
+ pipingDesignResults.LocalExitPointX = damPipingBlighOutput.ExitPointX;
+ pipingDesignResults.UpliftFactor = damPipingBlighOutput.UpliftFactor;
+ }
}
}
Index: dam engine/trunk/src/Deltares.DamEngine.Interface/EngineInterface.cs
===================================================================
diff -u -r669 -r694
--- dam engine/trunk/src/Deltares.DamEngine.Interface/EngineInterface.cs (.../EngineInterface.cs) (revision 669)
+++ dam engine/trunk/src/Deltares.DamEngine.Interface/EngineInterface.cs (.../EngineInterface.cs) (revision 694)
@@ -20,6 +20,7 @@
// All rights reserved.
using System;
+using System.Collections.Generic;
using Deltares.DamEngine.Calculators.Dikes_Design;
using Deltares.DamEngine.Data.General;
using Deltares.DamEngine.Data.Standard;
@@ -159,6 +160,7 @@
string outputXml;
SendMessage(new LogMessage() { MessageType = LogMessageType.Info, Message = "Start calculation" });
+ List calculationMessages;
switch (DamProjectData.DamProjectType)
{
case DamProjectType.Assessment:
@@ -168,7 +170,7 @@
case DamProjectType.Design:
DesignCalculator designCalculator = new DesignCalculator();
- designCalculator.Execute(DamProjectData);
+ calculationMessages = designCalculator.Execute(DamProjectData);
break;
}
Output output = FillXmlOutputFromDam.CreateOutput(DamProjectData);
Index: dam engine/trunk/src/Deltares.DamEngine.Calculators/Dikes Design/DesignCalculator.cs
===================================================================
diff -u -r690 -r694
--- dam engine/trunk/src/Deltares.DamEngine.Calculators/Dikes Design/DesignCalculator.cs (.../DesignCalculator.cs) (revision 690)
+++ dam engine/trunk/src/Deltares.DamEngine.Calculators/Dikes Design/DesignCalculator.cs (.../DesignCalculator.cs) (revision 694)
@@ -53,29 +53,29 @@
if (prepareResult == PrepareResult.Successful)
{
// Perform validation
+ List locationCalculationMessages = new List();
List validationMessages;
- int errorCount = kernelWrapper.Validate(kernelDataInput, out validationMessages);
+ int errorCount = kernelWrapper.Validate(kernelDataInput, kernelDataOutput, out validationMessages);
if (errorCount > 0)
{
- calculationMessages.Add(new LogMessage(LogMessageType.Error, null,
+ locationCalculationMessages.Add(new LogMessage(LogMessageType.Error, null,
string.Format("Validation failed for location '{0}', subsoil scenario '{1}', design scenario '{2}'",
location.Name,
soiProfileProbability.ToString(),
damKernelInput.DesignScenario.LocationScenarioID)));
- calculationMessages.AddRange(validationMessages);
+ locationCalculationMessages.AddRange(validationMessages);
}
else
{
// Perform calculation
- List locationCalculationMessages;
kernelWrapper.Execute(kernelDataInput, kernelDataOutput, out locationCalculationMessages);
- calculationMessages.AddRange(locationCalculationMessages);
-
- // Process output
- DesignResult designResult;
- kernelWrapper.PostProcess(damKernelInput, kernelDataOutput, out designResult);
- damProjectData.DesignCalculations.Add(designResult);
}
+ // Process output
+ calculationMessages.AddRange(locationCalculationMessages);
+ DesignResult designResult;
+ string resultMessage = locationCalculationMessages.ToString();
+ kernelWrapper.PostProcess(damKernelInput, kernelDataOutput, resultMessage, out designResult);
+ damProjectData.DesignCalculations.Add(designResult);
}
}
}