!pip install PyniteFEA[all]
# Import `FEModel3D` from `Pynite`
from Pynite import FEModel3D
# Create a new finite element model
model = FEModel3D()
# Add nodes (meter)
model.add_node('N1', 0, 0, 0)
model.add_node('N2', 0, 0, 2)
model.add_node('N3', 2, 0, 2)
model.add_node('N4', 2, 0, 0)
# Define a material
E = 30000000 # Modulus of elasticity (MPa->kN/m2)
G = 11200000 # Shear modulus of elasticity (MPa->kN/m2)
nu = 0.3 # Poisson's ratio
rho = 2500 # Density (kci)
model.add_material('Concrete', E, G, nu, rho)
# Add a section with the following properties:
# A = 0.09 m^2, Iy = 0.05 m^4, Iz = 0.75 m^4, J = 1 m^4
model.add_section('MySection', 0.09, 0.000675, 0.000675, 0.000975) # add_section(name: str, A: float, Iy: float, Iz: float, J: float)
#Add a member
model.add_member('M1', 'N1', 'N2', 'Concrete', 'MySection')
model.add_member('M2', 'N2', 'N3', 'Concrete', 'MySection')
model.add_member('M3', 'N3', 'N4', 'Concrete', 'MySection')
# DX, DY, DZ, RX, RY, RZ
# Provide simple supports
model.def_support('N1', True, True, True, True, True, True)
model.def_support('N4', True, True, True, True, True, True)
# add_member_pt_load(member_name: str, direction: str, P: float, x: float, case: str = 'Case 1')
model.add_member_pt_load('M2', 'Fz', P=-50.0, x=1)
# Analyze the beam
model.analyze()
# Print the shear, moment, and deflection diagrams
model.members['M1'].plot_shear('Fz')
model.members['M2'].plot_shear('Fz')
model.members['M3'].plot_shear('Fz')
model.members['M1'].plot_moment('My')
model.members['M2'].plot_moment('My')
model.members['M3'].plot_moment('My')
print(model.members['M1'].max_axial())
print(model.members['M2'].max_axial())
print(model.members['M3'].max_axial())
print(model.members['M2'].max_shear('Fz'))
print(model.members['M2'].max_moment('My'))
print(model.members['M2'].min_moment('My'))
# Print reactions at each end of the beam
print(f"Left Support Reaction: { {k: float(v) for k, v in model.nodes['N1'].RxnFZ.items()} }")
print(f"Right Support Reaction: { {k: float(v) for k, v in model.nodes['N4'].RxnFZ.items()} }")
print(f"Left Support Reaction: { {k: float(v) for k, v in model.nodes['N1'].RxnFX.items()} }")
print(f"Right Support Reaction: { {k: float(v) for k, v in model.nodes['N4'].RxnFX.items()} }")
print(f"Left Support Reaction: { {k: float(v) for k, v in model.nodes['N1'].RxnMY.items()} }")
print(f"Right Support Reaction: { {k: float(v) for k, v in model.nodes['N4'].RxnMY.items()} }")