Escolar Documentos
Profissional Documentos
Cultura Documentos
Título:
Praia, 2019
Realizado por:
Sónia Monteiro
Fredilson Furtado
Péricles
Docente:
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
I
Abstract
The area of interest in this work is focused on the application of numerical solutions
in heat transference problems.
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).
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.
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:
𝜕𝑇 𝜕 𝜕𝑇 𝜕 𝜕𝑇 𝜕 𝜕𝑇
𝜌∁𝑝 = (𝐾 𝜕𝑥 ) + 𝜕𝑦 (𝐾 𝜕𝑦) + 𝜕𝑧 (𝐾 𝜕𝑧 ) + 𝑞̇ Eq. 1
𝜕𝑡 𝜕𝑥
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
𝐾𝑒
𝑎𝐸 = Eq. 3
∆𝑥𝑒
𝐾𝑤
𝑎𝑊 = Eq. 4
∆𝑥𝑤
𝑎𝑃 = 𝑎𝐸 + 𝑎𝑊 Eq. 5
𝑑𝑖 +𝐶𝑖 𝑄𝑖−1
𝑄𝑖 = Eq. 8
𝑎𝑖 −𝐶𝑖 𝑃𝑖−1
10
Na obtenção da solução, por recorrência:
𝑇𝑖 = 𝑃𝑖 𝑇𝑖+1 + 𝑄𝑖 Eq. 9
Com,
𝑎𝐸 e 𝑎𝑊 da eq.3 e 4;
𝑎𝑃 = 𝑓𝑎𝐸 + 𝑓𝑎𝑊 + 𝑎𝑃 0 Eq. 11
𝜌𝐶𝑝 ∆𝑥𝑃
𝑎𝑃 0 = Eq. 12
𝛿𝑡
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
𝑇𝑖 = 1 (0 ≤ 𝑥 ≤ 1);
𝑇(𝑥 = 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 */
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)
fflush(stdin);
printf("P- Prosseguir\n");
printf("V- Voltar\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 ()
{
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]);
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]);
}
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++)
{
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++)
{
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++)
{
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]);
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]);
}
}
}
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.
1
𝐸𝑟𝑟 =
𝑁−2
(𝑇𝑖 − 𝑇(𝑥𝑖 )) Eq. 14
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
26
Conclusão
27
Bibliografia
28