LinearElasticity2#

A cantilever beam undergoing bending deformation in dynamic.

Note that this simulation is also performed in examples/Dynamic/Dynamic1.py.

LinearElasticity2
LinearElasticity2
0.000 s
0.010 s
0.020 s
0.030 s
0.040 s
0.050 s
0.060 s
0.070 s
0.080 s
0.090 s
0.100 s
0.110 s
0.120 s
0.130 s
0.140 s
0.150 s
0.160 s
0.170 s
0.180 s
0.190 s
0.200 s
0.210 s
0.220 s
0.230 s
0.240 s
0.250 s
0.260 s
0.270 s
0.280 s
0.290 s
0.300 s
0.310 s
0.320 s
0.330 s
0.340 s
0.350 s
0.360 s
0.370 s
0.380 s
0.390 s
0.400 s
0.410 s
0.420 s
0.430 s
0.440 s
0.450 s
0.460 s
0.470 s
0.480 s
0.490 s
0.500 s
Generate movie 0/51
Generate movie 1/51 (1.96 %) 6.13 s
Generate movie 2/51 (3.92 %) 5.97 s
Generate movie 3/51 (5.88 %) 5.85 s
Generate movie 4/51 (7.84 %) 5.73 s
Generate movie 5/51 (9.80 %) 5.62 s
Generate movie 6/51 (11.76 %) 5.48 s
Generate movie 7/51 (13.73 %) 5.29 s
Generate movie 8/51 (15.69 %) 5.24 s
Generate movie 9/51 (17.65 %) 5.13 s
Generate movie 10/51 (19.61 %) 5.00 s
Generate movie 11/51 (21.57 %) 4.91 s
Generate movie 12/51 (23.53 %) 4.75 s
Generate movie 13/51 (25.49 %) 4.64 s
Generate movie 14/51 (27.45 %) 4.51 s
Generate movie 15/51 (29.41 %) 4.49 s
Generate movie 16/51 (31.37 %) 4.26 s
Generate movie 17/51 (33.33 %) 4.15 s
Generate movie 18/51 (35.29 %) 4.05 s
Generate movie 19/51 (37.25 %) 3.92 s
Generate movie 20/51 (39.22 %) 3.82 s
Generate movie 21/51 (41.18 %) 3.67 s
Generate movie 22/51 (43.14 %) 3.54 s
Generate movie 23/51 (45.10 %) 3.42 s
Generate movie 24/51 (47.06 %) 3.28 s
Generate movie 25/51 (49.02 %) 3.17 s
Generate movie 26/51 (50.98 %) 3.06 s
Generate movie 27/51 (52.94 %) 2.95 s
Generate movie 28/51 (54.90 %) 2.82 s
Generate movie 29/51 (56.86 %) 2.69 s
Generate movie 30/51 (58.82 %) 2.57 s
Generate movie 31/51 (60.78 %) 2.45 s
Generate movie 32/51 (62.75 %) 2.33 s
Generate movie 33/51 (64.71 %) 2.25 s
Generate movie 34/51 (66.67 %) 2.10 s
Generate movie 35/51 (68.63 %) 1.98 s
Generate movie 36/51 (70.59 %) 1.86 s
Generate movie 37/51 (72.55 %) 1.73 s
Generate movie 38/51 (74.51 %) 1.60 s
Generate movie 39/51 (76.47 %) 1.42 s
Generate movie 40/51 (78.43 %) 1.36 s
Generate movie 41/51 (80.39 %) 1.23 s
Generate movie 42/51 (82.35 %) 1.11 s
Generate movie 43/51 (84.31 %) 991.18 ms
Generate movie 44/51 (86.27 %) 871.68 ms
Generate movie 45/51 (88.24 %) 750.36 ms
Generate movie 46/51 (90.20 %) 616.90 ms
Generate movie 47/51 (92.16 %) 496.27 ms
Generate movie 48/51 (94.12 %) 370.43 ms
Generate movie 49/51 (96.08 %) 247.92 ms
Generate movie 50/51 (98.04 %) 123.68 ms
Generate movie 51/51 (100.00 %) 0.00 µs

 14 from EasyFEA import Folder, Display, ElemType, Models, Simulations, PyVista, np
 15 from EasyFEA.fem import Field, BiLinearForm, FeArray, Sym_Grad, Trace
 16 from EasyFEA.Geoms import Domain
 17
 18 if __name__ == "__main__":
 19     Display.Clear()
 20
 21     # ----------------------------------------------
 22     # Configuration
 23     # ----------------------------------------------
 24
 25     dim = 3
 26
 27     # outputs
 28     makeMovie = True
 29     folder = Folder.Join(Folder.RESULTS_DIR, "WeakForms", "LinearElasticity2")
 30
 31     # geom
 32     L = 120  # mm
 33     h = 13
 34
 35     # model
 36     elastic = Models.ElasIsot(dim, 210000, 0.3, planeStress=True, thickness=h)
 37     lmbda = elastic.get_lambda()
 38     mu = elastic.get_mu()
 39     rho = 8100 * 1e-9
 40
 41     # load
 42     Tmax = 0.5
 43     N = 50
 44     dt = Tmax / N
 45     time = -dt
 46
 47     # ----------------------------------------------
 48     # Mesh
 49     # ----------------------------------------------
 50
 51     contour = Domain((0, 0), (L, h), h / 3)
 52
 53     if dim == 2:
 54         mesh = contour.Mesh_2D([], ElemType.QUAD4, isOrganised=True)
 55     else:
 56         mesh = contour.Mesh_Extrude(
 57             [], [0, 0, h], [3], ElemType.HEXA8, isOrganised=True
 58         )
 59
 60     nodesX0 = mesh.Nodes_Conditions(lambda x, y, z: x == 0)
 61     nodesXL = mesh.Nodes_Conditions(lambda x, y, z: x == L)
 62
 63     # ----------------------------------------------
 64     # Formulations
 65     # ----------------------------------------------
 66
 67     field = Field(mesh.groupElem, dim)
 68
 69     def S(u: Field) -> FeArray:
 70         Eps = Sym_Grad(u)
 71         return 2 * mu * Eps + lmbda * Trace(Eps) * np.eye(dim)
 72
 73     @BiLinearForm
 74     def computeK(u: Field, v: Field):
 75         Sig = S(u)
 76         Eps = Sym_Grad(v)
 77         return Sig.ddot(Eps)
 78
 79     @BiLinearForm
 80     def computeM(u: Field, v: Field):
 81         return rho * u.dot(v)
 82
 83     @BiLinearForm
 84     def computeC(u: Field, v: Field):
 85         K = computeK(u, v)
 86         M = computeM(u, v)
 87         C = K * 1e-3 + M * 1e-3
 88         return C
 89
 90     weakForms = Models.WeakForms(field, computeK, computeC, computeM)
 91
 92     # ----------------------------------------------
 93     # Simulations
 94     # ----------------------------------------------
 95
 96     simu = Simulations.WeakFormSimu(mesh, weakForms)
 97
 98     # static simulation
 99     simu.add_dirichlet(nodesX0, [0] * dim, simu.Get_unknowns())
100     simu.add_dirichlet(nodesXL, [-10], ["y"])
101
102     simu.Solve()
103
104     # dynamic simulation
105     simu.Solver_Set_Hyperbolic_Algorithm(dt)
106     simu.Save_Iter()
107
108     simu.Bc_Init()
109     simu.add_dirichlet(nodesX0, [0] * dim, simu.Get_unknowns())
110
111     while time <= Tmax:
112
113         time += dt
114
115         simu.Solve()
116         simu.Save_Iter()
117
118         print(f"{time:.3f} s", end="\r")
119
120     # ----------------------------------------------
121     # Results
122     # ----------------------------------------------
123
124     if makeMovie:
125         PyVista.Movie_simu(
126             simu,
127             "uy",
128             folder,
129             "uy.gif",
130             deformFactor=1,
131             plotMesh=True,
132             N=400,
133             nodeValues=True,
134         )
135
136     simu.Set_Iter(0)
137     PyVista.Plot(simu, "uy", 1, plotMesh=True).show()
138
139     Display.plt.show()

Total running time of the script: (0 minutes 11.418 seconds)

Gallery generated by Sphinx-Gallery