Professional Documents
Culture Documents
P. J. Oliveira
Departamento de Engenharia Electromecnica, Universidade da Beira Interior, 6200 Covilh (Outubro 2002)
1. Introduo O objectivo deste trabalho a resoluo numrica da equao do calor unidimensional, em regime permanente, com termo fonte, e para condies fronteira do tipo de temperatura imposta (condies fronteira de Dirichlet). Para isso vai ser preparado um pequeno programa de computador, em linguagem FORTRAN, que implementar o mtodo dos volumes finitos tal como ensinado na disciplina de Mecnica Computacional. O objectivo puramente didtico, e tem em vista no s permitir uma familiarizao do leitor com o mtodo dos volumes finitos, mas pretende tambm mostrar como deve ser apresentado um relatrio deste tipo (um pouco como um artigo cientfico) e dar alguma prtica na programao em Fortran. O relatrio est organizado da seguinte forma. Na Seco 2 so apresentadas a equao diferencial a ser resolvida e as respectivas condies fronteira. Na Seco 3 obtida a soluo exacta do problema. Na seco 4 feita a discretizao do problema, segundo o mtodo dos volumes finitos, e apresentadas as equaes algbricas a serem resolvidas. Em particular, feita a distino entre o tratamento das condies fronteira para uma malha tipo A e tipo B (ver [1]). Na seco 5 descrito o programa de computador, cuja listagem dada em anexo. Na seco 6 so apresentados e discutidos os resultados. Finalmente, na seco 7 so enumeradas as concluses mais relevantes.
(1)
onde ; a temperatura (varivel dependente), a condutibilidade trmica (assumida como constante), : a taxa de gerao interna de calor por unidade de volume (tambm assumida como constante) e % a coordenada espacial (varivel independente) que varia entre e 3 (o comprimento do domnio de clculo). As condies fronteira so:
-1-
; y ; para % y
(2)
; y ; para % y 3.
No exemplo de aplicao vo ser tomados os seguintes valores numricos, cujas unidades so arbitrrias (corresponde ao problema 4.11 do livro de S.V. Patankar [2]):
3y ; y ; y : y , y .
Antes de se passar formulao numrica, faz-se a deduo analtica da soluo do problema definido pelas Eqs. (1) e (2).
3. Soluo Analtica do Problema Para este caso simplificado da equao do calor possvel obter facilmente a soluo analtica. sempre til ter a soluo exacta dum determinado problema pois vai servir no s para validar o funcionamento do programa de computador (ver se estamos a obter os resultados correctos) como, mais quantitativamente, serve para obter com exactido o erro de discretizao cometido. A soluo analtica obtida partindo de:
: d ; y ^ d%2
onde * uma primeira constante de integrao. Uma segunda integrao d a soluo geral da equao diferencial:
: ; y ^ % ] * % ] * .
onde * a segunda constante de integrao. As constantes * e * so obtidas das condies fronteira. As condies fronteira de temperatura imposta escrevem-se:
; y *
(para % y )
-2-
: ; y ^ 3 ] * 3 ] * (para % y 3),
* y ;
e
* y
; ^; :3 ] 3
% ]3
7.
(3)
; ^; y %Z ] : Z %Z ^ %Z , ; ^;
(4)
onde a pelica denota quantidades adimensionais: %Z %3 (o que implica que %Z varia entre e ); : Z :3 "; , com "; ; ^ ; . No caso particular de ; y ; ; , o tem de ser definido de forma diferente, ficando:
; ^; y : Z %Z ^ %Z , ;
(5)
4. Mtodo Numrico. Equaes Discretizadas. A equao de partida (1) integrada em "volumes" de controlo unidimensionais, tal como indicado no Cap. 3 e 4 da Ref. [1]. A equao discretizada resultante tem a seguinte forma:
7 ;7 y , ;, ] > ;> ]
com coeficientes e termo fonte dados por:
(6)
, y % > y $ %$
(7)
7 y , ] > y :7 %7 .
-3-
(Nota: :7 denota o valor de : calculado no volume de controlo 7 , e no o :7 resultante da linearizao de um termo fonte, : y :* ] :7 ;7 ). Como no presente caso a condutibilidade trmica constante e se ir utilizar malha uniforme, no seria necessrio usar ndices para e para % (implicando , y > ). O espaamento da malha obtido de % y 35 ^ , onde 5 o nmero total de ns, contando com os dois sobre as fronteiras a "Oeste" (% y ) e a "Este" (% y 3). Existem 5 * y 5 ^ volumes de controlo interiores. A Eq. (6), conjuntamente com os coeficientes dados pelas Eqs. (7), vlida para os ns interiores da malha ( y at 5 ^ ); essa equao tem de ser modificada junto s fronteiras. As modificaes induzidas pela implementao das condies fronteira dependem do tipo de malha: tipo-A ("faces centradas" ou de "diferenas finitas") e tipo-B ("ns centrados" ou de "volumes finitos"). A Fig. 1 ilustra os dois tipos de malha.
W T W
w P
2
e qe
E
3 4
x
5 6 N=7
i=1
qw
meio VC de fronteira
x P T w w qw E
e qe
Figura 1. Malhas computacionais e detalhes junto a fronteira: (a) arranjo tipo-A; (b) arranjo tipo-B.
-4-
Na malha tipo-A, colocam-se de nicio os ns principais da malha, igualmente distribuidos ao longo do domnio. As faces dos volumes de controlo so de seguida definidas a meia distncia entre os ns, e por consequncia iro existir dois meiovolumes de controlo junto s fronteiras. Na malha tipo-B, colocam-se de nicio os volumes de controlo (as "clulas"); os ns principais so ento definidos no centro das clulas, e iro existir dois ns sobre as fronteiras (podemos imaginar que esto rodeados por volumes de controlo de espessura nula). O nmero total de volumes de controlo 5 ^ .
Condies Fronteira Para a malha tipo-A, e para o caso de condies fronteira de temperatura imposta (Dirichlet), a melhor tcnica para incorporar as condies fronteira seguir o procedimento: calcular as temperaturas somente nos volumes de controlo interiores (isto , para y , ... ,5 ^ ); obter os coeficientes que fazem a ligao com as fronteiras da forma usual; incorporar os fluxos vindos das fronteiras no termo fonte. Por exemplo, para a fronteira em > na Fig. 1 (a) o coeficiente > no n y calculado da forma usual, e a correspondente contribuio do fluxo de calor vindo de y (isto , $ y > ;> ^ ;7 ) includa no termo fonte e em 7 : Volume de controlo 7 , junto fronteira em "Oeste":
<
(9)
onde o termo dentro dos parentesis rectos includo no termo fonte . Repare-se que, em qualquer caso, o coeficiente da fronteira sempre igualado a zero de forma a quebrar o elo entre o n interior e o n sobre a fronteira. Repare-se tambm que a matriz fica estritamente diagonal dominante (7 { - ) nos ns junto a uma fronteira de temperatura dada. Desta forma o funcionamento dos mtodos iterativos de resoluo do sistema de equaes melhorado. Como ltimo comentrio relativo a este tratamento das condies fronteira, chamamos a ateno para o facto de se ter utilizado um esquema de aproximao para os fluxos junto fronteira
-5-
exactamento igual ao esquema utilizada nos volumes de controlo interiores (ambos so baseados em diferenas centrais, logo so esquemas de segunda ordem em %). Para a malha tipo-B o usual seguir um tratamento semelhante ao explicado acima mas como o arranjo dos volumes de controlo junto s fronteiras diferente (ver Fig. 1 b), vo surgir diferenas de detalhe. As equaes discretizadas (Eq. 6) so resolvidas smente para os volumes de controlo interiores. Na fronteira "Oeste", por exemplo, o balano de calor resultante da integrao da Eq. (1) na clula 7 , :
$ ^ ] :7 %7 y $ ^ , ;7 ^ ;, ] :7 %7 y
(10)
com o coeficiente , calculado da forma usual (Eq. 7), enquanto que o fluxo de calor na fronteira aproximado como:
; ^;7 $ y $ $ y > ;$ ^ ;7 %7
(11)
(Repare-se que a distncia entre $ e 7 %7 porque o n 7 est centrado no volume de controlo.) Substituindo na Eq. (10), obtm-se a equao discretizada no volume de controlo 7 adjacente fronteira:
<
(12)
Desta equao, torna-se bvio que as condies fronteira podem ser implementadas da seguinte forma: Volume de controlo 7 , junto fronteira em "Oeste":
-6-
5. Descrio do Programa de Computador Em Anexo so dadas listagens de pequenos programas para a resoluo do problema em causa. O programa EQ1DA refere-se exactamente ao presente problema, com os dados numricos indicados na Introduo, e foi baseado na utilizao de uma malha tipo-A. O programa EQ1DB em tudo semelhante, excepto que a malha do tipo-B. As diferenas entre os dois tm a ver com o tratamento das condies fronteira. Vamos de seguida analisar a listagem do programa EQ1DA. As variveis relevantes do problema so definidas logo no nicio do programa: condutibilidade trmica (no programa denotado por +: coeficiente de difuso); gerao interna de calor : (no programa :< ); comprimento do domno 3 (no programa ?; 6; ); temperaturas impostas nas extremidades ; e ; (no programa so 7 /0 e 7 /05 ). Esta parte corresponde ao "input" do programa que pode ser alterado pelo utilizador. O nmero total de ns da malha lido do monitor, de forma a ser fcil proceder ao estudo do refinamento de malha. De seguida so preparados os coeficientes da equao discretizada, que neste caso so todos constantes uma vez que a malha uniforme e a propriedades so tambm constantes. Esses coeficientes so assignados aos respectivos "arrays" dentro de um "DO-loop" que percorre todos os volumes de controlo interiores. Os volumes de controlo junto s fronteiras (isto , para y e 5 ^ ) so sujeitos a um tratamento individualizado, que no programa diz s respeito a condies de temperatura imposta: o termo fonte modificado (recebe parte da contribuio do fluxo que vem da fronteira), e o coeficiente na direco da fronteira anulado. Uma vez em posse de todos os coeficientes e termo fonte, podemos passar para a resoluo do sistema tridiagonal de equaes lineares, que feito com a subrotina TDMA. Esta subrotina segue exactamente o algoritmo dado em [1], com um nico detalhe novo: as equaes esto todas divididas pelo coeficente central. Isso foi feito para poupar um "array" e assim limitar a utilizao da memria central do computador. Para problemas unidimensionais os gastos de memria so extremamente reduzidos e no seria necessrio estar com esse cuidado. Repare-se que o programa principal de EQ1DA utiliza somente 5 arrays para armazenar os coeficientes e a varivel dependente (a temperatura), e a subrotina TDMA utiliza 2 arrays para o seu trabalho interno. Portanto no total temos 7 arrays dimensionados para o nmero total de ns e assim, mesmo uma malha com 1000 ns, que corresponde ao armazenamento de 7000 "nmeros", equivale a uma ocupao de memria de somente 28 kBytes (4 Bytes para armazenar 1 "nmero", em preciso simples). Na ltima parte do programa, depois da resoluo do sistema de equaes lineares, os resultados so escritos para um ficheiro de dados (chamado "EQ1DA.DAT") de forma a ser possvel efectuar posteriormente grficos que mostrem a variao da temperatura ao longo do domnio. Foi tambm obtida a soluo exacta e calculado o erro mdio, que serviu para o estudo de refinamento de malha apresentado na prxima seco.
-7-
6. Resultados O problema de conduo de calor com fontes definido na Seco 1 foi resolvido com os programas descritos na Seco 5 e dados em Anexo, para vrios valores do nmero total de ns, 5 . Os resultados para 5 y 5, 10, e 20 so apresentados na Fig. 2, onde so comparados com a soluo analtica dada pela Eq. 3 (com ; y ; y ). As previses numricas do perfil de temperaturas (denotado Phi na figura) so representadas com smbolos, e a soluo exacta por uma linha contnua.
(a)
(b)
(c) Figura 2. Soluo obtida com uma malha uniforme com (a) 5; (b) 10; e (c) 20 ns, usando o arranjo tipo A ("diferenas finitas") e tipo B ("volumes finitos"). Comparao com a soluo analtica.
Como se pode observar da Fig. 2, os resultados da malha tipo-A so idncticos aos analticos, mesmo para uma malha s com 3 volumes de controlo interiores (5 y ). Este facto seria de esperar, uma vez que a soluo deste problema uma curva quadrtica em % (uma parbola) e as diferenas centrais, sendo de ordem % , resolvem de forma exacta polinmios de ordem 2. alis possvel mostrar que, para
-8-
malhas uniformes, as diferenas centrais utilizadas para representar os fluxos de calor resolvem de forma exacta polinmios de ordem at 3. A malha tipo-B, com a representao de primeira ordem utilizada para as condies fronteira, introduz erros claramente vsiveis na Fig. 2 (a) onde foi empregue a malha mais grosseira. No entanto, quando a malha refinada o erro existente torna-se imperceptvel, como pode ser visto nas figuras 2 (b) (5 y ) e 2 (c) (5 y ). Como o problema tem uma soluo terica, possvel calcular exactamente o erro de discretizao, definido como a diferena entre a soluo numrica e a soluo exacta. O erro foi calculado usando a norma 3 , isto , calculou-se o valor absoluto da diferena entre o resultado numrico da temperatura num dado n, ; , e o resultado terico, ; % (Eq. 3), e somou-se para todos os ns interiores da malha:
, y
5 ^
5 ^ y
+; ^ ; % +
A diviso pelo nmero de volumes de controlo internos feita de forma a se obter um erro mdio para cada malha. A Fig. 3 apresenta a variao deste erro com o refinamento de malha (aumento do nmero total de ns, 5 ), para o caso da malha tipo-B (uma vez que para a malha tipo-A o erro praticamente nulo). Observa-se que o erro decai de forma muito rpida medida que uma malha muito grosseira vai sendo refinada (isto , para 5 y 5, 10, 20, 40), e que essa taxa de reduo do erro vai diminuindo para malhas muito finas (5 { ).
Figura 3. Decaimento do erro com o aumento do nmero de ns da malha (tipo B; nota: 5= * y 5 ^ ). Escala semi-logartmica.
Este andamento do erro quando visto em escala linear em funo do nmero de ns tpico, indicando uma reduo proporcional a uma certa potncia de 5 . Para se obter a
-9-
taxa de reduo do erro (ou ordem de convergncia do esquema), necessrio apresentar o erro em escala logartmica, em funo do espaamento da malha %. Como teoricamente temos,
, * %
para um esquema de ordem (* a constante assimpttica do erro), podemos escrever: log, log* ] log %. Portanto, um grfico em escala logartmica do erro em funo do espaamento da malha deve mostar uma recta de cuja inclinao possvel extrair a ordem de convergncia do esquema numrico (o ndice das equaes acima). A Fig. 4 apresenta um grfico em escala logartmica do erro de discretizao em vrias malhas do tipo-B. Este grfico torna patente, e demonstra na prctica, o exposto acima: num grfico em escala log-log, o erro decai segundo uma linha recta com inclinao de 1.97 (inclinao da linha a trao contnuo na figura, obtida atravs de interpolao automtica - feita pelo programa de grficos - em lei de potncia). Este expoente est muito prximo do expoente 2 vlido para o esquema de diferenas centrais utilizado na discretizao (esquema de segunda ordem).
Figura 4. Decaimento do erro com o refinamento de malha (tipo B). Escala logartmica para o erro e o espaamento %. Nota: para a malha tipo A o erro sempre muito pequeno.
-10-
6. Concluses Foram apresentados dois pequenos programas em Fortran para a resoluo de problemas de conduo de calor unidimensional, em regime estacionrio, com ou sem fontes de calor. Os programas esto feitos para condies fronteira do tipo de Dirichlet (temperaturas impostas) e distinguem-se pelo tipo de malha empregue (tipo A e B), que tem influncia na implementao dessas condies fronteira. Para o caso de condutibilidade trmica constante e fonte de calor uniforme, mostrou-se que: para malhas tipo A, o tratamento dos fluxos junto fronteira idntico ao tratamento dos fluxos interiores, ambos sendo aproximados com diferenas centrais (de segunda ordem) pelo que conduzem soluo exacta, qualquer que seja o nmero de ns; para malhas tipo B, o tratamento junto fronteira introduz um erro de primeira ordem que se reflecte na preciso da soluo numrica; no entanto, o erro de discretizao varia como % , ficando provado que o mtodo global continua a ser de seguna ordem.
Referncias [1] "Mecnica Computacional. Notas Didcticas", P.J. Oliveira, Reprog. UBI, 2001. [2] "Numerical Heat Transfer and Fluid Flow", S.V. Patankar, Hemisphere Pub., 1980.
-11-
-12-
Y=0. ERTOT=0.0 DO I=1,N C CLCULO DA SOLUO TERICA E ERRO DE DISCRETIZAO Y=PHI1+(PHIN-PHI1)/XTOT*X-SU/2./D*(X**2-XTOT*X) ERR=ABS(PHI(I)-Y)/Y ERTOT=ERTOT+ERR WRITE(10,*) X,PHI(I),Y,ERR X=X+DX END DO PRINT *,' TOTAL ERROR =', ERTOT/FLOAT(NM2) STOP END C********************************************************************* C **** TDMA **** C SUBROUTINA PARA RESOLVER SISTEMA TRIDIAGONAL: C PHI(i) = AS(i).PHI(i-1) + AN(i).PHI(i+1) + SU(i) C SUBROUTINE TDMA(PHI,AN,AS,SU,I1,IE,NC) PARAMETER(NMAX=10000) DIMENSION A(0:NMAX),C(0:NMAX) DIMENSION PHI(NC), AN(NC),AS(NC),SU(NC) IA=I1-1 A(IA)=0.0 C(IA)=0.0 DO 1 I=I1,IE DEN=1./(1.-AS(I)*A(I-1)) A(I)=AN(I)*DEN C(I)=(AS(I)*C(I-1)+SU(I))*DEN 1 CONTINUE DO 2 II=I1,IE I=IE-II+I1 PHI(I)=PHI(I+1)*A(I)+C(I) 2 CONTINUE RETURN END
-13-
PROGRAM EQ2DB C C TO SOLVE DIFFUSION EQ. WITH A CONSTANT SOURCE TERM C D*d2(PHI)/dx2 + S=0 C ** MESH TYPE-B ** PARAMETER(NMAX=10000) DIMENSION S(NMAX),PHI(NMAX),AE(NMAX),AW(NMAX),SP(NMAX) OPEN(10,FILE='EQ1DB.DAT') PRINT *,' GIVE N' READ(*,*) N C GIVEN DATA XTOT=8. PHI1=100. PHIN=100. D=5. SU=50. C NOTE: MESH TYPE B DX=XTOT/FLOAT(N-2) NM1=N-1 NM2=N-2 C C SET UP COEFFICIENTS DO I=2,NM1 S(I)=SU*DX AE(I)=D/DX AW(I)=D/DX SP(I)=0.0 END DO C C BOUNDARY CONDITIONS PHI(1)=PHI1 PHI(N)=PHIN S(2)=S(2)+2.*AW(2)*PHI(1) SP(2)=SP(2)+2.*AW(2) AW(2)=0.0 S(NM1)=S(NM1)+2.*AE(NM1)*PHI(N) SP(NM1)=SP(NM1)+2.*AE(NM1) AE(NM1)=0.0 C C PREPARE COEFFICIENTS FOR TDMA DO I=2,NM1 AP=AE(I)+AW(I)+SP(I) S(I)=S(I)/AP AE(I)=AE(I)/AP AW(I)=AW(I)/AP END DO C C SOLVE TRIDIAGONAL SYSTEM OF EQUATIONS CALL TDMA(PHI,AE,AW,S,2,NM1,N) C C WRITE SOLUTION TO DATA FILE X=0. ERTOT=0.0 DO I=1,N
-14-
C THEORETICAL SOLUTION WITH SOURCE Y=PHI1+(PHIN-PHI1)/XTOT*X-SU/2./D*(X**2-XTOT*X) ERR=ABS(PHI(I)-Y)/Y ERTOT=ERTOT+ERR WRITE(10,*) X,PHI(I),Y,ERR DXX=DX IF(I.EQ.1.OR.I.EQ.NM1) DXX=DX/2. X=X+DXX END DO PRINT *,' TOTAL ERROR =', ERTOT/FLOAT(NM2) STOP END C********************************************************************* C C TO SOLVE TRI-DIAGONAL SYSTEMS: C PHI(i) = AS(i).PHI(i-1) + AN(i).PHI(i+1) + SU(i) C SUBROUTINE TDMA(PHI,AN,AS,SU,I1,IE,NC) PARAMETER(NMAX=10000) DIMENSION A(0:NMAX),C(0:NMAX) DIMENSION PHI(NC), AN(NC),AS(NC),SU(NC) IA=I1-1 A(IA)=0.0 C(IA)=0.0 DO 1 I=I1,IE DEN=1./(1.-AS(I)*A(I-1)) A(I)=AN(I)*DEN C(I)=(AS(I)*C(I-1)+SU(I))*DEN 1 CONTINUE DO 2 II=I1,IE I=IE-II+I1 PHI(I)=PHI(I+1)*A(I)+C(I) 2 CONTINUE RETURN END
-15-