示例#1
0
        public static CalculationResult GetSectionCapacity(Concrete concrete, Steel steel, IList <PointD> sectionCoordinates, IList <Bar> bars, IList <LoadCase> loadCases /*IProgress<ProgressArgument> progressIndicatior*/)
        {
            var result = new CalculationResult();

            var capacity        = new SectionCapacity(concrete, steel);
            var section         = new Section(sectionCoordinates);
            var loadCaseResults = new List <LoadCaseResult>();

            for (int i = 0; i <= loadCases.Count - 1; i++)
            {
                var loadCase = loadCases[i];
                //progressIndicatior.Report(ProgressArgument.CalculateProgress(i, loadCases.Count, loadCase.Name));
                var loadCaseResult = capacity.CalculateCapacity(loadCase.NormalForce, section, bars);
                loadCaseResult.LoadCase = loadCase;
                loadCaseResults.Add(loadCaseResult);
            }

            result.Cz = section.Cz;
            result.H  = section.H;
            result.LoadCaseResults     = loadCaseResults;
            result.MaxTensionForce     = AxialCapacity.TensionCapacity(bars, steel);
            result.MaxCompressionForce = AxialCapacity.CompressionCapacity(sectionCoordinates, concrete);
            result.Concrete            = concrete;
            result.Steel = steel;

            return(result);
        }
示例#2
0
 public InteractionCurveCalculator(Concrete concrete, Steel steel, IList <Bar> bars, IList <PointD> coordinates, IList <LoadCase> loadCases)
 {
     this.concrete    = concrete;
     this.steel       = steel;
     this.concrete    = concrete;
     this.steel       = steel;
     this.loadCases   = loadCases;
     this.bars        = bars;
     this.coordinates = coordinates;
 }
示例#3
0
        public static double TensionCapacity(IList <Bar> bars, Steel steel)
        {
            if (bars.Count == 0)
            {
                return(0);
            }
            double capacity = 0;

            foreach (var bar in bars)
            {
                capacity += bar.As * steel.Fyd * steel.K;
            }
            return(-capacity);
        }
示例#4
0
        static public double SteelStressCharacteristic(double e, Steel steel)
        {
            double s;

            if (e <= (steel.Fyk / steel.Es))
            {
                s = e * steel.Es;
            }
            else if (e <= steel.Euk)
            {
                var a = (steel.K * steel.Fyk - steel.Fyk) / (steel.Euk - steel.Fyk / steel.Es);
                var b = steel.Fyk - a * steel.Fyk / steel.Es;
                s = a * e + b;
            }
            else
            {
                s = 0;
            }
            return(s);
        }
示例#5
0
        static public double SteelStressDesign(double e, Steel steel)
        {
            double a;
            double b;
            double stress = 0;

            if (e < 0)
            {
                stress = 0;
            }
            else if (e <= (steel.Fyd / steel.Es))
            {
                stress = e * steel.Es;
            }
            else if (e <= steel.Eud)
            {
                a      = (steel.K * steel.Fyd - steel.Fyd) / (steel.Euk - steel.Fyd / steel.Es);
                b      = steel.Fyd - a * steel.Fyd / steel.Es;
                stress = a * e + b;
            }
            return(stress);
        }
示例#6
0
 public StrainCalculations(Concrete concrete, Steel steel, Section section)
 {
     this.concrete = concrete;
     this.steel    = steel;
     this.section  = section;
 }
示例#7
0
 public SectionCapacity(Concrete concrete, Steel steel)
 {
     this.concrete = concrete;
     this.steel    = steel;
 }