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); }
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); }
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); }
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); }
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); }
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); }
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); }