/[lmdze]/trunk/phylmd/Conflx/flxmain.f
ViewVC logotype

Diff of /trunk/phylmd/Conflx/flxmain.f

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

revision 76 by guez, Fri Nov 15 18:45:49 2013 UTC revision 78 by guez, Wed Feb 5 17:51:07 2014 UTC
# Line 10  contains Line 10  contains
10    
11      USE dimphy, ONLY: klev, klon      USE dimphy, ONLY: klev, klon
12      use flxasc_m, only: flxasc      use flxasc_m, only: flxasc
13        use flxbase_m, only: flxbase
14        use flxddraf_m, only: flxddraf
15        use flxdlfs_m, only: flxdlfs
16      use flxdtdq_m, only: flxdtdq      use flxdtdq_m, only: flxdtdq
17      use flxflux_m, only: flxflux      use flxflux_m, only: flxflux
18      use flxini_m, only: flxini      use flxini_m, only: flxini
# Line 22  contains Line 25  contains
25      real, intent(in):: qen(klon, klev)      real, intent(in):: qen(klon, klev)
26      real, intent(inout):: qsen(klon, klev)      real, intent(inout):: qsen(klon, klev)
27      REAL, intent(in):: pqhfl(klon)      REAL, intent(in):: pqhfl(klon)
28      real pap(klon, klev), paph(klon, klev+1)      real, intent(in):: pap(klon, klev)
29        real, intent(in):: paph(klon, klev + 1) ! pression aux demi-niveaux
30      REAL, intent(in):: pgeo(klon, klev)      REAL, intent(in):: pgeo(klon, klev)
31      LOGICAL ldland(klon)      LOGICAL ldland(klon)
32      REAL ptte(klon, klev)      REAL ptte(klon, klev)
# Line 36  contains Line 40  contains
40      REAL pen_u(klon, klev), pde_u(klon, klev)      REAL pen_u(klon, klev), pde_u(klon, klev)
41      REAL pen_d(klon, klev), pde_d(klon, klev)      REAL pen_d(klon, klev), pde_d(klon, klev)
42      REAL dt_con(klon, klev), dq_con(klon, klev)      REAL dt_con(klon, klev), dq_con(klon, klev)
43      REAL pmflxr(klon, klev+1)      REAL pmflxr(klon, klev + 1)
44      REAL pmflxs(klon, klev+1)      REAL pmflxs(klon, klev + 1)
45    
46      ! Local:      ! Local:
47      REAL ptu(klon, klev), pqu(klon, klev), plu(klon, klev)      REAL ptu(klon, klev), pqu(klon, klev), plu(klon, klev)
# Line 98  contains Line 102  contains
102    
103      DO k=2, klev      DO k=2, klev
104         DO i = 1, klon         DO i = 1, klon
105            zdqcv(i)=zdqcv(i)+pqte(i, k)*(paph(i, k+1)-paph(i, k))            zdqcv(i)=zdqcv(i) + pqte(i, k)*(paph(i, k + 1)-paph(i, k))
106            IF (k.GE.kcbot(i)) THEN            IF (k.GE.kcbot(i)) THEN
107               zdqpbl(i)=zdqpbl(i)+pqte(i, k)*(paph(i, k+1)-paph(i, k))               zdqpbl(i)=zdqpbl(i) + pqte(i, k)*(paph(i, k + 1)-paph(i, k))
108               zdhpbl(i)=zdhpbl(i)+(RCPD*ptte(i, k)+RLVTT*pqte(i, k)) &               zdhpbl(i)=zdhpbl(i) + (RCPD*ptte(i, k) + RLVTT*pqte(i, k)) &
109                    *(paph(i, k+1)-paph(i, k))                    *(paph(i, k + 1)-paph(i, k))
110            ENDIF            ENDIF
111         ENDDO         ENDDO
112      ENDDO      ENDDO
# Line 120  contains Line 124  contains
124    
125      DO i = 1, klon      DO i = 1, klon
126         ikb=kcbot(i)         ikb=kcbot(i)
127         zqumqe=pqu(i, ikb)+plu(i, ikb)-zqenh(i, ikb)         zqumqe=pqu(i, ikb) + plu(i, ikb)-zqenh(i, ikb)
128         zdqmin=MAX(0.01*zqenh(i, ikb), 1.E-10)         zdqmin=MAX(0.01*zqenh(i, ikb), 1.E-10)
129         IF (zdqpbl(i) > 0..AND.zqumqe > zdqmin.AND.ldcum(i)) THEN         IF (zdqpbl(i) > 0..AND.zqumqe > zdqmin.AND.ldcum(i)) THEN
130            mfub(i) = zdqpbl(i)/(RG*MAX(zqumqe, zdqmin))            mfub(i) = zdqpbl(i)/(RG*MAX(zqumqe, zdqmin))
# Line 147  contains Line 151  contains
151    
152      DO i = 1, klon      DO i = 1, klon
153         ikb=kcbot(i)         ikb=kcbot(i)
154         zhcbase(i)=RCPD*ptu(i, ikb)+zgeoh(i, ikb)+RLVTT*pqu(i, ikb)         zhcbase(i)=RCPD*ptu(i, ikb) + zgeoh(i, ikb) + RLVTT*pqu(i, ikb)
155         ictop0(i)=kcbot(i)-1         ictop0(i)=kcbot(i)-1
156      ENDDO      ENDDO
157    
158      zalvdcp=RLVTT/RCPD      zalvdcp=RLVTT/RCPD
159      DO k=klev-1, 3, -1      DO k=klev-1, 3, -1
160         DO i = 1, klon         DO i = 1, klon
161            zhsat=RCPD*ztenh(i, k)+zgeoh(i, k)+RLVTT*zqsenh(i, k)            zhsat=RCPD*ztenh(i, k) + zgeoh(i, k) + RLVTT*zqsenh(i, k)
162            zgam=R5LES*zalvdcp*zqsenh(i, k)/ &            zgam=R5LES*zalvdcp*zqsenh(i, k)/ &
163                 ((1.-RETV *zqsenh(i, k))*(ztenh(i, k)-R4LES)**2)                 ((1.-RETV *zqsenh(i, k))*(ztenh(i, k)-R4LES)**2)
164            zzz=RCPD*ztenh(i, k)*0.608            zzz=RCPD*ztenh(i, k)*0.608
165            zhhat=zhsat-(zzz+zgam*zzz)/(1.+zgam*zzz/RLVTT)* &            zhhat=zhsat-(zzz + zgam*zzz)/(1. + zgam*zzz/RLVTT)* &
166                 MAX(zqsenh(i, k)-zqenh(i, k), 0.)                 MAX(zqsenh(i, k)-zqenh(i, k), 0.)
167            IF(k < ictop0(i).AND.zhcbase(i) > zhhat) ictop0(i)=k            IF(k < ictop0(i).AND.zhcbase(i) > zhhat) ictop0(i)=k
168         ENDDO         ENDDO
# Line 191  contains Line 195  contains
195            ENDDO            ENDDO
196            DO k=2, klev            DO k=2, klev
197               DO i = 1, klon               DO i = 1, klon
198                  zrfl(i)=zrfl(i)+zdmfup(i, k)                  zrfl(i)=zrfl(i) + zdmfup(i, k)
199               ENDDO               ENDDO
200            ENDDO            ENDDO
201    
202            ! determiner le LFS (level of free sinking: niveau de plonge libre)            ! determiner le LFS (level of free sinking: niveau de plonge libre)
203            CALL flxdlfs(ztenh, zqenh, zgeoh, paph, ptu, pqu, &            CALL flxdlfs(ztenh, zqenh, zgeoh, paph, ptu, pqu, ldcum, kcbot, &
204                 ldcum, kcbot, kctop, mfub, zrfl, &                 kctop, mfub, zrfl, ptd, pqd, mfd, zmfds, zmfdq, zdmfdp, kdtop, &
205                 ptd, pqd, &                 lddraf)
                mfd, zmfds, zmfdq, zdmfdp, &  
                kdtop, lddraf)  
206    
207            ! calculer le panache descendant            ! calculer le panache descendant
208            CALL flxddraf(ztenh, zqenh, &            CALL flxddraf(ztenh, zqenh, zgeoh, paph, zrfl, ptd, pqd, mfd, &
209                 zgeoh, paph, zrfl, &                 zmfds, zmfdq, zdmfdp, lddraf, pen_d, pde_d)
                ptd, pqd, &  
                mfd, zmfds, zmfdq, zdmfdp, &  
                lddraf, pen_d, pde_d)  
210    
211            ! calculer de nouveau le flux de masse entrant a travers la base            ! calculer de nouveau le flux de masse entrant a travers la base
212            ! de la convection, sachant qu'il a ete modifie par le panache            ! de la convection, sachant qu'il a ete modifie par le panache
# Line 218  contains Line 217  contains
217                  llo1 = MFD(i, ikb) < 0.                  llo1 = MFD(i, ikb) < 0.
218                  zeps = 0.                  zeps = 0.
219                  IF (llo1) zeps = CMFDEPS                  IF (llo1) zeps = CMFDEPS
220                  zqumqe = pqu(i, ikb)+plu(i, ikb)- &                  zqumqe = pqu(i, ikb) + plu(i, ikb)- &
221                       zeps*pqd(i, ikb)-(1.-zeps)*zqenh(i, ikb)                       zeps*pqd(i, ikb)-(1.-zeps)*zqenh(i, ikb)
222                  zdqmin = MAX(0.01*zqenh(i, ikb), 1.E-10)                  zdqmin = MAX(0.01*zqenh(i, ikb), 1.E-10)
223                  zmfmax = (paph(i, ikb)-paph(i, ikb-1)) / (RG*dtime)                  zmfmax = (paph(i, ikb)-paph(i, ikb-1)) / (RG*dtime)
# Line 230  contains Line 229  contains
229                  ENDIF                  ENDIF
230                  IF (ktype(i) == 2) THEN                  IF (ktype(i) == 2) THEN
231                     zdh = RCPD*(ptu(i, ikb)-zeps*ptd(i, ikb)- &                     zdh = RCPD*(ptu(i, ikb)-zeps*ptd(i, ikb)- &
232                          (1.-zeps)*ztenh(i, ikb))+RLVTT*zqumqe                          (1.-zeps)*ztenh(i, ikb)) + RLVTT*zqumqe
233                     zdh = RG * MAX(zdh, 1.0E5*zdqmin)                     zdh = RG * MAX(zdh, 1.0E5*zdqmin)
234                     IF (zdhpbl(i) > 0..AND.ldcum(i))mfub1(i)=zdhpbl(i)/zdh                     IF (zdhpbl(i) > 0..AND.ldcum(i))mfub1(i)=zdhpbl(i)/zdh
235                  ENDIF                  ENDIF

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

  ViewVC Help
Powered by ViewVC 1.1.21