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