Verifying our structural analysis calculation is important, but it’s time-consuming. That is why if you can automate the process of structural analysis through coding, then, auditing your manual structural calculation results accuracy will be much easier. Hence, I decided to write a Python program to help me analyze a 2d frame structure. Learning how to program as an engineer or a student in engineering will help you build structural analyses and finite element tools that might become a startup company like Viktor. Viktor is a development platform with a value proposition of helping civil engineering companies develop their in-house engineering analyses and design tools with nothing but Python programming language. We are going to be using a Python library called . is a Python implementation of the 2D finite element method for structures. It allows you to do a structural analysis of frames and trusses. It helps you to compute the forces and displacements in the structural elements. anastruct anastruct https://youtu.be/jVMJdUh1ij8?t=53 Materials I use VS code as my (IDE) Python 3.10.0 which is a Python library developed by for frame and truss analyses anastruct Richie Vink The question above is from the website. structville We are going to be computing and plotting the following: Bending moment diagram Shear force diagram Axial forces diagram Step 1: Install the Library Using the Pip Command Open your VScode terminal, and type the following: pip install anastruct Step 2: Import the SystemElement Class This is the blueprint holding the behavior and properties of our structural elements from anastruct import SystemElements Step 3: Create the Structural Object From the System Class We are now going to create our structural element object(ss) by instantiating our class that we imported like this: SystemElement ss = SystemElements() Step 4: Create Structural Element With Nodal Positions Now, we are going to use the from the class. What this does is add different members into a frame connected at nodes and the argument locations to add various spans or lengths of the members. add _element method systemElement ss.add_element(location=[[0, 0], [0, 2]]) ss.add_element(location=[[0, 2], [0, 4]]) ss.add_element(location=[[0, 4], [3, 4]]) ss.add_element(location=[[3, 4], [4, 4]]) ss.add_element(location=[[4, 4], [6, 4]]) ss.add_element(location=[[6, 4], [7, 4]]) Step 5: Let’s Define Hinges From the original question, We have two internal hinges at nodes 3(B) and 5(2). So, we are adding the internal hinges using the . add_inernal_hinges method ss.add_internal_hinge(node_id=3) ss.add_internal_hinge(node_id=5) Step 6: Define Support Conditions The frame structure has 3 supports. At node1 is fixed, node4 is roller support, and node6 is roller. ss.add_support_fixed(node_id=1) ss.add_support_roll(node_id=4) ss.add_support_roll(node_id=6) Step 7: Add External Forces(load) to the Structure We add horizontal point load at node2 using the passing the node location, and the magnitude of the load as an argument. Also, for the other point load. point_load method For the uniformly distributed using is used, and passing the element_id the load is acting on with the magnitude of the load q. The — sign in the load magnitude q signifies the load is acting downward. q_load method ss.point_load(node_id=2,Fx=+5) ss.q_load(q=-2,element_id=3) ss.q_load(q=-2,element_id=4) ss.point_load(node_id=7,Fy=-10) Step 8: Analyze the Response of the Structure and Show the Reaction Forces We use the to compute the reaction forces, bending stresses, shear forces, and axial forces of the frame. solve method We use the method to plot the frame with the reaction forces at the supports: show_reaction_force ss.solve() ss.show_reaction_force() Step 9: Plot the Bending Moment Diagram We use the to plot the bending moment diagram of the frame. show bending moment method ss.show_bending_moment() . Step 10: Plot Shear Force Diagram To plot the shear force diagram, we use the . The Python plotting is on the left, and the diagram from the manual solution is on the right. show shearforce method ss.show_shear_force() Step 11: Plot Axial Force ss.show_axial_force() Conclusion Many civil engineering firms are using Python to create custom tools that solve complex problems. It will be cool as a student in civil engineering to learn how to program in Python while solving your domain problems. Also published here