Warehouse
Problem Description
Perform a linear static analysis to obtain the results that self-weight and snow load cause on the warehouse below.
Material: ASTM A529 Grade 42
The structure is composed of different profiles (which are described later) for columns, belts, diagonals and beams. Plates will be modelled with shells.
Constant thickness of 0.5 inches for all steel plates.
Apply a wind load (global +X) to columns (1000 lbf/in) and snow load over steel plates (0.1 psi).
Constrain all translations and rotations at base of columns.
Define two load cases to analyze the structure due to effect of gravity, snow load and wind load according to following combinations:
1.20 x Self Weight + 1.20 x Snow Load
1.35 x Self Weight + 0.55 x Wind Load
Table summary of X, Y, Z point coordinates:
Note that a new coordinate system CS1 is created. Coordinates of points P01 to P22 are oriented according to global Cartesian System. Coordinates of points P23 to P27 are oriented according to CS1.
Suggested Steps:
Create a new model.
Set units.
Create the geometry points.
Create the geometry lines.
Create the geometry surfaces.
Create the material.
Cross sections.
Create the structural elements.
Create the mesh.
Apply loads.
Create the boundary conditions.
Create all load cases.
Analyze the model.
Post process results.
Python Code
# New 3D Structural Anslysis
newDocument("Dim3D","Static","Structural")
# Save model
saveDocumentAs(r"C:\CivilFEM\EM_EX06.cf")
# Set units System
ConfigUnits.System = "BInch"
#Def. Points
pnt("P1",[0,0,120])
pnt("P2",[120,0,120])
pnt("P3",[120,240,120])
pnt("P4",[0,240,120])
pnt("P5",[240,0,120])
pnt("P6",[240,240,120])
pnt("P7",[360,0,120])
pnt("P8",[360,240,120])
pnt("P9",[480,120,120])
pnt("P10",[480,240,120])
pnt("P11",[120,480,120])
pnt("P12",[0,480,120])
pnt("P13",[240,480,120])
pnt("P14",[360,480,120])
pnt("P15",[480,480,120])
pnt("P16",[0,240,0])
pnt("P17",[0,480,0])
pnt("P18",[360,0,0])
pnt("P19",[480,120,0])
pnt("P20",[480,240,0])
pnt("P21",[480,480,0])
pnt("P22",[0,0,0])
#Coord. change
createCartesianCoordSys("Cartesian",[360,0,120],[480,480,0],[0,0,1],True)
pnt("P23",[170,-120,0])
pnt("P24",[0,-120,0])
pnt("P25",[170,-120,-120])
pnt("P26",[0,-120,-120])
pnt("P27",[85,-60,45])
# Def. Columns
COL = []
for i in range(9):
COL.append("COLUMN" + str(i+1))
line(COL[0],"P1","P22")
line(COL[1],"P4","P16")
line(COL[2],"P12","P17")
line(COL[3],"P7","P18")
line(COL[4],"P24","P26")
line(COL[5],"P23","P25")
line(COL[6],"P19","P9")
line(COL[7],"P10","P20")
line(COL[8],"P15","P21")
# Def. Beams
BM = []
for i in range(14):
BM.append("BEAM" + str(i+1))
b1 = line(BM[0],"P1","P4")
b2 = line(BM[1],"P4","P12")
b11 = line(BM[2],"P2","P3")
b12 = line(BM[3],"P3","P11")
b21 = line(BM[4],"P5","P6")
b22 = line(BM[5],"P6","P13")
b31 = line(BM[6],"P7","P8")
b32 = line(BM[7],"P8","P14")
b41 = line(BM[8],"P9","P10")
b42 = line(BM[9],"P10","P15")
b51 = line(BM[10],"P7","P24")
b52 = line(BM[11],"P24","P23")
b53 = line(BM[12],"P23","P9")
b54 = line(BM[13],"P9","P7")
# Def. Belts
BT = []
for i in range(11):
BT.append("BELT" + str(i+1))
bt1 = line(BT[0],"P1","P2")
bt2 = line(BT[1],"P2","P5")
bt3 = line(BT[2],"P5","P7")
bt11 = line(BT[3],"P4","P3")
bt12 = line(BT[4],"P3","P6")
bt13 = line(BT[5],"P6","P8")
bt14 = line(BT[6],"P8","P10")
bt21 = line(BT[7],"P12","P11")
bt22 = line(BT[8],"P11","P13")
bt23 = line(BT[9],"P13","P14")
bt24 = line(BT[10],"P14","P15")
# Def. Diag.
DIAG = []
for i in range(4):
DIAG.append("DIAG" + str(i+1))
d1 = line(DIAG[0],"P7","P27")
d2 = line(DIAG[1],"P24","P27")
d3 = line(DIAG[2],"P23","P27")
d4 = line(DIAG[3],"P9","P27")
# Def. Polyline surface
PT = []
for i in range(12):
PT.append("PLATE" + str(i+1))
fillFace(PT[0],[bt1,b1,bt11,b11])
fillFace(PT[1],[bt2,b21,bt12,b11])
fillFace(PT[2],[bt3,b21,bt13,b31])
fillFace(PT[3],[b54,b41,bt14,b31])
fillFace(PT[4],[bt21,b2,bt11,b12])
fillFace(PT[5],[bt22,b22,bt12,b12])
fillFace(PT[6],[bt23,b22,bt13,b32])
fillFace(PT[7],[bt24,b42,bt14,b32])
fillFace(PT[8],[d1,b54,d4])
fillFace(PT[9],[d3,b53,d4])
fillFace(PT[10],[d3,b52,d2])
fillFace(PT[11],[d1,b51,d2])
# Def. Structure
createSteelMat("A529 grade 42","ASTM","ASTMA529Gr42")
Ht1=12.12
Wth1=12.0
WT1=0.39
FT1=0.605
WdT1=1e-05
createSteelDimISection("Steel I COL","A529 grade 42",Ht1,Wth1,WT1,FT1,WdT1)
Ht2=16.97
Wth2=10.425
WT2=0.585
FT2=0.985
WdT2=1e-05
createSteelDimISection("Steel I BELT","A529 grade 42",Ht2,Wth2,WT2,FT2,WdT2)
Ht3=8.06
Wth3=6.535
WT3=0.285
FT3=0.465
WdT3=1e-05
createSteelDimISection("Steel I BEAM","A529 grade 42",Ht3,Wth3,WT3,FT3,WdT3)
HtB=6.0
WthB=6.0
WTB=0.25
FTB=0.25
WdTB=0.25
createSteelDimBoxSection("Steel Box Diagonal","A529 grade 42",HtB, WthB,WTB,FTB,WdTB)
# Structural Elements
for i in range(12):
createSEShell(PT[i],"A529 grade 42",Double(0.5, "Inch"),PT[i])
StructuralElementsContainer.Find(PLATE[i]).MeshTool2D.OptionMeshType = "LengthEdges"
SE1 = StructuralElementsContainer.Find(PT[i]).MeshTool2D.ParameterMesh
SE1.EType = "QUAD"
SE1.SizeEdges = Double(35,"Inch")
SE1.Tol = Double(0.01,"Inch")
for i in range(9):
createSEBeam(COL[i],"Steel I COL","Steel I COL",COL[i])
StructuralElementsContainer.Find(COL[i]).MeshTool1D.ParameterMesh.NumberOfSegments = 3
for i in range(14):
createSEBeam(BM[i],"Steel I BEAM","Steel I BEAM",BM[i])
SE3 = StructuralElementsContainer.Find(BM[i]).MeshTool1D
SE3.OptionMeshType = "MaxLength"
SE3.ParameterMesh.Length = Double(35, "Inch")
for i in range(11):
createSEBeam(BT[i],"Steel I BELT","Steel I BELT",BT[i])
SE4 = StructuralElementsContainer.Find(BT[i]).MeshTool1D
SE4.OptionMeshType = "MaxLength"
SE4.ParameterMesh.Length = Double(35, "Inch")
for i in range(4):
createSEBeam(DIAG[i],"Steel Box Diagonal","Steel Box Diagonal",DIAG[i])
SE5 = StructuralElementsContainer.Find(DIAG[i]).MeshTool1D
SE5.OptionMeshType = "MaxLength"
SE5.ParameterMesh.Length = Double(35, "Inch")
# Mesh
mesh()
# Load Groups
lg1 = createLoadGroup("Snow Load")
Load_on = []
for i in range(12):
Load_on.append("Load_on" + str(i+1))
for i in range(12):
addSurfaceLoad([lg1],Load_on[i],PT[i],[0,0,-1],Double(0.1, "Psi"))
lg2 = createLoadGroup("Wind load+X")
addCurveLoad([lg2],"Load 1","COLUMN1",[1,0,0],Double(1000, "Pli"))
addCurveLoad([lg2],"Load 2","COLUMN2",[1,0,0],Double(1000, "Pli"))
addCurveLoad([lg2],"Load 3","COLUMN3",[1,0,0],Double(1000, "Pli"))
# Boundary Conditions
bc = createBCGroup("Fixed")
BC = ["BC 1","BC 2","BC 3","BC 4","BC 5","BC 6","BC 7","BC 8","BC 9"]
for i in range(9):
addPointBC([bc],BC[i],COL[i],[0,0,0],True,True,True,True,True,True)
# Load Cases
lc1 = createLoadCase("Comb1")
addLoadGroupToLoadCase([lc1],lg1,1.2)
addLoadGroupToLoadCase([lc1],"Gravity",1.2)
addBCGroupToLoadCase([lc1],bc)
lc2 = createLoadCase("Comb2")
addLoadGroupToLoadCase([lc2],lg2,0.55)
addLoadGroupToLoadCase([lc2],"Gravity",1.35)
addBCGroupToLoadCase([lc2],bc)
# Solve
solve()
openResultsFile("Comb1.rcf")
makeZoom("Fit")
# x-component of stress
setResult("ElementResults","Sx")
setResultsViewStyle("Deformed")
plotResults()
# Z-component of displacement
setResult("NodeResults","UTz")
plotResults()
for i in range (12):
SE = StructuralElementsContainer.Find(PT[i])
changeViewStyle([SE],"Hide")
# Bending moment about the local Z-axis
setResult("EndResults","SM2","Beam","Klxi")
setResultsViewStyle("Deformed")
setResultsViewStyle("Line")
plotResults()
# Axial Force
setResult("EndResults","SF1","Beam","Kip")
plotResults()