*=*=*=*= diverg.html =*=*=*=*
SUBROUTINE diverg

SUBROUTINE diverg


      SUBROUTINE diverg(klevel,x,y,div)
c
c     Auteur :  P. Le Van
c
c  *********************************************************************
c  ... calcule la divergence a tous les niveaux d'1 vecteur de compos.
c     x et y...
c           x et y  etant des composantes contravariantes   ...
c  *********************************************************************
      IMPLICIT NONE
c
c      x  et  y  sont des arguments  d'entree pour le s-prog
c        div      est  un argument  de sortie pour le s-prog
c
c
#include "dimensions.h"
#include "paramet.h"
      INTEGER klevel
      REAL x( ip1jmp1,klevel ),y( ip1jm,klevel ),div( ip1jmp1,klevel )
      INTEGER   l,ij
c
#include "comgeom.h"
      REAL aiy1( iip1 ) , aiy2( iip1 )
      REAL sumypn,sumyps
c
      EXTERNAL  SSUM
      REAL      SSUM
c
      DO 10 l = 1,klevel
c
      DO 1 ij = iip2, ip1jm - 1
      div( ij + 1, l ) =     unsaire( ij + 1 )   *
     *  (  aireu(  ij+1  ) * x( ij+1 , l) - aireu(  ij  ) * x( ij , l) +
     *     airev( ij-iim ) * y(ij-iim, l) - airev( ij+1 ) * y(ij+1, l) )
   1  CONTINUE
c
c     ....  correction pour  div( 1,j,l)  ......
c     ....   div(1,j,l)= div(iip1,j,l) ....
c
CDIR$ IVDEP
      DO 3 ij = iip2,ip1jm,iip1
      div( ij,l ) = div( ij + iim,l )
   3  CONTINUE
c
c     ....  calcul  aux poles  .....
c
c
      DO 5 ij  = 1,iim
      aiy1(ij) = airev(     ij      ) * y(     ij     , l )
      aiy2(ij) = airev( ij+ ip1jmi1 ) * y( ij+ ip1jmi1, l )
   5  CONTINUE
      sumypn = SSUM ( iim,aiy1,1 )
      sumyps = SSUM ( iim,aiy2,1 )
      DO 7 ij = 1,iip1
      div(     ij    , l ) = - sumypn/apoln
      div( ij + ip1jm, l ) =   sumyps/apols
   7  CONTINUE
c
  10  CONTINUE
      RETURN
      END