Beispiel #1
0
        public CompressionZoneResult Calculate(double x, Section section)
        {
            var compressionZoneCoordinates = CompressionZoneCoordinates.CoordinatesOfCompressionZone(section.Coordinates, section.MaxY - x);
            var compressionZone            = new Section(compressionZoneCoordinates);

            compressionZone.IntegrationPointY = section.IntegrationPointY;
            Func <double, double> distance = y => section.MaxY - y;
            Func <double, double> strain   = di => this.strainCalculations.StrainInConcrete(x, distance(di));
            Func <double, double> stress   = e => StressFunctions.ConcreteStressDesign(strain(e), this.concrete);
            var integration = new Integration();
            var result      = integration.Integrate(compressionZone, stress);

            return(result);
        }
Beispiel #2
0
        public CompressionZoneResult Calculate(double x, Section section)
        {
            yNeutralAxis = section.MaxY - x;
            double ec2Y = this.strainCalculations.Ec2Y(x);

            y2Promiles      = yNeutralAxis + ec2Y;
            compressionZone = CompressionZoneCoordinates.CoordinatesOfCompressionZone(section.Coordinates, yNeutralAxis);
            parabolicZone   = CompressionZoneCoordinates.CoordinatesOfParabolicSection(compressionZone, y2Promiles);
            linearZone      = CompressionZoneCoordinates.CoordinatesOfLinearSection(compressionZone, y2Promiles);
            var result = new CompressionZoneResult();

            result.NormalForce = this.calculateResultantForce();
            result.Moment      = this.calculateResultantMoment(x, section);
            return(result);
        }
Beispiel #3
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);
        }