*=*=*=*= vanleer.html =*=*=*=*
SUBROUTINE vanleer

SUBROUTINE vanleer


      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