using StructureHelperCommon.Infrastructures.Exceptions;
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperCommon.Services;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Permissions;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelperCommon.Models.Soils
{
public enum DurabilityType
{
Temporary,
Eturnal
}
public class SoilAnchor : ISaveable
{
private double rootLength;
private double rootDiameter;
private double freeLength;
private double jetTubeDiameter;
private double waterCementRatio;
private double boreHoleDiameter;
private double angleToHorizont;
private double additionalSurfPressure;
private double headLevel;
///
public Guid Id {get; private set;}
///
/// Length of root, m
///
public double RootLength
{
get => rootLength; set
{
CheckObject.CheckMinMax(value, 0d, 10d);
rootLength = value;
}
}
///
/// Diameter of root, m
///
public double RootDiameter
{
get => rootDiameter; set
{
CheckObject.CheckMinMax(value, 0d, 1d);
rootDiameter = value;
}
}
///
///
///
public double GroundLevel { get; set; }
///
/// Absolute level of head of anchor, m
///
public double HeadLevel { get => headLevel; set => headLevel = value; }
///
/// Free Length, m
///
public double FreeLength
{
get => freeLength; set
{
CheckObject.CheckMinMax(value, 0d, 20d);
freeLength = value;
}
}
///
/// Diameter of boregole, m
///
public double BoreHoleDiameter
{
get => boreHoleDiameter; set
{
CheckObject.CheckMinMax(value, 0d, 1d);
boreHoleDiameter = value;
}
}
///
/// Diameter of tube for jetting of mortar
///
public double JetTubeDiameter
{
get => jetTubeDiameter; set
{
CheckObject.CheckMinMax(value, 0d, 0.1d);
jetTubeDiameter = value;
}
}
///
/// Water-Cement ratio of jetting mortar
///
public double WaterCementRatio
{
get => waterCementRatio; set
{
CheckObject.CheckMinMax(value, 0d, 3d);
waterCementRatio = value;
}
}
///
/// Angle between horizontal plane and axis of anchor, degree
///
public double AngleToHorizont
{
get => angleToHorizont; set
{
CheckObject.CheckMinMax(value, 0d, 60d);
angleToHorizont = value;
}
}
///
/// Additional pressure on the surface of ground, Pa
///
public double AdditionalSurfPressure
{
get => additionalSurfPressure; set
{
CheckObject.CheckMinMax(value, 0d, 2e4d); //20kPa
additionalSurfPressure = value;
}
}
public DurabilityType DurabilityType {get;set;}
public SoilAnchor(Guid id)
{
Id = id;
RootLength = 6;
HeadLevel = -4d;
FreeLength = 7d;
BoreHoleDiameter = 0.145d;
RootDiameter = boreHoleDiameter / 0.9d;
JetTubeDiameter = 0.025d;
WaterCementRatio = 0.45d;
AngleToHorizont = 15;
DurabilityType = DurabilityType.Temporary;
}
public SoilAnchor() : this(Guid.NewGuid()) { }
}
}