Thermal2#

Transient thermal simulation.

Thermal2
Thermal2
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

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


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

solver : scipy

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

Unspecified.

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

Unspecified.

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

Mesh : 38.245 ms
Boundary Conditions : 8.583 µs
Matrix : 15.354 ms
Solver : 496.926 ms

Generate movie 01/51 (1.96 %) 5.51 s
Generate movie 02/51 (3.92 %) 4.77 s
Generate movie 03/51 (5.88 %) 4.50 s
Generate movie 04/51 (7.84 %) 4.62 s
Generate movie 05/51 (9.80 %) 4.59 s
Generate movie 06/51 (11.76 %) 4.40 s
Generate movie 07/51 (13.73 %) 4.20 s
Generate movie 08/51 (15.69 %) 4.03 s
Generate movie 09/51 (17.65 %) 4.22 s
Generate movie 10/51 (19.61 %) 3.98 s
Generate movie 11/51 (21.57 %) 3.95 s
Generate movie 12/51 (23.53 %) 3.82 s
Generate movie 13/51 (25.49 %) 3.61 s
Generate movie 14/51 (27.45 %) 3.51 s
Generate movie 15/51 (29.41 %) 3.46 s
Generate movie 16/51 (31.37 %) 3.31 s
Generate movie 17/51 (33.33 %) 3.28 s
Generate movie 18/51 (35.29 %) 3.16 s
Generate movie 19/51 (37.25 %) 3.04 s
Generate movie 20/51 (39.22 %) 3.03 s
Generate movie 21/51 (41.18 %) 2.94 s
Generate movie 22/51 (43.14 %) 2.88 s
Generate movie 23/51 (45.10 %) 2.70 s
Generate movie 24/51 (47.06 %) 2.62 s
Generate movie 25/51 (49.02 %) 2.62 s
Generate movie 26/51 (50.98 %) 2.49 s
Generate movie 27/51 (52.94 %) 2.40 s
Generate movie 28/51 (54.90 %) 2.24 s
Generate movie 29/51 (56.86 %) 2.14 s
Generate movie 30/51 (58.82 %) 2.06 s
Generate movie 31/51 (60.78 %) 1.94 s
Generate movie 32/51 (62.75 %) 1.86 s
Generate movie 33/51 (64.71 %) 1.74 s
Generate movie 34/51 (66.67 %) 1.68 s
Generate movie 35/51 (68.63 %) 1.59 s
Generate movie 36/51 (70.59 %) 1.44 s
Generate movie 37/51 (72.55 %) 1.36 s
Generate movie 38/51 (74.51 %) 1.25 s
Generate movie 39/51 (76.47 %) 1.23 s
Generate movie 40/51 (78.43 %) 1.12 s
Generate movie 41/51 (80.39 %) 989.66 ms
Generate movie 42/51 (82.35 %) 895.72 ms
Generate movie 43/51 (84.31 %) 793.17 ms
Generate movie 44/51 (86.27 %) 677.59 ms
Generate movie 45/51 (88.24 %) 595.66 ms
Generate movie 46/51 (90.20 %) 481.62 ms
Generate movie 47/51 (92.16 %) 389.18 ms
Generate movie 48/51 (94.12 %) 291.18 ms
Generate movie 49/51 (96.08 %) 199.85 ms
Generate movie 50/51 (98.04 %) 95.74 ms
Generate movie 51/51 (100.00 %) 0.00 µs

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

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

Gallery generated by Sphinx-Gallery