      SUBROUTINE enercin_p ( vcov, ucov, vcont, ucont, ecin )
      USE parallel
      IMPLICIT NONE

c=======================================================================
c
c   Auteur: P. Le Van
c   -------
c
c   Objet:
c   ------
c
c *********************************************************************
c .. calcul de l'energie cinetique aux niveaux s  ......
c *********************************************************************
c  vcov, vcont, ucov et ucont sont des arguments d'entree pour le s-pg .
c  ecin         est  un  argument de sortie pour le s-pg
c
c=======================================================================

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

      REAL vcov( ip1jm,llm ),vcont( ip1jm,llm ),
     * ucov( ip1jmp1,llm ),ucont( ip1jmp1,llm ),ecin( ip1jmp1,llm )

      REAL ecinni( iip1 ),ecinsi( iip1 )

      REAL ecinpn, ecinps
      INTEGER     l,ij,i,ijb,ije

      EXTERNAL    SSUM
      REAL        SSUM



c                 . V
c                i,j-1

c      alpha4 .       . alpha1


c        U .      . P     . U
c       i-1,j    i,j      i,j

c      alpha3 .       . alpha2


c                 . V
c                i,j

c    
c  L'energie cinetique au point scalaire P(i,j) ,autre que les poles, est :
c       Ecin = 0.5 * U(i-1,j)**2 *( alpha3 + alpha4 )  +
c              0.5 * U(i  ,j)**2 *( alpha1 + alpha2 )  +
c              0.5 * V(i,j-1)**2 *( alpha1 + alpha4 )  +
c              0.5 * V(i,  j)**2 *( alpha2 + alpha3 )

c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
      DO 5 l = 1,llm
      
      ijb=ij_begin
      ije=ij_end+iip1
      
      IF (pole_nord) ijb=ij_begin+iip1
      IF (pole_sud)  ije=ij_end-iip1
      
      DO 1  ij = ijb, ije -1
      ecin( ij+1, l )  =    0.5  *
     * (   ucov( ij   ,l ) * ucont( ij   ,l ) * alpha3p4( ij +1 )   +
     *     ucov( ij+1 ,l ) * ucont( ij+1 ,l ) * alpha1p2( ij +1 )   +
     *     vcov(ij-iim,l ) * vcont(ij-iim,l ) * alpha1p4( ij +1 )   +
     *     vcov( ij+ 1,l ) * vcont( ij+ 1,l ) * alpha2p3( ij +1 )   )
   1  CONTINUE

c    ... correction pour  ecin(1,j,l)  ....
c    ...   ecin(1,j,l)= ecin(iip1,j,l) ...

CDIR$ IVDEP
      DO 2 ij = ijb, ije, iip1
      ecin( ij,l ) = ecin( ij + iim, l )
   2  CONTINUE

c     calcul aux poles  .......

      IF (pole_nord) THEN
    
        DO  i = 1, iim
         ecinni(i) = vcov(    i  ,  l) * 
     *               vcont(    i    ,l) * aire(   i   )
        ENDDO

        ecinpn = 0.5 * SSUM( iim,ecinni,1 ) / apoln

        DO ij = 1,iip1
          ecin(   ij     , l ) = ecinpn
        ENDDO
   
      ENDIF

      IF (pole_sud) THEN
    
        DO  i = 1, iim
         ecinsi(i) = vcov(i+ip1jmi1,l)* 
     *               vcont(i+ip1jmi1,l) * aire(i+ip1jm)
        ENDDO

        ecinps = 0.5 * SSUM( iim,ecinsi,1 ) / apols

        DO ij = 1,iip1
          ecin( ij+ ip1jm, l ) = ecinps
        ENDDO
   
      ENDIF

      
   5  CONTINUE
c$OMP END DO NOWAIT
      RETURN
      END
