source: LMDZ6/branches/Amaury_dev/libf/phylmd/concvl.F90 @ 5157

Last change on this file since 5157 was 5153, checked in by abarral, 7 weeks ago

Revert FCTTRE to INCLUDE to assess impact of inlining

  • Property copyright set to
    Name of program: LMDZ
    Creation date: 1984
    Version: LMDZ5
    License: CeCILL version 2
    Holder: Laboratoire de m\'et\'eorologie dynamique, CNRS, UMR 8539
    See the license file in the root directory
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 20.2 KB
Line 
1SUBROUTINE concvl(iflag_clos, &
2        dtime, paprs, pplay, k_upper_cv, &
3        t, q, t_wake, q_wake, s_wake, u, v, tra, ntra, &
4        Ale, Alp, sig1, w01, &
5        d_t, d_q, d_qcomp, d_u, d_v, d_tra, &
6        rain, snow, kbas, ktop, sigd, &
7        cbmf, plcl, plfc, wbeff, convoccur, &
8        upwd, dnwd, dnwdbis, &
9        Ma, mip, Vprecip, &
10        cape, cin, tvp, Tconv, iflag, &
11        pbase, bbase, dtvpdt1, dtvpdq1, dplcldt, dplcldr, &
12        qcondc, wd, pmflxr, pmflxs, &
13        !RomP >>>
14        !!     .             da,phi,mp,dd_t,dd_q,lalim_conv,wght_th)
15        da, phi, mp, phii, d1a, dam, sij, qta, clw, elij, &! RomP
16        dd_t, dd_q, lalim_conv, wght_th, &                 ! RomP
17        evap, ep, epmlmMm, eplaMm, &                       ! RomP
18        wdtrainA, wdtrainS, wdtrainM, wght, qtc, sigt, detrain, &
19        tau_cld_cv, coefw_cld_cv, &                           ! RomP+RL, AJ
20        !RomP <<<
21        epmax_diag) ! epmax_cape
22  ! **************************************************************
23  ! *
24  ! CONCVL                                                      *
25  ! *
26  ! *
27  ! written by   : Sandrine Bony-Lena, 17/05/2003, 11.16.04    *
28  ! modified by :                                               *
29  ! **************************************************************
30
31  USE dimphy
32  USE infotrac_phy, ONLY: nbtr
33  USE phys_local_var_mod, ONLY: omega
34  USE lmdz_print_control, ONLY: prt_level, lunout
35  USE lmdz_clesphys
36  USE lmdz_conema3
37  USE lmdz_yoethf
38
39  USE lmdz_yomcst
40
41  IMPLICIT NONE
42 INCLUDE "FCTTRE.h"
43  ! ======================================================================
44  ! Auteur(s): S. Bony-Lena (LMD/CNRS) date: ???
45  ! Objet: schema de convection de Emanuel (1991) interface
46  ! ======================================================================
47  ! Arguments:
48  ! dtime--input-R-pas d'integration (s)
49  ! s-------input-R-la vAleur "s" pour chaque couche
50  ! sigs----input-R-la vAleur "sigma" de chaque couche
51  ! sig-----input-R-la vAleur de "sigma" pour chaque niveau
52  ! psolpa--input-R-la pression au sol (en Pa)
53  ! pskapa--input-R-exponentiel kappa de psolpa
54  ! h-------input-R-enthAlpie potentielle (Cp*T/P**kappa)
55  ! q-------input-R-vapeur d'eau (en kg/kg)
56
57  ! work*: input et output: deux variables de travail,
58  ! on peut les mettre a 0 au debut
59  ! ALE--------input-R-energie disponible pour soulevement
60  ! ALP--------input-R-puissance disponible pour soulevement
61
62  ! d_h--------output-R-increment de l'enthAlpie potentielle (h)
63  ! d_q--------output-R-increment de la vapeur d'eau
64  ! rain-------output-R-la pluie (mm/s)
65  ! snow-------output-R-la neige (mm/s)
66  ! upwd-------output-R-saturated updraft mass flux (kg/m**2/s)
67  ! dnwd-------output-R-saturated downdraft mass flux (kg/m**2/s)
68  ! dnwd0------output-R-unsaturated downdraft mass flux (kg/m**2/s)
69  ! Ma---------output-R-adiabatic ascent mass flux (kg/m2/s)
70  ! mip--------output-R-mass flux shed by adiabatic ascent (kg/m2/s)
71  ! Vprecip----output-R-vertical profile of total precipitation (kg/m2/s)
72  ! Tconv------output-R-environment temperature seen by convective scheme (K)
73  ! Cape-------output-R-CAPE (J/kg)
74  ! Cin -------output-R-CIN  (J/kg)
75  ! Tvp--------output-R-Temperature virtuelle d'une parcelle soulevee
76  ! adiabatiquement a partir du niveau 1 (K)
77  ! deltapb----output-R-distance entre LCL et base de la colonne (<0 ; Pa)
78  ! Ice_flag---input-L-TRUE->prise en compte de la thermodynamique de la glace
79  ! dd_t-------output-R-increment de la temperature du aux descentes precipitantes
80  ! dd_q-------output-R-increment de la vapeur d'eau du aux desc precip
81  ! lalim_conv-
82  ! wght_th----
83  ! evap-------output-R
84  ! ep---------output-R
85  ! epmlmMm----output-R
86  ! eplaMm-----output-R
87  ! wdtrainA---output-R
88  ! wdtrainS---output-R
89  ! wdtrainM---output-R
90  ! wght-------output-R
91  ! ======================================================================
92
93  INTEGER, INTENT(IN) :: iflag_clos
94  REAL, INTENT(IN) :: dtime
95  REAL, DIMENSION(klon, klev), INTENT(IN) :: pplay
96  REAL, DIMENSION(klon, klev + 1), INTENT(IN) :: paprs
97  INTEGER, INTENT(IN) :: k_upper_cv
98  REAL, DIMENSION(klon, klev), INTENT(IN) :: t, q, u, v
99  REAL, DIMENSION(klon, klev), INTENT(IN) :: t_wake, q_wake
100  REAL, DIMENSION(klon), INTENT(IN) :: s_wake
101  REAL, DIMENSION(klon, klev, nbtr), INTENT(IN) :: tra
102  INTEGER, INTENT(IN) :: ntra
103  REAL, DIMENSION(klon), INTENT(IN) :: Ale, Alp
104  !CR:test: on passe lentr et alim_star des thermiques
105  INTEGER, DIMENSION(klon), INTENT(IN) :: lalim_conv
106  REAL, DIMENSION(klon, klev), INTENT(IN) :: wght_th
107
108  REAL, DIMENSION(klon, klev), INTENT(INOUT) :: sig1, w01
109
110  REAL, DIMENSION(klon, klev), INTENT(OUT) :: d_t, d_q, d_qcomp, d_u, d_v
111  REAL, DIMENSION(klon, klev, nbtr), INTENT(OUT) :: d_tra
112  REAL, DIMENSION(klon), INTENT(OUT) :: rain, snow
113
114  INTEGER, DIMENSION(klon), INTENT(OUT) :: kbas, ktop
115  REAL, DIMENSION(klon), INTENT(OUT) :: sigd
116  REAL, DIMENSION(klon), INTENT(OUT) :: cbmf, plcl, plfc, wbeff
117  REAL, DIMENSION(klon), INTENT(OUT) :: convoccur
118  REAL, DIMENSION(klon, klev), INTENT(OUT) :: upwd, dnwd, dnwdbis
119
120  !!       REAL Ma(klon,klev), mip(klon,klev),Vprecip(klon,klev)                    !jyg
121  REAL, DIMENSION(klon, klev), INTENT(OUT) :: Ma, mip
122  REAL, DIMENSION(klon, klev + 1), INTENT(OUT) :: Vprecip                        !jyg
123  REAL, DIMENSION(klon), INTENT(OUT) :: cape, cin
124  REAL, DIMENSION(klon, klev), INTENT(OUT) :: tvp
125  REAL, DIMENSION(klon, klev), INTENT(OUT) :: Tconv
126  INTEGER, DIMENSION(klon), INTENT(OUT) :: iflag
127  REAL, DIMENSION(klon), INTENT(OUT) :: pbase, bbase
128  REAL, DIMENSION(klon, klev), INTENT(OUT) :: dtvpdt1, dtvpdq1
129  REAL, DIMENSION(klon), INTENT(OUT) :: dplcldt, dplcldr
130  REAL, DIMENSION(klon, klev), INTENT(OUT) :: qcondc
131  REAL, DIMENSION(klon), INTENT(OUT) :: wd
132  REAL, DIMENSION(klon, klev + 1), INTENT(OUT) :: pmflxr, pmflxs
133
134  REAL, DIMENSION(klon, klev), INTENT(OUT) :: da, mp
135  REAL, DIMENSION(klon, klev, klev), INTENT(OUT) :: phi
136  ! RomP >>>
137  REAL, DIMENSION(klon, klev, klev), INTENT(OUT) :: phii
138  REAL, DIMENSION(klon, klev), INTENT(OUT) :: d1a, dam
139  REAL, DIMENSION(klon, klev, klev), INTENT(OUT) :: sij, elij
140  REAL, DIMENSION(klon, klev), INTENT(OUT) :: qta
141  REAL, DIMENSION(klon, klev), INTENT(OUT) :: clw
142  REAL, DIMENSION(klon, klev), INTENT(OUT) :: dd_t, dd_q
143  REAL, DIMENSION(klon, klev), INTENT(OUT) :: evap, ep
144  REAL, DIMENSION(klon, klev), INTENT(OUT) :: eplaMm
145  REAL, DIMENSION(klon, klev, klev), INTENT(OUT) :: epmlmMm
146  REAL, DIMENSION(klon, klev), INTENT(OUT) :: wdtrainA, wdtrainS, wdtrainM
147  ! RomP <<<
148  REAL, DIMENSION(klon, klev), INTENT(OUT) :: wght                       !RL
149  REAL, DIMENSION(klon, klev), INTENT(OUT) :: qtc
150  REAL, DIMENSION(klon, klev), INTENT(OUT) :: sigt, detrain
151  REAL, INTENT(OUT) :: tau_cld_cv, coefw_cld_cv
152  REAL, DIMENSION(klon), INTENT(OUT) :: epmax_diag                ! epmax_cape
153
154  !  Local
155  !  ----
156  REAL, DIMENSION(klon, klev) :: em_p
157  REAL, DIMENSION(klon, klev + 1) :: em_ph
158  REAL :: em_sig1feed ! sigma at lower bound of feeding layer
159  REAL :: em_sig2feed ! sigma at upper bound of feeding layer
160  REAL, DIMENSION(klev) :: em_wght ! weight density determining the feeding mixture
161  REAL, DIMENSION(klon, klev + 1) :: Vprecipi                       !jyg
162  !on enleve le save
163  ! SAVE em_sig1feed,em_sig2feed,em_wght
164
165  REAL, DIMENSION(klon) :: rflag
166  REAL, DIMENSION(klon) :: plim1, plim2
167  REAL, DIMENSION(klon) :: ptop2
168  REAL, DIMENSION(klon, klev) :: asupmax
169  REAL, DIMENSION(klon) :: supmax0, asupmaxmin
170  REAL :: zx_t, zdelta, zx_qs, zcor
171
172  !   INTEGER iflag_mix
173  !   SAVE iflag_mix
174  INTEGER :: noff, minorig
175  INTEGER :: i, j, k, itra
176  REAL, DIMENSION(klon, klev) :: qs, qs_wake
177  !LF          SAVE cbmf
178  !IM/JYG      REAL, SAVE, ALLOCATABLE :: cbmf(:)
179  !!!$OMP THREADPRIVATE(cbmf)!
180  REAL, DIMENSION(klon) :: cbmflast
181
182
183  ! Variables supplementaires liees au bilan d'energie
184  ! Real paire(klon)
185  !LF      Real ql(klon,klev)
186  ! Save paire
187  !LF      Save ql
188  !LF      Real t1(klon,klev),q1(klon,klev)
189  !LF      Save t1,q1
190  ! Data paire /1./
191  REAL, SAVE, ALLOCATABLE :: ql(:, :), q1(:, :), t1(:, :)
192  !$OMP THREADPRIVATE(ql, q1, t1)
193
194  ! Variables liees au bilan d'energie et d'enthAlpi
195  REAL ztsol(klon)
196  REAL        h_vcol_tot, h_dair_tot, h_qw_tot, h_ql_tot, &
197          h_qs_tot, qw_tot, ql_tot, qs_tot, ec_tot
198  SAVE        h_vcol_tot, h_dair_tot, h_qw_tot, h_ql_tot, &
199          h_qs_tot, qw_tot, ql_tot, qs_tot, ec_tot
200  !$OMP THREADPRIVATE(h_vcol_tot, h_dair_tot, h_qw_tot, h_ql_tot)
201  !$OMP THREADPRIVATE(h_qs_tot, qw_tot, ql_tot, qs_tot , ec_tot)
202  REAL        d_h_vcol, d_h_dair, d_qt, d_qw, d_ql, d_qs, d_ec
203  REAL        d_h_vcol_phy
204  REAL        fs_bound, fq_bound
205  SAVE        d_h_vcol_phy
206  !$OMP THREADPRIVATE(d_h_vcol_phy)
207  REAL        zero_v(klon)
208  CHARACTER *15 ztit
209  INTEGER     ip_ebil ! PRINT level for energy conserv. diag.
210  SAVE        ip_ebil
211  DATA        ip_ebil/2/
212  !$OMP THREADPRIVATE(ip_ebil)
213  INTEGER     if_ebil ! level for energy conserv. dignostics
214  SAVE        if_ebil
215  DATA        if_ebil/2/
216  !$OMP THREADPRIVATE(if_ebil)
217  !+jld ec_conser
218  REAL d_t_ec(klon, klev) ! tendance du a la conersion Ec -> E thermique
219  REAL zrcpd
220  !-jld ec_conser
221  !LF
222  INTEGER nloc
223  LOGICAL, SAVE :: first = .TRUE.
224  !$OMP THREADPRIVATE(first)
225  INTEGER, SAVE :: itap, igout
226  !$OMP THREADPRIVATE(itap, igout)
227
228  include "YOMCST2.h"
229
230  IF (first) THEN
231    ! Allocate some variables LF 04/2008
232
233    !IM/JYG allocate(cbmf(klon))
234    ALLOCATE (ql(klon, klev))
235    ALLOCATE (t1(klon, klev))
236    ALLOCATE (q1(klon, klev))
237
238    convoccur(:) = 0.
239
240    itap = 0
241    igout = klon / 2 + 1 / klon
242  END IF
243  ! Incrementer le compteur de la physique
244  itap = itap + 1
245
246  ! Copy T into Tconv
247  DO k = 1, klev
248    DO i = 1, klon
249      Tconv(i, k) = t(i, k)
250    END DO
251  END DO
252
253  IF (if_ebil>=1) THEN
254    DO i = 1, klon
255      ztsol(i) = t(i, 1)
256      zero_v(i) = 0.
257      DO k = 1, klev
258        ql(i, k) = 0.
259      END DO
260    END DO
261  END IF
262
263  ! ym
264  snow(:) = 0
265
266  IF (first) THEN
267    first = .FALSE.
268
269    ! ===========================================================================
270    ! READ IN PARAMETERS FOR THE CLOSURE AND THE MIXING DISTRIBUTION
271    ! ===========================================================================
272
273    IF (iflag_con==3) THEN
274      !      CALL cv3_inicp()
275      CALL cv3_inip()
276    END IF
277
278    ! ===========================================================================
279    ! READ IN PARAMETERS FOR CONVECTIVE INHIBITION BY TROPOS. DRYNESS
280    ! ===========================================================================
281
282    ! c$$$         open (56,file='supcrit.data')
283    ! c$$$         read (56,*) Supcrit1, Supcrit2
284    ! c$$$         close (56)
285
286    IF (prt_level>=10) WRITE (lunout, *) 'supcrit1, supcrit2', supcrit1, supcrit2
287
288    ! ===========================================================================
289    ! Initialisation pour les bilans d'eau et d'energie
290    ! ===========================================================================
291    IF (if_ebil>=1) d_h_vcol_phy = 0.
292
293    DO i = 1, klon
294      cbmf(i) = 0.
295      !!          plcl(i) = 0.
296      sigd(i) = 0.
297    END DO
298  END IF !(first)
299
300  ! Initialisation a chaque pas de temps
301  plfc(:) = 0.
302  wbeff(:) = 100.
303  plcl(:) = 0.
304
305  DO k = 1, klev + 1
306    DO i = 1, klon
307      em_ph(i, k) = paprs(i, k) / 100.0
308      pmflxr(i, k) = 0.
309      pmflxs(i, k) = 0.
310    END DO
311  END DO
312
313  DO k = 1, klev
314    DO i = 1, klon
315      em_p(i, k) = pplay(i, k) / 100.0
316    END DO
317  END DO
318
319
320  ! Feeding layer
321
322  em_sig1feed = 1.
323  !jyg<
324  !  em_sig2feed = 0.97
325  em_sig2feed = cvl_sig2feed
326  !>jyg
327  ! em_sig2feed = 0.8
328  ! Relative Weight densities
329  DO k = 1, klev
330    em_wght(k) = 1.
331  END DO
332  !CRtest: couche alim des tehrmiques ponderee par a*
333  ! DO i = 1, klon
334  ! do k=1,lalim_conv(i)
335  ! em_wght(k)=wght_th(i,k)
336  ! PRINT*,'em_wght=',em_wght(k),wght_th(i,k)
337  ! END DO
338  ! END DO
339
340  IF (iflag_con==4) THEN
341    DO k = 1, klev
342      DO i = 1, klon
343        zx_t = t(i, k)
344        zdelta = max(0., sign(1., rtt - zx_t))
345        zx_qs = min(0.5, r2es * foeew(zx_t, zdelta) / em_p(i, k) / 100.0)
346        zcor = 1. / (1. - retv * zx_qs)
347        qs(i, k) = zx_qs * zcor
348      END DO
349      DO i = 1, klon
350        zx_t = t_wake(i, k)
351        zdelta = max(0., sign(1., rtt - zx_t))
352        zx_qs = min(0.5, r2es * foeew(zx_t, zdelta) / em_p(i, k) / 100.0)
353        zcor = 1. / (1. - retv * zx_qs)
354        qs_wake(i, k) = zx_qs * zcor
355      END DO
356    END DO
357  ELSE ! iflag_con=3 (modif de puristes qui fait la diffce pour la convergence numerique)
358    DO k = 1, klev
359      DO i = 1, klon
360        zx_t = t(i, k)
361        zdelta = max(0., sign(1., rtt - zx_t))
362        zx_qs = r2es * foeew(zx_t, zdelta) / em_p(i, k) / 100.0
363        zx_qs = min(0.5, zx_qs)
364        zcor = 1. / (1. - retv * zx_qs)
365        zx_qs = zx_qs * zcor
366        qs(i, k) = zx_qs
367      END DO
368      DO i = 1, klon
369        zx_t = t_wake(i, k)
370        zdelta = max(0., sign(1., rtt - zx_t))
371        zx_qs = r2es * foeew(zx_t, zdelta) / em_p(i, k) / 100.0
372        zx_qs = min(0.5, zx_qs)
373        zcor = 1. / (1. - retv * zx_qs)
374        zx_qs = zx_qs * zcor
375        qs_wake(i, k) = zx_qs
376      END DO
377    END DO
378  END IF ! iflag_con
379
380  ! ------------------------------------------------------------------
381
382  ! Main driver for convection:
383  !                   iflag_con=3 -> nvlle version de KE (JYG)
384  !                   iflag_con = 30  -> equivAlent to convect3
385  !                   iflag_con = 4  -> equivAlent to convect1/2
386
387  IF (iflag_con==30) THEN
388
389    ! print *, '-> cv_driver'      !jyg
390    CALL cv_driver(klon, klev, klevp1, ntra, iflag_con, &
391            t, q, qs, u, v, tra, &
392            em_p, em_ph, iflag, &
393            d_t, d_q, d_u, d_v, d_tra, rain, &
394            Vprecip, cbmf, sig1, w01, & !jyg
395            kbas, ktop, &
396            dtime, Ma, upwd, dnwd, dnwdbis, qcondc, wd, cape, &
397            da, phi, mp, phii, d1a, dam, sij, clw, elij, &       !RomP
398            evap, ep, epmlmMm, eplaMm, &                         !RomP
399            wdtrainA, wdtrainM, &                                !RomP
400            epmax_diag) ! epmax_cape
401    !           print *, 'cv_driver ->'      !jyg
402
403    DO i = 1, klon
404      cbmf(i) = Ma(i, kbas(i))
405    END DO
406
407    !RL
408    wght(:, :) = 0.
409    DO i = 1, klon
410      wght(i, 1) = 1.
411    END DO
412    !RL
413
414  ELSE
415
416    !LF   necessary for gathered fields
417    nloc = klon
418    CALL cva_driver(klon, klev, klev + 1, ntra, nloc, k_upper_cv, &
419            iflag_con, iflag_mix, iflag_ice_thermo, &
420            iflag_clos, ok_conserv_q, dtime, cvl_comp_threshold, &
421            t, q, qs, t_wake, q_wake, qs_wake, s_wake, u, v, tra, &
422            em_p, em_ph, &
423            Ale, Alp, omega, &
424            em_sig1feed, em_sig2feed, em_wght, &
425            iflag, d_t, d_q, d_qcomp, d_u, d_v, d_tra, rain, kbas, ktop, &
426            cbmf, plcl, plfc, wbeff, sig1, w01, ptop2, sigd, &
427            Ma, mip, Vprecip, Vprecipi, upwd, dnwd, dnwdbis, qcondc, wd, &
428            cape, cin, tvp, &
429            dd_t, dd_q, plim1, plim2, asupmax, supmax0, &
430            asupmaxmin, lalim_conv, &
431            !AC!+!RomP+jyg
432            !!                   da,phi,mp,phii,d1a,dam,sij,clw,elij, &               ! RomP
433            !!                   evap,ep,epmlmMm,eplaMm,                              ! RomP
434            da, phi, mp, phii, d1a, dam, sij, wght, &           ! RomP+RL
435            qta, clw, elij, evap, ep, epmlmMm, eplaMm, &        ! RomP+RL
436            wdtrainA, wdtrainS, wdtrainM, qtc, sigt, detrain, &
437            tau_cld_cv, coefw_cld_cv, &                         ! RomP,AJ
438            !AC!+!RomP+jyg
439            epmax_diag) ! epmax_cape
440  END IF
441  ! ------------------------------------------------------------------
442  IF (prt_level>=10) WRITE (lunout, *) ' cva_driver -> cbmf,plcl,plfc,wbeff, d_t, d_q ', &
443          cbmf(1), plcl(1), plfc(1), wbeff(1), d_t(1, 1), d_q(1, 1)
444
445  DO i = 1, klon
446    rain(i) = rain(i) / 86400.
447    rflag(i) = iflag(i)
448  END DO
449
450  DO k = 1, klev
451    DO i = 1, klon
452      d_t(i, k) = dtime * d_t(i, k)
453      d_q(i, k) = dtime * d_q(i, k)
454      d_u(i, k) = dtime * d_u(i, k)
455      d_v(i, k) = dtime * d_v(i, k)
456    END DO
457  END DO
458
459  IF (iflag_con==3) THEN
460    DO i = 1, klon
461      IF (wbeff(i) > 100. .OR. wbeff(i) == 0 .OR. iflag(i) > 3) THEN
462        wbeff(i) = 0.
463        convoccur(i) = 0.
464      ELSE
465        convoccur(i) = 1.
466      ENDIF
467    ENDDO
468  ENDIF
469
470  IF (iflag_con==30) THEN
471    DO itra = 1, ntra
472      DO k = 1, klev
473        DO i = 1, klon
474          !RL!            d_tra(i,k,itra) =dtime*d_tra(i,k,itra)
475          d_tra(i, k, itra) = 0.
476        END DO
477      END DO
478    END DO
479  END IF
480
481  !!AC!
482  IF (iflag_con==3) THEN
483    DO itra = 1, ntra
484      DO k = 1, klev
485        DO i = 1, klon
486          !RL!            d_tra(i,k,itra) =dtime*d_tra(i,k,itra)
487          d_tra(i, k, itra) = 0.
488        END DO
489      END DO
490    END DO
491  END IF
492  !!AC!
493
494  DO k = 1, klev
495    DO i = 1, klon
496      t1(i, k) = t(i, k) + d_t(i, k)
497      q1(i, k) = q(i, k) + d_q(i, k)
498    END DO
499  END DO
500  !                                                     !jyg
501  IF (iflag_con == 30 .OR. iflag_ice_thermo ==0) THEN
502    ! --Separation neige/pluie (pour diagnostics)         !jyg
503    DO k = 1, klev                                    !jyg
504      DO i = 1, klon                                  !jyg
505        IF (t1(i, k)<rtt) THEN                         !jyg
506          pmflxs(i, k) = Vprecip(i, k)                !jyg
507        ELSE                                          !jyg
508          pmflxr(i, k) = Vprecip(i, k)                !jyg
509        END IF                                        !jyg
510      END DO                                          !jyg
511    END DO                                            !jyg
512  ELSE
513    DO k = 1, klev                                    !jyg
514      DO i = 1, klon                                  !jyg
515        pmflxs(i, k) = Vprecipi(i, k)                 !jyg
516        pmflxr(i, k) = Vprecip(i, k) - Vprecipi(i, k)   !jyg
517      END DO                                          !jyg
518    END DO                                            !jyg
519  ENDIF
520
521  ! c      IF (if_ebil.ge.2) THEN
522  ! c        ztit='after convect'
523  ! c        CALL diagetpq(paire,ztit,ip_ebil,2,2,dtime
524  ! c     e      , t1,q1,ql,qs,u,v,paprs,pplay
525  ! c     s      , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
526  ! c         CALL diagphy(paire,ztit,ip_ebil
527  ! c     e      , zero_v, zero_v, zero_v, zero_v, zero_v
528  ! c     e      , zero_v, rain, zero_v, ztsol
529  ! c     e      , d_h_vcol, d_qt, d_ec
530  ! c     s      , fs_bound, fq_bound )
531  ! c      END IF
532
533
534  ! les traceurs ne sont pas mis dans cette version de convect4:
535  IF (iflag_con==4) THEN
536    DO itra = 1, ntra
537      DO k = 1, klev
538        DO i = 1, klon
539          d_tra(i, k, itra) = 0.
540        END DO
541      END DO
542    END DO
543  END IF
544  ! PRINT*, 'concvl->: dd_t,dd_q ',dd_t(1,1),dd_q(1,1)
545
546  DO k = 1, klev
547    DO i = 1, klon
548      dtvpdt1(i, k) = 0.
549      dtvpdq1(i, k) = 0.
550    END DO
551  END DO
552  DO i = 1, klon
553    dplcldt(i) = 0.
554    dplcldr(i) = 0.
555  END DO
556
557  IF (prt_level>=20) THEN
558    DO k = 1, klev
559      ! PRINT*,'physiq apres_add_con i k it d_u d_v d_t d_q qdl0',igout, &
560      !         k,itap,d_u_con(igout,k) ,d_v_con(igout,k), d_t_con(igout,k), &
561      !         d_q_con(igout,k),dql0(igout,k)
562      ! PRINT*,'phys apres_add_con itap Ma cin ALE ALP wak t q undi t q', &
563      !         itap,Ma(igout,k),cin(igout),ALE(igout), ALP(igout), &
564      !         t_wake(igout,k),q_wake(igout,k),t_undi(igout,k),q_undi(igout,k)
565      ! PRINT*,'phy apres_add_con itap CON rain snow EMA wk1 wk2 Vpp mip', &
566      !         itap,rain_con(igout),snow_con(igout),ema_work1(igout,k), &
567      !         ema_work2(igout,k),Vprecip(igout,k), mip(igout,k)
568      ! PRINT*,'phy apres_add_con itap upwd dnwd dnwd0 cape tvp Tconv ', &
569      !         itap,upwd(igout,k),dnwd(igout,k),dnwd0(igout,k),cape(igout), &
570      !         tvp(igout,k),Tconv(igout,k)
571      ! PRINT*,'phy apres_add_con itap dtvpdt dtvdq dplcl dplcldr qcondc', &
572      !         itap,dtvpdt1(igout,k),dtvpdq1(igout,k),dplcldt(igout), &
573      !         dplcldr(igout),qcondc(igout,k)
574      ! PRINT*,'phy apres_add_con itap wd pmflxr Kpmflxr Kp1 Kpmflxs Kp1', &
575      !         itap,wd(igout),pmflxr(igout,k),pmflxr(igout,k+1),pmflxs(igout,k), &
576      !         pmflxs(igout,k+1)
577      ! PRINT*,'phy apres_add_con itap da phi mp ftd fqd lalim wgth', &
578      !         itap,da(igout,k),phi(igout,k,k),mp(igout,k),ftd(igout,k), &
579      !         fqd(igout,k),lalim_conv(igout),wght_th(igout,k)
580    END DO
581  END IF !(prt_level.EQ.20) THEN
582
583END SUBROUTINE concvl
584
Note: See TracBrowser for help on using the repository browser.