Exemplo n.º 1
0
        public CompressionZoneResult Integrate(IIntegrable section, Func <double, double> distributionFunction)
        {
            double  resultantMoment      = 0;
            double  resultantNormalForce = 0;
            Slicing slicing  = new Slicing();
            double  currentY = section.MinY;
            double  deltaY   = (section.MaxY - section.MinY) / this.numberOfSlices;

            while (currentY <= section.MaxY)
            {
                SectionSlice slice = slicing.GetSlice(section.Coordinates, currentY + deltaY, currentY);
                currentY = currentY + deltaY;
                double value       = distributionFunction(slice.CentreOfGravityY);
                double normalForce = value * slice.Area;
                double leverArm    = Math.Abs(section.IntegrationPointY - slice.CentreOfGravityY);
                double moment      = leverArm * value * slice.Area;
                resultantMoment      = resultantMoment + moment;
                resultantNormalForce = resultantNormalForce + normalForce;
            }
            var result = new CompressionZoneResult();

            result.NormalForce = resultantNormalForce;
            result.Moment      = resultantMoment;
            return(result);
        }
Exemplo n.º 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);
        }