Thermal1#

Transient thermal simulation.

Thermal1$T$
Volume: 0.913
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

==================== Mesh ====================

Element type: PRISM18
Ne = 288, Nn = 1512, dof = 4536

==================== Model ====================


Thermal :
thermal conductivity (k)  : 1
thermal mass capacity (c) : 1

solver : pypardiso

============= Boundary Conditions =============

Unspecified.

=================== Results ===================

Unspecified.

=================== TicTac ===================

Mesh : 39.059 ms
Boundary Conditions : 10.014 µs
Matrix : 4.329 ms
Solver : 131.111 ms

Movie_func 0/50
Movie_func 1/50 (2.00 %) 6.18 s
Movie_func 2/50 (4.00 %) 6.03 s
Movie_func 3/50 (6.00 %) 5.90 s
Movie_func 4/50 (8.00 %) 5.63 s
Movie_func 5/50 (10.00 %) 5.55 s
Movie_func 6/50 (12.00 %) 5.41 s
Movie_func 7/50 (14.00 %) 5.36 s
Movie_func 8/50 (16.00 %) 5.40 s
Movie_func 9/50 (18.00 %) 5.21 s
Movie_func 10/50 (20.00 %) 4.95 s
Movie_func 11/50 (22.00 %) 4.86 s
Movie_func 12/50 (24.00 %) 4.72 s
Movie_func 13/50 (26.00 %) 4.55 s
Movie_func 14/50 (28.00 %) 4.43 s
Movie_func 15/50 (30.00 %) 4.31 s
Movie_func 16/50 (32.00 %) 4.21 s
Movie_func 17/50 (34.00 %) 4.14 s
Movie_func 18/50 (36.00 %) 4.02 s
Movie_func 19/50 (38.00 %) 3.87 s
Movie_func 20/50 (40.00 %) 3.73 s
Movie_func 21/50 (42.00 %) 3.61 s
Movie_func 22/50 (44.00 %) 3.45 s
Movie_func 23/50 (46.00 %) 3.36 s
Movie_func 24/50 (48.00 %) 3.27 s
Movie_func 25/50 (50.00 %) 3.15 s
Movie_func 26/50 (52.00 %) 3.06 s
Movie_func 27/50 (54.00 %) 2.90 s
Movie_func 28/50 (56.00 %) 2.73 s
Movie_func 29/50 (58.00 %) 2.60 s
Movie_func 30/50 (60.00 %) 2.47 s
Movie_func 31/50 (62.00 %) 2.34 s
Movie_func 32/50 (64.00 %) 2.21 s
Movie_func 33/50 (66.00 %) 2.15 s
Movie_func 34/50 (68.00 %) 2.01 s
Movie_func 35/50 (70.00 %) 1.88 s
Movie_func 36/50 (72.00 %) 1.74 s
Movie_func 37/50 (74.00 %) 1.65 s
Movie_func 38/50 (76.00 %) 1.50 s
Movie_func 39/50 (78.00 %) 1.38 s
Movie_func 40/50 (80.00 %) 1.27 s
Movie_func 41/50 (82.00 %) 1.15 s
Movie_func 42/50 (84.00 %) 999.69 ms
Movie_func 43/50 (86.00 %) 883.26 ms
Movie_func 44/50 (88.00 %) 747.04 ms
Movie_func 45/50 (90.00 %) 620.13 ms
Movie_func 46/50 (92.00 %) 499.14 ms
Movie_func 47/50 (94.00 %) 374.66 ms
Movie_func 48/50 (96.00 %) 249.39 ms
Movie_func 49/50 (98.00 %) 127.30 ms
Movie_func 50/50 (100.00 %) 0.00 µs

12 from EasyFEA import (
13     Display,
14     Folder,
15     Models,
16     plt,
17     Mesher,
18     ElemType,
19     Simulations,
20     PyVista,
21 )
22 from EasyFEA.Geoms import Circle, Domain, Point
23
24 if __name__ == "__main__":
25     Display.Clear()
26
27     # ----------------------------------------------
28     # Configuration
29     # ----------------------------------------------
30     dim = 3  # Set the simulation dimension (2D or 3D)
31
32     # outputs
33     folder = Folder.Join(Folder.RESULTS_DIR, "Thermal", "Thermal1")
34     makeMovie = True
35     result = "thermal"
36
37     # geom
38     a = 1
39
40     # load
41     Tmax = 0.5
42     N = 50
43     dt = Tmax / N
44
45     # ----------------------------------------------
46     # Mesh
47     # ----------------------------------------------
48     domain = Domain(Point(), Point(a, a), a / 4)
49     circle = Circle(Point(a / 2, a / 2), diam=a / 3, isHollow=True, meshSize=a / 4)
50
51     if dim == 2:
52         mesh = Mesher().Mesh_2D(domain, [circle], ElemType.TRI6)
53     else:
54         mesh = Mesher().Mesh_Extrude(
55             domain, [circle], [0, 0, -a], [4], ElemType.PRISM18
56         )
57
58     nodesX0 = mesh.Nodes_Conditions(lambda x, y, z: x == 0)
59     nodesXa = mesh.Nodes_Conditions(lambda x, y, z: x == a)
60     nodesCircle = mesh.Nodes_Cylinder(circle, [0, 0, -1])
61
62     if dim == 3:
63         print(f"Volume: {mesh.volume:.3}")
64
65     # ----------------------------------------------
66     # Simulation
67     # ----------------------------------------------
68     thermalModel = Models.Thermal(k=1, c=1, thickness=1)
69     simu = Simulations.ThermalSimu(mesh, thermalModel, False)
70     simu.rho = 1
71
72     simu.add_dirichlet(nodesX0, [0], ["t"])
73     simu.add_dirichlet(nodesXa, [40], ["t"])
74
75     # Set the parabolic algorithm for the solver
76     simu.Solver_Set_Parabolic_Algorithm(alpha=0.5, dt=dt)
77
78     t = -dt  # init time
79     while t < Tmax:
80         t += dt
81
82         simu.Solve()
83         simu.Save_Iter()
84
85         print(f"{t:.3f} s", end="\r")
86
87     # ----------------------------------------------
88     # Results
89     # ----------------------------------------------
90     print(simu)
91
92     Display.Plot_Result(simu, result, plotMesh=True, nodeValues=True, folder=folder)
93
94     if makeMovie:
95         PyVista.Movie_simu(simu, result, folder, f"{result}.gif", plotMesh=True)
96
97     plt.show()

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

Gallery generated by Sphinx-Gallery