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()) { } } }