public static Dictionary <string, object> PositiveMomentFlexuralStrength(CustomProfile Shape, double b_eff, double h_solid, double h_rib, double F_y, double fc_prime,
                                                                                 double SumQ_n, string Code = "AISC360-10")
        {
            //Default values
            double phiM_n = 0;


            //Calculation logic:
            if (Shape.Section is ISliceableShapeProvider)
            {
                ISliceableShapeProvider prov = Shape.Section as ISliceableShapeProvider;
                ISliceableSection       sec  = prov.GetSliceableShape();
                CompositeBeamSection    cs   = new CompositeBeamSection(sec, b_eff, h_solid, h_rib, F_y, fc_prime);
                phiM_n = cs.GetFlexuralStrength(SumQ_n);
            }
            else
            {
                if (Shape.Section is ISliceableSection)
                {
                    ISliceableSection    sec = Shape.Section as ISliceableSection;
                    CompositeBeamSection cs  = new CompositeBeamSection(sec, b_eff, h_solid, h_rib, F_y, fc_prime);
                    phiM_n = cs.GetFlexuralStrength(SumQ_n);
                }
                else
                {
                    throw new Exception("Shape type not supported. Please provide a shape object of standard geometry");
                }
            }


            return(new Dictionary <string, object>
            {
                { "phiM_n", phiM_n }
            });
        }
        public double GetBeamEffectiveSlabWidth(IFrameSet ifs)
        {
            sSteelFrameSet       fs = ifs as sSteelFrameSet;
            CompositeBeamSection cs = new CompositeBeamSection();
            double L = fs.parentCrv.length * 39.3701;//m to in

            return(cs.GetEffectiveSlabWidth(L, fs.effectiveSlabEdges.L_centerLeft_in, fs.effectiveSlabEdges.L_centerRight_in, fs.effectiveSlabEdges.L_edgeLeft_in, fs.effectiveSlabEdges.L_edgeRight_in));
        }
        public void CompositeBeamSectionReturnsLowerBoundMomentOfInertia()
        {
            double SumQ_n           = 387;
            CompositeBeamSection cs = GetBeamForTests(SumQ_n);
            double I_LB             = cs.GetLowerBoundMomentOfInertia(SumQ_n);

            double refValue        = 1360; // from AISC Steel Manual
            double actualTolerance = EvaluateActualTolerance(I_LB, refValue);

            Assert.LessOrEqual(actualTolerance, tolerance);
        }
        public void CompositeBeamReturnsFlexuralStrength()
        {
            double SumQ_n           = 387;
            CompositeBeamSection cs = GetBeamForTests(SumQ_n);
            double phiM_n           = cs.GetFlexuralStrength(SumQ_n);

            double refValue        = 486; // from AISC Steel Manual
            double actualTolerance = EvaluateActualTolerance(phiM_n / 12.0, refValue);

            Assert.LessOrEqual(actualTolerance, tolerance);
        }
        public double GetFlexuralStrength_Vertical(sCrossSection section, eColorMode forceType, IFrameSet fs)
        {
            sKodeStructConverter kcon = new sKodeStructConverter();
            SteelMaterial        mat  = kcon.ToKodeStructMaterial_Steel(section);

            string Code   = "AISC360-10";
            double phiM_n = 0;

            double b_eff  = this.GetBeamEffectiveSlabWidth(fs);
            double SumQ_n = this.GetSumOfStudsStrength(fs);
            // assuming,
            // Shear Stud Anchor
            // Light Weight Concrete : 4ksi
            // solid concrete thickness = 2.5"
            // rib thickness = 3"
            //
            double h_solid  = 2.5;
            double h_rib    = 3.0;
            double F_y      = mat.YieldStress; //?? unit ?? F_y of what??
            double fc_prime = 4.0;             //?? unit ??

            MomentAxis Axis = kcon.ToKodeStructMomentAxis(forceType);

            //?? just this for composite?
            ISection shape = kcon.ToKodeStructCrossSection(section);

            if (shape is ISliceableShapeProvider)
            {
                ISliceableShapeProvider prov = shape as ISliceableShapeProvider;
                ISliceableSection       sec  = prov.GetSliceableShape();
                CompositeBeamSection    cs   = new CompositeBeamSection(sec, b_eff, h_solid, h_rib, F_y, fc_prime);
                phiM_n = cs.GetFlexuralStrength(SumQ_n);
            }
            else
            {
                if (shape is ISliceableSection)
                {
                    ISliceableSection    sec = shape as ISliceableSection;
                    CompositeBeamSection cs  = new CompositeBeamSection(sec, b_eff, h_solid, h_rib, F_y, fc_prime);
                    phiM_n = cs.GetFlexuralStrength(SumQ_n);
                }
                else
                {
                    throw new Exception("Shape type not supported. Please provide a shape object of standard geometry");
                }
            }
            return(phiM_n);
        }
        public double GetLowerBoundMomentOfInertia(sCrossSection cCheck, IFrameSet fs)
        {
            sKodeStructConverter kcon = new sKodeStructConverter();
            SteelMaterial        mat  = kcon.ToKodeStructMaterial_Steel(fs.crossSection);
            double I_LB   = 0;
            double b_eff  = this.GetBeamEffectiveSlabWidth(fs);
            double SumQ_n = this.GetSumOfStudsStrength(fs);
            // assuming,
            // Shear Stud Anchor
            // Light Weight Concrete : 4ksi
            // solid concrete thickness = 2.5"
            // rib thickness = 3"
            //
            double h_solid  = 2.5;
            double h_rib    = 3.0;
            double F_y      = mat.YieldStress; //?? unit ?? F_y of what??
            double fc_prime = 4.0;             //?? unit ??

            //check lowerBound Moment of Inertia by check section???
            ISection shape = kcon.ToKodeStructCrossSection(cCheck);

            if (shape is ISliceableShapeProvider)
            {
                ISliceableShapeProvider prov = shape as ISliceableShapeProvider;
                ISliceableSection       sec  = prov.GetSliceableShape();
                CompositeBeamSection    cs   = new CompositeBeamSection(sec, b_eff, h_solid, h_rib, F_y, fc_prime);
                I_LB = cs.GetLowerBoundMomentOfInertia(SumQ_n);
            }
            else
            {
                if (shape is ISliceableSection)
                {
                    ISliceableSection    sec = shape as ISliceableSection;
                    CompositeBeamSection cs  = new CompositeBeamSection(sec, b_eff, h_solid, h_rib, F_y, fc_prime);
                    I_LB = cs.GetLowerBoundMomentOfInertia(SumQ_n);
                }
                else
                {
                    throw new Exception("Shape type not supported. Please provide a shape object of standard geometry");
                }
            }



            return(I_LB);
        }
Exemplo n.º 7
0
        public static Dictionary <string, object> BeamEffectiveSlabWidth(double L, double L_centerLeft, double L_centerRight, double L_edgeLeft,
                                                                         double L_edgeRight, string Code = "AISC360-10")
        {
            //Default values
            double b_eff = 0;


            //Calculation logic:
            CompositeBeamSection cs = new CompositeBeamSection();

            b_eff = cs.GetEffectiveSlabWidth(L, L_centerLeft, L_centerRight, L_edgeLeft, L_edgeRight);


            return(new Dictionary <string, object>
            {
                { "b_eff", b_eff }
            });
        }
        private CompositeBeamSection GetBeamForTests(double SumQ_n)
        {
            double Y_2      = 5;
            double f_cPrime = 4;
            double h_solid  = 3;
            double b_eff;
            double h_rib = 3;

            b_eff = SumQ_n / ((h_rib + h_solid - Y_2) * 2 * 0.85 * f_cPrime);           //Back calculate b_eff to get the round number from AISC manual
            double Y_2T = h_solid - (SumQ_n / (0.85 * f_cPrime * b_eff) / 2.0) + h_rib; //test

            AiscShapeFactory     factory = new AiscShapeFactory();
            ISection             section = factory.GetShape("W18X35", ShapeTypeSteel.IShapeRolled);
            PredefinedSectionI   catI    = section as PredefinedSectionI;
            SectionIRolled       secI    = new SectionIRolled("", catI.d, catI.b_fTop, catI.t_f, catI.t_w, catI.k);
            CompositeBeamSection cs      = new CompositeBeamSection(secI, b_eff, h_solid, h_rib, 50.0, f_cPrime);

            return(cs);
        }
        public static Dictionary <string, object> LowerBoundMomentOfInertia(CustomProfile Shape, double b_eff, double h_solid, double h_rib, double F_y, double fc_prime,
                                                                            double SumQ_n, string Code = "AISC360-10")
        {
            //Default values
            double I_LB = 0;


            //Calculation logic:


            if (Shape.Section is ISliceableShapeProvider)
            {
                ISliceableShapeProvider prov = Shape.Section as ISliceableShapeProvider;
                ISliceableSection       sec  = prov.GetSliceableShape();
                CompositeBeamSection    cs   = new CompositeBeamSection(sec, b_eff, h_solid, h_rib, F_y, fc_prime);
                I_LB = cs.GetLowerBoundMomentOfInertia(SumQ_n);
            }
            else
            {
                if (Shape.Section is ISliceableSection)
                {
                    ISliceableSection    sec = Shape.Section as ISliceableSection;
                    CompositeBeamSection cs  = new CompositeBeamSection(sec, b_eff, h_solid, h_rib, F_y, fc_prime);
                    I_LB = cs.GetLowerBoundMomentOfInertia(SumQ_n);
                }
                else
                {
                    throw new Exception("Shape type not supported. Please provide a shape object of standard geometry");
                }
            }

            return(new Dictionary <string, object>
            {
                { "I_LB", I_LB }
            });
        }