/[lmdze]/trunk/Sources/phylmd/cv_driver.f
ViewVC logotype

Diff of /trunk/Sources/phylmd/cv_driver.f

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

revision 182 by guez, Wed Mar 16 11:11:27 2016 UTC revision 183 by guez, Wed Mar 16 14:42:58 2016 UTC
# Line 4  module cv_driver_m Line 4  module cv_driver_m
4    
5  contains  contains
6    
7    SUBROUTINE cv_driver(t1, q1, qs1, u1, v1, p1, ph1, iflag1, ft1, &    SUBROUTINE cv_driver(t1, q1, qs1, u1, v1, p1, ph1, iflag1, ft1, fq1, fu1, &
8         fq1, fu1, fv1, precip1, VPrecip1, cbmf1, sig1, w01, icb1, inb1, delt, &         fv1, precip1, VPrecip1, sig1, w01, icb1, inb1, delt, Ma1, upwd1, &
9         Ma1, upwd1, dnwd1, dnwd01, qcondc1, wd1, cape1, da1, phi1, mp1)         dnwd1, dnwd01, qcondc1, wd1, cape1, da1, phi1, mp1)
10    
11      ! From LMDZ4/libf/phylmd/cv_driver.F, version 1.3, 2005/04/15 12:36:17      ! From LMDZ4/libf/phylmd/cv_driver.F, version 1.3, 2005/04/15 12:36:17
12      ! Main driver for convection      ! Main driver for convection
# Line 21  contains Line 21  contains
21      use cv3_prelim_m, only: cv3_prelim      use cv3_prelim_m, only: cv3_prelim
22      use cv3_tracer_m, only: cv3_tracer      use cv3_tracer_m, only: cv3_tracer
23      use cv3_uncompress_m, only: cv3_uncompress      use cv3_uncompress_m, only: cv3_uncompress
24        use cv3_undilute2_m, only: cv3_undilute2
25      use cv3_unsat_m, only: cv3_unsat      use cv3_unsat_m, only: cv3_unsat
26      use cv3_yield_m, only: cv3_yield      use cv3_yield_m, only: cv3_yield
27      USE dimphy, ONLY: klev, klon      USE dimphy, ONLY: klev, klon
# Line 42  contains Line 43  contains
43      real, intent(out):: VPrecip1(klon, klev + 1)      real, intent(out):: VPrecip1(klon, klev + 1)
44      ! vertical profile of precipitation      ! vertical profile of precipitation
45    
     real, intent(inout):: cbmf1(klon) ! cloud base mass flux  
46      real, intent(inout):: sig1(klon, klev) ! section adiabatic updraft      real, intent(inout):: sig1(klon, klev) ! section adiabatic updraft
47    
48      real, intent(inout):: w01(klon, klev)      real, intent(inout):: w01(klon, klev)
# Line 201  contains Line 201  contains
201      integer iflag(klon), nk(klon), icb(klon)      integer iflag(klon), nk(klon), icb(klon)
202      integer nent(klon, klev)      integer nent(klon, klev)
203      integer icbs(klon)      integer icbs(klon)
204      integer inb(klon), inbis(klon)      integer inb(klon)
205    
206      real plcl(klon), tnk(klon), qnk(klon), gznk(klon)      real plcl(klon), tnk(klon), qnk(klon), gznk(klon)
207      real t(klon, klev), q(klon, klev), qs(klon, klev)      real t(klon, klev), q(klon, klev), qs(klon, klev)
# Line 209  contains Line 209  contains
209      real gz(klon, klev), h(klon, klev), lv(klon, klev), cpn(klon, klev)      real gz(klon, klev), h(klon, klev), lv(klon, klev), cpn(klon, klev)
210      real p(klon, klev), ph(klon, klev + 1), tv(klon, klev), tp(klon, klev)      real p(klon, klev), ph(klon, klev + 1), tv(klon, klev), tp(klon, klev)
211      real clw(klon, klev)      real clw(klon, klev)
     real dph(klon, klev)  
212      real pbase(klon), buoybase(klon), th(klon, klev)      real pbase(klon), buoybase(klon), th(klon, klev)
213      real tvp(klon, klev)      real tvp(klon, klev)
214      real sig(klon, klev), w0(klon, klev)      real sig(klon, klev), w0(klon, klev)
215      real hp(klon, klev), ep(klon, klev), sigp(klon, klev)      real hp(klon, klev), ep(klon, klev), sigp(klon, klev)
216      real frac(klon), buoy(klon, klev)      real buoy(klon, klev)
217      real cape(klon)      real cape(klon)
218      real m(klon, klev), ment(klon, klev, klev), qent(klon, klev, klev)      real m(klon, klev), ment(klon, klev, klev), qent(klon, klev, klev)
219      real uent(klon, klev, klev), vent(klon, klev, klev)      real uent(klon, klev, klev), vent(klon, klev, klev)
# Line 226  contains Line 225  contains
225      real fu(klon, klev), fv(klon, klev)      real fu(klon, klev), fv(klon, klev)
226      real upwd(klon, klev), dnwd(klon, klev), dnwd0(klon, klev)      real upwd(klon, klev), dnwd(klon, klev), dnwd0(klon, klev)
227      real Ma(klon, klev), mike(klon, klev), tls(klon, klev)      real Ma(klon, klev), mike(klon, klev), tls(klon, klev)
228      real tps(klon, klev), qprime(klon), tprime(klon)      real tps(klon, klev)
229      real precip(klon)      real precip(klon)
230      real VPrecip(klon, klev + 1)      real VPrecip(klon, klev + 1)
231      real qcondc(klon, klev) ! cld      real qcondc(klon, klev) ! cld
# Line 238  contains Line 237  contains
237    
238      ! set simulation flags:      ! set simulation flags:
239      ! (common cvflag)      ! (common cvflag)
   
240      CALL cv_flag      CALL cv_flag
241    
242      ! set thermodynamical constants:      ! set thermodynamical constants:
243      ! (common cvthermo)      ! (common cvthermo)
   
244      CALL cv_thermo      CALL cv_thermo
245    
246      ! set convect parameters      ! set convect parameters
   
247      ! includes microphysical parameters and parameters that      ! includes microphysical parameters and parameters that
248      ! control the rate of approach to quasi-equilibrium)      ! control the rate of approach to quasi-equilibrium)
249      ! (common cvparam)      ! (common cvparam)
# Line 265  contains Line 261  contains
261            tvp1(i, k) = 0.0            tvp1(i, k) = 0.0
262            tp1(i, k) = 0.0            tp1(i, k) = 0.0
263            clw1(i, k) = 0.0            clw1(i, k) = 0.0
           !ym  
264            clw(i, k) = 0.0            clw(i, k) = 0.0
265            gz1(i, k) = 0.            gz1(i, k) = 0.
266            VPrecip1(i, k) = 0.            VPrecip1(i, k) = 0.
# Line 291  contains Line 286  contains
286      enddo      enddo
287    
288      ! CALCULATE ARRAYS OF GEOPOTENTIAL, HEAT CAPACITY & STATIC ENERGY      ! CALCULATE ARRAYS OF GEOPOTENTIAL, HEAT CAPACITY & STATIC ENERGY
   
289      CALL cv3_prelim(klon, klev, klev + 1, t1, q1, p1, ph1, lv1, cpn1, tv1, &      CALL cv3_prelim(klon, klev, klev + 1, t1, q1, p1, ph1, lv1, cpn1, tv1, &
290           gz1, h1, hm1, th1)           gz1, h1, hm1, th1)
291    
292      ! CONVECTIVE FEED      ! CONVECTIVE FEED
   
293      CALL cv3_feed(klon, klev, t1, q1, qs1, p1, ph1, gz1, nk1, icb1, &      CALL cv3_feed(klon, klev, t1, q1, qs1, p1, ph1, gz1, nk1, icb1, &
294           icbmax, iflag1, tnk1, qnk1, gznk1, plcl1) ! klev->na           icbmax, iflag1, tnk1, qnk1, gznk1, plcl1) ! klev->na
295    
# Line 304  contains Line 297  contains
297      ! (up through ICB for convect4, up through ICB + 1 for convect3)      ! (up through ICB for convect4, up through ICB + 1 for convect3)
298      ! Calculates the lifted parcel virtual temperature at nk, the      ! Calculates the lifted parcel virtual temperature at nk, the
299      ! actual temperature, and the adiabatic liquid water content.      ! actual temperature, and the adiabatic liquid water content.
   
300      CALL cv3_undilute1(klon, klev, t1, q1, qs1, gz1, plcl1, p1, nk1, icb1, &      CALL cv3_undilute1(klon, klev, t1, q1, qs1, gz1, plcl1, p1, nk1, icb1, &
301           tp1, tvp1, clw1, icbs1) ! klev->na           tp1, tvp1, clw1, icbs1) ! klev->na
302    
303      ! TRIGGERING      ! TRIGGERING
   
304      CALL cv3_trigger(klon, klev, icb1, plcl1, p1, th1, tv1, tvp1, pbase1, &      CALL cv3_trigger(klon, klev, icb1, plcl1, p1, th1, tv1, tvp1, pbase1, &
305           buoybase1, iflag1, sig1, w01) ! klev->na           buoybase1, iflag1, sig1, w01) ! klev->na
306    
# Line 326  contains Line 317  contains
317      IF (ncum > 0) THEN      IF (ncum > 0) THEN
318         ! COMPRESS THE FIELDS         ! COMPRESS THE FIELDS
319         ! (-> vectorization over convective gridpoints)         ! (-> vectorization over convective gridpoints)
   
320         CALL cv3_compress(klon, klon, ncum, klev, iflag1, nk1, icb1, icbs1, &         CALL cv3_compress(klon, klon, ncum, klev, iflag1, nk1, icb1, icbs1, &
321              plcl1, tnk1, qnk1, gznk1, pbase1, buoybase1, t1, q1, qs1, u1, &              plcl1, tnk1, qnk1, gznk1, pbase1, buoybase1, t1, q1, qs1, u1, &
322              v1, gz1, th1, h1, lv1, cpn1, p1, ph1, tv1, tp1, tvp1, clw1, &              v1, gz1, th1, h1, lv1, cpn1, p1, ph1, tv1, tp1, tvp1, clw1, &
# Line 341  contains Line 331  contains
331         ! FRACTION OF PRECIPITATION FALLING OUTSIDE OF CLOUD         ! FRACTION OF PRECIPITATION FALLING OUTSIDE OF CLOUD
332         ! &         ! &
333         ! FIND THE LEVEL OF NEUTRAL BUOYANCY         ! FIND THE LEVEL OF NEUTRAL BUOYANCY
   
334         CALL cv3_undilute2(klon, ncum, klev, icb, icbs, nk, tnk, qnk, gznk, &         CALL cv3_undilute2(klon, ncum, klev, icb, icbs, nk, tnk, qnk, gznk, &
335              t, qs, gz, p, h, tv, lv, pbase, buoybase, plcl, inb, tp, &              t, qs, gz, p, h, tv, lv, pbase, buoybase, plcl, inb, tp, &
336              tvp, clw, hp, ep, sigp, buoy) !na->klev              tvp, clw, hp, ep, sigp, buoy) !na->klev
337    
338         ! CLOSURE         ! CLOSURE
   
339         CALL cv3_closure(klon, ncum, klev, icb, inb, pbase, p, ph, tv, &         CALL cv3_closure(klon, ncum, klev, icb, inb, pbase, p, ph, tv, &
340              buoy, sig, w0, cape, m) ! na->klev              buoy, sig, w0, cape, m) ! na->klev
341    
342         ! MIXING         ! MIXING
   
343         CALL cv3_mixing(klon, ncum, klev, klev, icb, nk, inb, t, q, qs, u, &         CALL cv3_mixing(klon, ncum, klev, klev, icb, nk, inb, t, q, qs, u, &
344              v, h, lv, hp, ep, clw, m, sig, ment, qent, uent, vent, nent, &              v, h, lv, hp, ep, clw, m, sig, ment, qent, uent, vent, nent, &
345              sij, elij, ments, qents)              sij, elij, ments, qents)
346    
347         ! UNSATURATED (PRECIPITATING) DOWNDRAFTS         ! UNSATURATED (PRECIPITATING) DOWNDRAFTS
   
348         CALL cv3_unsat(klon, ncum, klev, klev, icb, inb, t, q, qs, gz, u, &         CALL cv3_unsat(klon, ncum, klev, klev, icb, inb, t, q, qs, gz, u, &
349              v, p, ph, th, tv, lv, cpn, ep, sigp, clw, m, ment, elij, delt, &              v, p, ph, th, tv, lv, cpn, ep, sigp, clw, m, ment, elij, delt, &
350              plcl, mp, qp, up, vp, wt, water, evap, b)! na->klev              plcl, mp, qp, up, vp, wt, water, evap, b)! na->klev
# Line 366  contains Line 352  contains
352         ! YIELD         ! YIELD
353         ! (tendencies, precipitation, variables of interface with other         ! (tendencies, precipitation, variables of interface with other
354         ! processes, etc)         ! processes, etc)
   
355         CALL cv3_yield(klon, ncum, klev, klev, icb, inb, delt, t, q, u, v, &         CALL cv3_yield(klon, ncum, klev, klev, icb, inb, delt, t, q, u, v, &
356              gz, p, ph, h, hp, lv, cpn, th, ep, clw, m, tp, mp, qp, up, vp, &              gz, p, ph, h, hp, lv, cpn, th, ep, clw, m, tp, mp, qp, up, vp, &
357              wt, water, evap, b, ment, qent, uent, vent, nent, elij, sig, &              wt, water, evap, b, ment, qent, uent, vent, nent, elij, sig, &
# Line 374  contains Line 359  contains
359              dnwd0, ma, mike, tls, tps, qcondc, wd)! na->klev              dnwd0, ma, mike, tls, tps, qcondc, wd)! na->klev
360    
361         ! passive tracers         ! passive tracers
   
362         CALL cv3_tracer(klon, ncum, klev, ment, sij, da, phi)         CALL cv3_tracer(klon, ncum, klev, ment, sij, da, phi)
363    
364         ! UNCOMPRESS THE FIELDS         ! UNCOMPRESS THE FIELDS
# Line 389  contains Line 373  contains
373              da, phi, mp, iflag1, precip1, VPrecip1, sig1, w01, ft1, fq1, &              da, phi, mp, iflag1, precip1, VPrecip1, sig1, w01, ft1, fq1, &
374              fu1, fv1, inb1, Ma1, upwd1, dnwd1, dnwd01, qcondc1, wd1, &              fu1, fv1, inb1, Ma1, upwd1, dnwd1, dnwd01, qcondc1, wd1, &
375              cape1, da1, phi1, mp1)              cape1, da1, phi1, mp1)
376      ENDIF ! ncum>0      ENDIF
377    
378    end SUBROUTINE cv_driver    end SUBROUTINE cv_driver
379    

Legend:
Removed from v.182  
changed lines
  Added in v.183

  ViewVC Help
Powered by ViewVC 1.1.21