Você está na página 1de 12

Eletromecânica Computacional

Volumes Finitos

Trabalho final

Autor
David F. R. Alves
E10983 ELM
Simão M. Lopes
E10969 ELM

Professores: Paulo P. Oliveira


Alexandre B. Miranda
2022/2023
Contents
1 Introdução 1

2 Formulação do Problema 1

3 Método Numérico 2

4 Descrição do Programa 2

5 Gráficos Obtidos 3

6 Programa 5

7 Conclusão 10
Volumes finitos

1 Introdução
A proposta de trabalho da unidade curricular de Eletromecânica Computacional feita pelo Pro-
fessor tem o objetivo de elaborar um programa no software FORTRAN com a finalidade de resolver
um problema de transmissão de calor, no nosso caso trata se de uma convecção natural, através do
método de volumes finitos. Estes métodos aproximam derivadas usando valores nodais, ou métodos
de elementos finitos, que criam aproximações locais de uma solução usando dados locais e constroem
uma aproximação global juntando-os. A convecção natural resume-se a uma forma de transferência
de massa e calor em que o movimento de um fluido é criado apenas pela diferença de densidade no
fluido devido a um gradiente de temperatura, e não por uma fonte externa.
O problema escolhido pelo nosso grupo é o número 2.

2 Formulação do Problema
Fazer um programa de computador para resolver com o método dos volumes finitos e malha tipo
B (nós centrados) a equação do calor:

∂T ∂ ∂T
= (α ) (2.1)
∂t ∂x ∂x
com o esquema temporal Euler implícito. Testar com o problema (α = 1), que representa a di-
fusidade térmica = 1, podendo assim afirmar uma temperatura inicial uniforme em todo o volume
de controlo.

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

• T = 2x(0 ≤ x ≤ 0.5);

• T = 2(1 − x)(0.5 ≤ x ≤ 1.0);

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

• T (x = 0) = 0;

• T (x = 1) = 0;

Com estas condicões, a temperatura será sempre nula. Comparar graficamente os resultados do
programa com a solução teórica quando o tempo varia de t=0 a 0.5. Fazer estudo de refinamento
de malha (nº de VC: N=10, 20, 40, 80, 160) e de passo no tempo ∆t = 0.5∆x calculando o erro de
discretização.

1
Volumes finitos

3 Método Numérico
Na malha tipo-B, colocam-se desde ínicio a quantidade de volumes de controlo N (células), os
principais nós são então definidos no centro das células, e irão existir dois nós sobre as fronteiras
fazendo com que o número total de volumes de controlo seja N −2 . De seguida integramos a equação
diferencial em cada volume de controlo. Obtemos então a seguinte equação de discretização:

(αE + 2αW )TP = αE TE + [2αW TW + SP δxP ] (3.1)


com:

aW = 2(aW )usual = 2kw /δxP


aP = aE + aW
b = b + aW TW
aW = 0

4 Descrição do Programa
Descrição do programa. O programa pede ao utilizador que defina o número de nós na malha,
NX, o número de passos no tempo, NT e, por fim, o tamanho do passo no tempo, DT. São definidos
previamente os dados de partida: comprimento da barra, temperatura inicial, densidade, calor
especifico, condutibilidade térmica. . .
Seguidamente, é feita a preparação da malha, bem como dos coeficientes interiores e calculo dos
coeficientes.
Por fim, é executada a subrotina TDMA.

2
Volumes finitos

5 Gráficos Obtidos

Figure 1: Gráfico número de nós na malha igual a 10.

Figure 2: Gráfico número de nós na malha igual a 20.

3
Volumes finitos

Figure 3: Gráfico número de nós na malha igual a 40.

Figure 4: Gráfico número de nós na malha igual a 80.

4
Volumes finitos

Figure 5: Gráfico número de nós na malha igual a 160.

6 Programa
C
C Este programa resolve com o método dos volumes finitos e malha tipo B
C (nós centrados) a equação do calor com o esquema temporal de Euler implícito.
C
PROGRAM EXEMPLB
IMPLICIT REAL*8(A-H,O-Z)
C
C PARA RESOLVER EQ. DA CONDUCAO DO CALOR 1D PARAMETER(NMAX=1000)
C dimensionar arrays (matrizes unidimensionais)
DIMENSION
PHI(NMAX),AP(NMAX),AE(NMAX),AW(NMAX),B(NMAX),A0(NMAX), + S(NMAX),X(NMAX),SP(NMA
C
C abrir ficheiros de dados
OPEN(10,FILE=’exemplo.dat’)
C ler dados do ecran (por exemplo, N=no. no’s malha)
PRINT *,’ DAR: Numero de nos na malha, NX’
READ(*,*) NX
C Número de passos no tempo, NT (nota: TEMPO TOTAL = NT*DT)
PRINT *,’ DAR: Numero de passos no tempo, NT’
READ(*,*) NT
C Tamanho do passo no tempo, DT
PRINT *,’ DAR: Tamanho do passo no tempo, DT’
READ(*,*) DT

5
Volumes finitos

C
C DADOS DE PARTIDA
C comprimento da barra
XTOT=1.0
C temperatura inicial (t=0)
PHIINI=1.0
C densidade
DEN=1.0
C calor especifico
CP=1.0
C condutibilidade termica
AK=1.0
C parte constante do termo fonte (S=Sc+Sp*Phi)
SC=0.0
SPP=0.0
C temperatura (phi) na extremidade da esquerda (oeste)
PHI1=0.0
C
C temperatura (phi) na extremidade da direita (este)
PHIN=0.0
C preparar malha
DX=XTOT/FLOAT(NX-2)
NXM1=NX-1
NXM2=NX-2
NXP1=NX+1
DO I=1,NX
X(I)=(I-1)*DX-DX/2.
END DO
X(1)=0.0
X(NX)=XTOT
C
C PREPARAR COEFICIENTES INTERIORES
DO I=3,NXM1-1
S(I)=SC*DX
SP(I)=SPP*DX
AE(I)=AK/DX
AW(I)=AK/DX
A0(I)=DEN*CP*DX/DT
END DO
C
C CONDICOES INICIAIS
DO I=2,NXM1
IF (X(I).LE.(XTOT/2.)) THEN
PHI(I)=2.0*X(I)
ELSE
PHI(I)=2.0*(1-X(I))
END IF
END DO
C

6
Volumes finitos

C TEMPERATURA T1
AE(1)=0.0
AW(1)=0.0
A0(1)=0.0
AP(1)=1.0
S(1)=PHI1
C TEMPERATURA T2
AE(NX)=0.0
AW(NX)=0.0
A0(NX)=0.0
AP(NX)=1.0
S(NX)=PHIN
C
C CÁLCULO DOS COEFICIENTES AE, AW, AP E DO TERMO FONTE "S"
C PARA OS NÓS ADJACENTES AOS DA FRONTEIRA
C
AE(2)=AK/DX
AW(2)=AK/(DX/2.)
A0(2)=DEN*CP*DX/DT
AP(2)=AE(2)+AW(2)+A0(2)+SP(2)
S(2)=SC*DX
C
C
AE(NXM1)=AK/(DX/2.)
AW(NXM1)=AK/DX
A0(NXM1)=DEN*CP*DX/DT
AP(NXM1)=AE(NXM1)+AW(NXM1)+A0(NXM1)+SP(NXM1)
S(NXM1)=SC*DX
C
C Preparar coeficiente central
DO I=3,NXM1-1
AP(I)=AE(I)+AW(I)+A0(I)+SP(I)
END DO
C
CCCCCCCCCCCCCCCCCCCCCCC LOOP NO TEMPO CCCCCCCCCCCCCCCCCCCCC-
CCCCCC
C
DO IT=1,NT
C DO I=1,NX
C PHI0(I)=PHI(I)
C END DO
DO I=1,NX
B(I)=S(I)+A0(I)*PHI(I)
END DO
C RESOLVER SISTEMA TRIDIAGONAL DE EQUACOES
CALL TDMA(PHI,AP,AE,AW,B,1,NX,NXP1)
END DO
C
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC

7
Volumes finitos

C
C ESCREVER RESULTADOS FINAIS PARA FICHEIRO DE DADOS
ERRO=0.0
DO I=1,NX
C solucao teorica
C PHIT=PHI1+(PHIN-PHI1)*X(I)/XTOT+SC*XTOT/2./AK*X(I)*(1.-X(I)/XTOT)
PI=4.D0*DATAN(1.D0)
PI2=PI*PI
NI=20
C PRINT *,’ GIVE N; x, time’
C READ(*,*) N,X,T
C
SUM1=0.0D0
C
DO II=1,NI
SUM1=SUM1+EXP(-II**2*PI2*
(NT*DT))*SIN(PI*II/2.)*SIN(II*PI*X(I)) +/DBLE(II**2) END DO
C
PHIT=SUM1*8.0/PI2
C calcular erro (diferenca entre solucao numerica e teorica)
ERRO=ERRO+ABS(PHI(I)-PHIT)
C escrever no ecran
WRITE(*,*) X(I),PHI(I),PHIT
C escrever no ficheiro de dados com numero 10: eomplo.dat
WRITE(10,100) X(I),PHI(I),PHIT
END DO
C erro medio
ERRO=ERRO/FLOAT(NXM1)
PRINT *,’ ERRO TOTAL=’,ERRO
100 FORMAT(20(1PE13.4))
STOP
END
C*********************************************************************
C
C ALGORITMO TDMA
C AP(I)*PHI(i) = AS(i).PHI(i-1) + AN(i).PHI(i+1) + SU(i)
SUBROUTINE TDMA(PHI,AP,AN,AS,SU,I1,IE,NC)
IMPLICIT REAL*8(A-H,O-Z)
PARAMETER(NMAX=1000)
DIMENSION A(0:NMAX),C(0:NMAX)
DIMENSION PHI(NC),AN(NC),AS(NC),SU(NC),AP(NC)
C
A(I1)=AN(I1)/AP(I1)
C(I1)=SU(I1)/AP(I1)
C loop ascendente: preparar P e Q (aqui A e C)
DO 1 I=I1,IE
DEN=1./(AP(I)-AS(I)*A(I-1))
A(I)=AN(I)*DEN
C(I)=(AS(I)*C(I-1)+SU(I))*DEN

8
Volumes finitos

1 CONTINUE
C loop descendente: obter a solucao
PHI(IE)=C(IE)
DO 2 II=I1,IE
I=IE-II+I1
PHI(I)=PHI(I+1)*A(I)+C(I)
2 CONTINUE
RETURN
END

9
Volumes finitos

7 Conclusão
Com este trabalho consolidamos a matéria lecionada ao longo do semestre, tanto na aula prática,
bem como, na aula teórica.
Foi também o primeiro contacto que tivemos com o programa utilizado ao longo desta Unidade
Curricular e, apesar de um pouco desafiante, conseguimos estar, hoje, familiarizados com o mesmo.
Em relação aos resultados obtidos nos gráficos acima, conseguimos perceber que o resultado
teórico é muito similar ao resultado prático obtido no programa, que prova uma elevada precisão.
Neste trabalho utilizamos muitos valores que sairam do FORTRAN, que permite obter resultados
precisos.

10

Você também pode gostar