/[lmdze]/trunk/Sources/dyn3d/enercin.f
ViewVC logotype

Diff of /trunk/Sources/dyn3d/enercin.f

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

trunk/dyn3d/enercin.f revision 76 by guez, Fri Nov 15 18:45:49 2013 UTC trunk/dyn3d/enercin.f90 revision 81 by guez, Wed Mar 5 14:38:41 2014 UTC
# Line 1  Line 1 
 !  
 ! $Header: /home/cvsroot/LMDZ4/libf/dyn3d/enercin.F,v 1.1.1.1 2004/05/19 12:53:06 lmdzadmin Exp $  
 !  
       SUBROUTINE enercin ( vcov, ucov, vcont, ucont, ecin )  
       use dimens_m  
       use paramet_m  
       use comgeom  
       IMPLICIT NONE  
1    
2  c=======================================================================  ! $Header: /home/cvsroot/LMDZ4/libf/dyn3d/enercin.F,v 1.1.1.1 2004/05/19
3  c  ! 12:53:06 lmdzadmin Exp $
 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=======================================================================  
4    
5    SUBROUTINE enercin(vcov, ucov, vcont, ucont, ecin)
6      USE dimens_m
7      USE paramet_m
8      USE comgeom
9      IMPLICIT NONE
10    
11        REAL, intent(in):: vcov( ip1jm,llm ), ucov( ip1jmp1,llm )    ! =======================================================================
       real vcont( ip1jm,llm ) ,ucont( ip1jmp1,llm ),ecin( ip1jmp1,llm )  
12    
13        REAL ecinni( iip1 ),ecinsi( iip1 )    ! Auteur: P. Le Van
14      ! -------
15    
16        REAL ecinpn, ecinps    ! Objet:
17        INTEGER     l,ij,i    ! ------
18    
19        REAL        SSUM    ! *********************************************************************
20      ! .. calcul de l'energie cinetique aux niveaux s  ......
21      ! *********************************************************************
22      ! vcov, vcont, ucov et ucont sont des arguments d'entree pour le s-pg .
23      ! ecin         est  un  argument de sortie pour le s-pg
24    
25      ! =======================================================================
26    
27    
28  c                 . V    REAL, INTENT (IN) :: vcov(ip1jm, llm), ucov(ip1jmp1, llm)
29  c                i,j-1    REAL vcont(ip1jm, llm), ucont(ip1jmp1, llm), ecin(ip1jmp1, llm)
30    
31  c      alpha4 .       . alpha1    REAL ecinni(iip1), ecinsi(iip1)
32    
33      REAL ecinpn, ecinps
34      INTEGER l, ij, i
35    
36  c        U .      . P     . U    REAL ssum
 c       i-1,j    i,j      i,j  
37    
 c      alpha3 .       . alpha2  
38    
39    
40  c                 . V    ! . V
41  c                i,j    ! i,j-1
42    
43  c        ! alpha4 .       . alpha1
 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 )  
44    
45    
46        DO 5 l = 1,llm    ! U .      . P     . U
47      ! i-1,j    i,j      i,j
48    
49        DO 1  ij = iip2, ip1jm -1    ! alpha3 .       . alpha2
       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  
50    
 c    ... correction pour  ecin(1,j,l)  ....  
 c    ...   ecin(1,j,l)= ecin(iip1,j,l) ...  
51    
52  CDIR$ IVDEP    ! . V
53        DO 2 ij = iip2, ip1jm, iip1    ! i,j
       ecin( ij,l ) = ecin( ij + iim, l )  
    2  CONTINUE  
54    
 c     calcul aux poles  .......  
55    
56      ! L'energie cinetique au point scalaire P(i,j) ,autre que les poles, est :
57      ! Ecin = 0.5 * U(i-1,j)**2 *( alpha3 + alpha4 )  +
58      ! 0.5 * U(i  ,j)**2 *( alpha1 + alpha2 )  +
59      ! 0.5 * V(i,j-1)**2 *( alpha1 + alpha4 )  +
60      ! 0.5 * V(i,  j)**2 *( alpha2 + alpha3 )
61    
       DO 3 i = 1, iim  
       ecinni(i) = vcov(    i  ,  l) * vcont(    i    ,l) * aire(   i   )  
       ecinsi(i) = vcov(i+ip1jmi1,l) * vcont(i+ip1jmi1,l) * aire(i+ip1jm)  
    3  CONTINUE  
62    
63        ecinpn = 0.5 * SSUM( iim,ecinni,1 ) / apoln    DO l = 1, llm
       ecinps = 0.5 * SSUM( iim,ecinsi,1 ) / apols  
64    
65        DO 4 ij = 1,iip1      DO ij = iip2, ip1jm - 1
66        ecin(   ij     , l ) = ecinpn        ecin(ij+1, l) = 0.5*(ucov(ij,l)*ucont(ij,l)*alpha3p4(ij+1)+ucov(ij+1,l) &
67        ecin( ij+ ip1jm, l ) = ecinps          *ucont(ij+1,l)*alpha1p2(ij+1)+vcov(ij-iim,l)*vcont(ij-iim,l)*alpha1p4 &
68     4  CONTINUE          (ij+1)+vcov(ij+1,l)*vcont(ij+1,l)*alpha2p3(ij+1))
69        END DO
70    
71     5  CONTINUE      ! ... correction pour  ecin(1,j,l)  ....
72        RETURN      ! ...   ecin(1,j,l)= ecin(iip1,j,l) ...
73        END  
74        ! DIR$ IVDEP
75        DO ij = iip2, ip1jm, iip1
76          ecin(ij, l) = ecin(ij+iim, l)
77        END DO
78    
79        ! calcul aux poles  .......
80    
81    
82        DO i = 1, iim
83          ecinni(i) = vcov(i, l)*vcont(i, l)*aire(i)
84          ecinsi(i) = vcov(i+ip1jmi1, l)*vcont(i+ip1jmi1, l)*aire(i+ip1jm)
85        END DO
86    
87        ecinpn = 0.5*ssum(iim, ecinni, 1)/apoln
88        ecinps = 0.5*ssum(iim, ecinsi, 1)/apols
89    
90        DO ij = 1, iip1
91          ecin(ij, l) = ecinpn
92          ecin(ij+ip1jm, l) = ecinps
93        END DO
94    
95      END DO
96      RETURN
97    END SUBROUTINE enercin

Legend:
Removed from v.76  
changed lines
  Added in v.81

  ViewVC Help
Powered by ViewVC 1.1.21