# Warehouse ## Problem Description Perform a linear static analysis to obtain the results that self-weight and snow load cause on the warehouse below. ```{image} img/Warehouse/Warehouse.png --- align: center --- ``` - 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: ```{image} img/Warehouse/TableSummary.png --- align: center --- ``` 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. ```{image} img/Warehouse/Geometry.png --- align: center --- ``` Suggested Steps: 1. Create a new model. 2. Set units. 3. Create the geometry points. 4. Create the geometry lines. 5. Create the geometry surfaces. 6. Create the material. 7. Cross sections. 8. Create the structural elements. 9. Create the mesh. 10. Apply loads. 11. Create the boundary conditions. 12. Create all load cases. 13. Analyze the model. 14. Post process results. ## Python Code ```{code-block} # 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() ``` ```{image} img/Warehouse/WarehouseResults.png --- align: center --- ``` ```{code-block} # Z-component of displacement setResult("NodeResults","UTz") plotResults() ``` ```{image} img/Warehouse/WarehouseResults2.png --- align: center --- ``` ```{code-block} 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() ``` ```{image} img/Warehouse/WarehouseResults3.png --- align: center --- ``` ```{code-block} # Axial Force setResult("EndResults","SF1","Beam","Kip") plotResults() ``` ```{image} img/Warehouse/WarehouseResults4.png --- align: center --- ```