Esempio n. 1
0
        public static double PlastForceBot(double Fy, double fc, double fs, double bft, double tft, double D, double tw, double bfb, double tfb, double bslab, double tslab, double n, double Asteel1, double Asteel2, double distSteel1, double distSteel2, double haunchDepth, double haunchWidth)
        {
            Atf     = CompProperties.PartArea(bft, tft, 1);
            Aweb    = CompProperties.PartArea(D, tw, 1);
            Abf     = CompProperties.PartArea(bfb, tfb, 1);
            Ahaunch = CompProperties.PartArea(haunchWidth, haunchDepth, 0.85);
            Aslab   = CompProperties.PartArea(tslab, bslab, 0.85);
            // dist to PNA from top of slab if located in slab
            double a1 = ((Atf + Aweb + Abf) * Fy - (Asteel1 + Asteel2) * fs) / (bslab * 0.85 * fc);
            // dist to PNA from top of haunch if located in haunch
            double a2 = ((Atf + Aweb + Abf) * Fy - (Asteel1 + Asteel2) * fs - Aslab * fc) / (haunchWidth * 0.85 * fc);
            // dist to PNA from top of top flange if located in top flange
            double a3 = ((Atf + Aweb + Abf) * Fy - (Asteel1 + Asteel2) * fs - (Aslab + Ahaunch) * fc) / (2 * bft * Fy);
            // dist to PNA from top of web if located in web
            double a4 = ((Aweb + Abf - Atf) * Fy - (Asteel1 + Asteel2) * fs - (Aslab + Ahaunch) * fc) / (2 * tw * Fy);

            PNA = CompProperties.PlastNeutralAxis(Fy, fc, fs, bft, tft, D, tw, bfb, tfb, bslab, tslab, n, Asteel1, Asteel2, distSteel1, distSteel2, haunchDepth, haunchWidth);

            if (PNA > tfb + D + tft)
            {
                PFb = (Abf + Aweb + Atf) * Fy;
            }
            else if (PNA > tfb + D)
            {
                PFb = (Abf + Aweb + (tft - a3) * bft) * Fy;
            }
            else
            {
                PFb = (Abf + tw * (D - a4)) * Fy;
            }
            return(PFb);
        }
Esempio n. 2
0
        public static double PlastNeutralAxis(double Fy, double fc, double fs, double bft, double tft, double D, double tw, double bfb, double tfb, double bslab, double tslab, double n, double Asteel1, double Asteel2, double distSteel1, double distSteel2, double haunchDepth, double haunchWidth)
        {
            Atf     = CompProperties.PartArea(bft, tft, 1);
            Aweb    = CompProperties.PartArea(D, tw, 1);
            Abf     = CompProperties.PartArea(bfb, tfb, 1);
            Ahaunch = CompProperties.PartArea(haunchWidth, haunchDepth, 0.85);
            Aslab   = CompProperties.PartArea(tslab, bslab, 0.85);
            // dist to PNA from top of slab if located in slab
            double a1 = ((Atf + Aweb + Abf) * Fy - (Asteel1 + Asteel2) * fs) / (bslab * 0.85 * fc);
            // dist to PNA from top of haunch if located in haunch
            double a2 = ((Atf + Aweb + Abf) * Fy - (Asteel1 + Asteel2) * fs - Aslab * fc) / (haunchWidth * 0.85 * fc);
            // dist to PNA from top of top flange if located in top flange
            double a3 = ((Atf + Aweb + Abf) * Fy - (Asteel1 + Asteel2) * fs - (Aslab + Ahaunch) * fc) / (2 * bft * Fy);
            // dist to PNA from top of web if located in web
            double a4 = ((Aweb + Abf - Atf) * Fy - (Asteel1 + Asteel2) * fs - (Aslab + Ahaunch) * fc) / (2 * tw * Fy);

            if (Aslab * fc + (Asteel1 + Asteel2) * fs > Ahaunch * fc + (Atf + Aweb + Abf) * Fy)
            {
                PNA = tfb + D + tft + haunchDepth + tslab - a1;
            }
            else if ((Aslab + Ahaunch) * fc + (Asteel1 + Asteel2) * fs > (Atf + Aweb + Abf) * Fy)
            {
                PNA = tfb + D + tft + haunchDepth - a2;
            }
            else if ((Aslab + Ahaunch) * fc + (Asteel1 + Asteel2) * fs + Atf * Fy > (Aweb + Abf) * Fy)
            {
                PNA = tfb + D + tft - a3;
            }
            else
            {
                PNA = tfb + D - a4;
            }
            return(PNA);
        }
Esempio n. 3
0
 public static double BeamArea(double bft, double tft, double D, double tw, double bfb, double tfb, double bslab, double tslab, double n, double Asteel1, double Asteel2, double haunchDepth, double haunchWidth)
 {
     Atf     = CompProperties.PartArea(bft, tft, 1);
     Aweb    = CompProperties.PartArea(D, tw, 1);
     Abf     = CompProperties.PartArea(bfb, tfb, 1);
     Aslab   = CompProperties.PartArea(bslab, tslab, 1 / n);
     Ahaunch = CompProperties.PartArea(haunchDepth, haunchWidth, 1 / n);
     area    = Atf + Aweb + Abf + Aslab + Ahaunch + Asteel1 + Asteel2;
     return(area);
 }
Esempio n. 4
0
 public static double NeutralAxis(double bft, double tft, double D, double tw, double bfb, double tfb, double bslab, double tslab, double n, double Asteel1, double Asteel2, double distSteel1, double distSteel2, double haunchDepth, double haunchWidth)
 {
     Atf     = CompProperties.PartArea(bft, tft, 1);
     Aweb    = CompProperties.PartArea(D, tw, 1);
     Abf     = CompProperties.PartArea(bfb, tfb, 1);
     Ahaunch = CompProperties.PartArea(haunchWidth, haunchDepth, 1 / n);
     Aslab   = CompProperties.PartArea(tslab, bslab, 1 / n);
     Ytf     = CompProperties.PartCG(tfb, D, 0, 0, tft);
     Yweb    = CompProperties.PartCG(tfb, 0, 0, 0, D);
     Ybf     = CompProperties.PartCG(0, 0, 0, 0, tfb);
     Yhaunch = CompProperties.PartCG(tfb, D, tft, 0, haunchDepth);
     Yslab   = CompProperties.PartCG(tfb, D, tft, haunchDepth, tslab);
     Ysteel1 = CompProperties.SteelCG(bft, D, tft, haunchDepth, tslab, distSteel1);
     Ysteel2 = CompProperties.SteelCG(bft, D, tft, haunchDepth, tslab, distSteel2);
     NA      = (Atf * Ytf + Aweb * Yweb + Abf * Ybf + Ahaunch * Yhaunch + Aslab * Yslab + Asteel1 * Ysteel1 + Asteel2 * Ysteel2) / (Atf + Aweb + Abf + Ahaunch + Aslab + Asteel1 + Asteel2);
     return(NA);
 }
Esempio n. 5
0
 public static double MomentOfIneria(double bft, double tft, double D, double tw, double bfb, double tfb, double bslab, double tslab, double n, double Asteel1, double Asteel2, double distSteel1, double distSteel2, double haunchDepth, double haunchWidth)
 {
     Atf     = CompProperties.PartArea(bft, tft, 1);
     Aweb    = CompProperties.PartArea(D, tw, 1);
     Abf     = CompProperties.PartArea(bfb, tfb, 1);
     Ahaunch = CompProperties.PartArea(haunchWidth, haunchDepth, 1 / n);
     Aslab   = CompProperties.PartArea(tslab, bslab, 1 / n);
     Ytf     = CompProperties.PartCG(tfb, D, 0, 0, tft);
     Yweb    = CompProperties.PartCG(tfb, 0, 0, 0, D);
     Ybf     = CompProperties.PartCG(0, 0, 0, 0, tfb);
     Yhaunch = CompProperties.PartCG(tfb, D, tft, 0, haunchDepth);
     Yslab   = CompProperties.PartCG(tfb, D, tft, haunchDepth, tslab);
     Ysteel1 = CompProperties.SteelCG(bft, D, tft, haunchDepth, tslab, distSteel1);
     Ysteel2 = CompProperties.SteelCG(bft, D, tft, haunchDepth, tslab, distSteel2);
     NA      = CompProperties.NeutralAxis(bft, tft, D, tw, bfb, tfb, bslab, tslab, n, Asteel1, Asteel2, distSteel1, distSteel2, haunchDepth, haunchWidth);
     Itf     = CompProperties.PartMomOfInert(bft, tft, 1);
     Iweb    = CompProperties.PartMomOfInert(tw, D, 1);
     Ibf     = CompProperties.PartMomOfInert(bfb, tfb, 1);
     Ihaunch = CompProperties.PartMomOfInert(haunchWidth, haunchWidth, n);
     Islab   = CompProperties.PartMomOfInert(bslab, tslab, n);
     I       = Itf + Atf * Math.Pow(Ytf - NA, 2) + Iweb + Aweb * Math.Pow(Yweb - NA, 2) + Ibf + Abf * Math.Pow(Ybf - NA, 2) + Ihaunch + Ahaunch * Math.Pow(Yhaunch - NA, 2) + Islab + Aslab * Math.Pow(Yslab - NA, 2) + Asteel1 * Math.Pow(Ysteel1 - NA, 2) + Asteel2 * Math.Pow(Ysteel2 - NA, 2);
     return(I);
 }
Esempio n. 6
0
        public static double PNAtoBotCG(double Fy, double fc, double fs, double bft, double tft, double D, double tw, double bfb, double tfb, double bslab, double tslab, double n, double Asteel1, double Asteel2, double distSteel1, double distSteel2, double haunchDepth, double haunchWidth)
        {
            Atf     = CompProperties.PartArea(bft, tft, 1);
            Aweb    = CompProperties.PartArea(D, tw, 1);
            Abf     = CompProperties.PartArea(bfb, tfb, 1);
            Ahaunch = CompProperties.PartArea(haunchWidth, haunchDepth, 0.85);
            Aslab   = CompProperties.PartArea(tslab, bslab, 0.85);
            area    = CompProperties.BeamArea(bft, tft, D, tw, bfb, tfb, bslab, tslab, n, Asteel1, Asteel2, haunchDepth, haunchWidth);
            PNA     = CompProperties.PlastNeutralAxis(Fy, fc, fs, bft, tft, D, tw, bfb, tfb, bslab, tslab, n, Asteel1, Asteel2, distSteel1, distSteel2, haunchDepth, haunchWidth);
            // dist to PNA from top of slab if located in slab
            double a1 = ((Atf + Aweb + Abf) * Fy - (Asteel1 + Asteel2) * fs) / (bslab * 0.85 * fc);
            // dist to PNA from top of haunch if located in haunch
            double a2 = ((Atf + Aweb + Abf) * Fy - (Asteel1 + Asteel2) * fs - Aslab * fc) / (haunchWidth * 0.85 * fc);
            // dist to PNA from top of top flange if located in top flange
            double a3 = ((Atf + Aweb + Abf) * Fy - (Asteel1 + Asteel2) * fs - (Aslab + Ahaunch) * fc) / (2 * bft * Fy);
            // dist to PNA from top of web if located in web
            double a4 = ((Aweb + Abf - Atf) * Fy - (Asteel1 + Asteel2) * fs - (Aslab + Ahaunch) * fc) / (2 * tw * Fy);

            PNA = CompProperties.PlastNeutralAxis(Fy, fc, fs, bft, tft, D, tw, bfb, tfb, bslab, tslab, n, Asteel1, Asteel2, distSteel1, distSteel2, haunchDepth, haunchWidth);
            if (PNA > tfb + D + tft + haunchDepth)
            {
                PCGbot = (Abf * (tfb / 2 + D + tft + haunchDepth + tslab - a1) + Aweb * (D / 2 + tft + haunchDepth + tslab - a1) + Atf * (tft / 2 + haunchDepth + tslab - a1)) / (Abf + Aweb + Atf);
            }
            else if (PNA > tfb + D + tft)
            {
                PCGbot = (Abf * (tfb / 2 + D + tft + haunchDepth - a2) + Aweb * (D / 2 + tft + haunchDepth - a2) + Atf * (tft / 2 + haunchDepth - a2)) / (Abf + Aweb + Atf);
            }
            else if (PNA > tfb + D)
            {
                PCGbot = (Abf * (tfb / 2 + D + tft - a3) + Aweb * (D / 2 + tft - a3) + bft * Math.Pow(tft - a3, 2) / 2) / (Abf + Aweb + bft * (tft - a3));
            }
            else
            {
                PCGbot = (Abf * (tfb / 2 + D - a4) + tw * Math.Pow(D - a4, 2) / 2) / (Abf + tw * (D - a4));
            }
            return(PCGbot);
        }
Esempio n. 7
0
        public static double PNAtoTopCG(double Fy, double fc, double fs, double bft, double tft, double D, double tw, double bfb, double tfb, double bslab, double tslab, double n, double Asteel1, double Asteel2, double distSteel1, double distSteel2, double haunchDepth, double haunchWidth)
        {
            Atf     = CompProperties.PartArea(bft, tft, 1);
            Aweb    = CompProperties.PartArea(D, tw, 1);
            Abf     = CompProperties.PartArea(bfb, tfb, 1);
            Ahaunch = CompProperties.PartArea(haunchWidth, haunchDepth, 0.85);
            Aslab   = CompProperties.PartArea(tslab, bslab, 0.85);
            area    = CompProperties.BeamArea(bft, tft, D, tw, bfb, tfb, bslab, tslab, n, Asteel1, Asteel2, haunchDepth, haunchWidth);
            PNA     = CompProperties.PlastNeutralAxis(Fy, fc, fs, bft, tft, D, tw, bfb, tfb, bslab, tslab, n, Asteel1, Asteel2, distSteel1, distSteel2, haunchDepth, haunchWidth);
            // dist to PNA from top of slab if located in slab
            double a1 = ((Atf + Aweb + Abf) * Fy - (Asteel1 + Asteel2) * fs) / (bslab * 0.85 * fc);
            // dist to PNA from top of haunch if located in haunch
            double a2 = ((Atf + Aweb + Abf) * Fy - (Asteel1 + Asteel2) * fs - Aslab * fc) / (haunchWidth * 0.85 * fc);
            // dist to PNA from top of top flange if located in top flange
            double a3 = ((Atf + Aweb + Abf) * Fy - (Asteel1 + Asteel2) * fs - (Aslab + Ahaunch) * fc) / (2 * bft * Fy);
            // dist to PNA from top of web if located in web
            double a4 = ((Aweb + Abf - Atf) * Fy - (Asteel1 + Asteel2) * fs - (Aslab + Ahaunch) * fc) / (2 * tw * Fy);


            if (PNA > tfb + D + tft + haunchDepth)
            {
                PCGtop = a1 / 2;
            }
            else if (PNA > tfb + D + tft)
            {
                PCGtop = (Asteel1 * fs * (tslab - distSteel1 + a2) + Asteel2 * fs * (tslab - distSteel2 + a2) + Aslab * fc * (tslab / 2 + a2) + haunchWidth * fc * Math.Pow(a2, 2)) / ((Asteel1 + Asteel2) * fs + Aslab * fc + haunchWidth * fc * a2);
            }
            else if (PNA > tfb + D)
            {
                PCGtop = (Asteel1 * fs * (tslab - distSteel1 + haunchDepth + a3) + Asteel2 * fs * (tslab - distSteel2 + haunchDepth + a3) + Aslab * fc * (tslab / 2 + haunchDepth + a3) + Ahaunch * fc * (haunchDepth / 2 + a3) + bft * Fy * Math.Pow(a3, 2) / 2) / ((Asteel1 + Asteel2) * fs + Aslab * fc + Ahaunch * fc + bft * Fy * a3);
            }
            else
            {
                PCGtop = (Asteel1 * fs * (tslab - distSteel1 + haunchDepth + tft + a4) + Asteel2 * fs * (tslab - distSteel2 + haunchDepth + tft + a4) + Aslab * fc * (tslab / 2 + haunchDepth + tft + a4) + Ahaunch * fc * (haunchDepth / 2 + tft + a4) + Atf * Fy * (tft / 2 + a4) + tw * Fy * Math.Pow(a4, 2) / 2) / ((Asteel1 + Asteel2) * fs + Aslab * fc + Ahaunch * fc + Atf * Fy + tw * Fy * a4);
            }
            return(PCGtop);
        }