To design the columns, we need a data base and a selection procedure. Process the lines that set up the data base and the code lines that set up the procedure.
1. Set up data base
from AISC design Table 3.1-4(A)
First a label for use in output:
STRUT = {"310UC 158","310UC 137","310UC 118","310UC 96.8"}
STRUT = {STRUT, "250UC 89.5", "250UC 72.9", "200UC 59.5"}
STRUT = {STRUT, "200UC 52.2", "200UC 46.2", "150UC 37.2"}
STRUT = {STRUT, "150UC 30.0", "150UC 23.4", "100UC 14.8"}
Then some properties (variable names are self-explanatory):
W_KGPM = {158, 137, 118, 96.8, 89.5, 72.9, 59.5, 52.2}
W_KGPM = {W_KGPM, 46.2, 37.2, 30, 23.4, 14.8}
A_MM2 = {20100, 17500, 15000, 12400, 11400, 9320, 7620}
A_MM2 = {A_MM2, 6660, 5900, 4730, 3860, 2980, 1890}
RX_MM = {139, 137, 136, 134, 112, 111, 89.7, 89.1, 88.2}
RX_MM = {RX_MM, 68.4, 67.5, 65.1, 41.1}
RY_MM = {78.9, 78.2, 77.5, 76.7, 65.2, 64.5, 51.7, 51.5}
RY_MM = {RY_MM, 51, 38.5, 38.1, 36.6, 24.5}
TANA[1:13] = 0.0 := 0.
from AISC design Table 3.1-4(B)
FY_MPA[1:5] = 280 := 280
FY_MPA[6:10] = 300 := 300
FY_MPA[11:13] = 320 := 320
KF[1:13] = 1.0 := 1.
from AISC design Table 8.1-6
PHIMX_KNM = {676, 580, 494, 422, 309, 266, 177, 154}
PHIMX_KNM = {PHIMX_KNM, 133, 83.6, 71.9, 50.7, 21.4}
PHIMY_KNM = {305, 261, 222, 187, 143, 123, 80.6, 70.3}
PHIMY_KNM = {PHIMY_KNM, 60.3, 36.9, 31.7, 21.2, 9.91}
from AISC design Table 6.1
ALPHA_B[1:13] = 0.0 := 0.
Sort data in ascending order of W_KGPM
STRUT = statsort(W_KGPM, STRUT)
PHIMX_KNM = statsort(W_KGPM, PHIMX_KNM)
PHIMY_KNM = statsort(W_KGPM, PHIMY_KNM)
A_MM2 = statsort(W_KGPM, A_MM2)
RX_MM = statsort(W_KGPM, RX_MM)
RY_MM = statsort(W_KGPM, RY_MM)
TANA = statsort(W_KGPM, TANA)
FY_MPA = statsort(W_KGPM, FY_MPA)
KF = statsort(W_KGPM, KF)
ALPHA_B = statsort(W_KGPM, ALPHA_B)
W_KGPM = statsort(W_KGPM)
2. Procedure for column design
This is called when P and LE are given. Process the whole block from PROC SelCol to END PROC. The procedure stays active for the duration of the project. It must be reprocessed if you wish to use it when you reload the project.
PROC SelCol
LAMBDA_N = (LE/RY_MM)*sqrt(KF)*sqrt(FY_MPA/250)
ALPHA_A = 2100*(LAMBDA_N-13.5)/(LAMBDA_N^2 - 15.3*LAMBDA_N + 2050)
LAMBDA = LAMBDA_N + ALPHA_A*ALPHA_B
ETA = max(0, 0.00326*(LAMBDA-13.5))
XI = ((LAMBDA/90)^2 + 1 + ETA)/(2*(LAMBDA/90)^2)
ALPHA_C = XI*(1 - sqrt(1 - (90/(XI*LAMBDA))^2))
NS = KF*A_MM2*FY_MPA
PHINC = min(PHI*ALPHA_C*NS, PHI*NS)/1000
for J = 1 to Endvalid(PHINc)+1
if J > Endvalid(PHINc) then
print
print sprint("No suitable column for P(-1) at P(0)", P, LE)
elseif PHINc[J] >= P then
print sprint("for P(-1) kN use &: P(-1) at P(0)", P, STRUT[J], PHINc[J], LE)
exit for
end if
next J
END PROC
3. Loads and sizes
**** PHI = .9
**** from B8, P = DLR[8,1]+LLR[8,1]+PLRR[8,1] := 115.1491
**** plus B9, P = P + DLR[9,1]+LLR[9,1]+PLRL[9,1] := 273.7722
**** plus B14, P = P + DLR[14,1]+LLR[14,1]+PLRL[14,1] := 694.5051
**** plus B18, P = P + DLR[18,1]+LLR[18,1] := 792.3763
**** Effective length in mm, LE = 2900
SelCol
Output by SelCol:
for 792.4 kN use 150UC 37.2: 846.8 at 2900
**** load in kN, P = P + V := 1557.2835
**** effective length in mm, LE = 2100
SelCol
Output by SelCol:
for 1557.3 kN use 200UC 52.2: 1591.4 at 2100
**** during erection, P = 2.5*13.9*12.5/4 := 108.5938
**** effective length in mm, LE = 10000
SelCol
Output by SelCol:
for 108.6 kN use 200UC 46.2: 191.4 at 10000
How do you process this little code? In any word processor, using MATHSERV
(see
or, slightly modified, using any BASIC interpreter.
Let me know if this helps? Helmut
engcomp@pbq.com.au