Você está na página 1de 3

18/09/2023, 10:07 Código - Trabalho Teórico.

ipynb - Colaboratory

1 import numpy as np
2 import matplotlib.pyplot as plt
3
4 # Parâmetros do problema
5 Lx = 0.03 # Comprimento da barra (30 mm em metros)
6 Ly = 0.02 # Largura da barra (20 mm em metros)
7 k = 20.0 # Condutividade térmica (W/(m.K))
8 T0 = 300.0 # Temperatura inicial (K)
9 q = 5e7 # Taxa de geração de calor (W/m^3)
10
11 #Número de interações (pode ser ajustado)
12 num_iterations = 1000
13
14 # Função para calcular a temperatura em cada nó
15 def calcular_temperaturas(Lx, Ly, k, q, T0, dx, dy, num_iterations):
16 # Tamanho do passo na malha
17 Nx = int(Lx / dx) + 1
18 Ny = int(Ly / dy) + 1
19
20 # Matriz de temperaturas
21 T = np.ones((Ny, Nx)) * T0
22
23 # Condições de contorno
24 T[:, 0] = 300.0 # Temperatura na superfície
25 T[:, -1] = 300.0 # Temperatura na superfície
26
27 # Parâmetro de relação (pode ser ajustado)
28 alpha = 0.1
29
30 # Loop principal para iterar e resolver
31 for iteration in range(num_iterations):
32 T_new = T.copy() # Matriz temporária para armazenar os novos valores
33
34 for i in range(1, Ny - 1):
35 for j in range(1, Nx - 1):
36 # Método de diferenças finitas para atualizar a temperatura
37 T_new[i, j] = (1 - 4 * alpha) * T[i, j] + alpha * (T[i - 1, j] + T[i + 1, j] + T[i, j - 1] + T[i, j + 1]
38 + (q / k) * dx * dy)
39
40 T = T_new # Matriz de temperatura para a próxima iteração
41
42 return T
43
44 # Tamanhos do passo na malha
45 dx_values = [0.005, 0.01] # Espaçamentos na malha (5 mm e 10 mm em metros)
46 dy_values = [0.005, 0.01] # Espaçamentos na malha (5 mm e 10 mm em metros)
47
48 # Temperatura desejada no ponto central da barra (pode ser ajustado)
49 temperatura_desejada = 600.0 # K
50
51 # Tolerância para a convergência
52 tolerancia = 1e-5
53
54 # Loop para calcular e comparar diferentes espaçamentos na malha
55 for dx, dy in zip(dx_values, dy_values):
56 # Calcula as temperaturas com base nos parâmetros e malha especificados
57 temperaturas = calcular_temperaturas(Lx, Ly, k, q, T0, dx, dy, num_iterations)
58
59 # Imprimir as temperaturas diferentes de T0
60 unique_temperatures = np.unique(temperaturas)
61 for temp in unique_temperatures:
62 if temp != T0:
63 print(f'Temperatura = {temp:.2f} K')
64
65 print()
66
67 # Geração de gráfico da temperatura em relação ao nó
68 node_numbers = np.arange(1, temperaturas.shape[1] + 1)
69 temperature_profile = temperaturas[temperaturas.shape[0] // 2, :] # Temperaturas ao longo da barra
70
71
72 # Ajuste da taxa de geração de calor para atingir a temperatura desejada
73 q_inicial = 1e7 # Taxa de geração de calor inicial
74
75 # Loop para encontrar a taxa de geração de calor necessária
76 while True:
77 # Calcular as temperaturas com base nos parâmetros e malha especificados
78 temperaturas = calcular_temperaturas(Lx, Ly, k, q_inicial, T0, dx, dy, num_iterations)
79
80 # Temperatura no ponto central da barra
81 temperatura_ponto_central = temperaturas[temperaturas.shape[0] // 2, temperaturas.shape[1] // 2]

https://colab.research.google.com/drive/18j8VFpU3ltuQIZCECp9qLZkH_TtjyxTF#scrollTo=2xumQS9WqUUj&printMode=true 1/4
18/09/2023, 10:07 Código - Trabalho Teórico.ipynb - Colaboratory
82
83 # Verificar se atingiu a temperatura desejada
84 if abs(temperatura_ponto_central - temperatura_desejada) < tolerancia:
85 break
86
87 # Ajustar a taxa de geração de calor com base no erro
88 erro = temperatura_desejada - temperatura_ponto_central
89 q_inicial += erro * k / dx / dy
90
91 # Imprimir a taxa de geração de calor necessária
92 print(f'Número total de nós (dx={dx}m, dy={dy}m): {temperaturas.size}')
93 print()
94 print(f'Temperatura no ponto central = {temperatura_ponto_central:.2f} K')
95 print()
96 print(f'Geração de calor necessária para 600K no ponto central: {q_inicial:.2e} W/m^3')
97 print()
98
99 plt.figure(figsize=(10, 4))
100 plt.subplot(1, 2, 1)
101 plt.plot(node_numbers, temperature_profile)
102 plt.xlabel('Nó')
103 plt.ylabel('Temperatura (K)')
104 plt.title(f'Distribuição de temperatura ao longo da barra (dx={dx}m, dy={dy}m)')
105 plt.grid(True)
106
107 # Geração de gráfico da disposição dos nós na barra
108 x_coords, y_coords = np.meshgrid(np.linspace(0, Lx, temperaturas.shape[1]), np.linspace(0, Ly, temperaturas.shape[0]))
109 plt.subplot(1, 2, 2)
110 plt.scatter(x_coords, y_coords, c='r', marker='o', label='Nós')
111 plt.xlabel('Posição na direção x (m)')
112 plt.ylabel('Posição na direção y (m)')
113 plt.title('Disposição dos Nós na Barra')
114 plt.grid(True)
115 plt.legend()
116
117 plt.tight_layout()
118 plt.show()
119
120 # Resultados para plotagem
121 resultados = []
122
123 # Loop para calcular e comparar diferentes espaçamentos na malha
124 for dx, dy in zip(dx_values, dy_values):
125 # Calcula as temperaturas com base nos parâmetros e malha especificados
126 temperaturas = calcular_temperaturas(Lx, Ly, k, q, T0, dx, dy, num_iterations)
127 resultados.append((dx, dy, temperaturas))
128
129 # Geração de gráfico da temperatura ao longo do comprimento da barra
130 plt.figure(figsize=(10, 6))
131 for dx, dy, temperaturas in resultados:
132 length_values = np.linspace(0, Lx, temperaturas.shape[1])
133 temperature_profile = temperaturas[temperaturas.shape[0] // 2, :] # Temperaturas ao longo da barra
134 plt.plot(length_values, temperature_profile, label=f'dx={dx}m, dy={dy}m')
135
136 plt.xlabel('Comprimento da barra (m)')
137 plt.ylabel('Temperatura (K)')
138 plt.title('Distribuição de temperatura ao longo do comprimento da barra')
139 plt.grid(True)
140 plt.legend()
141
142 plt.tight_layout()
143 plt.show()
144

https://colab.research.google.com/drive/18j8VFpU3ltuQIZCECp9qLZkH_TtjyxTF#scrollTo=2xumQS9WqUUj&printMode=true 2/4
18/09/2023, 10:07 Código - Trabalho Teórico.ipynb - Colaboratory

Temperatura = 348.46 K
Temperatura = 362.41 K
Temperatura = 368.94 K
Temperatura = 374.60 K
Temperatura = 390.21 K
Temperatura = 398.03 K

Número total de nós (dx=0.005m, dy=0.005m): 35

Temperatura no ponto central = 600.00 K

Geração de calor necessária para 600K no ponto central: 1.53e+08 W/m^3

Temperatura = 383.33 K

Número total de nós (dx=0.01m, dy=0.01m): 12

Temperatura no ponto central = 600.00 K

Geração de calor necessária para 600K no ponto central: 1.80e+08 W/m^3

https://colab.research.google.com/drive/18j8VFpU3ltuQIZCECp9qLZkH_TtjyxTF#scrollTo=2xumQS9WqUUj&printMode=true 3/4

Você também pode gostar