Escolar Documentos
Profissional Documentos
Cultura Documentos
Relatorio
Relatorio
JAILSON RIBEIRO
HELDER FERNANDES
OSVALDO FURTADO
PRAIA
2021
JAILSON RIBEIRO
HELDER FERNANDES
OSVALDO FURTADO
PRAIA
2021
1 INTRODUÇÃO
Num sentido amplo, uma "instrução" pode ser qualquer representação de um elemento
num programa executável, tal como um codebloks, o programa aser utilizada para resolver
o problema em estudo.
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.
1.1 Objetivos
Resolver um problema Mecânico através do método dos volumes finitos, com recurso
alinguagem de programação.
O Método dos Volumes Finitos (MVF) tem sido largamente utilizado nas mais diversas
áreas do conhecimento científico nas últimas décadas, é precipitado o pensamento em que
esta técnica se limita apenas às áreas de engenharia, podemos citar dentre os seus principais
usos aplicações que vão desde áreas de saúde até a aeroespacial.
É vasta a literatura que trata deste assunto, porquanto este relatório não tem a pretensão
de reproduzir as deduções do desenvolvimento do MVF precisamente tratado em Patankar
(1980), mas sim buscar facilitar aos iniciantes no MVF, o entendimento da elaboração de
códigos computacionais de aplicação do MVF com o auxílio da ferramenta Matlab®
através de um exemplo prático.
O procedimento básico de aplicação do método dos volumes finitos pode ser descrito
pelos seguintes passos:
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.
A discretização do domínio a ser simulado pode ser entendida como sendo a divisão da
área total de interesse em pequenos elementos de área (2D), segmentos (1D) e volumes
(3D), esses elementos podem ter diferentes formas geométricas, sendo os mais usuais
elementos triangulares, elementos tetraédricos.
Depois de ter a equação discretizada falta então utilizar um método para resolução da
equação na forma linear. O método a utilizar é o Método de Algorítmo para Matrizes
Tridiagonais (TDMA).
𝑎𝑖 𝑥𝑖−1 + 𝑏𝑖 𝑥𝑖 + 𝑐𝑖 𝑥𝑖+1 = 𝑑𝑖
Onde: 𝑎1 = 𝑐𝑛 = 0
𝑐𝑖
, 𝑖=1
′
𝑏𝑖
𝑐𝑖={ 𝑐𝑖
, 𝑖 = 2,3, … , 𝑛 − 1
𝑏𝑖 − 𝑎𝑖 𝑐𝑖 𝑖−1
𝑑𝑖
, 𝑖=1
′ 𝑏𝑖
𝑑𝑖=
𝑑𝑖 − 𝑑 ′ 𝑖−1 𝑎𝑖
′
, 𝑖 = 2,3, … , 𝑛 − 1
{ 𝑏𝑖 − 𝑐 𝑖−1 𝑎𝑖
𝑥𝑛 = 𝑑 ′ 𝑛
𝑥𝑖 = 𝑑′ 𝑖 − 𝑐 ′ 𝑖 𝑥𝑖+1 ; 𝑖 = 𝑛 − 1, 𝑛 − 2, …,
3 Aplicação do MVF–Transmissão de Calor para resolver o
problema em estudo.
𝑑𝑇 𝑑 𝑑𝑇
𝜌𝑐𝑝 = 𝑘( )
𝑑𝑡 𝑑𝑥 𝑑𝑥
Como o tempo é uma coordenada unilateral, obtemos a solução marchando no tempo a
partir de uma dada distribuição inicial de temperatura:
Para fazer discretização vamos fazer integração dupla no espaço (volume de controlo) ao
longo do intervalo do tempo.
𝑒 𝑡+𝛿𝑡 𝜕𝑇 𝑡+𝛿𝑡 𝑒 𝑑 𝜕𝑇
∫𝑤 ∫𝑡 𝜌𝑐𝑝 𝜕𝑡 𝑑𝑡𝑑𝑥 = ∫𝑡 ∫𝑤 𝑑𝑥 (𝑘 𝜕𝑡 )𝑑𝑡𝑑𝑥
𝜕𝑇
A ordem da integração é escolhida de acordo com a natureza do termo. Para o termo ,
𝜕𝑡
𝑒 𝑡+𝛿𝑡 𝑑𝑇
𝜌𝑐𝑝 ∫𝑤 ∫𝑡 𝑑𝑡𝑑𝑥 = 𝜌𝑐𝑝 ∆𝑥𝑝 (𝑇𝑃1 − 𝑇𝑝0 )
𝑑𝑡
𝑡+𝛿𝑡
∫ 𝑇𝑃 𝑑𝑡 = [𝑓𝑇𝑃1 + (1 − 𝑓)𝑇𝑃0 ]∆𝑡
𝑡
𝑘 𝑘
𝑎𝑝0 (𝑇𝑃 − 𝑇𝑝0 ) = (𝛿𝑥)
𝑒
[𝑓(𝑇𝐸 − 𝑇𝑃 ) + (1 − 𝑓)(𝑇𝐸0 − 𝑇𝑃0 )] − 𝑤 [𝑓(𝑇𝐸 − 𝑇𝑃 ) + (1 − 𝑓)(𝑇𝑃0 − 𝑇𝑊
0]
𝑒 (𝛿𝑥) 𝑤
𝑎𝑝0 (𝑇𝑃 − 𝑇𝑝0 ) = 𝑎𝐸 [𝑓𝑇𝐸 + (1 − 𝑓)𝑇𝐸0 ] + 𝑎𝐸 [−𝑓𝑇𝑃 − (1 − 𝑓)𝑇𝑃0 ] + 𝑎𝑤 [𝑓𝑇𝑤 + (1 − 𝑓)𝑇𝑤0 ] − 𝑎𝑤 [𝑓𝑇𝑃 + (1 − 𝑓)𝑇𝑃0 ]
𝑎𝑝0 𝑇𝑃 = 𝑎𝐸 [𝑓𝑇𝐸 + (1 − 𝑓)𝑇𝐸0 ] + 𝑎𝑤 [𝑓𝑇𝑤 + (1 − 𝑓)𝑇𝑤0 ] − 𝑇𝑃 [𝑎𝐸 𝑓 + 𝑎𝑤 𝑓] + [𝑎𝑝0 − (1 − 𝑓)𝑎𝐸 − (1 − 𝑓)𝑎𝑤 ]𝑇𝑝0
[𝑎𝑃0 + 𝑎𝑤 𝑓 + 𝑎𝐸 𝑓]𝑇𝑃 = 𝑎𝐸 [𝑓𝑇𝐸 + (1 − 𝑓)𝑇𝐸0 ] + 𝑎𝑤 [𝑓𝑇𝑤 + (1 − 𝑓)𝑇𝑤0 ] + [𝑎𝑃0 − (1 − 𝑓)𝑎𝐸 − (1 − 𝑓)𝑎𝑊 ]𝑇𝑝0
Onde:
𝑘 𝑘 ∆𝑥
𝑒
𝑎𝐸 = (𝛿𝑥) ; 𝑤
𝑎𝑤 = (𝛿𝑥) ; 𝑎𝑃0 = 𝜌𝑐𝑝 ∆𝑡 ;
𝑒 𝑤
𝑎𝑃 𝑇𝑃 = 𝑎𝐸 𝑇𝐸 + 𝑎𝑤 𝑇𝑤 + 𝑏
Então já temos a nossa equação na forma linear, antes de aplicar o TDMA vamos fazer
um estudo sobre fronteira (condições de fronteira) do modelo em estudo.
Codições de fronteira
Para a malha do tipo A, e para caso de condição em que o fluxo 𝑞𝑏 for especificado em
termos de um coeficiente de transferência de calor h e uma temperatura do fluído
circundante 𝑇𝑓 , tal que:
𝑞𝑏 = ℎ(𝑇𝑓 − 𝑇𝐵 )
𝑎𝐵 𝑇𝐵 = 𝑎𝐼 𝑇𝐼 + 𝑏
𝑏 𝑆 ∆𝑥+ℎ𝑇∞
Como 𝑇∞ = 0, 𝑇𝑁 = 𝑎 = 𝑎 𝐶−𝑆 , como não temos termo fonte e 𝑇∞ = 0, então
𝑁 𝐼 𝑃 ∆𝑥+ℎ
teremos que: 𝑇𝑁 = 0;
• nó 1: 𝑎1 𝑇1 = 𝑎2 𝑇2 + 𝑏
𝑎2 𝑇2 +𝑏 𝑎2 𝑇2 +𝑆𝐶 ∆𝑥+ℎ𝑇∞ 𝑘
𝑇1 = = , com 𝑎2 = 𝛿 , como não temos termo fonte e 𝑇∞ = 0,
𝑎1 𝑎2 −𝑆𝑃 ∆𝑥+ℎ 𝑥
então teremos:
𝑎2 𝑇2
𝑇1 =
𝑎2 + ℎ
𝑎𝑃 𝑇𝑃 = 𝑎𝐸 𝑇𝐸 + 𝑎𝑤 𝑇𝑤 + 𝑏
𝑇𝑁 = 𝑃𝑁 𝑇𝑁+1 + 𝑄𝑁
𝑎𝐸 𝑏+𝑎𝑤 𝑄𝑁−1
𝑃𝑁 = 𝑎 , 𝑄𝑁 = 𝑎
𝑃 −𝑎𝑤 𝑃𝑁−1 𝑃 −𝑎𝑤 𝑃𝑁−1
Aplicando o método para o cálculo de 𝑃1 e 𝑄1 uma vez conhecida que para N=1, 𝑎𝑤 = 0,
continuando com o procedimento até N=N, temos que 𝑇𝑁 = 𝑄𝑁 , mas para N=N já foi
implimentada a condição de fronteira que podemos contabilizar o número da temperatura .
2𝐹 𝑥
𝑇𝑎 (𝑥) = 𝑒 −𝑐1 0 cos (𝜏1 )
𝐿
Da tabela1 (coeficiente do 1º termo da série que dá a solução analitica para transferência
de calor por conveçã de umpa placa infinita), Fourier (𝐹0 = 0.5), entrando com 𝐵𝑖 = 1 ,
obtemos: 𝑐1 = 1.1191; 𝜏1 = 0.8603;
𝑇(𝑥)−𝑇𝑎 (𝑥)
𝐸𝑟𝑟 (𝑥) = 𝑇𝑎 (𝑥)
• No gráfico abaixo fez-se plote do gráfico para N=40 e refinamento dos 4 passos
de tempo (∆𝑡 = 1/1000, 1/500, 1/200, 1/100):
• Enquanto que no gráfico abaixo fez-se plote do gráfico para (∆𝑡 = 1/200) e
refinamento dos 4 nós (N=10, 20, 40, 80, 160).
• No gráfico abaixo encontra-se o gráfico da solução analitica em para N=40 e os 4
passos de tempo (∆𝑡 = 1/1000, 1/500, 1/200, 1/100):
Mesmo refinando o nosso passo de tempo a temperatutra analitica comtinua o mesmo,
linhas sobrepostos como podem ver no gráfico.
O presente relatorioo almeja dar inicio a uma série de ensaios futuros a respeito da
utilização de técnicas numéricas aplicadas a problemas de transferencia de calor e mass.
Destaca-se positivamente neste relatorio o detalhamento de um código computacional como
referência básica para elaboração de outras aplicações com maior grau de complexidade.
O código computacional anexo a este trabalho pode ser facilmente alterado com
características físicas de outros materiais e condições de contornos diferentes permitindo
assim a predição da distribuição de temperaturas para nossos casos de simulação. Este
trabalho limitou-se a aplicação do método dos volumes finitos a uma geometria simples e
com malha de discretização regular. Sugere-se para trabalhos posteriores aplicar esta
metodologia a geometrias mais complexas e com malhas não regulares. Sugere-se para
trabalhos posteriores confrontar os resultados numéricos obtidos com os resultados a partir
de uma modelagem algébrica com solução exata.
Podemos ver tambem que a medida que refinamos o nosso dominio obtemos uma menor
margem de erro, assim como tambem quando refinamos o nosso passo de tempo. Ao refinar
o nosso dominio com mais numeros de nós mais perto do valor analitica estamos, isso
tambem acontece quando temos um passo de tempo amior como é no caso de deltat=0.01.
Referencias
PATANKAR, S. V. Numerical Heat and Transfer and Fluid Flow. McGraw-Hill: USA,
1980.
Anexo
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <math.h>
4 int main ()
5 {
6 int opcao=1;
7 do{
8 int i, Tinf,s , Tf;
9 float l, N, h, qb, deltax, t, ta, alfa, Q[160], Ke, kw, k , rho, Cp, L, ae, ap,ap1, aw, aw1, aw10, ap01,
ap0, aeN, ae20, r, H, X[160], P[160], T[160], A1=1.1191, Z1,F0, j, Ta[160], Err[160];
10 printf(" Bem Vindo(a) ao programa para resolver com malha do tipo A(faces centradas) a equacao de calor
unidimensional,\n elaborado pelo:\n\n");
11 printf(" Helder Fernandes;\n");
12 printf(" Osvaldo Furtado;\n");
13 printf(" Jailson Ribeiro.\n\n");
14 printf(" Para rodar o programa, segue os seguintes passos:\n\n");
15
16 //Entrada dos dados da barra e condição inicial
17 printf(" Ensire o valor do comprimento da barra (L):\n \n\n");
18 scanf("%f",&L);// Comprimento da barra L[m]
19 printf(" Ensire o valor da massa volumica (rho):\n \n\n");
20 scanf("%f",&rho);// Massa volumica rho[Kg/m^3]
21 printf(" Ensire o valor da Calor especifico do material (Cp):\n \n\n");
22 scanf("%f",&Cp);// Calor especifico do material Cp[J/Kg.K]
23 printf(" Ensire o valor da condutividade termica do material (K):\n \n\n");
24 scanf("%f",&k);// Condutividade termica do material K[W/m.K]
25 printf(" Escolha uns dos seguintes valores dos nos:\n \n\n N=10 N=20 N=40
N=80 N=160 \n\n");
26 scanf("%f",&N);//pedindo numero de nó para avançar
27 if (N==10 || N==20 || N==40 || N==80 || N==160 ){
28 //printf("L=%f\n", L);
29 //printf("rho=%f\n", rho);
30 //printf("Cp=%f\n", Cp);
31 //printf("k=%f\n", k);
32 //printf("N=%f\n\n\n", N);
33 deltax=L/(N-1);
34 Ke=kw=k;
35 s=abs(N);
36 //printf("\n O valor de espacamento entre os nos(deltax=L/(N-2)) e = %f\n\n\n", deltax);
37 printf(" Escolha os seguintes valores de passo de tempo :\n \n\n t=0.001 t=0.002 t=0.005
t=0.01 \n\n");
38 scanf("%f",&t);
39 //printf("\n O valor de espacamento de tempo (deltat) escolhido e = %f\n\n\n", t);
40 alfa=k/(rho*Cp);
41 ta=alfa*t/(pow(L,2));
42 //printf("\n O valor de espacamento de tempo adimensionalisado (deltata=F0) escolhido e = %f\n\n\n", ta);
43
44
45
46 //O posicionamento de cada no:
47 //printf(" O posicionamento de cada no e indicado pela letra X[i] onde i indica o no:\n");
48 X[1]=0;
49 //printf("X[1]=%f\n", X[1]);
50 X[s]=L;
51 for (i=2; i<=N-1; i++)
52 {
53 X[i]= X[i-1] + deltax;
54 //printf("X[%d]=%f\n",i, X[i]);
55 }
56 //printf("X[%d]=%f\n",s, X[s]);
57
58 //printf("\n\n\n\n\n");
59 ae=aw=k/(deltax);
60 aw1=aeN=0; //como ke=kw=k atomaticamente ae=aw
61 ap01=((rho*Cp)*(deltax/2))/t;
62 ap0=((rho*Cp)*deltax)/t;
63 ap=ae+aw+ap0;
64 ap1=ae+aw1+ap01;
65 //Coeficientes ap0, aw e ap para o nó 1
66 //printf(" Para o no 1 os coeficientes ap0, aw e ap sao diferentes dos restantes nos, enquanto que ae sao
iguais:\n\n");
67 //printf("aw1=%f\n", aw1);
68 //printf("ap1=%f\n", ap1);
69 //printf("ap01=%f\n", ap01);
70
71
72 //Coeficientes ap0, aw e ap para os restentes nos excepto o ultimo nó
73 //printf("\n\n");
74 //printf(" Para os restantes nos (exceto no N) os coeficientes ap0, aw e ap:\n\n");
75 //printf("ae=%f\n", ae);
76 //printf("aw=%f\n", aw);
77 //printf("ap=%f\n", ap);
78 //printf("ap0=%f\n", ap0);
79 //printf("\n\n\n\n");
80 P[1]= (ae)/(ap1);
81 for (i=2;i<=N-1; i++){
82 P[i]=(ae)/((ap)-(aw*P[i-1]));
83 //printf("P[%d]=%f\n",i, P[i]);
84 }
85 P[s]=0;//aeN=0
86 //printf("P[%d]=%f\n", s, P[s]);
87
88 //printf("\n\n\n\n");
89 Tf=1;Tinf=0; h=k/L; //Bi=h.L/k=1 h=k/L;
90 qb =h*(Tf-Tinf); //dado para x=0 e x=L;
91 Q[1]=(ap01/ap1); //Através da condição inicial T=1 (x=0) e Sc é zero,o que implica que b=Sc*deltax+qb = qb
=h(T-Tinf);
92 //printf("Q[1]=%f\n", Q[1]);
93 for(i=2; i<=N-1; i++)
94 {
95 Q[i]=(ap0*Tf+aw*Q[i-1])/(ap-aw*P[i-1]);
96 //printf("Q[%d]=%f\n",i, Q[i]);
97 }Q[s]=0; //Condições de fronteira em x=o e x=L, qb =h(T-Tinf);
98 //printf("Q[%d]=%f\n",s, Q[s]);
99
100 //Calculo de temperatura
101 //printf("\n\n\n\n");
102 T[s]=0;//Na fronteira x=L
103 //printf("T[%d]=%f\n",s,T[s]);
104 for (i=N-1;i>1; --i)
105 {
106 T[i]=P[i]*T[i+1]+Q[i];
107 //printf("T[%d]=%f\n",i, T[i]);
108 }
109 T[1]=((k/deltax)*T[2])/((k/deltax)+h);
110 //printf("T[%d]=%f\n",i,T[1]);
111 //printf("\n\n\n\n");
112 for (i=N;i>=1; --i)
113 {
114 A1=1.1191;
115 Z1=0.8603;
116 F0=0.5;
117 j=-(pow(Z1,2))*F0;
118 Ta[i]=A1*exp(j)*cos(Z1*X[i]/L);
119 Err[i]=(T[i]-Ta[i])/Ta[i];
120 //printf("Ta[%d]=%f\n",i, Ta[i]);
121 }
122 //printf("\n\n\n\n");
123 for (i=N;i>=1; --i)
124 {
125 Err[i]=(T[i]-Ta[i])/Ta[i];
126 //printf("Err[%d]=%f\n",i, Err[i]);
127 }
128 for (i=N;i>=1; --i)
129 {
130 printf("%f ", X[i]);
131 printf("%f\n", Err[i]);
132 }
133 }
134 else {printf("Valor do no (N) inserido invalido\n");}
135 printf("\n\nDIGITE 1 PARA CONTINUAR OU 0 PARA SAIR\n\n");
136 scanf("%d",&opcao);
137
138 }while(opcao!=0);
139 return 0 ;
140 }