Universidade Federal do Paraná
Dinâmica de Fluidos Computacional I
Relatório do 2º Trabalho Computacional - Regime Permanente
Aluno: Romulo de Aguiar Beninca
O objetivo deste trabalho é desenvolver um código computacional para resolver a equação de difusão de calor bidimensional em regime permanente, utilizando o Método de Volumes Finitos (MVF). Conforme especificado na tarefa, o problema físico consiste em uma placa quadrada unitária onde a temperatura é prescrita na face superior, enquanto as demais faces são mantidas a $0^\circ C$.
Este relatório está organizado de maneira a apresentar a metodologia e os resultados de forma estruturada:
Figura 1: Definição dos parâmetros de malha ($N=13$) e equações iniciais.
A discretização espacial é realizada dividindo o domínio em volumes de controle. O comportamento esperado é um fluxo de calor partindo da região de maior temperatura (fonte senoidal) em direção às regiões mais frias ($0^\circ C$).
Figura 2: Interpretação física e esquema da malha com nomenclatura dos pontos cardeais (P, N, S, E, W).
Para os volumes de controle internos, onde não há contato direto com as bordas prescritas, aplicamos o balanço de energia considerando condutividade constante e malha uniforme ($\Delta x = \Delta y$). Isso resulta na simplificação onde a soma dos coeficientes vizinhos é igual ao coeficiente central.
Figura 3: Dedução da equação para nós internos, resultando na média aritmética dos 4 vizinhos.
Para tratar a condição de contorno prescrita (fonte de calor), utiliza-se a técnica de volumes fictícios
Figura 4: Dedução do coeficiente modificado (divisor 5) utilizando volumes fictícios (Adaptação para o problema atual).
Para a solução do sistema de equações algébricas, optou-se pelo método iterativo de Gauss-Seidel. O algoritmo varre a malha atualizando a temperatura $T_P$ com base nos valores mais recentes dos vizinhos.
Figura 5: Resumo das equações iterativas implementadas no código para varredura do domínio.
Para fins de validação dos resultados numéricos, deduziu-se a solução exata da equação nas condições de contorno apresentadas. O método utilizado foi a Separação de Variáveis, assumindo que $T(x,y) = X(x)Y(y)$.
O processo inicia-se dividindo a EDP em duas EDOs e aplicando as condições homogêneas nas bordas $x=0$, $x=1$ e $y=0$.
Figura 6: Início da dedução analítica: separação de variáveis e aplicação das condições de contorno homogêneas.
Em seguida, determina-se os autovalores $\lambda_n$ e as autofunções associadas para $X(x)$ e $Y(y)$, resultando em uma solução na forma de série infinita.
Figura 7: Determinação dos autovalores e da solução geral em série.
Por fim, aplica-se a condição de contorno não-homogênea na face superior ($T(x,1) = \text{sen}(\pi x)$) para encontrar os coeficientes da série. Devido à natureza da função seno, a série colapsa em um único termo (modo fundamental $n=1$).
Figura 8: Aplicação da condição da face superior e obtenção da equação final fechada.
A implementação utiliza JavaScript puro. A tabela abaixo relaciona as equações deduzidas com a lógica de código utilizada no loop iterativo:
| Tipo de Volume | Expressão Algébrica (Dedução) | Lógica no Código (JS) |
|---|---|---|
| Interno (Longe da borda superior) |
$$ T_P^{(k+1)} = \frac{T_E^{(k)} + T_W^{(k+1)} + T_N^{(k)} + T_S^{(k+1)}}{4} $$ | T[i][j] = (T[i+1][j] + T[i-1][j] + T[i][j+1] + T[i][j-1]) / 4.0 |
| Borda Superior ($j = Ny-1$) |
$$ T_P = \frac{T_E + T_W + T_S + 2\text{sen}(\pi x)}{5} $$ |
fonte = 2.0 * Math.sin(Math.PI * x)
T[i][j] = (T[i+1][j] + T[i-1][j] + T[i][j-1] + fonte) / 5.0
|
Distribuição de temperatura na placa. O gradiente parte da face superior (quente) para as demais faces (frias).
Variação da temperatura no ponto central $T(0.5, 0.5)$ e do erro máximo a cada iteração.
Comparação entre solução numérica e analítica ao longo da linha central horizontal.
Esta tabela exibe os dados do Perfil Horizontal cortando a placa exatamente no meio ($Y = 0.5$).O que ela mostra: A variação da temperatura da esquerda para a direita ($0 \le x \le 1$) na altura média da placa.
Comparação entre solução numérica e analítica ao longo da linha central vertical.
Esta tabela exibe os dados do Perfil Vertical cortando a placa exatamente no meio ($X = 0.5$).O que ela mostra: A variação da temperatura de baixo para cima ($0 \le y \le 1$) na largura média da placa.
Código JavaScript completo utilizado para a simulação, traduzido e comentado.