/[lmdze]/trunk/libf/phylmd/Conflx/conflx.f90
ViewVC logotype

Diff of /trunk/libf/phylmd/Conflx/conflx.f90

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

revision 70 by guez, Mon Jun 24 15:39:52 2013 UTC revision 71 by guez, Mon Jul 8 18:12:18 2013 UTC
# Line 5  module conflx_m Line 5  module conflx_m
5  contains  contains
6    
7    SUBROUTINE conflx (dtime, pres_h, pres_f, t, q, con_t, con_q, qhfl, w, &    SUBROUTINE conflx (dtime, pres_h, pres_f, t, q, con_t, con_q, qhfl, w, &
8         d_t, d_q, rain, snow, pmfu, pmfd, pen_u, pde_u, pen_d, pde_d, kcbot, &         d_t, d_q, rain, snow, mfu, mfd, pen_u, pde_u, pen_d, pde_d, kcbot, &
9         kctop, kdtop, pmflxr, pmflxs)         kctop, kdtop, pmflxr, pmflxs)
10    
11      ! From LMDZ4/libf/phylmd/conflx.F, version 1.1.1.1 2004/05/19 12:53:08      ! From LMDZ4/libf/phylmd/conflx.F, version 1.1.1.1 2004/05/19 12:53:08
# Line 30  contains Line 30  contains
30      REAL, intent(in):: pres_h(:, :) ! (klon, klev+1) pression half-level (Pa)      REAL, intent(in):: pres_h(:, :) ! (klon, klev+1) pression half-level (Pa)
31      REAL, intent(in):: pres_f(:, :) ! (klon, klev) pression full-level (Pa)      REAL, intent(in):: pres_f(:, :) ! (klon, klev) pression full-level (Pa)
32      REAL, intent(in):: t(:, :) ! (klon, klev) temperature (K)      REAL, intent(in):: t(:, :) ! (klon, klev) temperature (K)
33      REAL, intent(in):: q(:, :) ! (klon, klev) humidité spécifique (g/g)      REAL, intent(in):: q(:, :) ! (klon, klev) humidité spécifique (no dimension)
34    
35      REAL, intent(in):: con_t(:, :)      REAL, intent(in):: con_t(:, :)
36      ! (klon, klev) convergence de temperature (K/s)      ! (klon, klev) convergence de temperature (K/s)
# Line 46  contains Line 46  contains
46      REAL, intent(out):: rain(:) ! (klon) pluie (mm/s)      REAL, intent(out):: rain(:) ! (klon) pluie (mm/s)
47      REAL, intent(out):: snow(:) ! (klon) neige (mm/s)      REAL, intent(out):: snow(:) ! (klon) neige (mm/s)
48    
49      REAL, intent(out):: pmfu(:, :) ! (klon, klev)      REAL, intent(out):: mfu(:, :) ! (klon, klev)
50      ! flux masse (kg/m2/s) panache ascendant      ! flux de masse (kg/m2/s) panache ascendant
51    
52      REAL, intent(out):: pmfd(:, :) ! (klon, klev)      REAL, intent(out):: mfd(:, :) ! (klon, klev)
53      ! flux masse (kg/m2/s) panache descendant      ! flux de masse (kg/m2/s) panache descendant
54    
55      REAL, intent(out):: pen_u(:, :) ! (klon, klev)      REAL, intent(out):: pen_u(:, :) ! (klon, klev)
56      REAL, intent(out):: pde_u(:, :) ! (klon, klev)      REAL, intent(out):: pde_u(:, :) ! (klon, klev)
# Line 64  contains Line 64  contains
64    
65      ! Local:      ! Local:
66    
67      REAL pq(klon, klev)      REAL qsen(klon, klev)
     REAL pqs(klon, klev)  
68      REAL pvervel(klon, klev)      REAL pvervel(klon, klev)
69      LOGICAL land(klon)      LOGICAL land(klon)
70    
# Line 77  contains Line 76  contains
76      REAL zcvgq(klon, klev)      REAL zcvgq(klon, klev)
77      REAL zcvgt(klon, klev)      REAL zcvgt(klon, klev)
78    
     REAL zmfu(klon, klev)  
     REAL zmfd(klon, klev)  
79      REAL zen_u(klon, klev)      REAL zen_u(klon, klev)
80      REAL zen_d(klon, klev)      REAL zen_d(klon, klev)
81      REAL zde_u(klon, klev)      REAL zde_u(klon, klev)
# Line 103  contains Line 100  contains
100         DO i = 1, klon         DO i = 1, klon
101            d_t(i, k) = 0.0            d_t(i, k) = 0.0
102            d_q(i, k) = 0.0            d_q(i, k) = 0.0
           pmfu(i, k) = 0.0  
           pmfd(i, k) = 0.0  
103            pen_u(i, k) = 0.0            pen_u(i, k) = 0.0
104            pde_u(i, k) = 0.0            pde_u(i, k) = 0.0
105            pen_d(i, k) = 0.0            pen_d(i, k) = 0.0
106            pde_d(i, k) = 0.0            pde_d(i, k) = 0.0
           zmfu(i, k) = 0.0  
           zmfd(i, k) = 0.0  
107            zen_u(i, k) = 0.0            zen_u(i, k) = 0.0
108            zde_u(i, k) = 0.0            zde_u(i, k) = 0.0
109            zen_d(i, k) = 0.0            zen_d(i, k) = 0.0
# Line 133  contains Line 126  contains
126      ! verticaux augmente du haut vers le bas)      ! verticaux augmente du haut vers le bas)
127      DO k = 1, klev      DO k = 1, klev
128         DO i = 1, klon         DO i = 1, klon
           pq(i, k) = q(i, klev-k+1)  
129            paprsf(i, k) = pres_f(i, klev-k+1)            paprsf(i, k) = pres_f(i, klev-k+1)
130            paprs(i, k) = pres_h(i, klev+1-k+1)            paprs(i, k) = pres_h(i, klev+1-k+1)
131            pvervel(i, k) = w(i, klev+1-k)            pvervel(i, k) = w(i, klev+1-k)
# Line 142  contains Line 134  contains
134    
135            zqsat = MIN(0.5, R2ES * FOEEW(t(i, k), &            zqsat = MIN(0.5, R2ES * FOEEW(t(i, k), &
136                 merge(0., 1., rtt < t(i, k))) / paprsf(i, k))                 merge(0., 1., rtt < t(i, k))) / paprsf(i, k))
137            pqs(i, k) = zqsat / (1. - RETV * zqsat)            qsen(i, k) = zqsat / (1. - RETV * zqsat)
138         ENDDO         ENDDO
139      ENDDO      ENDDO
140      DO i = 1, klon      DO i = 1, klon
# Line 160  contains Line 152  contains
152      ENDDO      ENDDO
153    
154      ! Appeler la routine principale :      ! Appeler la routine principale :
155      CALL flxmain(dtime, t, pq, pqs, qhfl, paprsf, paprs, zgeom, land, &      CALL flxmain(dtime, t, q, qsen, qhfl, paprsf, paprs, zgeom, land, &
156           zcvgt, zcvgq, pvervel, rain, snow, kcbot, kctop, kdtop, zmfu, zmfd, &           zcvgt, zcvgq, pvervel, rain, snow, kcbot, kctop, kdtop, mfu, mfd, &
157           zen_u, zde_u, zen_d, zde_d, d_t_bis, d_q_bis, zmflxr, zmflxs)           zen_u, zde_u, zen_d, zde_d, d_t_bis, d_q_bis, zmflxr, zmflxs)
158    
159      ! De la même façon que l'on effectue le réindiçage pour la      ! De la même façon que l'on effectue le réindiçage pour la
# Line 174  contains Line 166  contains
166         ENDDO         ENDDO
167      ENDDO      ENDDO
168    
169      DO i = 1, klon      mfu = eoshift(mfu, shift=1, dim=2)
170         pmfu(i, 1)= 0.      mfd = eoshift(mfd, shift=1, dim=2)
171         pmfd(i, 1)= 0.      pen_d(:, 1)= 0.
172         pen_d(i, 1)= 0.      pde_d(:, 1)= 0.
        pde_d(i, 1)= 0.  
     ENDDO  
   
     DO k = 2, klev  
        DO i = 1, klon  
           pmfu(i, klev+2-k)= zmfu(i, k)  
           pmfd(i, klev+2-k)= zmfd(i, k)  
        ENDDO  
     ENDDO  
173    
174      DO k = 1, klev      DO k = 1, klev
175         DO i = 1, klon         DO i = 1, klon

Legend:
Removed from v.70  
changed lines
  Added in v.71

  ViewVC Help
Powered by ViewVC 1.1.21