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

Last change on this file since 5140 was 5140, checked in by abarral, 3 months ago

Put comsoil.h, conema3.h, cvflag.h into modules

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