!pip install PyniteFEA[all]
# Import `FEModel3D` from `Pynite`
from Pynite import FEModel3D
# Create a new finite element model
model = FEModel3D()
# Add nodes (meter)
n1=model.add_node('N1', 0, 0, 0)
n2=model.add_node('N2', 0, 0, 2)
n3=model.add_node('N3', 2, 0, 2)
n4=model.add_node('N4', 2, 0, 0)
n5=model.add_node('N5', 0, 2, 0)
n6=model.add_node('N6', 0, 2, 2)
n7=model.add_node('N7', 2, 2, 2)
n8=model.add_node('N8', 2, 2, 0)
# Define a material
E = 30000000 # Modulus of elasticity (MPa)
G = 11200000 # Shear modulus of elasticity (MPa)
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 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')
model.add_member('M4', 'N5', 'N6', 'Concrete', 'MySection')
model.add_member('M5', 'N6', 'N7', 'Concrete', 'MySection')
model.add_member('M6', 'N7', 'N8', 'Concrete', 'MySection')
model.add_member('M7', 'N2', 'N6', 'Concrete', 'MySection')
model.add_member('M8', 'N3', 'N7', 'Concrete', 'MySection')
p1 = model.add_plate('P1', n2, n3, n7, n6, t=0.5, material_name='Concrete', kx_mod=1.0, ky_mod=1.0)
# 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)
model.def_support('N5', True, True, True, True, True, True)
model.def_support('N8', True, True, True, True, True, True)
model.add_plate_surface_pressure('P1', pressure=-10, case='S')
model.add_load_combo('S', {'S': 1.0})
# Analyze the beam
model.analyze()
model.members['M1'].plot_moment('My',combo_name='S')
model.members['M3'].plot_moment('My',combo_name='S')
model.members['M4'].plot_moment('My',combo_name='S')
model.members['M6'].plot_moment('My',combo_name='S')
mx, my, mxy = model.plates['P1'].moment(x=1.0, y=1.0, local=True, combo_name='S').flatten()
print(mx,my)