public void GeneralBeamFlexuralCapacityTopReturnsNominalValue()
        {
            double fc = 4000.0;
            FlexuralSectionFactory sf         = new FlexuralSectionFactory();
            IConcreteMaterial      mat        = GetConcreteMaterial(fc);
            List <Point2D>         PolyPoints = new List <Point2D>()
            {
                new Point2D(-6.0, 0.0),
                new Point2D(-6.0, 12.0),
                new Point2D(6.0, 12.0),
                new Point2D(6.0, 0)
            };

            Rebar             thisBar     = new Rebar(1.0, new MaterialAstmA615(A615Grade.Grade60));
            var               coord       = new RebarCoordinate(0, 1.0);
            List <RebarPoint> RebarPoints = new List <RebarPoint>()
            {
                new RebarPoint(thisBar, coord)
            };
            //GetGeneralSection(List<Point2D> PolygonPoints,
            //ConcreteMaterial Concrete, List<RebarPoint> RebarPoints, double b_w, double d)
            ConcreteSectionFlexure             beam    = sf.GetGeneralSection(PolyPoints, mat, RebarPoints, 12.0, 9.0);
            IStrainCompatibilityAnalysisResult MResult = beam.GetNominalFlexuralCapacity(FlexuralCompressionFiberPosition.Top);
            double M_n = MResult.Moment / 12000;

            double refValue        = 51.32;
            double actualTolerance = EvaluateActualTolerance(M_n, refValue);

            Assert.LessOrEqual(actualTolerance, tolerance);
        }
        public void BeamReturnsphiMn()
        {
            var ConcreteMaterial = new Kodestruct.Concrete.ACI318_14.Materials.ConcreteMaterial(6000, ACI.Entities.ConcreteTypeByWeight.Normalweight, null);

            FlexuralSectionFactory flexureFactory = new FlexuralSectionFactory();
            double b   = 16;
            double h   = 40;
            double f_y = 60000;
            RebarMaterialGeneral LongitudinalRebarMaterial = new RebarMaterialGeneral(f_y);

            List <RebarPoint> LongitudinalBars = new List <RebarPoint>();

            Rebar      TopRebar = new Rebar(4, LongitudinalRebarMaterial);
            RebarPoint TopPoint = new RebarPoint(TopRebar, new RebarCoordinate()
            {
                X = 0, Y = h / 2.0 - 3
            });

            LongitudinalBars.Add(TopPoint);

            Rebar      BottomRebar = new Rebar(4, LongitudinalRebarMaterial);
            RebarPoint BottomPoint = new RebarPoint(BottomRebar, new RebarCoordinate()
            {
                X = 0, Y = -h / 2.0 + 3
            });

            LongitudinalBars.Add(BottomPoint);

            CrossSectionRectangularShape shape = new CrossSectionRectangularShape(ConcreteMaterial, null, b, h);

            IConcreteFlexuralMember fs = new ConcreteSectionFlexure(shape, LongitudinalBars, null,
                                                                    ConfinementReinforcementType.Ties);

            ConcreteFlexuralStrengthResult result = fs.GetDesignFlexuralStrength(FlexuralCompressionFiberPosition.Top);
        }
        public void ColumnDistributedInteractionReturnsSPCOL_Nominal2()
        {
            double b   = 16;
            double h   = 16;
            double f_c = 5000;

            List <RebarPoint>         LongitudinalBars   = new List <RebarPoint>();
            FlexuralSectionFactory    flexureFactory     = new FlexuralSectionFactory();
            CompressionSectionFactory compressionFactory = new CompressionSectionFactory();
            IConcreteMaterial         mat      = GetConcreteMaterial(f_c);
            IRebarMaterial            rebarMat = new MaterialAstmA615(A615Grade.Grade60);

            ConcreteSectionFlexure flexureMember = flexureFactory.GetRectangularSectionFourSidesDistributed(b, h, 4.0, 0, 2.5, 2.5,
                                                                                                            mat, rebarMat, ConfinementReinforcementType.Ties, 1);

            ConcreteSectionCompression col = compressionFactory.GetCompressionMemberFromFlexuralSection(flexureMember,
                                                                                                        CompressionMemberType.NonPrestressedWithTies);



            double P        = 500 * 1000;
            double refValue = 369 * 12 * 1000; //from SP column software


            double M_n = col.GetNominalMomentResult(P, FlexuralCompressionFiberPosition.Top).Moment;

            double phiM_n_KipFt    = M_n / 1000.0 / 12.0;
            double actualTolerance = EvaluateActualTolerance(M_n, refValue);

            Assert.LessOrEqual(actualTolerance, tolerance);
        }
        public void ColumnDistributedInteractionReturnsSPCOL_Nominal1_Strains()
        {
            double b   = 16;
            double h   = 16;
            double f_c = 5000;

            List <RebarPoint>         LongitudinalBars   = new List <RebarPoint>();
            FlexuralSectionFactory    flexureFactory     = new FlexuralSectionFactory();
            CompressionSectionFactory compressionFactory = new CompressionSectionFactory();
            IConcreteMaterial         mat      = GetConcreteMaterial(f_c);
            IRebarMaterial            rebarMat = new MaterialAstmA615(A615Grade.Grade60);

            ConcreteSectionFlexure flexureMember = flexureFactory.GetRectangularSectionFourSidesDistributed(b, h, 4.0, 0, 2.5, 2.5,
                                                                                                            mat, rebarMat, ConfinementReinforcementType.Ties, 1);

            ConcreteSectionCompression col = compressionFactory.GetCompressionMemberFromFlexuralSection(flexureMember, CompressionMemberType.NonPrestressedWithTies);



            double refForce  = 1220;
            double refMoment = 160.8;


            double SteelStrain     = 0.000654;
            double P               = col.SectionAxialForceResultantFunction(SteelStrain) / 1000.0;
            double actualTolerance = EvaluateActualTolerance(P, refForce);

            //IStrainCompatibilityAnalysisResult momentResult = col.GetNominalMomentResult(refForce, FlexuralCompressionFiberPosition.Top);
            //double M_n = momentResult.Moment / 12000.0;


            Assert.LessOrEqual(actualTolerance, tolerance);
        }
示例#5
0
        public void ColumnDistributedInteractionReturnsSPCOL_Nominal0_Strains()

        {
            double b   = 16;
            double h   = 16;
            double f_c = 5000;

            List <RebarPoint>         LongitudinalBars   = new List <RebarPoint>();
            FlexuralSectionFactory    flexureFactory     = new FlexuralSectionFactory();
            CompressionSectionFactory compressionFactory = new CompressionSectionFactory();
            IConcreteMaterial         mat      = GetConcreteMaterial(f_c);
            IRebarMaterial            rebarMat = new MaterialAstmA615(A615Grade.Grade60);

            ConcreteSectionFlexure flexureMember = flexureFactory.GetRectangularSectionFourSidesDistributed(b, h, 4.0, 0, 2.5, 2.5,
                                                                                                            mat, rebarMat, ConfinementReinforcementType.Ties, 1);

            ConcreteSectionCompression col = compressionFactory.GetCompressionMemberFromFlexuralSection(flexureMember, CompressionMemberType.NonPrestressedWithTies);



            double refForce  = 1440;
            double refMoment = 43.0;


            double SteelStrain     = 0.00126;
            double P               = col.SectionAxialForceResultantFunction(SteelStrain) / 1000.0;
            double actualTolerance = EvaluateActualTolerance(P, refForce);


            Assert.True(actualTolerance <= tolerance);
        }
        public ConcreteSectionCompression GetConcreteExampleColumnWithDistributed()
        {
            double b   = 16;
            double h   = 16;
            double f_c = 5000;

            List <RebarPoint>         LongitudinalBars   = new List <RebarPoint>();
            FlexuralSectionFactory    flexureFactory     = new FlexuralSectionFactory();
            CompressionSectionFactory compressionFactory = new CompressionSectionFactory();
            IConcreteMaterial         mat      = GetConcreteMaterial(f_c);
            IRebarMaterial            rebarMat = new MaterialAstmA615(A615Grade.Grade60);

            ConcreteSectionFlexure flexureMember = flexureFactory.GetRectangularSectionFourSidesDistributed(b, h, 4, 0, 2.5, 2.5, mat, rebarMat);

            ConcreteSectionCompression column = compressionFactory.GetCompressionMember(flexureMember, CompressionMemberType.NonPrestressedWithTies);

            return(column);
        }
示例#7
0
        internal RectangularSectionFourSideReinforced(double b, double h, double A_sTopBottom, double A_sLeftRight,
                                                      double c_cntrTopBottom, double c_cntrLeftRight, ConcreteMaterial ConcreteMaterial, RebarMaterial LongitudinalRebarMaterial,
                                                      bool hasTies = false)
        {
            KodestructAci.ConfinementReinforcementType ConfinementReinforcementType;
            if (hasTies == true)
            {
                ConfinementReinforcementType = KodestructAci.ConfinementReinforcementType.Ties;
            }
            else
            {
                ConfinementReinforcementType = KodestructAci.ConfinementReinforcementType.NoReinforcement;
            }

            base.ConcreteMaterial = ConcreteMaterial; //duplicate save of concrete material into base Dynamo class

            FlexuralSectionFactory flexureFactory = new FlexuralSectionFactory();
            ConcreteSectionFlexure fs             = flexureFactory.GetRectangularSectionFourSidesDistributed(b, h, A_sTopBottom, A_sLeftRight,
                                                                                                             c_cntrTopBottom, c_cntrLeftRight,
                                                                                                             ConcreteMaterial.Concrete, LongitudinalRebarMaterial.Material, ConfinementReinforcementType);


            this.FlexuralSection = fs;
        }