Index: dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingSellmeijerVnk/DamPipingSellmeijerVnkKernelWrapper.cs =================================================================== diff -u --- dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingSellmeijerVnk/DamPipingSellmeijerVnkKernelWrapper.cs (revision 0) +++ dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingSellmeijerVnk/DamPipingSellmeijerVnkKernelWrapper.cs (revision 776) @@ -0,0 +1,192 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Deltares.DamEngine.Calculators.KernelWrappers.Common; +using Deltares.DamEngine.Calculators.KernelWrappers.Interfaces; +using Deltares.DamEngine.Data.General.Results; +using Deltares.DamEngine.Data.Standard.Logging; +using Deltares.DamEngine.Data.General; +using Deltares.DamEngine.Calculators.Uplift; +using Deltares.DamEngine.Data.Geotechnics; +using Deltares.DamPiping.SellmeijerVNKCalculator; +using System.Data; +using Deltares.DamEngine.Calculators.Properties; +using Deltares.DamEngine.Data.Standard.Calculation; + +namespace Deltares.DamEngine.Calculators.KernelWrappers.DamPipingSellmeijerVnk +{ + class DamPipingSellmeijerVnkKernelWrapper : IKernelWrapper + { + private const double defaultMaxReturnValue = 90.0; + private const double defaultFluidisationGradient = 0.3; + + + public void Execute(IKernelDataInput kernelDataInput, IKernelDataOutput kernelDataOutput, out List messages) + { + DamPipingSellmeijerVnkInput damPipingInput = kernelDataInput as DamPipingSellmeijerVnkInput; + if (damPipingInput == null) + { + throw new NoNullAllowedException(Resources.DamPipingSellmeijer4ForcesKernelWrapper_NoInputObjectDefinedForSellmeijer4Forces); + } + DamPipingSellmeijerVnkOutput damPipingOutput = (DamPipingSellmeijerVnkOutput)kernelDataOutput; + if (damPipingOutput == null) + { + throw new NoNullAllowedException(Resources.DamPipingSellmeijer4ForcesKernelWrapper_NoInputObjectDefinedForSellmeijer4Forces); + } + damPipingOutput.FoSp = defaultMaxReturnValue; + messages = new List(); + if (damPipingOutput.UpliftSituation.IsUplift) + { + var calculator = CreatePipingCalculatorSellmeijerVnk(kernelDataInput); + calculator.Calculate(); + damPipingOutput.FoSp = calculator.FoSp; + damPipingOutput.Hc = calculator.Hc; + damPipingOutput.CalculationResult = CalculationResult.Succeeded; + } + } + + public void PostProcess(DamKernelInput damKernelInput, IKernelDataOutput kernelDataOutput, string resultMessage, out DesignResult designResult) + { + throw new NotImplementedException(); + } + + public PrepareResult Prepare(DamKernelInput damKernelInput, out IKernelDataInput kernelDataInput, out IKernelDataOutput kernelDataOutput) + { + var damOutput = new DamPipingSellmeijerVnkOutput() + { + FoSp = defaultMaxReturnValue + }; + kernelDataOutput = damOutput; + if (damKernelInput.SubSoilScenario.SegmentFailureMechanismType == FailureMechanismSystemType.Piping) + { + var soilProfile1D = damKernelInput.SubSoilScenario.SoilProfile1D; + var surfaceLine = damKernelInput.Location.SurfaceLine; + var location = damKernelInput.Location; + var riverLevel = damKernelInput.DesignScenario.RiverLevel; + UpliftSituation upliftSituation; + var plLines = PlLinesHelper.CreatePlLines(location, soilProfile1D, riverLevel, out upliftSituation); + var upliftLocationDeterminator = new UpliftLocationDeterminator + { + PLLines = plLines, + SoilProfile = soilProfile1D, + SurfaceLine = surfaceLine, + DikeEmbankmentMaterial = location.GetDikeEmbankmentSoil(), + XSoilGeometry2DOrigin = location.XSoilGeometry2DOrigin + }; + var upliftLocationAndResult = upliftLocationDeterminator.GetLocationAndResult(damKernelInput.DesignScenario.GetUpliftCriterionPiping(null)); + upliftSituation.IsUplift = (upliftLocationAndResult != null); + var xEntry = surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtRiver).X; + var xExit = 0.0; + var surfaceLevel = 0.0; + var dCoverLayer = 0.0; + var d70 = 0.0; + var aquiferHeight = 0.0; + var permeabilityKx = 0.0; + double? upliftFactor = null; + if (upliftLocationAndResult != null) + { + xExit = upliftLocationAndResult.X; + surfaceLevel = surfaceLine.Geometry.GetZatX(upliftLocationAndResult.X); + var topLevelAquifer = soilProfile1D.GetLayerWithName(upliftLocationAndResult.LayerWhereUpliftOccuresId).TopLevel; + dCoverLayer = DamPipingHelper.DetermineHeightCoverLayer(topLevelAquifer, surfaceLevel); + + var aquiferLayer = SoilProfile1DAquiferLayerCombiner.CombineLayers(soilProfile1D, upliftLocationAndResult.LayerWhereUpliftOccuresId); + d70 = aquiferLayer.D70 * Physics.FactorMeterToMicroMeter; + + aquiferHeight = aquiferLayer.Height; + permeabilityKx = aquiferLayer.PermeabilityKx; + upliftFactor = upliftLocationAndResult.UpliftFactor; + } + var seepageLength = xExit - xEntry; + + // Reference level is highest value of surfaceLevel or PolderLevel + // Uit TR Zandmeevoerende wellen (1999): "Het verval dH is gelijk aan het verschil tussen buitenwaterstand (het ontwerppeil(OP)) + // bij zeedijken en de maatgevende hoogwaterstand (MHW bij rivierdijken) en de waterstand binnendijks ter plaatse van het uittredepunt, + // rekening houdend met zeespiegelrijzing etc.(zie paragraaf 3.7.2). In dien ter plaatse van het uittreepunt of de opbarstlocatie + // geen vrije waterstand heerst kan gerekend worden met het maaiveldniveau, rekening houdend met eventuele maaiveld daling (zie paragraaf 3.7.2)." + var referenceLevel = Math.Max(location.PolderLevel, surfaceLevel); + + Soil inBetweenAquiferlayerSoil = soilProfile1D.BottomAquiferLayer.Soil; + if (soilProfile1D.InBetweenAquiferLayer != null) + { + inBetweenAquiferlayerSoil = soilProfile1D.InBetweenAquiferLayer.Soil; + } + + kernelDataInput = new DamPipingSellmeijerVnkInput() + { + HRiver = riverLevel, + HExit = referenceLevel, + PolderLevel = location.PolderLevel, + Rc = defaultFluidisationGradient, + DTotal = dCoverLayer, + SeepageLength = seepageLength, + D70 = d70, + WhitesConstant = inBetweenAquiferlayerSoil.WhitesConstant, + BeddingAngle = inBetweenAquiferlayerSoil.BeddingAngle, + PermeabilityKx = permeabilityKx, + WaterViscosity = 1.33e-06, + SurfaceLevel = surfaceLevel, + + // TODO: JN find correct values + //DInBetweenAquiferlayer = soilProfile1D.GetLayerHeight(), + DBottomAquiferlayer = 0.0, + PermeabilityInBetweenAquiferlayer = 0.0, + }; + damOutput.ExitPointX = xExit; + damOutput.UpliftFactor = upliftFactor; + damOutput.UpliftSituation = upliftSituation; + return PrepareResult.Successful; + } + kernelDataInput = null; + return PrepareResult.NotRelevant; + } + + public int Validate(IKernelDataInput kernelDataInput, IKernelDataOutput kernelDataOutput, out List messages) + { + DamPipingSellmeijerVnkOutput damPipingOutput = (DamPipingSellmeijerVnkOutput)kernelDataOutput; + //var calculator = Crea + + //List kernelMessages = calculator.ValidateVnk(); + 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; + + return 0; + } + + + private static PipingCalculatorSellmeijerVNK CreatePipingCalculatorSellmeijerVnk(IKernelDataInput kernelDataInput) + { + DamPipingSellmeijerVnkInput damPipingInput = kernelDataInput as DamPipingSellmeijerVnkInput; + if (damPipingInput == null) + { + throw new NoNullAllowedException(Resources.DamPipingSellmeijer4ForcesKernelWrapper_NoInputObjectDefinedForSellmeijer4Forces); + } + var calculator = new PipingCalculatorSellmeijerVNK() + { + //HRiver = damPipingInput.HRiver, + //HExit = damPipingInput.HExit, + //Rc = damPipingInput.Rc, + //DTotal = damPipingInput.DTotal, + //AquiferHeight = damPipingInput.AquiferHeight, + //SeepageLength = damPipingInput.SeepageLength, + //D70 = damPipingInput.D70, + //WhitesConstant = damPipingInput.WhitesConstant, + //BeddingAngle = damPipingInput.BeddingAngle, + //PermeabilityKx = damPipingInput.PermeabilityKx, + //WaterViscosity = damPipingInput.WaterViscosity, + }; + return calculator; + } + + } +} Index: dam engine/trunk/src/Deltares.DamEngine.Calculators/Deltares.DamEngine.Calculators.csproj =================================================================== diff -u -r769 -r776 --- dam engine/trunk/src/Deltares.DamEngine.Calculators/Deltares.DamEngine.Calculators.csproj (.../Deltares.DamEngine.Calculators.csproj) (revision 769) +++ dam engine/trunk/src/Deltares.DamEngine.Calculators/Deltares.DamEngine.Calculators.csproj (.../Deltares.DamEngine.Calculators.csproj) (revision 776) @@ -41,6 +41,9 @@ ..\..\lib\FailureMechanisms\DamPiping\Deltares.DamPiping.Sellmeijer4ForcesCalculator.dll + + ..\..\lib\FailureMechanisms\DamPiping\Deltares.DamPiping.SellmeijerVNKCalculator.dll + False ..\..\lib\log4net.2.0.3\log4net.dll @@ -124,6 +127,9 @@ + + + Index: dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingSellmeijerVnk/DamPipingSellmeijerVnkInput.cs =================================================================== diff -u --- dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingSellmeijerVnk/DamPipingSellmeijerVnkInput.cs (revision 0) +++ dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingSellmeijerVnk/DamPipingSellmeijerVnkInput.cs (revision 776) @@ -0,0 +1,124 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Deltares.DamEngine.Calculators.KernelWrappers.Interfaces; + +namespace Deltares.DamEngine.Calculators.KernelWrappers.DamPipingSellmeijerVnk +{ + class DamPipingSellmeijerVnkInput : IKernelDataInput + { + /// + /// Gets or sets the River level . + /// + /// + /// The h river. + /// + public double HRiver { get; set; } + + /// + /// Gets or sets the head at exitpoint. + /// + /// + /// The h exit. + /// + public double HExit { get; set; } + + /// + /// Gets or sets the polder level + /// + public double PolderLevel { get; set; } + + + /// + /// Gets or sets the reduction factor. + /// + /// + /// The rc. + /// + public double Rc { get; set; } + + /// + /// Gets or sets the total thickness of cover layer . + /// + /// + /// The d total. + /// + public double DTotal { get; set; } + + + /// + /// Gets or sets the seepagelength. + /// + /// + /// The length of the seepage. + // + public double SeepageLength { get; set; } + + /// + /// Gets or sets the D70. + /// + /// + /// The D70. + /// + public double D70 { get; set; } + + /// + /// Gets or sets the whites constant. + /// + /// + /// The whites constant. + /// + public double WhitesConstant { get; set; } + + /// + /// Gets or sets the bedding angle. + /// + /// + /// The bedding angle. + /// + public double BeddingAngle { get; set; } + + /// + /// Gets or sets the permeability kx. + /// + /// + /// The permeability kx. + /// + public double PermeabilityKx { get; set; } + + /// + /// Gets or sets the water viscosity. + /// + /// + /// The water viscosity. + /// + public double WaterViscosity { get; set; } + + /// + /// Gets or sets the surface level + /// + public double SurfaceLevel { get; internal set; } + + /// + /// Gets or sets the @@@ + /// + public double DInBetweenAquiferlayer { get; internal set; } + + /// + /// + /// + public double DBottomAquiferlayer { get; internal set; } + + /// + /// + /// + public double PermeabilityInBetweenAquiferlayer { get; internal set; } + + /// + /// + /// + public double PermeabilityBottomAquiferlayer { get; internal set; } + } +} Index: dam engine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamPipingSellmeijerVnk/DamPipingSellmeijerVnkKernelWrapperTests.cs =================================================================== diff -u -r766 -r776 --- dam engine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamPipingSellmeijerVnk/DamPipingSellmeijerVnkKernelWrapperTests.cs (.../DamPipingSellmeijerVnkKernelWrapperTests.cs) (revision 766) +++ dam engine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamPipingSellmeijerVnk/DamPipingSellmeijerVnkKernelWrapperTests.cs (.../DamPipingSellmeijerVnkKernelWrapperTests.cs) (revision 776) @@ -35,6 +35,7 @@ using Deltares.DamEngine.Data.Standard.Logging; using NUnit.Framework; using Deltares.DamEngine.TestHelpers; +using Deltares.DamEngine.Calculators.KernelWrappers.DamPipingSellmeijerVnk; namespace Deltares.DamEngine.Calculators.Tests.KernelWrappers.DamPipingSellmeijerVnk { @@ -99,42 +100,42 @@ SubSoilScenario = subSoilScenario }; -// var kernelWrapper = new DamPipingSellmeijerVnkKernelWrapper(); -// -// // Prepare the wrapper. Result is input for the calculation dll -// IKernelDataInput damPipingInput; -// IKernelDataOutput kernelDataOutput; -// kernelWrapper.Prepare(damKernelInput, out damPipingInput, out kernelDataOutput); -// -// // Validate the input -// List messages; -// kernelWrapper.Validate(damPipingInput, kernelDataOutput, out messages); -// Assert.AreEqual(0, messages.Count); -// -// // Run the dll -// kernelWrapper.Execute(damPipingInput, kernelDataOutput, out messages); -// DamPipingSellmeijerVnkOutput damPipingOutput = (DamPipingSellmeijerVnkOutput)kernelDataOutput; -// Assert.AreEqual(0, messages.Count); -// Assert.AreEqual(3.65, damPipingOutput.FoSp, diff); -// Assert.AreEqual(3.65, damPipingOutput.Hc, diff); -// -// // Fill the design results -// DesignResult result; -// kernelWrapper.PostProcess(damKernelInput, damPipingOutput, "", out result); -// Assert.AreEqual(FailureMechanismSystemType.Piping, result.DamFailureMechanismeCalculation.FailureMechanismSystemType); -// Assert.AreEqual(PipingModelType.SellmeijerVnk, result.DamFailureMechanismeCalculation.PipingModelType); -// Assert.IsNotNullOrEmpty(result.LocationName); -// Assert.IsNotNullOrEmpty(result.ScenarioName); -// Assert.IsNotNullOrEmpty(result.ProfileName); -// Assert.AreEqual(3.65, result.PipingDesignResults.SellmeijerVnkFactor, diff); -// Assert.AreEqual(3.65, result.PipingDesignResults.SellmeijerVnkHcritical, diff); -// -// Assert.AreEqual(50.5, result.PipingDesignResults.LocalExitPointX); -// Assert.AreEqual(0.067957866123003738, result.PipingDesignResults.UpliftFactor); -// Assert.AreEqual(true, result.PipingDesignResults.UpliftSituation != null && ((UpliftSituation)result.PipingDesignResults.UpliftSituation).IsUplift); -// Assert.AreEqual(CalculationResult.Succeeded, result.CalculationResult); -// -// Assert.AreEqual(location.SurfaceLine, result.PipingDesignResults.RedesignedSurfaceLine); + var kernelWrapper = new DamPipingSellmeijerVnkKernelWrapper(); + + // Prepare the wrapper. Result is input for the calculation dll + IKernelDataInput damPipingInput; + IKernelDataOutput kernelDataOutput; + kernelWrapper.Prepare(damKernelInput, out damPipingInput, out kernelDataOutput); + + // Validate the input + List messages; + kernelWrapper.Validate(damPipingInput, kernelDataOutput, out messages); + Assert.AreEqual(0, messages.Count); + + // Run the dll + kernelWrapper.Execute(damPipingInput, kernelDataOutput, out messages); + DamPipingSellmeijerVnkOutput damPipingOutput = (DamPipingSellmeijerVnkOutput)kernelDataOutput; + Assert.AreEqual(0, messages.Count); + Assert.AreEqual(3.65, damPipingOutput.FoSp, diff); + Assert.AreEqual(3.65, damPipingOutput.Hc, diff); + + // Fill the design results + DesignResult result; + kernelWrapper.PostProcess(damKernelInput, damPipingOutput, "", out result); + Assert.AreEqual(FailureMechanismSystemType.Piping, result.DamFailureMechanismeCalculation.FailureMechanismSystemType); + Assert.AreEqual(PipingModelType.SellmeijerVnk, result.DamFailureMechanismeCalculation.PipingModelType); + Assert.IsNotNullOrEmpty(result.LocationName); + Assert.IsNotNullOrEmpty(result.ScenarioName); + Assert.IsNotNullOrEmpty(result.ProfileName); + Assert.AreEqual(3.65, result.PipingDesignResults.SellmeijerVnkFactor, diff); + Assert.AreEqual(3.65, result.PipingDesignResults.SellmeijerVnkHcritical, diff); + + Assert.AreEqual(50.5, result.PipingDesignResults.LocalExitPointX); + Assert.AreEqual(0.067957866123003738, result.PipingDesignResults.UpliftFactor); + Assert.AreEqual(true, result.PipingDesignResults.UpliftSituation != null && ((UpliftSituation)result.PipingDesignResults.UpliftSituation).IsUplift); + Assert.AreEqual(CalculationResult.Succeeded, result.CalculationResult); + + Assert.AreEqual(location.SurfaceLine, result.PipingDesignResults.RedesignedSurfaceLine); } [Test] @@ -160,69 +161,69 @@ Location = location, SubSoilScenario = subSoilScenario }; -// var kernelWrapper = new DamPipingSellmeijerVnkKernelWrapper(); + var kernelWrapper = new DamPipingSellmeijerVnkKernelWrapper(); IKernelDataInput kernelDataInput; IKernelDataOutput kernelDataOutput; -// kernelWrapper.Prepare(damKernelInput, out kernelDataInput, out kernelDataOutput); -// DamPipingSellmeijerVnkInput damPipingInput = (DamPipingSellmeijerVnkInput)kernelDataInput; -// Assert.AreEqual(1.0, damPipingInput.HRiver, diff); -// Assert.AreEqual(0.0, damPipingInput.HExit, diff); -// Assert.AreEqual(0.0, damPipingInput.PolderLevel, diff); -// Assert.AreEqual(0.0, damPipingInput.SurfaceLevel, diff); -// Assert.AreEqual(0.3, damPipingInput.Rc, diff); -// Assert.AreEqual(2.0, damPipingInput.DTotal, diff); -// Assert.AreEqual(2.0, damPipingInput.DInBetweenAquiferlayer, diff); -// Assert.AreEqual(6.0, damPipingInput.DBottomAquiferlayer, diff); -// Assert.AreEqual(0.0001, damPipingInput.PermeabilityInBetweenAquiferlayer, diff); -// Assert.AreEqual(0.0002, damPipingInput.PermeabilityBottomAquiferlayer, diff); -// Assert.AreEqual(40.5, damPipingInput.SeepageLength, diff); -// Assert.AreEqual(200.0, damPipingInput.D70, diff); -// Assert.AreEqual(0.25, damPipingInput.WhitesConstant, diff); -// Assert.AreEqual(37.0, damPipingInput.BeddingAngle, diff); -// Assert.AreEqual(1.33E-06, damPipingInput.WaterViscosity, diff); + kernelWrapper.Prepare(damKernelInput, out kernelDataInput, out kernelDataOutput); + DamPipingSellmeijerVnkInput damPipingInput = (DamPipingSellmeijerVnkInput)kernelDataInput; + Assert.AreEqual(1.0, damPipingInput.HRiver, diff); + Assert.AreEqual(0.0, damPipingInput.HExit, diff); + Assert.AreEqual(0.0, damPipingInput.PolderLevel, diff); + Assert.AreEqual(0.0, damPipingInput.SurfaceLevel, diff); + Assert.AreEqual(0.3, damPipingInput.Rc, diff); + Assert.AreEqual(2.0, damPipingInput.DTotal, diff); + Assert.AreEqual(2.0, damPipingInput.DInBetweenAquiferlayer, diff); + Assert.AreEqual(6.0, damPipingInput.DBottomAquiferlayer, diff); + Assert.AreEqual(0.0001, damPipingInput.PermeabilityInBetweenAquiferlayer, diff); + Assert.AreEqual(0.0002, damPipingInput.PermeabilityBottomAquiferlayer, diff); + Assert.AreEqual(40.5, damPipingInput.SeepageLength, diff); + Assert.AreEqual(200.0, damPipingInput.D70, diff); + Assert.AreEqual(0.25, damPipingInput.WhitesConstant, diff); + Assert.AreEqual(37.0, damPipingInput.BeddingAngle, diff); + Assert.AreEqual(1.33E-06, damPipingInput.WaterViscosity, diff); } [Test] public void TestValidate() { -// var kernelWrapper = new DamPipingSellmeijerVnkKernelWrapper(); -// -// // Validate without setting values. Expected error messages. -// var damPipingInput = new DamPipingSellmeijerVnkInput(); -// var damPipingOutput = new DamPipingSellmeijerVnkOutput(); -// List messages; -// kernelWrapper.Validate(damPipingInput, damPipingOutput, out messages); -// Assert.IsTrue(messages.Count > 0); -// -// // Validate the input when valid input is provided. Expected no messages. -// damPipingInput = new DamPipingSellmeijerVnkInput -// { -// HRiver = 1.0, -// HExit = 0.0, -// PolderLevel = 0.0, -// SurfaceLevel = 0.0, -// Rc = 0.3, -// DTotal = 2.0, -// DInBetweenAquiferlayer = 2.0, -// DBottomAquiferlayer = 6.0, -// PermeabilityInBetweenAquiferlayer = 0.0001, -// PermeabilityBottomAquiferlayer = 0.0002, -// SeepageLength = 40.5, -// D70 = 200.0, -// WhitesConstant = 0.25, -// BeddingAngle = 37.0, -// WaterViscosity = 1.33E-06, -// PermeabilityKx = 0.0001 -// }; -// messages.Clear(); -// kernelWrapper.Validate(damPipingInput, damPipingOutput, out messages); -// Assert.AreEqual(0, messages.Count); + var kernelWrapper = new DamPipingSellmeijerVnkKernelWrapper(); + + // Validate without setting values. Expected error messages. + var damPipingInput = new DamPipingSellmeijerVnkInput(); + var damPipingOutput = new DamPipingSellmeijerVnkOutput(); + List messages; + kernelWrapper.Validate(damPipingInput, damPipingOutput, out messages); + Assert.IsTrue(messages.Count > 0); + + // Validate the input when valid input is provided. Expected no messages. + damPipingInput = new DamPipingSellmeijerVnkInput + { + HRiver = 1.0, + HExit = 0.0, + PolderLevel = 0.0, + SurfaceLevel = 0.0, + Rc = 0.3, + DTotal = 2.0, + DInBetweenAquiferlayer = 2.0, + DBottomAquiferlayer = 6.0, + PermeabilityInBetweenAquiferlayer = 0.0001, + PermeabilityBottomAquiferlayer = 0.0002, + SeepageLength = 40.5, + D70 = 200.0, + WhitesConstant = 0.25, + BeddingAngle = 37.0, + WaterViscosity = 1.33E-06, + PermeabilityKx = 0.0001 + }; + messages.Clear(); + kernelWrapper.Validate(damPipingInput, damPipingOutput, out messages); + Assert.AreEqual(0, messages.Count); } [Test] public void TestPostProcess() { -// var kernelWrapper = new DamPipingSellmeijerVnkKernelWrapper(); + var kernelWrapper = new DamPipingSellmeijerVnkKernelWrapper(); var subSoilScenario = new SoilGeometryProbability(); subSoilScenario.SoilProfile1D = FactoryForSoilProfiles.CreatePipingSellmeijerProfileWithTwoSandlayers(); @@ -239,27 +240,27 @@ upliftSituation.IsUplift = true; var calculationResult = CalculationResult.Succeeded; -// DamPipingSellmeijerVnkOutput output = new DamPipingSellmeijerVnkOutput -// { -// FoSp = 1.1, -// Hc = 2.2, -// ExitPointX = 3.3, -// UpliftFactor = 4.4, -// UpliftSituation = upliftSituation, -// CalculationResult = calculationResult -// }; + DamPipingSellmeijerVnkOutput output = new DamPipingSellmeijerVnkOutput + { + FoSp = 1.1, + Hc = 2.2, + ExitPointX = 3.3, + UpliftFactor = 4.4, + UpliftSituation = upliftSituation, + CalculationResult = calculationResult + }; DesignResult result; -// kernelWrapper.PostProcess(input, output, "", out result); -// Assert.AreEqual(output.FoSp, result.PipingDesignResults.SellmeijerVnkFactor); -// Assert.AreEqual(output.Hc, result.PipingDesignResults.SellmeijerVnkHcritical); + kernelWrapper.PostProcess(input, output, "", out result); + Assert.AreEqual(output.FoSp, result.PipingDesignResults.SellmeijerVnkFactor); + Assert.AreEqual(output.Hc, result.PipingDesignResults.SellmeijerVnkHcritical); -// Assert.AreEqual(output.ExitPointX, result.PipingDesignResults.LocalExitPointX); -// Assert.AreEqual(output.UpliftFactor, result.PipingDesignResults.UpliftFactor); -// Assert.AreEqual(output.UpliftSituation, result.PipingDesignResults.UpliftSituation); -// Assert.AreEqual(output.CalculationResult, result.CalculationResult); -// -// Assert.AreEqual(input.Location.SurfaceLine, result.PipingDesignResults.RedesignedSurfaceLine); + Assert.AreEqual(output.ExitPointX, result.PipingDesignResults.LocalExitPointX); + Assert.AreEqual(output.UpliftFactor, result.PipingDesignResults.UpliftFactor); + Assert.AreEqual(output.UpliftSituation, result.PipingDesignResults.UpliftSituation); + Assert.AreEqual(output.CalculationResult, result.CalculationResult); + + Assert.AreEqual(input.Location.SurfaceLine, result.PipingDesignResults.RedesignedSurfaceLine); } [Test] @@ -268,43 +269,43 @@ [SetUICulture("nl-NL")] public void TestLanguageNLThrowsExceptionInExecuteWhenInputIsNull() { -// var kernelWrapper = new DamPipingSellmeijerVnkKernelWrapper(); -// List messages; -// kernelWrapper.Execute(null, null, out messages); + var kernelWrapper = new DamPipingSellmeijerVnkKernelWrapper(); + List messages; + kernelWrapper.Execute(null, null, out messages); } - + [Test] [Category(Categories.WorkInProgress)] [ExpectedException(typeof(NoNullAllowedException), ExpectedMessage = "No input object defined for Sellmeijer VNK")] [SetUICulture("en-US")] public void TestLanguageENThrowsExceptionInExecuteWhenInputIsNull() { -// var kernelWrapper = new DamPipingSellmeijerVnkKernelWrapper(); -// List messages; -// kernelWrapper.Execute(null, null, out messages); + var kernelWrapper = new DamPipingSellmeijerVnkKernelWrapper(); + List messages; + kernelWrapper.Execute(null, null, out messages); } - + [Test] [Category(Categories.WorkInProgress)] [ExpectedException(typeof(NoNullAllowedException), ExpectedMessage = "Geen uitvoer object gedefinieerd voor Sellmeijer VNK")] [SetUICulture("nl-NL")] public void TestThrowsExceptionInPostProcessWhenOutputIsNull() { -// var kernelWrapper = new DamPipingSellmeijerVnkKernelWrapper(); -// DesignResult result; -// kernelWrapper.PostProcess(new DamKernelInput(), null, "", out result); + var kernelWrapper = new DamPipingSellmeijerVnkKernelWrapper(); + DesignResult result; + kernelWrapper.PostProcess(new DamKernelInput(), null, "", out result); } - + [Test] [Category(Categories.WorkInProgress)] [ExpectedException(typeof(NoNullAllowedException), ExpectedMessage = "Geen invoer object gedefinieerd voor Sellmeijer VNK")] [SetUICulture("nl-NL")] public void TestThrowsExceptionInPostProcessWhenInputIsNull() { -// var kernelWrapper = new DamPipingSellmeijerVnkKernelWrapper(); -// DesignResult result; -// kernelWrapper.PostProcess(null, new DamPipingSellmeijerVnkOutput(), "", out result); + var kernelWrapper = new DamPipingSellmeijerVnkKernelWrapper(); + DesignResult result; + kernelWrapper.PostProcess(null, new DamPipingSellmeijerVnkOutput(), "", out result); } - + } } Index: dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingSellmeijerVnk/DamPipingSellmeijerVnkOutput.cs =================================================================== diff -u --- dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingSellmeijerVnk/DamPipingSellmeijerVnkOutput.cs (revision 0) +++ dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingSellmeijerVnk/DamPipingSellmeijerVnkOutput.cs (revision 776) @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Deltares.DamEngine.Calculators.KernelWrappers.Interfaces; +using Deltares.DamEngine.Data.General; +using Deltares.DamEngine.Data.Standard.Calculation; + +namespace Deltares.DamEngine.Calculators.KernelWrappers.DamPipingSellmeijerVnk +{ + class DamPipingSellmeijerVnkOutput : IKernelDataOutput + { + public double FoSp { get; set; } + public double Hc { get; set; } + public CalculationResult CalculationResult { get; set; } + public double? UpliftFactor { get; set; } + public double ExitPointX { get; set; } + public UpliftSituation UpliftSituation { get; set; } + } +}