Thermal3#

Transient thermal simulation.

Thermal3Thermal3
0.000 s
0.100 s
0.200 s
0.300 s
0.400 s
0.500 s
0.600 s
0.700 s
0.800 s
0.900 s
1.000 s
1.100 s
1.200 s
1.300 s
1.400 s
1.500 s
1.600 s
1.700 s
1.800 s
1.900 s
2.000 s
2.100 s
2.200 s
2.300 s
2.400 s
2.500 s
2.600 s
2.700 s
2.800 s
2.900 s
3.000 s
3.100 s
3.200 s
3.300 s
3.400 s
3.500 s
3.600 s
3.700 s
3.800 s
3.900 s
4.000 s
4.100 s
4.200 s
4.300 s
4.400 s
4.500 s
4.600 s
4.700 s
4.800 s
4.900 s
5.000 s
5.100 s

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

Element type: HEXA8
Ne = 940, Nn = 1584

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


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

solver : scipy

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

Unspecified.

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

Unspecified.

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

Mesh : 31.591 ms
Boundary Conditions : 13.828 µs
Matrix : 6.644 ms
Solver : 269.438 ms

Generate movie 01/52 (1.92 %) 5.32 s
Generate movie 02/52 (3.85 %) 4.44 s
Generate movie 03/52 (5.77 %) 4.22 s
Generate movie 04/52 (7.69 %) 4.18 s
Generate movie 05/52 (9.62 %) 4.08 s
Generate movie 06/52 (11.54 %) 4.17 s
Generate movie 07/52 (13.46 %) 4.02 s
Generate movie 08/52 (15.38 %) 3.79 s
Generate movie 09/52 (17.31 %) 3.70 s
Generate movie 10/52 (19.23 %) 3.59 s
Generate movie 11/52 (21.15 %) 3.63 s
Generate movie 12/52 (23.08 %) 3.46 s
Generate movie 13/52 (25.00 %) 3.39 s
Generate movie 14/52 (26.92 %) 3.28 s
Generate movie 15/52 (28.85 %) 3.18 s
Generate movie 16/52 (30.77 %) 3.09 s
Generate movie 17/52 (32.69 %) 3.00 s
Generate movie 18/52 (34.62 %) 2.93 s
Generate movie 19/52 (36.54 %) 2.86 s
Generate movie 20/52 (38.46 %) 2.75 s
Generate movie 21/52 (40.38 %) 2.67 s
Generate movie 22/52 (42.31 %) 2.65 s
Generate movie 23/52 (44.23 %) 2.58 s
Generate movie 24/52 (46.15 %) 2.40 s
Generate movie 25/52 (48.08 %) 2.36 s
Generate movie 26/52 (50.00 %) 2.22 s
Generate movie 27/52 (51.92 %) 2.18 s
Generate movie 28/52 (53.85 %) 2.08 s
Generate movie 29/52 (55.77 %) 2.00 s
Generate movie 30/52 (57.69 %) 1.93 s
Generate movie 31/52 (59.62 %) 1.81 s
Generate movie 32/52 (61.54 %) 1.73 s
Generate movie 33/52 (63.46 %) 1.63 s
Generate movie 34/52 (65.38 %) 1.55 s
Generate movie 35/52 (67.31 %) 1.48 s
Generate movie 36/52 (69.23 %) 1.39 s
Generate movie 37/52 (71.15 %) 1.33 s
Generate movie 38/52 (73.08 %) 1.22 s
Generate movie 39/52 (75.00 %) 1.15 s
Generate movie 40/52 (76.92 %) 1.06 s
Generate movie 41/52 (78.85 %) 969.47 ms
Generate movie 42/52 (80.77 %) 881.77 ms
Generate movie 43/52 (82.69 %) 784.43 ms
Generate movie 44/52 (84.62 %) 718.20 ms
Generate movie 45/52 (86.54 %) 610.62 ms
Generate movie 46/52 (88.46 %) 526.66 ms
Generate movie 47/52 (90.38 %) 442.19 ms
Generate movie 48/52 (92.31 %) 356.07 ms
Generate movie 49/52 (94.23 %) 263.38 ms
Generate movie 50/52 (96.15 %) 178.22 ms
Generate movie 51/52 (98.08 %) 87.51 ms
Generate movie 52/52 (100.00 %) 0.00 µs

13 import numpy as np
14
15 from EasyFEA import Display, Folder, Models, Mesher, ElemType, Simulations, PyVista
16 from EasyFEA.Geoms import Line, Domain, Point
17
18 if __name__ == "__main__":
19     Display.Clear()
20
21     # ----------------------------------------------
22     # Configuration
23     # ----------------------------------------------
24
25     # outputs
26     folder = Folder.Results_Dir()
27     makeMovie = True
28     result = "thermal"
29
30     # geom
31     R = 10
32     e = 2
33     h = 10
34     a = 1
35
36     # load
37     Tmax = 5
38     N = 50
39     dt = Tmax / N
40
41     # ----------------------------------------------
42     # Mesh
43     # ----------------------------------------------
44     domain = Domain(Point(R), Point(R + e, h), e / 2)
45     axis = Line(Point(), Point(0, 1, 0))
46
47     # Generate the mesh based on the specified dimension
48     angle = 360 * 3 / 4
49     mesh = Mesher().Mesh_Revolve(
50         domain,
51         [],
52         axis,
53         angle,
54         [angle * np.pi / 180 * R / domain.meshSize],
55         elemType=ElemType.HEXA8,
56         isOrganised=True,
57     )
58
59     nodesY0 = mesh.Nodes_Conditions(lambda x, y, z: y == 0)
60     nodesYH = mesh.Nodes_Conditions(lambda x, y, z: y == h)
61
62     # ----------------------------------------------
63     # Simulation
64     # ----------------------------------------------
65     thermalModel = Models.Thermal(k=1, c=1)
66     simu = Simulations.Thermal(mesh, thermalModel, False)
67     simu.rho = 1
68
69     simu.add_surfLoad(nodesY0, [5], ["t"])
70     simu.add_surfLoad(nodesYH, [5], ["t"])
71
72     # Set the parabolic algorithm for the solver
73     simu.Solver_Set_Parabolic_Algorithm(alpha=0.5, dt=dt)
74
75     simu._Set_solutions(simu.problemType, np.ones(mesh.Nn) * -10)
76
77     print()
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     PyVista.Plot(simu, result, plotMesh=True, nodeValues=True)
93
94     if makeMovie:
95         PyVista.Movie_simu(simu, result, folder, f"{result}.gif", plotMesh=True)

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

Gallery generated by Sphinx-Gallery