/// <summary>
        /// 
        /// </summary>
        /// <param name="Section">I-section (as shape)</param>
        /// <param name="SlabEffectiveWidth"></param>
        /// <param name="SlabSolidThickness">Concrete fill</param>
        /// <param name="SlabDeckThickness">Metal deck thickness</param>
        /// <param name="F_y">Yield stress of shape</param>
        /// <param name="f_cPrime">Concrete strength</param>
        /// <param name="N_studs">Total number of studs (between point of zero and maximum moment)</param>
        /// <param name="Q_n">Stud strength (in shear)</param>
        /// <param name="N_o">Number of connectors over opening</param>
        /// <param name="a_o">Length of opening</param>
        /// <param name="h_o">Height of opening</param>
        /// <param name="e">Eccentriciy of opening with repect to neutral axis</param>
        /// <param name="t_r">Thickness of reinforcing plate</param>
        /// <param name="b_r">Width of reinforcing plate</param>
        /// <param name="DeckAtBeamCondition">Orientation of deck over beam </param>
        /// <param name="w_rMin">Minimum deck rib width (used in case deck is parallel to beam)</param>
        /// <param name="s_r">Deck rib spacing (used in case deck is parallel to beam)</param>
        /// <param name="IsSingleSideReinforcement"> Indicates if reinforcement is placed on one side of the web</param>
        /// <param name="PlateOffset">Reinforcement plate offset with respect to edge of web opening</param>
        

        public CompositeIBeamWebOpening(ISectionI Section, double SlabEffectiveWidth,
            double SlabSolidThickness, double SlabDeckThickness, double F_y, double f_cPrime, double N_studs, double Q_n, double N_o,
            double a_o, double h_o, double e, double t_r, double b_r, DeckAtBeamCondition DeckAtBeamCondition, double w_rMin, double s_r,
            bool IsSingleSideReinforcement = false, double PlateOffset=0)
            : base(Section, a_o, h_o, e, F_y, t_r, b_r,  IsSingleSideReinforcement, PlateOffset)
        {



                    if (IsSingleSideReinforcement==false)
                    {
                        A_r = t_r * b_r;
                    }
                    else
                    {
                        A_r = 2.0* t_r * b_r;
                    }
                
                this.N_o = N_o;
                this.N_studs = N_studs;
                this.Q_n = Q_n;
                SumQ_n = N_studs * Q_n;
                this.f_cPrime = f_cPrime;
                this.SlabEffectiveWidth=SlabEffectiveWidth;
                this.SlabSolidThickness=SlabSolidThickness;
                this.SlabDeckThickness = SlabDeckThickness;
                this.DeckAtBeamCondition = DeckAtBeamCondition;
                this.w_rMin = w_rMin;
                this.s_r = s_r;

                this.ValuesNeedRecalculation = true;
                this.ValuesCalculated = false;
        
        }
Example #2
0
        double Get_d_l(double P_cl, DeckAtBeamCondition DeckAtBeamCondition, double w_rMin, double s_r)
        {
            double d_l;
            double t_s;
            double b_e = SlabEffectiveWidth;

            switch (DeckAtBeamCondition)
            {
            case DeckAtBeamCondition.NoDeck:
                d_l = P_cl / (1.7 * f_cPrime * b_e);     //(3-18a)
                break;

            case DeckAtBeamCondition.Parallel:
                double b_em = b_e / s_r * w_rMin;
                d_l = P_cl / (1.7 * f_cPrime * b_em);     //(3-18a)
                break;

            case DeckAtBeamCondition.Perpendicular:

                t_s = SlabDeckThickness + SlabSolidThickness;
                d_l = t_s - SlabSolidThickness + P_cl / (1.7 * f_cPrime * b_e);     //(3-18b)
                break;

            default:
                t_s = SlabDeckThickness + SlabSolidThickness;
                d_l = t_s - SlabSolidThickness + P_cl / (1.7 * f_cPrime * b_e);     //(3-18b)
                break;
            }


            return(d_l);
        }
Example #3
0
        public double GetNominalShearStrength(DeckAtBeamCondition HeadedAnchorDeckCondition, HeadedAnchorWeldCase HeadedAnchorWeldCase,
                                              double N_saRib, double e_mid_ht, double h_r, double w_r, double d_sa, double fc_prime, double F_u, double w_c)
        {
            double R_g = GetGroupFactorR_g(HeadedAnchorDeckCondition, HeadedAnchorWeldCase, N_saRib, h_r, w_r);
            double R_p = GetPlacementFactorR_p(HeadedAnchorDeckCondition, HeadedAnchorWeldCase, e_mid_ht);

            return(GetNominalShearStrength(d_sa, R_g, R_p, fc_prime, F_u, w_c));
        }
Example #4
0
 public double GetEffectiveJoistWidth(double fc_prime, double w_c, double h_solid, double h_rib,double w_r,double s_r,
     DeckAtBeamCondition DeckAtBeamCondition,double L_j, double I_j,double S_j, double L_floor, BeamFloorLocationType  BeamLocation)
 {
     double D_e = this.Get_d_e(h_solid, h_rib, w_r, s_r);
     double n = Get_n(fc_prime, w_c);
     double D_j = GetDistributedJoistMomentOfInertia(I_j, S_j);
     double D_s = GetDistributedSlabMomentOfInertia(n, D_e);
     double B_j = GetEffectiveJoistWidth(D_s, D_j, L_j, BeamLocation, L_floor);
     return B_j;
 }
Example #5
0
        public double GetEffectiveJoistWidth(double fc_prime, double w_c, double h_solid, double h_rib, double w_r, double s_r,
                                             DeckAtBeamCondition DeckAtBeamCondition, double L_j, double I_j, double S_j, double L_floor, BeamFloorLocationType BeamLocation)
        {
            double D_e = this.Get_d_e(h_solid, h_rib, w_r, s_r);
            double n   = Get_n(fc_prime, w_c);
            double D_j = GetDistributedJoistMomentOfInertia(I_j, S_j);
            double D_s = GetDistributedSlabMomentOfInertia(n, D_e);
            double B_j = GetEffectiveJoistWidth(D_s, D_j, L_j, BeamLocation, L_floor);

            return(B_j);
        }
        public double GetPlacementFactorR_p(DeckAtBeamCondition HeadedAnchorDeckCondition, HeadedAnchorWeldCase HeadedAnchorWeldCase, double e_mid_ht)
        {
            double R_p;

            if (HeadedAnchorWeldCase == AISC.HeadedAnchorWeldCase.WeldedDirectly)
            {
                //(1a) steel headed stud anchors welded directly to the steel shape;
                R_p = 0.75;
            }
            else
            {
                if (HeadedAnchorDeckCondition == AISC.DeckAtBeamCondition.Parallel)
                {
                    //(1c) steel headed stud anchors welded through steel deck, or steel sheet
                    //used as girder filler material, and embedded in a composite slab with
                    //the deck oriented parallel to the beam
                    R_p = 0.75;
                }
                else if (HeadedAnchorDeckCondition == AISC.DeckAtBeamCondition.Perpendicular)
                {
                    if (e_mid_ht >= 2)
                    {
                        //(1b) steel headed stud anchors welded in a composite slab with the deck
                        //oriented perpendicular to the beam and emid-ht ≥ 2 in.;
                        R_p = 0.75;
                    }
                    else
                    {
                        //(3) for steel headed stud anchors welded in a composite slab with deck
                        //oriented perpendicular to the beam and emid-ht < 2 in
                        R_p = 0.6;
                    }
                }
                else //No decking
                {
                    R_p = 0.75;
                }
            }
            return(R_p);
        }
      public double GetPlacementFactorR_p(DeckAtBeamCondition HeadedAnchorDeckCondition,HeadedAnchorWeldCase HeadedAnchorWeldCase,double e_mid_ht)
        {
            double R_p;

            if (HeadedAnchorWeldCase == AISC.HeadedAnchorWeldCase.WeldedDirectly)
            {
                //(1a) steel headed stud anchors welded directly to the steel shape;
                R_p = 0.75;
            }
            else
            {
                if (HeadedAnchorDeckCondition == AISC.DeckAtBeamCondition.Parallel)
                {
                    //(1c) steel headed stud anchors welded through steel deck, or steel sheet
                    //used as girder filler material, and embedded in a composite slab with
                    //the deck oriented parallel to the beam
                    R_p = 0.75;
                }
                else if (HeadedAnchorDeckCondition == AISC.DeckAtBeamCondition.Perpendicular)
                {
                    if (e_mid_ht>=2)
                    {
                            //(1b) steel headed stud anchors welded in a composite slab with the deck
                            //oriented perpendicular to the beam and emid-ht ≥ 2 in.; 
                        R_p = 0.75;
                    }
                    else
                    {
                        //(3) for steel headed stud anchors welded in a composite slab with deck
                        //oriented perpendicular to the beam and emid-ht < 2 in
                        R_p = 0.6;
                    }
                }
                else //No decking
                {
                    R_p = 0.75;
                }
            }
            return R_p;
        }
        double Get_d_l(double P_cl, DeckAtBeamCondition DeckAtBeamCondition, double w_rMin, double s_r)
        {
            double d_l;
            double t_s;
            double b_e = SlabEffectiveWidth;

            switch (DeckAtBeamCondition)
            {
                case DeckAtBeamCondition.NoDeck:
                    d_l = P_cl / (1.7 * f_cPrime * b_e); //(3-18a)
                    break;
                case DeckAtBeamCondition.Parallel:
                    double b_em = b_e / s_r * w_rMin;
                    d_l = P_cl / (1.7 * f_cPrime * b_em); //(3-18a)
                    break;
                case DeckAtBeamCondition.Perpendicular:

                    t_s = SlabDeckThickness + SlabSolidThickness;
                    d_l = t_s - SlabSolidThickness + P_cl / (1.7 * f_cPrime * b_e); //(3-18b)
                    break;
                default:
                    t_s = SlabDeckThickness + SlabSolidThickness;
                    d_l = t_s - SlabSolidThickness + P_cl / (1.7 * f_cPrime * b_e); //(3-18b)
                    break;
            }


            return d_l;
        }
        public double GetGroupFactorR_g(DeckAtBeamCondition HeadedAnchorDeckCondition, HeadedAnchorWeldCase HeadedAnchorWeldCase, double N_saRib, double h_r, double w_r)
        {
            double R_g;

            if (HeadedAnchorWeldCase == AISC.HeadedAnchorWeldCase.WeldedDirectly)
            {
                //(1b) any number of steel headed stud anchors welded in a row directly to the steel shape
                R_g = 1.0;
            }
            else
            {
                double w_rTo_h_r = w_r / h_r;
                if (HeadedAnchorDeckCondition == AISC.DeckAtBeamCondition.Parallel)
                {
                    if (w_r / h_r >= 1.5)
                    {
                        //(1c)
                        // any number of steel headed stud anchors welded in a row through
                        // steel deck with the deck oriented parallel to the steel shape and the
                        // ratio of the average rib width to rib depth = 1.5
                        R_g = 1.0;
                    }
                    else
                    {
                        if (N_saRib == 1)
                        {
                            //(2b) one steel headed stud anchor welded through steel deck with the deck
                            //oriented parallel to the steel shape and the ratio of the average rib
                            //width to rib depth < 1.5
                            R_g = 0.85;
                        }
                        else
                        {
                            R_g = 0.7; // this value is assumed as the spec does not explcitly cover the case
                        }
                    }
                }
                else if (HeadedAnchorDeckCondition == AISC.DeckAtBeamCondition.Perpendicular)
                {
                    if (N_saRib == 1)
                    {
                        //(1a) one steel headed stud anchor welded in a steel deck rib with the deck
                        //oriented perpendicular to the steel shape;
                        R_g = 1.0;
                    }
                    else if (N_saRib == 2)
                    {
                        //(2a) two steel headed stud anchors welded in a steel deck rib with the deck
                        //oriented perpendicular to the steel shape;
                        R_g = 0.85;
                    }
                    else
                    {
                        //(3) for three or more steel headed stud anchors welded in a steel deck rib
                        //with the deck oriented perpendicular to the steel shape
                        R_g = 0.7;
                    }
                }

                else //No deck
                {
                    R_g = 1.0;
                }
            }
            return(R_g);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="Section">I-section (as shape)</param>
        /// <param name="SlabEffectiveWidth"></param>
        /// <param name="SlabSolidThickness">Concrete fill</param>
        /// <param name="SlabDeckThickness">Metal deck thickness</param>
        /// <param name="F_y">Yield stress of shape</param>
        /// <param name="f_cPrime">Concrete strength</param>
        /// <param name="N_studs">Total number of studs (between point of zero and maximum moment)</param>
        /// <param name="Q_n">Stud strength (in shear)</param>
        /// <param name="N_o">Number of connectors over opening</param>
        /// <param name="a_o">Length of opening</param>
        /// <param name="h_o">Height of opening</param>
        /// <param name="e">Eccentriciy of opening with repect to neutral axis</param>
        /// <param name="t_r">Thickness of reinforcing plate</param>
        /// <param name="b_r">Width of reinforcing plate</param>
        /// <param name="DeckAtBeamCondition">Orientation of deck over beam </param>
        /// <param name="w_rMin">Minimum deck rib width (used in case deck is parallel to beam)</param>
        /// <param name="s_r">Deck rib spacing (used in case deck is parallel to beam)</param>
        /// <param name="IsSingleSideReinforcement"> Indicates if reinforcement is placed on one side of the web</param>
        /// <param name="PlateOffset">Reinforcement plate offset with respect to edge of web opening</param>


        public CompositeIBeamWebOpening(ISectionI Section, double SlabEffectiveWidth,
                                        double SlabSolidThickness, double SlabDeckThickness, double F_y, double f_cPrime, double N_studs, double Q_n, double N_o,
                                        double a_o, double h_o, double e, double t_r, double b_r, DeckAtBeamCondition DeckAtBeamCondition, double w_rMin, double s_r,
                                        bool IsSingleSideReinforcement = false, double PlateOffset = 0, double M_u = 0, double V_u = 0)
            : base(Section, a_o, h_o, e, F_y, t_r, b_r, IsSingleSideReinforcement, PlateOffset, M_u, V_u)
        {
            if (IsSingleSideReinforcement == true)
            {
                A_r = t_r * b_r;
                double A_f_top = Section.b_fTop * Section.t_fTop;
                double A_f_bot = Section.b_fBot * Section.t_fBot;
                if (A_r > A_f_top / 3.0 || A_r > A_f_bot / 3.0)
                {
                    throw new Exception("Reinforcement area cannot exceed A_f/3");
                }
            }
            else
            {
                A_r = 2.0 * t_r * b_r;
            }

            this.N_o                 = N_o;
            this.N_studs             = N_studs;
            this.Q_n                 = Q_n;
            SumQ_n                   = N_studs * Q_n;
            this.f_cPrime            = f_cPrime;
            this.SlabEffectiveWidth  = SlabEffectiveWidth;
            this.SlabSolidThickness  = SlabSolidThickness;
            this.SlabDeckThickness   = SlabDeckThickness;
            this.DeckAtBeamCondition = DeckAtBeamCondition;
            this.w_rMin              = w_rMin;
            this.s_r                 = s_r;

            this.ValuesNeedRecalculation = true;
            this.ValuesCalculated        = false;
        }
Example #11
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="Section">I-section (as shape)</param>
        /// <param name="SlabEffectiveWidth"></param>
        /// <param name="SlabSolidThickness">Concrete fill</param>
        /// <param name="SlabDeckThickness">Metal deck thickness</param>
        /// <param name="F_y">Yield stress of shape</param>
        /// <param name="f_cPrime">Concrete strength</param>
        /// <param name="N_studs">Total number of studs (between point of zero and maximum moment)</param>
        /// <param name="Q_n">Stud strength (in shear)</param>
        /// <param name="N_o">Number of connectors over opening</param>
        /// <param name="a_o">Length of opening</param>
        /// <param name="h_o">Height of opening</param>
        /// <param name="e">Eccentriciy of opening with repect to neutral axis</param>
        /// <param name="t_r">Thickness of reinforcing plate</param>
        /// <param name="b_r">Width of reinforcing plate</param>
        /// <param name="DeckAtBeamCondition">Orientation of deck over beam </param>
        /// <param name="w_rMin">Minimum deck rib width (used in case deck is parallel to beam)</param>
        /// <param name="s_r">Deck rib spacing (used in case deck is parallel to beam)</param>
        /// <param name="IsSingleSideReinforcement"> Indicates if reinforcement is placed on one side of the web</param>
        /// <param name="PlateOffset">Reinforcement plate offset with respect to edge of web opening</param>


        public CompositeIBeamWebOpening(ISectionI Section, double SlabEffectiveWidth,
                                        double SlabSolidThickness, double SlabDeckThickness, double F_y, double f_cPrime, double N_studs, double Q_n, double N_o,
                                        double a_o, double h_o, double e, double t_r, double b_r, DeckAtBeamCondition DeckAtBeamCondition, double w_rMin, double s_r,
                                        bool IsSingleSideReinforcement = false, double PlateOffset = 0)
            : base(Section, a_o, h_o, e, F_y, t_r, b_r, IsSingleSideReinforcement, PlateOffset)
        {
            if (IsSingleSideReinforcement == false)
            {
                A_r = t_r * b_r;
            }
            else
            {
                A_r = 2.0 * t_r * b_r;
            }

            this.N_o                 = N_o;
            this.N_studs             = N_studs;
            this.Q_n                 = Q_n;
            SumQ_n                   = N_studs * Q_n;
            this.f_cPrime            = f_cPrime;
            this.SlabEffectiveWidth  = SlabEffectiveWidth;
            this.SlabSolidThickness  = SlabSolidThickness;
            this.SlabDeckThickness   = SlabDeckThickness;
            this.DeckAtBeamCondition = DeckAtBeamCondition;
            this.w_rMin              = w_rMin;
            this.s_r                 = s_r;

            this.ValuesNeedRecalculation = true;
            this.ValuesCalculated        = false;
        }
      public double GetGroupFactorR_g(DeckAtBeamCondition HeadedAnchorDeckCondition,HeadedAnchorWeldCase HeadedAnchorWeldCase, double N_saRib,double h_r,double w_r)
        {
            double R_g;

            if (HeadedAnchorWeldCase == AISC.HeadedAnchorWeldCase.WeldedDirectly)
            {
                //(1b) any number of steel headed stud anchors welded in a row directly to the steel shape
                R_g = 1.0;
            }
            else
            {
                double w_rTo_h_r = w_r / h_r;
                if (HeadedAnchorDeckCondition == AISC.DeckAtBeamCondition.Parallel)
                {
                    if (w_r / h_r>=1.5)
                    {
                        //(1c)
                        // any number of steel headed stud anchors welded in a row through
                        // steel deck with the deck oriented parallel to the steel shape and the
                        // ratio of the average rib width to rib depth ≥ 1.5
                        R_g = 1.0;
                    }
                    else
                    {
                        if (N_saRib == 1)
                        {
                            //(2b) one steel headed stud anchor welded through steel deck with the deck
                            //oriented parallel to the steel shape and the ratio of the average rib
                            //width to rib depth < 1.5
                            R_g = 0.85;
                        }
                        else
                        {
                            R_g = 0.7; // this value is assumed as the spec does not explcitly cover the case
                        }
                    }
                }
                else if (HeadedAnchorDeckCondition == AISC.DeckAtBeamCondition.Perpendicular)
	            {
                    if (N_saRib ==1)
                    {
                        //(1a) one steel headed stud anchor welded in a steel deck rib with the deck
                        //oriented perpendicular to the steel shape;
                        R_g = 1.0;
                    }
                    else if (N_saRib ==2)
                    {
                        //(2a) two steel headed stud anchors welded in a steel deck rib with the deck
                        //oriented perpendicular to the steel shape;
                        R_g = 0.85;
                    }
                    else
                    {
                        //(3) for three or more steel headed stud anchors welded in a steel deck rib
                        //with the deck oriented perpendicular to the steel shape
                        R_g = 0.7;
                    }
	            }

                else //No deck
                {
                    R_g = 1.0;
                }
            }
            return R_g;
        }
 public double GetNominalShearStrength(DeckAtBeamCondition HeadedAnchorDeckCondition,HeadedAnchorWeldCase HeadedAnchorWeldCase, 
     double N_saRib,double e_mid_ht,double h_r,double w_r,double d_sa, double fc_prime, double F_u, double w_c)
 {
     double R_g = GetGroupFactorR_g(HeadedAnchorDeckCondition, HeadedAnchorWeldCase, N_saRib, h_r, w_r);
     double R_p = GetPlacementFactorR_p(HeadedAnchorDeckCondition, HeadedAnchorWeldCase,e_mid_ht);
     return GetNominalShearStrength(d_sa, R_g, R_p, fc_prime, F_u,w_c);
 }