Você está na página 1de 29

Universidade de Cabo Verde

Faculdade de Ciências e Tecnologia (F.C.T)

Engenharia Mecânica 3º Ano

Título:

Resolução de Equações de Calor unidimensional

Praia, 2019

Ano letivo 2018/2019


Resolução de Equações de Calor

Método de Volumes Finitos

Realizado por:

Sónia Monteiro

Fredilson Furtado

Péricles

Docente:

Dr. Jakson Monteiro

Praia, 2019
Índice geral

Resumo ...................................................................................................................................... 5
Abstract ..................................................................................................................................... 6
Introdução ................................................................................................................................ 7
Volume Finito .................................................................................................................... 8
Histórico: ............................................................................................................................... 8
Aspetos gerais: ...................................................................................................................... 8
Malhas do tipo A: ............................................................................................................. 9
Malhas do tipo B:.............................................................................................................. 9
Princípios gerais: ................................................................................................................ 10
Equação de Calor:.................................................................................................................. 10
Método de resolução de Equação de calor ........................................................................... 11
Método de Algoritmo para Matrizes Tridiagonais - TDMA .......................................... 11
Sistema de equação linear:............................................................................................. 11
Equação discretizada não estacionária: ....................................................................... 12
Exercício proposto: ................................................................................................................ 13
Cálculo Numérico................................................................................................................... 13
Cálculo Analítico .................................................................................................................... 27
Discussão dos resultados........................................................................................................ 27
Conclusão ................................................................................................................................ 28
Bibliografia ............................................................................................................................. 29
Índice de figura

Figura 1- Malha do tipo A ...................................................................................................................... 9

Figura 2-Malha do tipo B ........................................................................................................................ 9

Figura 3- Espaçamento entre nós .......................................................................................................... 11

Figura 4- Gráfico de Comparação Analítica vrs Numérico .................................................................. 27


Resumo

A solução de problemas reais de engenharia através de técnicas numéricas é atualmente,


uma realidade tanto em nível académico quanto industrial. A evolução crescente e em escala
exponencial dos computadores modernos vem possibilitando que problemas cada vez mais
complexos possam ser resolvidos através de técnicas numéricas. Os computadores modernos
além de serem cada vez mais poderosos e de usarem algoritmos eficientes, estão cada vez mais
baratos o que contribui para com que as horas de experimentação em laboratórios a custos
altíssimos sejam substituídas por simulações em computadores, diminuindo os custos de
projeto e deixando os testes de laboratório apenas para o refinamento de projetos, ou a
modelagem de problemas que ainda não possuem a formulação matemática satisfatória.

A área de interesse deste trabalho concentra-se na aplicação de soluções numéricas em


problemas de transferência de calor.

Palavra-chave: Volumes finitos; Discretização equação calor.

I
Abstract

Solving real engineering problems through numerical techniques is currently a reality


in both academic and industrial levels. The increasing and exponential evolution of modern
computers has made it possible for increasingly complex problems to be solved by numerical
techniques. Modern computers are becoming more and more powerful, they are becoming
cheaper and cheaper, so that hours of experimentation in laboratories at high costs are
replaced by computer simulations, reducing design costs and leaving laboratory tests alone
for the refinement of projects, or the modeling of problems that do not yet possess the
satisfactory mathematical formulation.

The area of interest in this work is focused on the application of numerical solutions
in heat transference problems.

Keywords: Finite volumes; Discretization heat equation.

II
Introdução

A resolução de problemas reais podem ser feita através de métodos tais como,
Elementos finitos, Diferenças finitas e Volumes finitos. O uso de método dos volumes finitos,
pelo uso de equilíbrio integral em torno de cada nó da malha, permite realizar adaptações que
levem a um baixo custo computacional, próximo ao obtido com o método das diferenças finitas
e permite a utilização de malhas irregulares, tornando possível uma boa representação de
contornos e interfaces complexas. O emprego de Volume Finito se torna vantajoso na
modelagem de problemas de transferência de calor que demandam um considerável tempo
computacional.

Objetivo: No decorrer deste trabalho, será discretizado a equação de calor bem como
apresentar o erro do método analítico e numérico.

6
Resolução de Equação de Calor

1 Volume Finito

Histórico:
Soluções analíticas de equações de Navier-Stokes têm-se desenvolvido apenas para
geometrias simples e fluxos em condições ideais. Devido a isto, o uso de métodos numéricos
para resolução de fluxos reais em geometrias complexas tornou-se essencial.
O método de volumes finitos (Finite Volume Method – FVM em sua sigla em inglês)
foi introduzido na década de 1970 por McDonald, MacCormack e Paullay e historicamente tem
sido o método preferido pelos cientistas e engenheiros que trabalham com a mecânica de
fluídos.
Na última década, o método dos elementos finitos (FEM) tem tido importantes avanços,
conseguindo resolver com sucesso os desafios da mecânica de fluídos e ainda para problemas
mais complexos relacionados a fluxos multifásicos, reativos, ou fortemente turbulentos, o
método de volumes finitos é, na prática, a melhor solução.

Aspetos gerais:
Uma importante propriedade do FVM é que os princípios de conservação (massa,
momento e energia), que são a base da modelagem matemática. O método não se limita
somente a problemas de mecânica de fluídos, e, de forma geral, envolve os seguintes passos:
a) Decompor o domínio em volume de controlo;
b) Formular as equações integrais de conservação para cada volume de controlo;
c) Aproximar numericamente as integrais;
d) Aproximar os valores das variáveis nas faces e as derivadas com a informação das
variáveis dos nós;
e) Montar e resolver o sistema algébrico obtido;

7
O ponto de partida do método de volumes finitos é a decomposição do domínio em
pequenos volumes de controlo (VCs), onde as variáveis são alojar os nós. Usualmente, os
volumes de controlo e os nós são definidos com uma grade numérica, a malha. Os nós, onde
se guardam as variáveis a serem resolvidas, se localizam nos vértices desta malha ou nos
centros dos volumes, e é a referência com a que se conta para aproximar a solução no resto do
domínio.
Malhas do tipo A: Chamadas, também de malhas de face centrada. Neste tipo de malha os nós
estão igualmente distribuído ao longo do domínio, e nos nós à fronteira a distância é a metade
da verificada nos demais nós (ver figura 1).

Figura 1- Malha do tipo A

Malhas do tipo B: Chamadas, também de malhas de nó centrado. Neste tipo de malha, os nós
estão no centro das faces do volume de controlo, e a existência de nós à fronteira faz com que
estes sejam definidos como nós de volume de controlo nulo. O número total de volume de
controlo é N-2.

Figura 2-Malha do tipo B

8
Depois de ter definido os VCs, as equações de conservação são descritas em sua forma
integral para cada volume. Neste processo, o teorema da divergência de Gauss é usado para
converter integrais de volume sobre operadores de divergência e gradiente às integrais de
superfície. Por exemplo, a equação de transporte geral.

Princípios gerais:

a) Realismo físico: os resultados têm de ser coerentes, isto é, devem estar limitadas pela
variação imposta pela física;
b) Balanço global: implica a conservação integral de propriedades a nível global.

Equação de Calor:

A variação da temperatura com a posição no meio é determinada pela Equação de Calor.


Esta equação é uma equação diferencial parcial parabólica de segunda ordem.

𝜕𝑇 𝜕 𝜕𝑇 𝜕 𝜕𝑇 𝜕 𝜕𝑇
𝜌∁𝑝 = (𝐾 𝜕𝑥 ) + 𝜕𝑦 (𝐾 𝜕𝑦) + 𝜕𝑧 (𝐾 𝜕𝑧 ) + 𝑞̇ Eq. 1
𝜕𝑡 𝜕𝑥

 k é a condutividade térmica (W/mK);


 𝝆 é a massa volúmica (Kg/m³);
 𝒄𝒑 é o calor específico do material da barra (J/Kg K);
 T é a temperatura (K);
 𝒒̇ é a taxa na qual a energia é gerada por unidade de volume no meio (W/m³).

9
Método de resolução de Equação de calor
Método de Algoritmo para Matrizes Tridiagonais - TDMA
O Método de Eliminação de Gauss ainda é o método mais eficaz para a resolução de
sistema de equações lineares. O TDMA é o algoritmo correspondente ao Método de Eliminação
de Gauss. Ele resolve a equação de calor discretizada:

𝑎𝑝 𝑇𝑝 = 𝑎𝑒 𝑇𝑒 + 𝑎𝑤 𝑇𝑤 + 𝑏 Eq. 2

Figura 3- Espaçamento entre nós

𝐾𝑒
𝑎𝐸 = Eq. 3
∆𝑥𝑒

𝐾𝑤
𝑎𝑊 = Eq. 4
∆𝑥𝑤

𝑎𝑃 = 𝑎𝐸 + 𝑎𝑊 Eq. 5

Sistema de equação linear:


𝑎𝑖 𝑇𝑖 = 𝑏𝑖 𝑇𝑖+1 + 𝐶𝑖 𝑇𝑖−1 + 𝑑𝑖 Eq. 6

Com i= 1,2,…,N; onde os pontos i=1 e N estão na fronteira e 𝐶1 = 0 e 𝑏𝑁 = 0.


O algoritmo TDMA processa-se em dois loops:
 Na preparação dos arrays auxiliares:
𝑏𝑖
𝑃𝑖 = Eq. 7
𝑎𝑖 −𝐶1 𝑃𝑖−1

𝑑𝑖 +𝐶𝑖 𝑄𝑖−1
𝑄𝑖 = Eq. 8
𝑎𝑖 −𝐶𝑖 𝑃𝑖−1

10
 Na obtenção da solução, por recorrência:
𝑇𝑖 = 𝑃𝑖 𝑇𝑖+1 + 𝑄𝑖 Eq. 9

OBS: Para i=1,2,…,N e PN = 0.

Equação discretizada não estacionária:


A integração no tempo pode ser feita através de 3 esquemas:

 Esquema de Euler explícito  f = 0;


 Esquema de Crank-Nicolson  f = 0,5;
 Esquema totalmente implícito  f = 1;

𝑎𝑃 𝑇𝑃 = 𝑎𝐸 (𝑓𝑇𝐸 + (1 − 𝑓)𝑇𝐸 𝑛 ) + 𝑎𝑊 (𝑓𝑇𝑊 + (1 − 𝑓)𝑇𝑊 𝑛 ) + 𝑏 Eq. 10

Com,
𝑎𝐸 e 𝑎𝑊 da eq.3 e 4;
𝑎𝑃 = 𝑓𝑎𝐸 + 𝑓𝑎𝑊 + 𝑎𝑃 0 Eq. 11

𝜌𝐶𝑝 ∆𝑥𝑃
𝑎𝑃 0 = Eq. 12
𝛿𝑡

𝑏 = 𝑎𝑃 0 𝑇𝑃 𝑛 − (1 − 𝑓)(𝑎𝐸 + 𝑎𝑊 )𝑇𝑃 𝑛 Eq. 13

11
Exercício proposto:
Fazer um programa no computador para resolver com o método dos volumes finitos e malha
tipo B (nós centrados), a equação de calor:

∂T ∂ ∂T
= (α )
∂t ∂x ∂x

com o esquema temporal Euler implícito. Testar com o problema (=1):

 Condições iniciais (t=0):

𝑇𝑖 = 1 (0 ≤ 𝑥 ≤ 1);

 Condições de fronteira (qualquer t> 0):

𝑇(𝑥 = 0) = 0 𝑒 𝑇(𝑥 = 1) = 0.

Fazer o refinamento da malha (número de V.C: N=10, 20, 40,80,160) e de passo no tempo t=
1/20, 1/40, 1/80, 1/160 (com N=20), quando tempo varia de 0 a 0,5. Calcular o erro da
discretização (a diferença entre solução numérica e analítica) para t=0,1.

Cálculo Numérico
A solução numérica do exercício proposto foi realizada no software DEV C++. O
código de programação encontra-se abaixo anexado.

12
#include <stdio.h>

#include <stdlib.h>

#include <math.h>

/* run this program using the console pauser or add your own getch, system("pause")
or input loop */

int a,b,c,d,i, Ke, kw, j;

char e, p, v, op, R, S;

float l, N, deltax, X[160], t, P[160], ae, ap,ap1, aw, aw1, aw10, ap01, ap0, ae10,
ae20, Q[160], T[160], r, H;

int menu(void), submenu(void), sub2menu(void);

int menu(void)

fflush(stdin);

printf("P- Prosseguir\n");

printf("V- Voltar\n");

printf("R- Refinar a malha\n");

printf(" OBS: Os valores para refinamento da malha variam de 0 a 0,5


segundos\n");

scanf("%c", &p);

return p;

13
int submenu(void)
{
printf("Digite o valor de refinamento da malha\n ");
scanf("%f", &r);

return r;
}

int main ()
{

printf(" Bem Vindo(a) a este programa\n");


e=menu();
do{
if(i= p){

printf("Por favor digite o numero de nos\n");


scanf("%f", &N);
printf("Por favor digite o passo tempo\n");
scanf("%f", &t);
if (N>160){
printf("Valor inserido invalido\n");

14
}
else {
l=1;
deltax=(l/(N-2));
printf("deltax= %f\n", deltax);
X[1]=0;
X[10]=1;
X[20]=1;
X[40]=1;
X[80]=1;
X[160]=1;
X[2]= X[1]+(deltax/2);
printf("X[1]=%f\n",X[1]);
printf("X[2]=%f\n",X[2]);

for (i=3; i<=N-1; i++)


{

X[i]= X[i-1] + deltax;

printf("X[%d]=%f\n", i, X[i]);
}
if(N==10){
printf("X[10]=%f\n",X[10]);
printf("\n\n\n");
Ke=kw=1;
ae=aw=Ke/(deltax);
aw1=ae10=0;
ap01=(1*(deltax/2))/t;
ap0=(1*deltax)/t;

15
ap=ae+aw+ap0;
ap1=ae+aw1+ap01;
P[1]= (ae)/((ap1)-(aw1*P[i-1]));
printf("P[1]=%f\n", P[1]);

for (i=2;i<=N-1; i++)


{
P[i]= (ae)/((ap)- (aw* P[i-1]));
printf("P[%d]=%f\n",i, P[i]);
}
P[10]=0;
printf("P[10]=%f\n",P[10]);
printf("\n\n\n");
Q[1]=(ap01/ap1); //Através da condição inicial T=1 (o<=x<=1) e Sc é zero,o
que implica que Q=Sc*deltax + ap0*Tp0;
printf("Q[1]=%f\n", Q[1]);
for(i=2; i<=N-1; i++)
{
Q[i]=(ap0+aw*Q[i-1])/(ap-aw*P[i-1]);
printf("Q[%d]=%f\n",i, Q[i]);

}
Q[10]=0; //Temperaturas em x=o e x=L são zero.
printf("Q[10]=%f\n", Q[10]);
printf("\n\n\n");

T[10]= Q[10];
printf("T[10]=%f\n", T[10]);
for (i=N-1;i>1; --i)
{
T[i]=P[i]*T[i+1]+Q[i];

16
printf("T[%d]=%f\n",i, T[i]);
}
T[1]=0;
printf("T[1]=%f\n", T[1]);

if(N==20){

printf("X[20]=%f\n",X[20]);
printf("\n\n\n");
Ke=kw=1;
ae=aw=Ke/(deltax);
aw1=ae20=0;
ap01=(1*(deltax/2))/t;
ap0=(1*deltax)/t;
ap=ae+aw+ap0;
ap1=ae+aw1+ap01;
P[1]= (ae)/((ap1)-(aw1*P[i-1]));
printf("P[1]=%f\n", P[1]);
P[20]=0;
for (i=2;i<=N-1; i++)
{

P[i]= (ae)/((ap)- (aw* P[i-1]))

17
printf("P[%d]=%f\n",i, P[i]);
}

printf("P[20]=%f\n",P[20]);
printf("\n\n\n");
Q[1]=(ap01/ap1); //Através da condição inicial T=1 (o<=x<=1) e Sc é
zero,o que implica que Q=Sc*deltax + ap0*Tp0;
printf("Q[1]=%f\n", Q[1]);
for(i=2; i<=N; i++)
{
Q[i]=(ap0+aw*Q[i-1])/(ap-aw*P[i-1]);
printf("Q[%d]=%f\n",i, Q[i]);

}
Q[20]=0; //Temperaturas em x=o e x=L são zero.
printf("Q[10]=%f\n", Q[10]);
printf("\n\n\n");

T[20]= Q[20];
printf("T[20]=%f\n", T[20]);
for (i=N-1;i>1; --i)
{
T[i]=P[i]*T[i+1]+Q[i];
printf("T[%d]=%f\n",i, T[i]);
}
T[1]=0;
printf("T[1]=%f\n", T[1]);
}

if(N==40){
printf("X[40]=%f\n",X[40]);

18
printf("\n\n\n");
Ke=kw=1;
ae=aw=Ke/(deltax);
aw1=ae10=0;
ap01=(1*(deltax))/t;
ap0=(1*deltax)/t;
ap=ae+aw+ap0;
ap1=ae+aw1+ap01;
P[1]= (ae)/((ap1)-(aw1*P[i-1]));
printf("P[1]=%f\n", P[1]);
P[40]=0;
for (i=2;i<=N-1; i++)
{

P[i]= (ae)/((ap)- (aw* P[i-1]));


printf("P[%d]=%f\n",i, P[i]);
}

printf("P[40]=%f\n",P[40]);
printf("\n\n\n");
Q[1]=(ap01/ap1); //Através da condição inicial T=1 (o<=x<=1) e Sc é
zero,o que implica que Q=Sc*deltax + ap0*Tp0;
printf("Q[1]=%f\n", Q[1]);
for(i=2; i<=N; i++)
{
Q[i]=(ap0+aw*Q[i-1])/(ap-aw*P[i-1]);
printf("Q[%d]=%f\n",i, Q[i]);

}
Q[40]=0; //Temperaturas em x=o e x=L são zero.

19
printf("Q[40]=%f\n", Q[40]);
printf("\n\n\n");

T[40]= Q[40];
printf("T[40]=%f\n", T[40]);
for (i=N-1;i>1; --i)
{
T[i]=P[i]*T[i+1]+Q[i];
printf("T[%d]=%f\n",i, T[i]);
}
T[1]=0;
printf("T[1]=%f\n", T[1]);

}
if(N==80){
printf("X[80]=%f\n",X[80]);
printf("\n\n\n");
Ke=kw=1;
ae=aw=Ke/(deltax);
aw1=ae10=0;
ap01=(1*(deltax))/t;
ap0=(1*deltax)/t;
ap=ae+aw+ap0;
ap1=ae+aw1+ap01;
P[1]= (ae)/((ap1)-(aw1*P[i-1]));
printf("P[1]=%f\n", P[1]);
P[80]=0;
for (i=2;i<=N-1; i++)

20
P[i]= (ae)/((ap)- (aw* P[i-1]));
printf("P[%d]=%f\n",i, P[i]);
}

printf("P[80]=%f\n",P[80]);
printf("\n\n\n");
Q[1]=(ap01/ap1); //Através da condição inicial T=1 (o<=x<=1) e Sc é
zero,o que implica que Q=Sc*deltax + ap0*Tp0;
printf("Q[1]=%f\n", Q[1]);
for(i=2; i<=N; i++)
{
Q[i]=(ap0+aw*Q[i-1])/(ap-aw*P[i-1]);
printf("Q[%d]=%f\n",i, Q[i]);

}
Q[80]=0;
printf("Q[80]=%f\n", Q[80]);
printf("\n\n\n");

T[80]=Q[80];
printf("T[80]=%f\n", T[80]);
for (i=N-1;i>1; --i)
{
T[i]=P[i]*T[i+1]+Q[i];
printf("T[%d]=%f\n",i, T[i]);
}
T[1]=0;
printf("T[1]=%f\n", T[1]);
}

if(N==160)

21
printf("X[160]=%f\n",X[160]);
printf("\n\n\n");
Ke=kw=1;
ae=aw=Ke/(deltax);
aw1=ae10=0;
ap01=(1*(deltax))/t;
ap0=(1*deltax)/t;
ap=ae+aw+ap0;
ap1=ae+aw1+ap01;
P[1]= (ae)/((ap1)-(aw1*P[i-1]));
printf("P[1]=%f\n", P[1]);
P[160]=0;
for (i=2;i<=N-1; i++)
{

P[i]= (ae)/((ap)- (aw* P[i-1]));


printf("P[%d]=%f\n",i, P[i]);
}

printf("P[160]=%f\n",P[160]);
printf("\n\n\n");
Q[1]=(ap01/ap1); //Através da condição inicial T=1 (o<=x<=1) e Sc é
zero,o que implica que Q=Sc*deltax + ap0*Tp0;
printf("Q[1]=%f\n", Q[1]);
for(i=2; i<=N; i++)
{
Q[i]=(ap0+aw*Q[i-1])/(ap-aw*P[i-1]);
printf("Q[%d]=%f\n",i, Q[i]);

}
Q[160]=0; //Temperaturas em x=o e x=L são zero.

22
printf("Q[160]=%f\n", Q[160]);
printf("\n\n\n");

T[160]= Q[160];
printf("T[160]=%f\n", T[160]);
for (i=N-1;i>1; --i)
{
T[i]=P[i]*T[i+1]+Q[i];
printf("T[%d]=%f\n",i, T[i]);
}
T[1]=0;
printf("T[1]=%f\n", T[1]);

}
}

else {
if(i= R){
e= submenu();
printf("Digite o numero de nó\n");
scanf("%f", &N);
printf("Digite o passo tempo:\n");
scanf("%f", &t);

if (N>160){
printf("Valor inserido invalido\n");

23
}
else {
l=1;
deltax=(l/(N-2));
printf("deltax= %f\n", deltax);
X[1]=0;
X[10]=1;
X[20]=1;
X[40]=1;
X[80]=1;
X[160]=1;
X[2]= X[1]+(deltax/2);
printf("X[1]=%f\n",X[1]);
printf("X[2]=%f\n",X[2]);

for (i=3; i<=N-1; i++)


{

X[i]= X[i-1] + deltax;

printf("X[%d]=%f\n", i, X[i]);
}
if(N==20){
printf("X[10]=%f\n",X[20]);
printf("\n\n\n");
Ke=kw=1;
ae=aw=Ke/(deltax);
aw1=ae10=0;

24
ap01=(1*(deltax/2))/t;
ap0=(1*deltax)/t;
ap=ae+aw+ap0;
ap1=ae+aw1+ap01;
P[1]= (ae)/((ap1)-(aw1*P[i-1]));
printf("P[1]=%f\n", P[1]);

for (i=2;i<=N-1; i++)


{

P[i]= (ae)/((ap)- (aw* P[i-1]));


printf("P[%d]=%f\n",i, P[i]);
}
}

}
}
}
e =menu();

} while (e!='v');

return 1;

25
Cálculo Analítico
A solução analítica foi feita através da folha do programa EXCEL, por meio de
fórmulas utilizadas no cálculo numérico.

O cálculo, os resultados e os erros (para N=20 e para t= 0,1) encontram-se na folha de


EXCEL anexado a este relatório.

Discussão dos resultados


De acordo com os resultados obtidos, pode-se ver que a margem de erro é claramente
notada através do gráfico e pelo que a solução analítica está pouca precisa, daí se toma a
solução numérica como a mais fiável e que tem uma margem de precisão eficiente.

Calcula-se o erro para cada nó com:

1
𝐸𝑟𝑟 =
𝑁−2
(𝑇𝑖 − 𝑇(𝑥𝑖 )) Eq. 14

Comparação Analítica Vrs. Numérico


1

0,8
Temperatura

0,6

0,4

0,2

0
0 0,2 0,4 0,6 0,8 1 1,2
Espaçamento entre nós

Temperatura Numérico Temperatura analítico

Figura 4- Gráfico de Comparação Analítica vrs Numérico

26
Conclusão

Na disciplina de Transferência de Calor e Massa pode-se aprender como varia a


temperatura numa barra de comprimento L, conhecendo as condições iniciais e de fronteira. A
partir desses dados, podem ser encontrado a solução numérica e analítica. E no problema
proposto, pode-se ver uma diferença claramente notória entre as duas soluções: a solução
analítica dá resultados pouco preciso uma vez que essa solução sofre erros de precisão devido
a arredondamentos feitos e quanto a solução numérica é, de longe, mais confiável no que diz
respeito a precisão e a fiabilidade dos resultados.

27
Bibliografia

Gunes, H. D. (s.d.). Numerical methods in Fluid flow and Heat transfer.


Oliveira, P. J. (Outubro de 2002). Programa de Computador para Resolver a equação do
Calor unidimencional.
Patankar, S. V. (s.d.). Numerical Heat Transfer and Fluid Flow.

28

Você também pode gostar