Esempio n. 1
0
        public LoadCaseResult CalculateCapacity(double nEd, Section section, IList <Bar> bars)
        {
            this.section            = section;
            this.strainCalculations = new StrainCalculations(this.concrete, this.steel, section);

            if (this.concrete.N == 2d)
            {
                this.compressionZoneCalculations = new CompressionZoneCalculationsGreenFormula(this.concrete, this.strainCalculations);
            }
            else
            {
                this.compressionZoneCalculations = new CompressionZoneCalculationsNumericalFormula(this.concrete, this.strainCalculations);
            }

            createReinforcement(bars);
            this.section.D = this.calculateEffectiveDepthOfSectionAndBars();
            this.nEd       = nEd;
            var result = new LoadCaseResult();

            result.D = this.section.D;
            result.X = this.solveEqulibriumEquation();
            if (double.IsNaN(result.X))
            {
                result.HasSolution = false;
                return(result);
            }
            result.HasSolution = true;
            var forces = this.compressionZoneCalculations.Calculate(result.X, this.section);

            result.MrdConcrete     = forces.Moment;
            result.ForceConcrete   = forces.NormalForce;
            result.Mrd             = mrdReinforcement(result.X) + result.MrdConcrete - this.nEd * (this.section.H - this.section.Cz);
            result.CompressionZone = CompressionZoneCoordinates.CoordinatesOfCompressionZone(this.section.Coordinates, this.section.MaxY - result.X);
            result.Bars            = this.reinforcement;
            result.Ec = this.strainCalculations.StrainInConcrete(result.X, 0);
            //result.H = section.H;
            //result.Cz = section.Cz;
            result.ForceReinforcement  = this.reinforcement.Sum(e => e.Force);
            result.MomentReinforcement = this.reinforcement.Sum(e => e.Moment);
            return(result);
        }
Esempio n. 2
0
 public CompressionZoneCalculationsGreenFormula(Concrete concrete, IStrainCalculations strainCalculations)
 {
     this.concrete           = concrete;
     this.strainCalculations = strainCalculations;
 }
Esempio n. 3
0
 public CompressionZoneCalculationsNumericalFormula(Concrete concrete, IStrainCalculations strainCalculations)
 {
     this.strainCalculations = strainCalculations;
     this.concrete           = concrete;
 }