*=*=*=*= vanleer.html =*=*=*=*
SUBROUTINE vanleer(numvanle,iapp_tracvl,nq,q,pbaru,pbarv , * pext, dq ) c IMPLICIT NONE c c Auteurs: F.Hourdin , P.Le Van, F.Forget c======================================================================= c c Shema de Van Leer c c======================================================================= #include "dimensions.h" #include "paramet.h" #include "comconst.h" c Arguments: c ---------- INTEGER nq,numvanle,iapp_tracvl REAL pbaru( ip1jmp1,llm ),pbarv( ip1jm,llm),pext(ip1jmp1) REAL q( ip1jmp1,llm,nq),dq( ip1jmp1,llm, 2 ) c .................................................................. c c .. dq n'est utilise et dimensionne que pour l'eau vapeur et liqu. c c numvanle est le numero du premier traceur qui appelle le c shema de Van-Leer ( 1<= numvanle <= nqmx ) . c .................................................................. c c Local: c ------ EXTERNAL tracvl,minmaxq, qminimum INTEGER ij,l, iq REAL finpe(ip1jmp1) cc CALL SCOPY ( ip1jmp1, pext, 1, finpe, 1 ) CALL filtreg ( finpe ,jjp1, 1, -2,2, .TRUE., 1 ) c .. Si numvanle = 1 , l'eau vapeur et l'eau liq. ont le shema Van-Leer . c IF( numvanle.EQ.1 ) THEN CALL SCOPY( 2 * ijp1llm, q, 1, dq, 1 ) c test des valeurs minmax CALL minmaxq(q(1,1,1),1.e33,-1.e33,'Eau vapeur (a) ') CALL minmaxq(q(1,1,2),1.e33,-1.e33,'Eau liquide(a) ') ENDIF c advection CALL tracvl( numvanle,iapp_tracvl,nq,pbaru,pbarv,finpe,q) IF( numvanle.EQ.1 ) THEN c CALL minmaxq(q(1,1,1),1.e33,-1.e33,'Eau vapeur ') CALL minmaxq(q(1,1,2),1.e33,-1.e33,'Eau liquide ') CALL qminimum( q, 2 ) c c Calcul de dq pour l'eau pour passer a la physique c DO iq = 1 , 2 DO l=1,llm DO ij=1,ip1jmp1 dq(ij,l,iq)=(q(ij,l,iq)-dq(ij,l,iq))*finpe(ij) * / ( iapp_tracvl * dtvr ) ENDDO ENDDO ENDDO c ENDIF c ... On appelle qminimum uniquement pour l'eau vapeur et liquide .. RETURN END