// Copyright (C) Stichting Deltares 2017. All rights reserved.
//
// This file is part of Ringtoets.
//
// Ringtoets is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see .
//
// All names, logos, and references to "Deltares" are registered trademarks of
// Stichting Deltares and remain full property of Stichting Deltares at all times.
// All rights reserved.
using System;
using Core.Common.Base.Geometry;
namespace Ringtoets.MacroStabilityInwards.KernelWrapper.Calculators.UpliftVan.Output
{
///
/// The slice result of an Uplift Van calculation.
///
public class UpliftVanSliceResult
{
///
/// Creates a new instance of .
///
/// The top left point of the slice.
/// The top right point of the slice.
/// The bottom left point of the slice.
/// The bottom right point of the slice.
/// The object containing the values for the properties
/// of the new .
/// Thrown when any parameter is null.
public UpliftVanSliceResult(Point2D topLeftPoint, Point2D topRightPoint,
Point2D bottomLeftPoint, Point2D bottomRightPoint,
ConstructionProperties properties)
{
if (topLeftPoint == null)
{
throw new ArgumentNullException(nameof(topLeftPoint));
}
if (topRightPoint == null)
{
throw new ArgumentNullException(nameof(topRightPoint));
}
if (bottomLeftPoint == null)
{
throw new ArgumentNullException(nameof(bottomLeftPoint));
}
if (bottomRightPoint == null)
{
throw new ArgumentNullException(nameof(bottomRightPoint));
}
if (properties == null)
{
throw new ArgumentNullException(nameof(properties));
}
TopLeftPoint = topLeftPoint;
TopRightPoint = topRightPoint;
BottomLeftPoint = bottomLeftPoint;
BottomRightPoint = bottomRightPoint;
Cohesion = properties.Cohesion;
FrictionAngle = properties.FrictionAngle;
CriticalPressure = properties.CriticalPressure;
OverConsolidationRatio = properties.OverConsolidationRatio;
Pop = properties.Pop;
DegreeOfConsolidationPorePressureSoil = properties.DegreeOfConsolidationPorePressureSoil;
DegreeOfConsolidationPorePressureLoad = properties.DegreeOfConsolidationPorePressureLoad;
Dilatancy = properties.Dilatancy;
ExternalLoad = properties.ExternalLoad;
HydrostaticPorePressure = properties.HydrostaticPorePressure;
LeftForce = properties.LeftForce;
LeftForceAngle = properties.LeftForceAngle;
LeftForceY = properties.LeftForceY;
RightForce = properties.RightForce;
RightForceAngle = properties.RightForceAngle;
RightForceY = properties.RightForceY;
LoadStress = properties.LoadStress;
NormalStress = properties.NormalStress;
PorePressure = properties.PorePressure;
HorizontalPorePressure = properties.HorizontalPorePressure;
VerticalPorePressure = properties.VerticalPorePressure;
PiezometricPorePressure = properties.PiezometricPorePressure;
EffectiveStress = properties.EffectiveStress;
EffectiveStressDaily = properties.EffectiveStressDaily;
ExcessPorePressure = properties.ExcessPorePressure;
ShearStress = properties.ShearStress;
SoilStress = properties.SoilStress;
TotalPorePressure = properties.TotalPorePressure;
TotalStress = properties.TotalStress;
Weight = properties.Weight;
}
///
/// Gets the top left point.
///
public Point2D TopLeftPoint { get; }
///
/// Gets the top right point.
///
public Point2D TopRightPoint { get; }
///
/// Gets the bottom left point.
///
public Point2D BottomLeftPoint { get; }
///
/// Gets the bottom right point.
///
public Point2D BottomRightPoint { get; }
///
/// Gets the cohesion.
/// [kN/m²]
///
public double Cohesion { get; }
///
/// Gets the friction angle.
/// [°]
///
public double FrictionAngle { get; }
///
/// Gets the critical pressure.
/// [kN/m²]
///
public double CriticalPressure { get; }
///
/// Gets the over consolidation ratio.
/// [-]
///
public double OverConsolidationRatio { get; }
///
/// Gets the POP.
/// [kN/m²]
///
public double Pop { get; }
///
/// Gets the pore pressure from degree of consolidation soil.
/// [kN/m²]
///
public double DegreeOfConsolidationPorePressureSoil { get; }
///
/// Gets the pore pressure from degree of consolidation load.
/// [kN/m²]
///
public double DegreeOfConsolidationPorePressureLoad { get; }
///
/// Gets the dilatancy of the slice.
///
public double Dilatancy { get; }
///
/// Gets the external load.
/// [kN/m²]
///
public double ExternalLoad { get; }
///
/// Gets the hydrostatic pore pressure.
/// [kN/m²]
///
public double HydrostaticPorePressure { get; }
///
/// Gets the left force.
///
public double LeftForce { get; }
///
/// Gets the left force angle.
/// [°]
///
public double LeftForceAngle { get; }
///
/// Gets the left force y.
///
public double LeftForceY { get; }
///
/// Gets the right force.
///
public double RightForce { get; }
///
/// Gets the right force angle.
/// [°]
///
public double RightForceAngle { get; }
///
/// Gets the right force y.
///
public double RightForceY { get; }
///
/// Gets the load stress.
/// [kN/m²]
///
public double LoadStress { get; }
///
/// Gets the normal stress.
/// [kN/m²]
///
public double NormalStress { get; }
///
/// Gets the pore pressure.
/// [kN/m²]
///
public double PorePressure { get; }
///
/// Gets the horizontal pore pressure.
/// [kN/m²]
///
public double HorizontalPorePressure { get; }
///
/// Gets the vertical pore pressure.
/// [kN/m²]
///
public double VerticalPorePressure { get; }
///
/// Gets the piezometric pore pressure.
/// [kN/m²]
///
public double PiezometricPorePressure { get; }
///
/// Gets the effective stress.
/// [kN/m²]
///
public double EffectiveStress { get; }
///
/// Gets the daily effective stress.
/// [kN/m²]
///
public double EffectiveStressDaily { get; }
///
/// Gets the excess pore pressure.
/// [kN/m²]
///
public double ExcessPorePressure { get; }
///
/// Gets the shear stress.
/// [kN/m²]
///
public double ShearStress { get; }
///
/// Gets the soil stress.
/// [kN/m²]
///
public double SoilStress { get; }
///
/// Gets the total pore pressure.
/// [kN/m²]
///
public double TotalPorePressure { get; }
///
/// Gets the total stress.
/// [kN/m²]
///
public double TotalStress { get; }
///
/// Gets the weight.
/// [kN/m]
///
public double Weight { get; }
///
/// Container for properties for constructing a .
///
public class ConstructionProperties
{
///
/// Creates a new instance of .
///
public ConstructionProperties()
{
Cohesion = double.NaN;
FrictionAngle = double.NaN;
CriticalPressure = double.NaN;
OverConsolidationRatio = double.NaN;
Pop = double.NaN;
DegreeOfConsolidationPorePressureSoil = double.NaN;
DegreeOfConsolidationPorePressureLoad = double.NaN;
Dilatancy = double.NaN;
ExternalLoad = double.NaN;
HydrostaticPorePressure = double.NaN;
LeftForce = double.NaN;
LeftForceAngle = double.NaN;
LeftForceY = double.NaN;
RightForce = double.NaN;
RightForceAngle = double.NaN;
RightForceY = double.NaN;
LoadStress = double.NaN;
NormalStress = double.NaN;
PorePressure = double.NaN;
HorizontalPorePressure = double.NaN;
VerticalPorePressure = double.NaN;
PiezometricPorePressure = double.NaN;
EffectiveStress = double.NaN;
EffectiveStressDaily = double.NaN;
ExcessPorePressure = double.NaN;
ShearStress = double.NaN;
SoilStress = double.NaN;
TotalPorePressure = double.NaN;
TotalStress = double.NaN;
Weight = double.NaN;
}
///
/// Gets or sets the cohesion.
/// [kN/m²]
///
public double Cohesion { internal get; set; }
///
/// Gets or sets the friction angle.
/// [°]
///
public double FrictionAngle { internal get; set; }
///
/// Gets or sets the critical pressure.
/// [kN/m²]
///
public double CriticalPressure { internal get; set; }
///
/// Gets or sets the over consolidation ratio.
/// [-]
///
public double OverConsolidationRatio { internal get; set; }
///
/// Gets or sets the POP.
/// [kN/m²]
///
public double Pop { internal get; set; }
///
/// Gets or sets the pore pressure from degree of consolidation soil.
/// [kN/m²]
///
public double DegreeOfConsolidationPorePressureSoil { internal get; set; }
///
/// Gets or sets the pore pressure from degree of consolidation load.
/// [kN/m²]
///
public double DegreeOfConsolidationPorePressureLoad { internal get; set; }
///
/// Gets or sets the dilatancy of the slice.
///
public double Dilatancy { internal get; set; }
///
/// Gets or sets the external load.
/// [kN/m²]
///
public double ExternalLoad { internal get; set; }
///
/// Gets or sets the hydrostatic pore pressure.
/// [kN/m²]
///
public double HydrostaticPorePressure { internal get; set; }
///
/// Gets or sets the left force.
///
public double LeftForce { internal get; set; }
///
/// Gets or sets the left force angle.
/// [°]
///
public double LeftForceAngle { internal get; set; }
///
/// Gets or sets the left force y.
///
public double LeftForceY { internal get; set; }
///
/// Gets or sets the right force.
///
public double RightForce { internal get; set; }
///
/// Gets or sets the right force angle.
/// [°]
///
public double RightForceAngle { internal get; set; }
///
/// Gets or sets the right force y.
///
public double RightForceY { internal get; set; }
///
/// Gets or sets the load stress.
/// [kN/m²]
///
public double LoadStress { internal get; set; }
///
/// Gets or sets the normal stress.
/// [kN/m²]
///
public double NormalStress { internal get; set; }
///
/// Gets or sets the pore pressure.
/// [kN/m²]
///
public double PorePressure { internal get; set; }
///
/// Gets or sets the horizontal pore pressure.
/// [kN/m²]
///
public double HorizontalPorePressure { internal get; set; }
///
/// Gets or sets the vertical pore pressure.
/// [kN/m²]
///
public double VerticalPorePressure { internal get; set; }
///
/// Gets or sets the piezometric pore pressure.
/// [kN/m²]
///
public double PiezometricPorePressure { internal get; set; }
///
/// Gets or sets the effective stress.
/// [kN/m²]
///
public double EffectiveStress { internal get; set; }
///
/// Gets or sets the daily effective stress.
/// [kN/m²]
///
public double EffectiveStressDaily { internal get; set; }
///
/// Gets or sets the excess pore pressure.
/// [kN/m²]
///
public double ExcessPorePressure { internal get; set; }
///
/// Gets or sets the shear stress.
/// [kN/m²]
///
public double ShearStress { internal get; set; }
///
/// Gets or sets the soil stress.
/// [kN/m²]
///
public double SoilStress { internal get; set; }
///
/// Gets or sets the total pore pressure.
/// [kN/m²]
///
public double TotalPorePressure { internal get; set; }
///
/// Gets or sets the total stress.
/// [kN/m²]
///
public double TotalStress { internal get; set; }
///
/// Gets or sets the weight.
/// [kN/m]
///
public double Weight { internal get; set; }
}
}
}