*=*=*=*= caldyn.html =*=*=*=*
SUBROUTINE caldyn

SUBROUTINE caldyn


      SUBROUTINE     caldyn
     $  (itau, ucov, vcov, h, pext, pks, pksf, phis   ,
     $   phi, conser, du, dv, dh, dp, w, pbaru, pbarv, time    )
      IMPLICIT NONE

c=======================================================================
c
c   Auteurs :  P. Le Van , F.Hourdin
c
c   Objet:
c   -------
c           ******************************************
c           *    Calcul des tendances dynamiques.    *
c           ******************************************
c
c
c Modif 04/93 F.Forget
c=======================================================================

c-----------------------------------------------------------------------
c   0. Declarations:
c   ----------------

#include "dimensions.h"
#include "paramet.h"
#include "comconst.h"
#include "comvert.h"
#include "comgeom.h"

c   Arguments:
c   ----------

      LOGICAL conser

      INTEGER itau
      REAL vcov(ip1jm,llm),ucov(ip1jmp1,llm),h(ip1jmp1,llm)
      REAL pext(ip1jmp1),pks(ip1jmp1),pksf(ip1jmp1),phis(ip1jmp1)
      REAL vcont(ip1jm,llm),ucont(ip1jmp1,llm)
      REAL phi(ip1jmp1,llm)
      REAL dv(ip1jm,llm),du(ip1jmp1,llm)
      REAL dh(ip1jmp1,llm),dp(ip1jmp1)
      REAL pbaru(ip1jmp1,llm),pbarv(ip1jm,llm)
      REAL time

c   Local:
c   ------

      REAL ang(ip1jmp1,llm)
      REAL pbarx(ip1jmp1),pbary(ip1jm),pbarxy(ip1jm)
      REAL vorpot(ip1jm,llm)
      REAL w(ip1jmp1,llm),ecin(ip1jmp1,llm),convm(ip1jmp1,llm)
      REAL bern(ip1jmp1,llm)

      INTEGER ij,l
      EXTERNAL  advect,bernoui,convmas,covcont,dh1,dudv1,dudv2,
     *          enercin,flumass,pbar,tourpot,vitvert,sortvarc,traceur

c
cc   -----------------------------------------------------------------
cc   ....  Signification  des  routines appelees dans  caldyn  .....
cc   -----------------------------------------------------------------
c
c   covcont :  calcul des composantes contravariantes du vent.
c   pbar    :  calcul des moyennes horizontales des pressions.
c   flumass :  calcul des flux de masse horizontaux pbaru, pbarv.
c   dh1     :  calcul des tendances sur "h" due a l'advection horizont.
c   convmas :  calcul de la convergence de masse.
c   vitvert :  calcul du flux de masse vertical.
c   tourpot :  calcul de la vorticite potentielle absolue (barotrope).
c   dudv1   :  calcul du terme de vorticite dans l'equation du mouvement
c   enercin :  calcul de l'energie cinetique.
c   bernoui :  calcul de fonction de Bernouilli = ( phi + ecin ) filtre.
c   dudv2   :  calcul des termes de  gradient de Bernoulli et de ps.
c   advect  :  calcul de l'advection verticale.
c   sortvarc:  calcul et sortie de variables de controle.
c
c
c
c   *****************************************************************
c
      CALL covcont ( llm, ucov, vcov, ucont, vcont            )
      CALL pbar    ( pext ,pbarx , pbary, pbarxy              )
      CALL flumass ( pbarx, pbary, vcont, ucont ,pbaru, pbarv )
      CALL dh1     ( h, pbaru, pbarv, dh                      )
      CALL convmas ( pbaru, pbarv, convm                      )

c    .....  calcul de la tendance de ' ps * aire '  ......
c
      DO    ij   = 1, ip1jmp1
        dp( ij ) = convm( ij,1 )
      ENDDO

      CALL vitvert ( convm , w                              )
      CALL tourpot ( vcov  , ucov  , pbarxy  , vorpot       )
      CALL dudv1   ( vorpot, pbaru , pbarv   , du    , dv   )
      CALL enercin ( vcov  , ucov  , vcont   , ucont , ecin )
      CALL bernoui ( ip1jmp1,llm   ,  phi    , ecin  , bern )
      CALL dudv2   ( h     , pksf  , bern    , du    , dv   )

c    .....  calcul du moment cinetique  .......
c
      DO l = 1, llm
         DO   ij    = 1, ip1jmp1
           ang(ij,l)= ucov(ij,l) + constang(ij)
         ENDDO
      ENDDO

      CALL advect(ang,vcov,h,w,pbarx,pbary,du,dv,dh)

c   *****************************************************************
c
c       sortie eventuelle des variables de controle:
c      ----------------------------------------------

      IF (conser) CALL sortvarc
     $ (itau,ucov,h,pext,pks,phis,pbarx,pbarxy,vorpot,phi,bern,dp
     .   ,time)


        RETURN
        END