source: LMDZ5/branches/testing/libf/phylmd/concvl.F90 @ 2339

Last change on this file since 2339 was 2298, checked in by Laurent Fairhead, 9 years ago

Merged trunk changes -r2237:2291 into testing branch

  • 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: 17.7 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_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, ONLY: nbtr
32  USE phys_local_var_mod, ONLY: omega
33  IMPLICIT NONE
34! ======================================================================
35! Auteur(s): S. Bony-Lena (LMD/CNRS) date: ???
36! Objet: schema de convection de Emanuel (1991) interface
37! ======================================================================
38! Arguments:
39! dtime--input-R-pas d'integration (s)
40! s-------input-R-la vAleur "s" pour chaque couche
41! sigs----input-R-la vAleur "sigma" de chaque couche
42! sig-----input-R-la vAleur de "sigma" pour chaque niveau
43! psolpa--input-R-la pression au sol (en Pa)
44! pskapa--input-R-exponentiel kappa de psolpa
45! h-------input-R-enthAlpie potentielle (Cp*T/P**kappa)
46! q-------input-R-vapeur d'eau (en kg/kg)
47
48! work*: input et output: deux variables de travail,
49! on peut les mettre a 0 au debut
50! ALE--------input-R-energie disponible pour soulevement
51! ALP--------input-R-puissance disponible pour soulevement
52
53! d_h--------output-R-increment de l'enthAlpie potentielle (h)
54! d_q--------output-R-increment de la vapeur d'eau
55! rain-------output-R-la pluie (mm/s)
56! snow-------output-R-la neige (mm/s)
57! upwd-------output-R-saturated updraft mass flux (kg/m**2/s)
58! dnwd-------output-R-saturated downdraft mass flux (kg/m**2/s)
59! dnwd0------output-R-unsaturated downdraft mass flux (kg/m**2/s)
60! Ma---------output-R-adiabatic ascent mass flux (kg/m2/s)
61! mip--------output-R-mass flux shed by adiabatic ascent (kg/m2/s)
62! Vprecip----output-R-vertical profile of precipitations (kg/m2/s)
63! Tconv------output-R-environment temperature seen by convective scheme (K)
64! Cape-------output-R-CAPE (J/kg)
65! Cin -------output-R-CIN  (J/kg)
66! Tvp--------output-R-Temperature virtuelle d'une parcelle soulevee
67! adiabatiquement a partir du niveau 1 (K)
68! deltapb----output-R-distance entre LCL et base de la colonne (<0 ; Pa)
69! Ice_flag---input-L-TRUE->prise en compte de la thermodynamique de la glace
70! dd_t-------output-R-increment de la temperature du aux descentes precipitantes
71! dd_q-------output-R-increment de la vapeur d'eau du aux desc precip
72! lalim_conv-
73! wght_th----
74! evap-------output-R
75! ep---------output-R
76! epmlmMm----output-R
77! eplaMm-----output-R
78! wdtrainA---output-R
79! wdtrainM---output-R
80! wght-------output-R
81! ======================================================================
82
83
84  include "clesphys.h"
85  include "dimensions.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 wght(klon, klev)                                            !RL
112
113  REAL da(klon, klev), phi(klon, klev, klev), mp(klon, klev)
114! RomP >>>
115  REAL phi2(klon, klev, klev)
116  REAL d1a(klon, klev), dam(klon, klev)
117  REAL sij(klon, klev, klev), clw(klon, klev), elij(klon, klev, klev)
118  REAL wdtrainA(klon, klev), wdtrainM(klon, klev)
119  REAL evap(klon, klev), ep(klon, klev)
120  REAL epmlmMm(klon, klev, klev), eplaMm(klon, klev)
121! RomP <<<
122  REAL cape(klon), cin(klon), tvp(klon, klev)
123  REAL Tconv(klon, klev)
124
125!CR:test: on passe lentr et alim_star des thermiques
126  INTEGER lalim_conv(klon)
127  REAL wght_th(klon, klev)
128  REAL em_sig1feed ! sigma at lower bound of feeding layer
129  REAL em_sig2feed ! sigma at upper bound of feeding layer
130  REAL em_wght(klev) ! weight density determining the feeding mixture
131!on enleve le save
132! SAVE em_sig1feed,em_sig2feed,em_wght
133
134  INTEGER iflag(klon)
135  REAL rflag(klon)
136  REAL pbase(klon), bbase(klon)
137  REAL dtvpdt1(klon, klev), dtvpdq1(klon, klev)
138  REAL dplcldt(klon), dplcldr(klon)
139  REAL qcondc(klon, klev)
140  REAL qtc(klon, klev)
141  REAL sigt(klon, klev)
142  REAL wd(klon)
143  REAL plim1(klon), plim2(klon), asupmax(klon, klev)
144  REAL supmax0(klon), asupmaxmin(klon)
145
146  REAL sigd(klon)
147  REAL zx_t, zdelta, zx_qs, zcor
148  REAL tau_cld_cv, coefw_cld_cv
149
150!   INTEGER iflag_mix
151!   SAVE iflag_mix
152  INTEGER noff, minorig
153  INTEGER i, k, itra
154  REAL qs(klon, klev), qs_wake(klon, klev)
155  REAL cbmf(klon), plcl(klon), plfc(klon), wbeff(klon)
156!LF          SAVE cbmf
157!IM/JYG      REAL, SAVE, ALLOCATABLE :: cbmf(:)
158!!!$OMP THREADPRIVATE(cbmf)!
159  REAL cbmflast(klon)
160  INTEGER ifrst
161  SAVE ifrst
162  DATA ifrst/0/
163!$OMP THREADPRIVATE(ifrst)
164
165
166! Variables supplementaires liees au bilan d'energie
167! Real paire(klon)
168!LF      Real ql(klon,klev)
169! Save paire
170!LF      Save ql
171!LF      Real t1(klon,klev),q1(klon,klev)
172!LF      Save t1,q1
173! Data paire /1./
174  REAL, SAVE, ALLOCATABLE :: ql(:, :), q1(:, :), t1(:, :)
175!$OMP THREADPRIVATE(ql, q1, t1)
176
177! Variables liees au bilan d'energie et d'enthAlpi
178  REAL ztsol(klon)
179  REAL        h_vcol_tot, h_dair_tot, h_qw_tot, h_ql_tot, &
180              h_qs_tot, qw_tot, ql_tot, qs_tot, ec_tot
181  SAVE        h_vcol_tot, h_dair_tot, h_qw_tot, h_ql_tot, &
182              h_qs_tot, qw_tot, ql_tot, qs_tot, ec_tot
183!$OMP THREADPRIVATE(h_vcol_tot, h_dair_tot, h_qw_tot, h_ql_tot)
184!$OMP THREADPRIVATE(h_qs_tot, qw_tot, ql_tot, qs_tot , ec_tot)
185  REAL        d_h_vcol, d_h_dair, d_qt, d_qw, d_ql, d_qs, d_ec
186  REAL        d_h_vcol_phy
187  REAL        fs_bound, fq_bound
188  SAVE        d_h_vcol_phy
189!$OMP THREADPRIVATE(d_h_vcol_phy)
190  REAL        zero_v(klon)
191  CHARACTER *15 ztit
192  INTEGER     ip_ebil ! PRINT level for energy conserv. diag.
193  SAVE        ip_ebil
194  DATA        ip_ebil/2/
195!$OMP THREADPRIVATE(ip_ebil)
196  INTEGER     if_ebil ! level for energy conserv. dignostics
197  SAVE        if_ebil
198  DATA        if_ebil/2/
199!$OMP THREADPRIVATE(if_ebil)
200!+jld ec_conser
201  REAL d_t_ec(klon, klev) ! tendance du a la conersion Ec -> E thermique
202  REAL zrcpd
203!-jld ec_conser
204!LF
205  INTEGER nloc
206  LOGICAL, SAVE            :: first = .TRUE.
207!$OMP THREADPRIVATE(first)
208  INTEGER, SAVE            :: itap, igout
209!$OMP THREADPRIVATE(itap, igout)
210
211
212  include "YOMCST.h"
213  include "YOMCST2.h"
214  include "YOETHF.h"
215  include "FCTTRE.h"
216  include "iniprint.h"
217!jyg<
218  include "conema3.h"
219!>jyg
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
316!>jyg
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, 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! --Separation neige/pluie (pour diagnostics)       !jyg
480  DO k = 1, klev                                    !jyg
481    DO i = 1, klon                                  !jyg
482      IF (t1(i,k)<rtt) THEN                         !jyg
483        pmflxs(i, k) = Vprecip(i, k)                !jyg
484      ELSE                                          !jyg
485        pmflxr(i, k) = Vprecip(i, k)                !jyg
486      END IF                                        !jyg
487    END DO                                          !jyg
488  END DO                                            !jyg
489
490! c      IF (if_ebil.ge.2) THEN
491! c        ztit='after convect'
492! c        CALL diagetpq(paire,ztit,ip_ebil,2,2,dtime
493! c     e      , t1,q1,ql,qs,u,v,paprs,pplay
494! c     s      , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
495! c         call diagphy(paire,ztit,ip_ebil
496! c     e      , zero_v, zero_v, zero_v, zero_v, zero_v
497! c     e      , zero_v, rain, zero_v, ztsol
498! c     e      , d_h_vcol, d_qt, d_ec
499! c     s      , fs_bound, fq_bound )
500! c      END IF
501
502
503! les traceurs ne sont pas mis dans cette version de convect4:
504  IF (iflag_con==4) THEN
505    DO itra = 1, ntra
506      DO k = 1, klev
507        DO i = 1, klon
508          d_tra(i, k, itra) = 0.
509        END DO
510      END DO
511    END DO
512  END IF
513! print*, 'concvl->: dd_t,dd_q ',dd_t(1,1),dd_q(1,1)
514
515  DO k = 1, klev
516    DO i = 1, klon
517      dtvpdt1(i, k) = 0.
518      dtvpdq1(i, k) = 0.
519    END DO
520  END DO
521  DO i = 1, klon
522    dplcldt(i) = 0.
523    dplcldr(i) = 0.
524  END DO
525
526  IF (prt_level>=20) THEN
527    DO k = 1, klev
528! print*,'physiq apres_add_con i k it d_u d_v d_t d_q qdl0',igout, &
529!         k,itap,d_u_con(igout,k) ,d_v_con(igout,k), d_t_con(igout,k), &
530!         d_q_con(igout,k),dql0(igout,k)
531! print*,'phys apres_add_con itap Ma cin ALE ALP wak t q undi t q', &
532!         itap,Ma(igout,k),cin(igout),ALE(igout), ALP(igout), &
533!         t_wake(igout,k),q_wake(igout,k),t_undi(igout,k),q_undi(igout,k)
534! print*,'phy apres_add_con itap CON rain snow EMA wk1 wk2 Vpp mip', &
535!         itap,rain_con(igout),snow_con(igout),ema_work1(igout,k), &
536!         ema_work2(igout,k),Vprecip(igout,k), mip(igout,k)
537! print*,'phy apres_add_con itap upwd dnwd dnwd0 cape tvp Tconv ', &
538!         itap,upwd(igout,k),dnwd(igout,k),dnwd0(igout,k),cape(igout), &
539!         tvp(igout,k),Tconv(igout,k)
540! print*,'phy apres_add_con itap dtvpdt dtvdq dplcl dplcldr qcondc', &
541!         itap,dtvpdt1(igout,k),dtvpdq1(igout,k),dplcldt(igout), &
542!         dplcldr(igout),qcondc(igout,k)
543! print*,'phy apres_add_con itap wd pmflxr Kpmflxr Kp1 Kpmflxs Kp1', &
544!         itap,wd(igout),pmflxr(igout,k),pmflxr(igout,k+1),pmflxs(igout,k), &
545!         pmflxs(igout,k+1)
546! print*,'phy apres_add_con itap da phi mp ftd fqd lalim wgth', &
547!         itap,da(igout,k),phi(igout,k,k),mp(igout,k),ftd(igout,k), &
548!         fqd(igout,k),lalim_conv(igout),wght_th(igout,k)
549    END DO
550  END IF !(prt_level.EQ.20) THEN
551
552  RETURN
553END SUBROUTINE concvl
554
Note: See TracBrowser for help on using the repository browser.