Index: dam failuremechanisms/damPiping/trunk/src/Deltares.DamPiping.SellmeijerVNKCalculator/PipingCalc2Dll.cs
===================================================================
diff -u -r371 -r375
--- dam failuremechanisms/damPiping/trunk/src/Deltares.DamPiping.SellmeijerVNKCalculator/PipingCalc2Dll.cs (.../PipingCalc2Dll.cs) (revision 371)
+++ dam failuremechanisms/damPiping/trunk/src/Deltares.DamPiping.SellmeijerVNKCalculator/PipingCalc2Dll.cs (.../PipingCalc2Dll.cs) (revision 375)
@@ -19,6 +19,9 @@
public delegate string PC2_Model2GetCalculationMessages(IntPtr CalcHandle);
public delegate void PC2_Model2DestroyHandle(IntPtr CalcHandle);
+ ///
+ /// Wrapper for MPipingCalc2.dll
+ ///
public class PipingCalc2Dll
{
Index: dam failuremechanisms/damPiping/trunk/src/Deltares.DamPiping.SellmeijerVNKCalculator/PipingModel2Data.cs
===================================================================
diff -u -r371 -r375
--- dam failuremechanisms/damPiping/trunk/src/Deltares.DamPiping.SellmeijerVNKCalculator/PipingModel2Data.cs (.../PipingModel2Data.cs) (revision 371)
+++ dam failuremechanisms/damPiping/trunk/src/Deltares.DamPiping.SellmeijerVNKCalculator/PipingModel2Data.cs (.../PipingModel2Data.cs) (revision 375)
@@ -2,6 +2,9 @@
{
using System.Collections.Generic;
+ ///
+ /// Data for Piping calculation with PipingCalc2Dll
+ ///
public class PipingModelModel2Data
{
private double fHeight1 = 0.0;
@@ -27,6 +30,9 @@
private bool fIsHeadDropCalculation = true;
+ ///
+ /// Initializes a new instance of the class.
+ ///
public PipingModelModel2Data()
{
fPipingCommonData = new PipingCommonData();
@@ -60,12 +66,20 @@
fRowHeaderTextList.Add("Calculate"); // moved to end
}
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// a piping common data.
public PipingModelModel2Data(ref PipingCommonData aPipingCommonData)
{
InitializeDefaults();
fPipingCommonData = aPipingCommonData;
}
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// a model2 calculation data.
public PipingModelModel2Data(PipingModelModel2Data aModel2CalculationData)
{
fSeepageLength = aModel2CalculationData.SeepageLength;
@@ -90,6 +104,9 @@
fPipingCommonData = new PipingCommonData(aModel2CalculationData.PipingCommonData);
}
+ ///
+ /// Initializes the defaults.
+ ///
public void InitializeDefaults()
{
@@ -121,29 +138,118 @@
fIsHeadDropCalculation = true;
}
+ ///
+ /// Gets or sets the piping common data.
+ ///
+ ///
+ /// The piping common data.
+ ///
public PipingCommonData PipingCommonData { set { fPipingCommonData = value; } get { return fPipingCommonData; } }
// Model2 data as properties (VNK)
+
+ ///
+ /// Gets or sets the length of the seepage.
+ ///
+ ///
+ /// The length of the seepage.
+ ///
public double SeepageLength { set { fSeepageLength = value; } get { return fSeepageLength; } }
+ ///
+ /// Gets or sets the length of the crack.
+ ///
+ ///
+ /// The length of the crack.
+ ///
public double CrackLength { set { fCrackLength = value; } get { return fCrackLength; } }
+ ///
+ /// Gets or sets the particle diameter.
+ ///
+ ///
+ /// The particle diameter.
+ ///
public double ParticleDiameter { set { fParticleDiameter = value; } get { return fParticleDiameter; } }
+ ///
+ /// Gets or sets the height1.
+ ///
+ ///
+ /// The height1.
+ ///
public double Height1 { set { fHeight1 = value; } get { return fHeight1; } }
+
+ ///
+ /// Gets or sets the height2.
+ ///
+ ///
+ /// The height2.
+ ///
public double Height2 { set { fHeight2 = value; } get { return fHeight2; } }
+ ///
+ /// Gets or sets the permeability1.
+ ///
+ ///
+ /// The permeability1.
+ ///
public double Permeability1 { set { fPermeability1 = value; } get { return fPermeability1; } }
+
+ ///
+ /// Gets or sets the permeability2.
+ ///
+ ///
+ /// The permeability2.
+ ///
public double Permeability2 { set { fPermeability2 = value; } get { return fPermeability2; } }
+
+ ///
+ /// Gets or sets the permeability3.
+ ///
+ ///
+ /// The permeability3.
+ ///
public double Permeability3 { set { fPermeability3 = value; } get { return fPermeability3; } }
+ ///
+ /// Gets or sets the head drop.
+ ///
+ ///
+ /// The head drop.
+ ///
public double HeadDrop { get { return fHeadDrop; } set { fHeadDrop = value; } }
+ ///
+ /// Gets or sets a value indicating whether this instance is head drop calculation.
+ ///
+ ///
+ /// true if this instance is head drop calculation; otherwise, false.
+ ///
public bool IsHeadDropCalculation { get { return fIsHeadDropCalculation; } set { fIsHeadDropCalculation = value; } }
+ ///
+ /// Gets or sets the messages.
+ ///
+ ///
+ /// The messages.
+ ///
public string Messages { get { return fMessages; } set { fMessages = value; } }
+
+ ///
+ /// Gets or sets the warning message.
+ ///
+ ///
+ /// The warning message.
+ ///
public string WarningMessage { get { return fWarningMessage; } set { fWarningMessage = value; } }
+ ///
+ /// Gets the row header text list.
+ ///
+ ///
+ /// The row header text list.
+ ///
public static List RowHeaderTextList { get { return fRowHeaderTextList; } }
}
Index: dam failuremechanisms/damPiping/trunk/src/Deltares.DamPiping.SellmeijerVNKCalculator/PipingCommonData.cs
===================================================================
diff -u -r371 -r375
--- dam failuremechanisms/damPiping/trunk/src/Deltares.DamPiping.SellmeijerVNKCalculator/PipingCommonData.cs (.../PipingCommonData.cs) (revision 371)
+++ dam failuremechanisms/damPiping/trunk/src/Deltares.DamPiping.SellmeijerVNKCalculator/PipingCommonData.cs (.../PipingCommonData.cs) (revision 375)
@@ -2,18 +2,24 @@
namespace Deltares.DamPiping.SellmeijerVNKCalculator
{
+ ///
+ /// Common Data for Piping calculation with PipingCalc2Dll
+ ///
public class PipingCommonData
{
- // soil properties
-
- // calc params
-
+ ///
+ /// Initializes a new instance of the class.
+ ///
public PipingCommonData()
{
IsAdjustHeadDrop = true;
InitializeDefaults();
}
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The piping common data.
public PipingCommonData(PipingCommonData pipingCommonData)
{
WaterViscosity = pipingCommonData.WaterViscosity;
@@ -28,15 +34,73 @@
FluidisationGradient = pipingCommonData.FluidisationGradient;
}
+ ///
+ /// Gets or sets the water viscosity.
+ ///
+ ///
+ /// The water viscosity.
+ ///
public double WaterViscosity { get; set; }
+
+ ///
+ /// Gets or sets the water unit weight.
+ ///
+ ///
+ /// The water unit weight.
+ ///
public double WaterUnitWeight { get; set; }
+
+ ///
+ /// Gets or sets the particle unit weight.
+ ///
+ ///
+ /// The particle unit weight.
+ ///
public double ParticleUnitWeight { 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 a value indicating whether this instance is adjust head drop.
+ ///
+ ///
+ /// true if this instance is adjust head drop; otherwise, false.
+ ///
public bool IsAdjustHeadDrop { get; set; }
+
+ ///
+ /// Gets or sets the safety factor.
+ ///
+ ///
+ /// The safety factor.
+ ///
public double SafetyFactor { get; set; }
+
+ ///
+ /// Gets or sets the fluidisation gradient.
+ ///
+ ///
+ /// The fluidisation gradient.
+ ///
public double FluidisationGradient { get; set; }
+ ///
+ /// Initializes the defaults.
+ ///
public void InitializeDefaults()
{
WaterViscosity = Physics.WaterViscosity;
Index: dam failuremechanisms/damPiping/trunk/src/Deltares.DamPiping.SellmeijerVNKCalculator/PipingModel2Calculation.cs
===================================================================
diff -u -r371 -r375
--- dam failuremechanisms/damPiping/trunk/src/Deltares.DamPiping.SellmeijerVNKCalculator/PipingModel2Calculation.cs (.../PipingModel2Calculation.cs) (revision 371)
+++ dam failuremechanisms/damPiping/trunk/src/Deltares.DamPiping.SellmeijerVNKCalculator/PipingModel2Calculation.cs (.../PipingModel2Calculation.cs) (revision 375)
@@ -1,32 +1,13 @@
namespace Deltares.DamPiping.SellmeijerVNKCalculator
{
using System;
- using System.Text;
- using System.IO;
using System.Runtime.InteropServices;
- using System.Globalization;
- using System.Collections.Generic;
- [StructLayout(LayoutKind.Sequential)]
- public struct RingDataStruct
- {
- public double WaterUnitWeight; //1
- public double WaterViscosity; //2
- public double ParticleUnitWeight; //3
- public double ParticleDiameter; //4
- public double Model2Layer1Thickness; //5
- public double Model2Layer2Thickness; //6
- public double Model2Soil1Permeability; //7
- public double Model2Soil2Permeability; //8
- public double Model2Soil3Permeability; //9
- public double VerticalSeepageLength; //10
- public double SeepageLength; //11
- public double BeddingAngle; //12
- public double WhitesConstant; //13
- public double SafetyFactor; //14
- public double FluidisationGradient; //15
- } ;
+ #region Structs
+ ///
+ /// Struct for Soil Poperties
+ ///
[StructLayout(LayoutKind.Sequential)]
public struct SoilPropertiesStruct
{
@@ -36,13 +17,19 @@
public double WhitesConstant; //4
} ;
+ ///
+ /// Struct for Water Poperties
+ ///
[StructLayout(LayoutKind.Sequential)]
public struct WaterPropertiesStruct
{
public double UnitWeight;
public double Viscosity;
} ;
+ ///
+ /// Struct for Calculation Parameters
+ ///
[StructLayout(LayoutKind.Sequential)]
public struct CalculationParametersStruct
{
@@ -53,114 +40,206 @@
public double FluidisationGradient; //4
}
+ #endregion Strucs
+
+ ///
+ /// Runs the PipingCalc2Dll
+ ///
public class PipingModel2Calculation
{
- private const string sPipingParametersSectionId = "[PipingParameters]";
- private const int cTotalParameterCount = 15;
- private const string sDebugFile = "VNK-Debug.log";
- private const int cMaxPath = 256;
-
private PipingModelModel2Data fCurrentCalculationData = null;
private string fHomeDir = "";
private string fSessionId = "";
+ ///
+ /// Initializes a new instance of the class.
+ ///
public PipingModel2Calculation()
{
fCurrentCalculationData = new PipingModelModel2Data();
}
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// a piping common data.
public PipingModel2Calculation(ref PipingCommonData aPipingCommonData)
{
fCurrentCalculationData = new PipingModelModel2Data(ref aPipingCommonData);
}
- // wrap the Model2 data as properties here again (VNK)
+ ///
+ /// Gets or sets the piping common data.
+ /// wrap the Model2 data as properties here again (VNK)
+ ///
public PipingCommonData PipingCommonData
{
set { fCurrentCalculationData.PipingCommonData = value; }
get { return fCurrentCalculationData.PipingCommonData; }
}
+ ///
+ /// Gets or sets a value indicating whether this instance is head drop calculation.
+ ///
+ ///
+ /// true if this instance is head drop calculation; otherwise, false.
+ ///
public bool IsHeadDropCalculation
{
set { fCurrentCalculationData.IsHeadDropCalculation = value; }
get { return fCurrentCalculationData.IsHeadDropCalculation; }
}
+ ///
+ /// Gets or sets the length of the seepage.
+ ///
+ ///
+ /// The length of the seepage.
+ ///
public double SeepageLength
{
set { fCurrentCalculationData.SeepageLength = value; }
get { return fCurrentCalculationData.SeepageLength; }
}
+ ///
+ /// Gets or sets the length of the crack.
+ ///
+ ///
+ /// The length of the crack.
+ ///
public double CrackLength
{
set { fCurrentCalculationData.CrackLength = value; }
get { return fCurrentCalculationData.CrackLength; }
}
+ ///
+ /// Gets or sets the particle diameter.
+ ///
+ ///
+ /// The particle diameter.
+ ///
public double ParticleDiameter
{
set { fCurrentCalculationData.ParticleDiameter = value; }
get { return fCurrentCalculationData.ParticleDiameter; }
}
+ ///
+ /// Gets or sets the height1.
+ ///
+ ///
+ /// The height1.
+ ///
public double Height1
{
set { fCurrentCalculationData.Height1 = value; }
get { return fCurrentCalculationData.Height1; }
}
+ ///
+ /// Gets or sets the height2.
+ ///
+ ///
+ /// The height2.
+ ///
public double Height2
{
set { fCurrentCalculationData.Height2 = value; }
get { return fCurrentCalculationData.Height2; }
}
+ ///
+ /// Gets or sets the permeability1.
+ ///
+ ///
+ /// The permeability1.
+ ///
public double Permeability1
{
set { fCurrentCalculationData.Permeability1 = value; }
get { return fCurrentCalculationData.Permeability1; }
}
+ ///
+ /// Gets or sets the permeability2.
+ ///
+ ///
+ /// The permeability2.
+ ///
public double Permeability2
{
set { fCurrentCalculationData.Permeability2 = value; }
get { return fCurrentCalculationData.Permeability2; }
}
+ ///
+ /// Gets or sets the permeability3.
+ ///
+ ///
+ /// The permeability3.
+ ///
public double Permeability3
{
set { fCurrentCalculationData.Permeability3 = value; }
get { return fCurrentCalculationData.Permeability3; }
}
+ ///
+ /// Gets or sets the head drop.
+ ///
+ ///
+ /// The head drop.
+ ///
public double HeadDrop
{
get { return fCurrentCalculationData.HeadDrop; }
set { fCurrentCalculationData.HeadDrop = value; }
}
+ ///
+ /// Gets or sets the messages.
+ ///
+ ///
+ /// The messages.
+ ///
public string Messages
{
get { return fCurrentCalculationData.Messages; }
set { fCurrentCalculationData.Messages = value; }
}
+ ///
+ /// Gets or sets the home dir.
+ ///
+ ///
+ /// The home dir.
+ ///
public string HomeDir
{
get { return fHomeDir; }
set { fHomeDir = value; }
}
+ ///
+ /// Gets or sets the session identifier.
+ ///
+ ///
+ /// The session identifier.
+ ///
public string SessionId
{
get { return fSessionId; }
set { fSessionId = value; }
}
+ ///
+ /// Calculates the head drop pc2.
+ ///
+ /// Error in Piping DLL
public void CalculateHeadDropPC2()
{
const string cMessageError = "Error";
@@ -248,275 +327,5 @@
}
}
-// ///
-// /// Throw helper
-// ///
-// ///
-// public void ThrowIfNotAssigned(Object currentObject, string objectName)
-// {
-// if (currentObject == null)
-// {
-// throw new PipingCalculationException(string.Format("Missing input {0}", objectName));
-// }
-// }
-//
-//
-//
-// ///
-// /// Read debug log from file
-// ///
-// ///
-// ///
-// private string ReadDebugLog(string APath)
-// {
-// try
-// {
-// StreamReader stream = File.OpenText(APath);
-// stream.ReadLine(); // first line
-//
-// string LLine2 = stream.ReadToEnd();
-// stream.Close();
-// File.Delete(APath);
-//
-// return LLine2;
-// }
-// catch
-// {
-// return null;
-// }
-// }
-//
-// // TEMP... this has to be done more generically
-// private void SetCurrentValueFromString(string aField, string aValue)
-// {
-// double doubleValue = 0.0;
-// bool boolValue = true;
-//
-// switch (aField)
-// {
-// case "gamma_w":
-// {
-// if (ValidateDoubleToRangeFromString(aValue, PipingConstants.CNoiseTolerance,
-// PipingConstants.CDelphiMaxDouble, ref doubleValue))
-// fCurrentCalculationData.PipingCommonData.WaterUnitWeight = doubleValue;
-// break;
-// }
-// case "mu":
-// {
-// if (ValidateDoubleToRangeFromString(aValue, PipingConstants.CMinWaterViscosity,
-// PipingConstants.CMaxWaterViscosity, ref doubleValue))
-// fCurrentCalculationData.PipingCommonData.WaterViscosity = doubleValue;
-// break;
-// }
-// case "gamma_p":
-// {
-// if (ValidateDoubleToRangeFromString(aValue, PipingConstants.CNoiseTolerance,
-// PipingConstants.CDelphiMaxDouble, ref doubleValue))
-// fCurrentCalculationData.PipingCommonData.ParticleUnitWeight = doubleValue;
-// break;
-// }
-// case "eta":
-// {
-// if (ValidateDoubleToRangeFromString(aValue, PipingConstants.CMinWhitesConstant,
-// PipingConstants.CMaxWhitesConstant, ref doubleValue))
-// fCurrentCalculationData.PipingCommonData.WhitesConstant = doubleValue;
-// break;
-// }
-// case "theta":
-// {
-// if (ValidateDoubleToRangeFromString(aValue, PipingConstants.CMinBeddingAngle,
-// PipingConstants.CMaxBeddingAngle, ref doubleValue))
-// fCurrentCalculationData.PipingCommonData.BeddingAngle = doubleValue;
-// break;
-// }
-// case "Adapt":
-// {
-// if (GetBoolValueFromString(aValue, ref boolValue))
-// fCurrentCalculationData.PipingCommonData.IsAdjustHeadDrop = boolValue;
-// break;
-// }
-// case "F":
-// {
-// if (ValidateDoubleToRangeFromString(aValue, PipingConstants.CMinSafetyFactor,
-// PipingConstants.CMaxSafetyFactor, ref doubleValue))
-// fCurrentCalculationData.PipingCommonData.SafetyFactor = doubleValue;
-// break;
-// }
-// case "i":
-// {
-// if (ValidateDoubleToRangeFromString(aValue, PipingConstants.CMinFluidisationGradient,
-// PipingConstants.CMaxFluidisationGradient, ref doubleValue))
-// fCurrentCalculationData.PipingCommonData.FluidisationGradient = doubleValue;
-// break;
-// }
-// case "D1":
-// {
-// if (ValidateDoubleToRangeFromString(aValue, PipingConstants.CNoiseTolerance,
-// PipingConstants.CDelphiMaxDouble, ref doubleValue))
-// fCurrentCalculationData.Height1 = doubleValue;
-// break;
-// }
-// case "D2":
-// {
-// if (ValidateDoubleToRangeFromString(aValue, PipingConstants.CNoiseTolerance,
-// PipingConstants.CDelphiMaxDouble, ref doubleValue))
-// fCurrentCalculationData.Height2 = doubleValue;
-// break;
-// }
-// case "K1":
-// {
-// if (ValidateDoubleToRangeFromString(aValue, PipingConstants.CNoiseTolerance,
-// PipingConstants.CDelphiMaxDouble, ref doubleValue))
-// fCurrentCalculationData.Permeability1 = doubleValue;
-// break;
-// }
-// case "K2":
-// {
-// if (ValidateDoubleToRangeFromString(aValue, PipingConstants.CNoiseTolerance,
-// PipingConstants.CDelphiMaxDouble, ref doubleValue))
-// fCurrentCalculationData.Permeability2 = doubleValue;
-// break;
-// }
-// case "K3":
-// {
-// if (ValidateDoubleToRangeFromString(aValue, PipingConstants.CNoiseTolerance,
-// PipingConstants.CDelphiMaxDouble, ref doubleValue))
-// fCurrentCalculationData.Permeability3 = doubleValue;
-// break;
-// }
-// case "Do":
-// {
-// if (ValidateDoubleToRangeFromString(aValue, 0.0, PipingConstants.CDelphiMaxDouble,
-// ref doubleValue))
-// fCurrentCalculationData.CrackLength = doubleValue;
-// break;
-// }
-// case "d70":
-// {
-// if (ValidateDoubleToRangeFromString(aValue, PipingConstants.CNoiseTolerance,
-// PipingConstants.CDelphiMaxDouble, ref doubleValue))
-// fCurrentCalculationData.ParticleDiameter = doubleValue;
-// break;
-// }
-// case "L":
-// {
-// if (ValidateDoubleToRangeFromString(aValue, PipingConstants.CNoiseTolerance,
-// PipingConstants.CDelphiMaxDouble, ref doubleValue))
-// fCurrentCalculationData.SeepageLength = doubleValue;
-// break;
-// }
-// case "dH":
-// {
-// if (ValidateDoubleToRangeFromString(aValue, PipingConstants.CNoiseTolerance,
-// PipingConstants.CDelphiMaxDouble, ref doubleValue))
-// fCurrentCalculationData.HeadDrop = doubleValue;
-// break;
-// }
-// case "Calculate":
-// {
-// if (aValue == PipingModelModel2Data.RowHeaderTextList[15])
-// fCurrentCalculationData.IsHeadDropCalculation = false;
-// else
-// fCurrentCalculationData.IsHeadDropCalculation = true;
-// break;
-// }
-// default:
-// break;
-// }
-// }
-//
-// // TEMP... this has to be done more generically
-// private bool ValidateDoubleToRangeFromString(string aStringValue, double aMin, double aMax, ref double aValue)
-// {
-// double doubleValue = 0.0;
-//
-// // the CSV read would have changed all decimal separators to '.'
-// // specify this to the double parsing, else we'd get wrong values
-// // if the current thread has a diff decimal separator
-// NumberFormatInfo ni = new NumberFormatInfo();
-// ni.CurrencyDecimalSeparator = ".";
-// ni.NumberDecimalSeparator = ".";
-//
-// try
-// {
-// doubleValue = Double.Parse(aStringValue, ni);
-// }
-// catch
-// {
-// return false;
-// }
-//
-// if (doubleValue < aMin)
-// doubleValue = aMin;
-// else if (doubleValue > aMax)
-// doubleValue = aMax;
-//
-// aValue = doubleValue;
-// return true;
-// }
-//
-// private bool GetBoolValueFromString(string aStringValue, ref bool aValue)
-// {
-// bool boolValue = true;
-//
-// try
-// {
-// boolValue = bool.Parse(aStringValue);
-// }
-// catch
-// {
-// return false;
-// }
-//
-// aValue = boolValue;
-// return true;
-// }
-//
- ///
- ///
- ///
- ///
- public List ParametersToStrings()
- {
- List parameterStrings = new List();
-
- // soil properties
- parameterStrings.Add(sPipingParametersSectionId);
- parameterStrings.Add(String.Format("BeddingAngle={0}", fCurrentCalculationData.PipingCommonData.BeddingAngle));
- parameterStrings.Add(String.Format("ParticleDiameter={0}", fCurrentCalculationData.ParticleDiameter));
- parameterStrings.Add(String.Format("ParticleUnitWeight={0:0.00}",
- fCurrentCalculationData.PipingCommonData.ParticleUnitWeight));
- parameterStrings.Add(String.Format("WhitesConstant={0}",
- fCurrentCalculationData.PipingCommonData.WhitesConstant));
- //// water properties
- parameterStrings.Add(String.Format("WaterUnitWeight={0:0.00}",
- fCurrentCalculationData.PipingCommonData.WaterUnitWeight));
- parameterStrings.Add(String.Format("WaterViscosity={0:E4}",
- fCurrentCalculationData.PipingCommonData.WaterViscosity));
-
- parameterStrings.Add(String.Format("CrackLength={0:0.00}", fCurrentCalculationData.CrackLength));
- parameterStrings.Add(String.Format("HeadDrop={0:0.00}", fCurrentCalculationData.HeadDrop));
- parameterStrings.Add(String.Format("SeepageLength={0:0.00}", fCurrentCalculationData.SeepageLength));
-
- //// heights
- parameterStrings.Add(String.Format("Height1={0:0.00}", fCurrentCalculationData.Height1));
- parameterStrings.Add(String.Format("Height2={0:0.00}", fCurrentCalculationData.Height2));
- //// permeabilities
- parameterStrings.Add(String.Format("Permeability1={0:E5}", fCurrentCalculationData.Permeability1));
- parameterStrings.Add(String.Format("Permeability2={0:E5}", fCurrentCalculationData.Permeability2));
- parameterStrings.Add(String.Format("Permeability3={0:E5}", fCurrentCalculationData.Permeability3));
-
- parameterStrings.Add(String.Format("IsHeadDropCalculation={0}",
- fCurrentCalculationData.IsHeadDropCalculation));
- parameterStrings.Add(String.Format("IsAdjustHeadDrop={0}",
- fCurrentCalculationData.PipingCommonData.IsAdjustHeadDrop));
- parameterStrings.Add(String.Format("SafetyFactor={0:0.00}",
- fCurrentCalculationData.PipingCommonData.SafetyFactor));
- parameterStrings.Add(String.Format("FluidisationGradient={0:0.00}",
- fCurrentCalculationData.PipingCommonData.FluidisationGradient));
-
- return parameterStrings;
- }
-
}
}
\ No newline at end of file
Index: dam failuremechanisms/damPiping/trunk/src/Tests/Deltares.DamPiping.SellmeijerVNKCalculatorTests/PipingModel2CalculationTest.cs
===================================================================
diff -u
--- dam failuremechanisms/damPiping/trunk/src/Tests/Deltares.DamPiping.SellmeijerVNKCalculatorTests/PipingModel2CalculationTest.cs (revision 0)
+++ dam failuremechanisms/damPiping/trunk/src/Tests/Deltares.DamPiping.SellmeijerVNKCalculatorTests/PipingModel2CalculationTest.cs (revision 375)
@@ -0,0 +1,124 @@
+using Deltares.DamPiping.SellmeijerVNKCalculator;
+using Deltares.DamPiping.SellmeijerVNKCalculator.Geo;
+
+namespace Deltares.DamPiping.SellmeijerVNKCalculatorTests
+{
+ using NUnit.Framework;
+
+ [TestFixture]
+ public class TestPipingModel2Calculation
+ {
+ private const double cToleranceHeadDrop = 0.005;
+
+ [Test]
+ public void IsHeadDropCalculatedCorrectly()
+ {
+ PipingModel2Calculation pipingModel2Calculation = new PipingModel2Calculation();
+ pipingModel2Calculation.Height1 = 10.0;
+ pipingModel2Calculation.CalculateHeadDropPC2();
+ Assert.AreEqual(3.46, pipingModel2Calculation.HeadDrop, cToleranceHeadDrop);
+ pipingModel2Calculation.Height1 = 11.0;
+ pipingModel2Calculation.CalculateHeadDropPC2();
+ Assert.AreEqual(3.42, pipingModel2Calculation.HeadDrop, cToleranceHeadDrop);
+ pipingModel2Calculation.Height1 = 11.0;
+ pipingModel2Calculation.Permeability3 = 0.002;
+ pipingModel2Calculation.CalculateHeadDropPC2();
+ Assert.AreEqual(3.06, pipingModel2Calculation.HeadDrop, cToleranceHeadDrop);
+ }
+
+ [Test]
+ public void IsSeepageLengthCalculatedCorrectly()
+ {
+ PipingModel2Calculation pipingModel2Calculation = new PipingModel2Calculation();
+ pipingModel2Calculation.PipingCommonData.BeddingAngle = 20.0;
+ pipingModel2Calculation.PipingCommonData.FluidisationGradient = 0.3;
+ pipingModel2Calculation.PipingCommonData.ParticleUnitWeight = 26.5;
+ pipingModel2Calculation.PipingCommonData.SafetyFactor = 1.2;
+ pipingModel2Calculation.PipingCommonData.IsAdjustHeadDrop = false;
+ pipingModel2Calculation.PipingCommonData.WaterUnitWeight = Physics.UnitWeightOfwater;
+ pipingModel2Calculation.PipingCommonData.WaterViscosity = 1.33E-06;
+ pipingModel2Calculation.PipingCommonData.WhitesConstant = 0.4;
+ pipingModel2Calculation.Height1 = 4.0;
+ pipingModel2Calculation.Height2 = 42.0;
+ pipingModel2Calculation.Permeability1 = 0.0005;
+ pipingModel2Calculation.Permeability2 = 0.0005;
+ pipingModel2Calculation.Permeability3 = 0.0005;
+ pipingModel2Calculation.ParticleDiameter = 350.0;
+ pipingModel2Calculation.CrackLength = 1.1;
+ pipingModel2Calculation.HeadDrop = 18.757;
+ pipingModel2Calculation.HeadDrop = 5.0;
+ pipingModel2Calculation.SeepageLength = 50.0;
+ pipingModel2Calculation.IsHeadDropCalculation = false;
+ pipingModel2Calculation.CalculateHeadDropPC2();
+ Assert.AreEqual(101.5, pipingModel2Calculation.SeepageLength, cToleranceHeadDrop);
+ }
+
+ [Test]
+ [ExpectedException(typeof(PipingCalculationException))]
+ public void IsExceptionFromDllHandledCorrectly()
+ {
+ PipingModel2Calculation pipingModel2Calculation = new PipingModel2Calculation();
+ pipingModel2Calculation.PipingCommonData.BeddingAngle = 20.0;
+ pipingModel2Calculation.PipingCommonData.FluidisationGradient = 0.3;
+ pipingModel2Calculation.PipingCommonData.ParticleUnitWeight = 26.5;
+ pipingModel2Calculation.PipingCommonData.SafetyFactor = 1.2;
+ pipingModel2Calculation.PipingCommonData.IsAdjustHeadDrop = false;
+ pipingModel2Calculation.PipingCommonData.WaterUnitWeight = Physics.UnitWeightOfwater;
+ pipingModel2Calculation.PipingCommonData.WaterViscosity = 1.33E-06;
+ pipingModel2Calculation.PipingCommonData.WhitesConstant = 0.4;
+ pipingModel2Calculation.Height1 = 4.0;
+ pipingModel2Calculation.Height2 = 42.0;
+ pipingModel2Calculation.Permeability1 = 0.0005;
+ pipingModel2Calculation.Permeability2 = 0.0005;
+ pipingModel2Calculation.Permeability3 = 0.0005;
+ pipingModel2Calculation.ParticleDiameter = 350.0;
+ pipingModel2Calculation.CrackLength = 1.1;
+ pipingModel2Calculation.HeadDrop = 18.757;
+ pipingModel2Calculation.SeepageLength = -50.0;
+ pipingModel2Calculation.IsHeadDropCalculation = true;
+ // negative seepagelength will throw an ecxeption
+ pipingModel2Calculation.CalculateHeadDropPC2();
+ }
+
+ private PipingModel2Calculation CreateAndFillPipingModel2CalculationForTestcase01()
+ {
+ var pipingModel2Calculation = new PipingModel2Calculation();
+ pipingModel2Calculation.HeadDrop = 0.0;// Not used, to be calculated
+ pipingModel2Calculation.PipingCommonData.BeddingAngle = 20.0;
+ pipingModel2Calculation.PipingCommonData.FluidisationGradient = 0.3;
+ pipingModel2Calculation.PipingCommonData.WaterUnitWeight = Physics.UnitWeightOfwater;
+ pipingModel2Calculation.PipingCommonData.WaterViscosity = 1.33000E-06;
+ pipingModel2Calculation.PipingCommonData.WhitesConstant = 0.4;
+ pipingModel2Calculation.PipingCommonData.SafetyFactor = 1.20;
+ pipingModel2Calculation.PipingCommonData.IsAdjustHeadDrop = false;
+
+ // Soil parameters
+ pipingModel2Calculation.PipingCommonData.ParticleUnitWeight = 26.50;
+ pipingModel2Calculation.Permeability1 = 0.0001;
+ pipingModel2Calculation.Permeability2 = 0.0005;
+ pipingModel2Calculation.Permeability3 = 0.0001;
+ pipingModel2Calculation.ParticleDiameter = 250.0;
+
+ // Geometry parameters
+ pipingModel2Calculation.Height1 = 5.5;
+ pipingModel2Calculation.Height2 = 45.0;
+ return pipingModel2Calculation;
+ }
+
+ [Test]
+ public void CanCalculateTestCase01()
+ {
+ // MPipingCalc2.dll 1.2.3.1 fails on this
+ var pipingModel2Calculation = CreateAndFillPipingModel2CalculationForTestcase01();
+ pipingModel2Calculation.IsHeadDropCalculation = false; // Constant
+
+ pipingModel2Calculation.HeadDrop = 1.773; // L will be Calculated
+ pipingModel2Calculation.CrackLength = 0.1; // Distance upper sandlayer to surfaceline, "Do" in DGSWebPiping
+
+ pipingModel2Calculation.CalculateHeadDropPC2();
+
+ Assert.AreEqual(23.304, pipingModel2Calculation.SeepageLength, cToleranceHeadDrop);
+ }
+
+ }
+}
Index: dam failuremechanisms/damPiping/trunk/src/Tests/Deltares.DamPiping.SellmeijerVNKCalculatorTests/Deltares.DamPiping.SellmeijerVNKCalculatorTests.csproj
===================================================================
diff -u -r366 -r375
--- dam failuremechanisms/damPiping/trunk/src/Tests/Deltares.DamPiping.SellmeijerVNKCalculatorTests/Deltares.DamPiping.SellmeijerVNKCalculatorTests.csproj (.../Deltares.DamPiping.SellmeijerVNKCalculatorTests.csproj) (revision 366)
+++ dam failuremechanisms/damPiping/trunk/src/Tests/Deltares.DamPiping.SellmeijerVNKCalculatorTests/Deltares.DamPiping.SellmeijerVNKCalculatorTests.csproj (.../Deltares.DamPiping.SellmeijerVNKCalculatorTests.csproj) (revision 375)
@@ -46,6 +46,7 @@
+
Index: dam failuremechanisms/damPiping/trunk/src/Deltares.DamPiping.Sellmeijer4ForcesCalculator/PipingCalculatorSellmeijer4Forces.cs
===================================================================
diff -u -r374 -r375
--- dam failuremechanisms/damPiping/trunk/src/Deltares.DamPiping.Sellmeijer4ForcesCalculator/PipingCalculatorSellmeijer4Forces.cs (.../PipingCalculatorSellmeijer4Forces.cs) (revision 374)
+++ dam failuremechanisms/damPiping/trunk/src/Deltares.DamPiping.Sellmeijer4ForcesCalculator/PipingCalculatorSellmeijer4Forces.cs (.../PipingCalculatorSellmeijer4Forces.cs) (revision 375)
@@ -5,7 +5,9 @@
namespace Deltares.DamPiping.Sellmeijer4ForcesCalculator
{
-
+ ///
+ /// Calculates piping according to Sellmeijer 4 Forces
+ ///
public class PipingCalculatorSellmeijer4Forces
{
Index: dam failuremechanisms/damPiping/trunk/src/Deltares.DamPiping.SellmeijerVNKCalculator/PipingCalculationException.cs
===================================================================
diff -u -r371 -r375
--- dam failuremechanisms/damPiping/trunk/src/Deltares.DamPiping.SellmeijerVNKCalculator/PipingCalculationException.cs (.../PipingCalculationException.cs) (revision 371)
+++ dam failuremechanisms/damPiping/trunk/src/Deltares.DamPiping.SellmeijerVNKCalculator/PipingCalculationException.cs (.../PipingCalculationException.cs) (revision 375)
@@ -3,23 +3,44 @@
using System;
using System.Runtime.Serialization;
+ ///
+ /// Exception class for Piping Calculation
+ ///
+ ///
[Serializable]
public class PipingCalculationException : Exception
{
+ ///
+ /// Initializes a new instance of the class.
+ ///
public PipingCalculationException()
{
}
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The message that describes the error.
public PipingCalculationException(string message)
: base(message)
{
}
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The message.
+ /// The inner.
public PipingCalculationException(string message, Exception inner)
: base(message, inner)
{
}
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The that holds the serialized object data about the exception being thrown.
+ /// The that contains contextual information about the source or destination.
protected PipingCalculationException(SerializationInfo info, StreamingContext context)
: base(info, context)
{
Index: dam failuremechanisms/damPiping/trunk/src/Deltares.DamPiping.SellmeijerVNKCalculator/PipingCalculatorSellmeijerVNK.cs
===================================================================
diff -u -r374 -r375
--- dam failuremechanisms/damPiping/trunk/src/Deltares.DamPiping.SellmeijerVNKCalculator/PipingCalculatorSellmeijerVNK.cs (.../PipingCalculatorSellmeijerVNK.cs) (revision 374)
+++ dam failuremechanisms/damPiping/trunk/src/Deltares.DamPiping.SellmeijerVNKCalculator/PipingCalculatorSellmeijerVNK.cs (.../PipingCalculatorSellmeijerVNK.cs) (revision 375)
@@ -5,6 +5,9 @@
namespace Deltares.DamPiping.SellmeijerVNKCalculator
{
+ ///
+ /// Calculates piping according to Sellmeijer VNK
+ ///
public class PipingCalculatorSellmeijerVNK
{
@@ -123,18 +126,9 @@
foSp = DetermineFactorOfSafety(hc, reducedFall);
}
- private PipingModel2Calculation SetData()
- {
- var pipingModel2Calculation = CreateAndFillPipingModel2Calculation();
- pipingModel2Calculation.IsHeadDropCalculation = true; // Constant
- pipingModel2Calculation.SeepageLength = SeepageLength;
- pipingModel2Calculation.CrackLength = DTotal;
- return pipingModel2Calculation;
- }
-
internal double CalculateHCritical()
{
- PipingModel2Calculation pipingModel2Calculation = SetData();
+ PipingModel2Calculation pipingModel2Calculation = CreateAndFillPipingModel2Calculation();
// 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,
@@ -180,6 +174,10 @@
{
var pipingModel2Calculation = new PipingModel2Calculation();
+ pipingModel2Calculation.IsHeadDropCalculation = true; // Constant
+ pipingModel2Calculation.SeepageLength = SeepageLength;
+ pipingModel2Calculation.CrackLength = DTotal;
+
pipingModel2Calculation.HeadDrop = 0.0;// Not used, to be calculated
pipingModel2Calculation.PipingCommonData.BeddingAngle = BeddingAngle; // From soilmaterials of upper sandlayer
pipingModel2Calculation.PipingCommonData.FluidisationGradient = Rc; //Constant