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

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

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

  ViewVC Help
Powered by ViewVC 1.1.21