Note
Go to the end to download the full example code.
Hyperelas1#
A cantilever beam undergoing bending deformation.


===== hyperelastic problem at iteration 0 =====
At Newton iteration 1 norm is 2.871866871895e+02
At Newton iteration 2 norm is 5.537584333485e+03
At Newton iteration 3 norm is 4.394345968698e-01
At Newton iteration 4 norm is 1.689344927087e-08
12 from EasyFEA import Display, ElemType, Models, Simulations, PyVista
13 from EasyFEA.Geoms import Domain
14
15 if __name__ == "__main__":
16 Display.Clear()
17
18 # ----------------------------------------------
19 # Configuration
20 # ----------------------------------------------
21
22 # geom
23 L = 120
24 h = 13
25
26 # model
27 lmbda = 121153.84615384616 # Mpa
28 mu = 80769.23076923077
29 rho = 7850 * 1e-9 # kg/mm3
30
31 # ----------------------------------------------
32 # Mesh
33 # ----------------------------------------------
34 meshSize = h / 2
35
36 contour = Domain((0, 0), (L, h), h / 3)
37
38 mesh = contour.Mesh_Extrude(
39 [], [0, 0, h], [h / meshSize], ElemType.HEXA20, isOrganised=True
40 )
41 nodesX0 = mesh.Nodes_Conditions(lambda x, y, z: x == 0)
42 nodesXL = mesh.Nodes_Conditions(lambda x, y, z: x == L)
43
44 # ----------------------------------------------
45 # Simulation
46 # ----------------------------------------------
47
48 mat = Models.SaintVenantKirchhoff(3, lmbda, mu)
49
50 simu = Simulations.HyperElasticSimu(mesh, mat)
51
52 simu.add_dirichlet(nodesX0, [0, 0, 0], simu.Get_unknowns())
53 simu.add_volumeLoad(mesh.nodes, [-rho * 9.81], ["y"])
54 simu.add_surfLoad(nodesXL, [-800 / h / h], ["y"])
55
56 simu.Solve()
57
58 # ----------------------------------------------
59 # Results
60 # ----------------------------------------------
61
62 PyVista.Plot_BoundaryConditions(simu).show()
63 PyVista.Plot(simu, "uy", 1, plotMesh=True).show()
Total running time of the script: (0 minutes 2.790 seconds)