You are on page 1of 15

Programa de Computador para Resolver a Equao do Calor Unidimensional

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.

2. Formulao do Problema. Equaes Diferenciais de Partida. Concretamente, pretende-se resolver a equao:


d ;  d%2 ] : y 

(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

Integrando uma vez, obtm-se:


: d; y ^  % ] * . d%

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),

o que permite obter:

* y ;
e

* y

; ^; :3 ]  3

A soluo da equao fica finalmente:


% :3 ; % y ; ] ; ^ ; 3 ]  % 6 ^ 3


% ]3

7.

(3)

ou, em termos adimensionais:


; ^; 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 , ;

com : Z :3 ; .

(5)

A Eq. (3) vai servir para validar os resultados da simulao numrica.

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

(a) Malha tipo-A

x P T w w qw E

e qe

(b) Malha tipo-B

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":

 y  ] > ;> y 7 y , ] > > y 

:7  %7 ] > ;> (;> a temperatura dada).


(8)

A equao para o volume de controlo 7 junto fronteira fica, ento:

, ] > ) ;7 y , ;, ] > ;> ] :7  %7

<

(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

(> da Eq. 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:

, ] > ) ;7 y , ;, ] > ;> ] :7  %7

<

(12)

Desta equao, torna-se bvio que as condies fronteira podem ser implementadas da seguinte forma: Volume de controlo 7 , junto fronteira em "Oeste":

> y  > usual y $  %7 7 y , ] >  y  ] > ;$ > y 


Um problema desta formulao que o fluxo de calor na fronteira dado pela Eq. (11) obtido atravs de uma aproximao de primeira ordem em  % (concretamente, a derivada C; C% na fronteira foi aproximada como uma diferena descendente de primeira ordem, calculada no ponto $), e portanto a preciso menor do que a existente nos termos correspondentes aos volumes de controlo interiores. Esta perda de preciso junto fronteira em parte compensada pelo facto da distncia entre o n $ e o n 7 ser menor do que o  % interior (de facto, metade). No entanto, para malhas grosseiras, essa inconsistncia vai introduzir erros apreciveis; esses erros tendem a diminuir rapidamente quando a malha refinada, como ser mostrado pelos presentes resultados. (;$ a temperatura dada sobre a fronteira). (13)

-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-

LISTAGENS DOS PROGRAMAS DE COMPUTADOR EM FORTRAN


PROGRAM EQ1DA C C PARA RESOLVER EQ. CONDUO DO CALOR 1D COM TERMO FONTE C D*d2(PHI)/dx2 + S=0 C ** MALHA TIPO-A ** PARAMETER(NMAX=10000) DIMENSION S(NMAX),PHI(NMAX),AE(NMAX),AW(NMAX),SP(NMAX) OPEN(10,FILE='EQ1DA.DAT') C LER NUMERO TOTAL DE NS DA MALHA PRINT *,' GIVE N' READ(*,*) N C DADOS DE PARTIDA (INPUT) XTOT=8. PHI1=100. PHIN=100. D=5. SU=50. C NOTA: MALHA TIPO A DX=XTOT/FLOAT(N-1) NM1=N-1 NM2=N-2 C C CALCULAR OS COEFICIENTES (VC interiores) DO I=2,NM1 S(I)=SU*DX AE(I)=D/DX AW(I)=D/DX SP(I)=0.0 END DO C C CONDIES FRONTEIRA PHI(1)=PHI1 PHI(N)=PHIN S(2)=S(2)+AW(2)*PHI(1) SP(2)=SP(2)+AW(2) AW(2)=0.0 S(NM1)=S(NM1)+AE(NM1)*PHI(N) SP(NM1)=SP(NM1)+AE(NM1) AE(NM1)=0.0 C C PREPARAR COEFICIENTES PARA TDMA (so divididos por AP) 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 RESOLVER OS SITEMA DE EQUAES TRIDIAGONAIS CALL TDMA(PHI,AE,AW,S,2,NM1,N) C C ESCREVER OS RESULTADOS NUM FICHEIRO DE SADA (OUTPUT) X=0.

-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-

You might also like