/[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 183 by guez, Wed Mar 16 14:42:58 2016 UTC revision 186 by guez, Mon Mar 21 15:36:26 2016 UTC
# Line 14  contains Line 14  contains
14    
15      ! Several modules corresponding to different physical processes      ! Several modules corresponding to different physical processes
16    
17      use cv3_compress_m, only: cv3_compress      use cv30_compress_m, only: cv30_compress
18      use cv3_feed_m, only: cv3_feed      use cv30_feed_m, only: cv30_feed
19      use cv3_mixing_m, only: cv3_mixing      use cv30_mixing_m, only: cv30_mixing
20      use cv3_param_m, only: cv3_param      use cv30_param_m, only: cv30_param
21      use cv3_prelim_m, only: cv3_prelim      use cv30_prelim_m, only: cv30_prelim
22      use cv3_tracer_m, only: cv3_tracer      use cv30_tracer_m, only: cv30_tracer
23      use cv3_uncompress_m, only: cv3_uncompress      use cv30_uncompress_m, only: cv30_uncompress
24      use cv3_undilute2_m, only: cv3_undilute2      use cv30_undilute2_m, only: cv30_undilute2
25      use cv3_unsat_m, only: cv3_unsat      use cv30_unsat_m, only: cv30_unsat
26      use cv3_yield_m, only: cv3_yield      use cv30_yield_m, only: cv30_yield
27      USE dimphy, ONLY: klev, klon      USE dimphy, ONLY: klev, klon
28    
29      real, intent(in):: t1(klon, klev) ! temperature      real, intent(in):: t1(klon, klev) ! temperature
# Line 235  contains Line 235  contains
235    
236      ! SET CONSTANTS AND PARAMETERS      ! SET CONSTANTS AND PARAMETERS
237    
     ! set simulation flags:  
     ! (common cvflag)  
     CALL cv_flag  
   
238      ! set thermodynamical constants:      ! set thermodynamical constants:
239      ! (common cvthermo)      ! (common cvthermo)
240      CALL cv_thermo      CALL cv_thermo
# Line 248  contains Line 244  contains
244      ! control the rate of approach to quasi-equilibrium)      ! control the rate of approach to quasi-equilibrium)
245      ! (common cvparam)      ! (common cvparam)
246    
247      CALL cv3_param(klev, delt)      CALL cv30_param(delt)
248    
249      ! INITIALIZE OUTPUT ARRAYS AND PARAMETERS      ! INITIALIZE OUTPUT ARRAYS AND PARAMETERS
250    
# Line 286  contains Line 282  contains
282      enddo      enddo
283    
284      ! CALCULATE ARRAYS OF GEOPOTENTIAL, HEAT CAPACITY & STATIC ENERGY      ! CALCULATE ARRAYS OF GEOPOTENTIAL, HEAT CAPACITY & STATIC ENERGY
285      CALL cv3_prelim(klon, klev, klev + 1, t1, q1, p1, ph1, lv1, cpn1, tv1, &      CALL cv30_prelim(klon, klev, klev + 1, t1, q1, p1, ph1, lv1, cpn1, tv1, &
286           gz1, h1, hm1, th1)           gz1, h1, hm1, th1)
287    
288      ! CONVECTIVE FEED      ! CONVECTIVE FEED
289      CALL cv3_feed(klon, klev, t1, q1, qs1, p1, ph1, gz1, nk1, icb1, &      CALL cv30_feed(klon, klev, t1, q1, qs1, p1, ph1, gz1, nk1, icb1, &
290           icbmax, iflag1, tnk1, qnk1, gznk1, plcl1) ! klev->na           icbmax, iflag1, tnk1, qnk1, gznk1, plcl1) ! klev->na
291    
292      ! UNDILUTE (ADIABATIC) UPDRAFT / 1st part      ! UNDILUTE (ADIABATIC) UPDRAFT / 1st part
293      ! (up through ICB for convect4, up through ICB + 1 for convect3)      ! (up through ICB for convect4, up through ICB + 1 for convect3)
294      ! Calculates the lifted parcel virtual temperature at nk, the      ! Calculates the lifted parcel virtual temperature at nk, the
295      ! actual temperature, and the adiabatic liquid water content.      ! actual temperature, and the adiabatic liquid water content.
296      CALL cv3_undilute1(klon, klev, t1, q1, qs1, gz1, plcl1, p1, nk1, icb1, &      CALL cv30_undilute1(klon, klev, t1, q1, qs1, gz1, plcl1, p1, nk1, icb1, &
297           tp1, tvp1, clw1, icbs1) ! klev->na           tp1, tvp1, clw1, icbs1) ! klev->na
298    
299      ! TRIGGERING      ! TRIGGERING
300      CALL cv3_trigger(klon, klev, icb1, plcl1, p1, th1, tv1, tvp1, pbase1, &      CALL cv30_trigger(klon, klev, icb1, plcl1, p1, th1, tv1, tvp1, pbase1, &
301           buoybase1, iflag1, sig1, w01) ! klev->na           buoybase1, iflag1, sig1, w01) ! klev->na
302    
303      ! Moist convective adjustment is necessary      ! Moist convective adjustment is necessary
# Line 317  contains Line 313  contains
313      IF (ncum > 0) THEN      IF (ncum > 0) THEN
314         ! COMPRESS THE FIELDS         ! COMPRESS THE FIELDS
315         ! (-> vectorization over convective gridpoints)         ! (-> vectorization over convective gridpoints)
316         CALL cv3_compress(klon, klon, ncum, klev, iflag1, nk1, icb1, icbs1, &         CALL cv30_compress(klon, klon, ncum, klev, iflag1, nk1, icb1, icbs1, &
317              plcl1, tnk1, qnk1, gznk1, pbase1, buoybase1, t1, q1, qs1, u1, &              plcl1, tnk1, qnk1, gznk1, pbase1, buoybase1, t1, q1, qs1, u1, &
318              v1, gz1, th1, h1, lv1, cpn1, p1, ph1, tv1, tp1, tvp1, clw1, &              v1, gz1, th1, h1, lv1, cpn1, p1, ph1, tv1, tp1, tvp1, clw1, &
319              sig1, w01, iflag, nk, icb, icbs, plcl, tnk, qnk, gznk, pbase, &              sig1, w01, iflag, nk, icb, icbs, plcl, tnk, qnk, gznk, pbase, &
320              buoybase, t, q, qs, u, v, gz, th, h, lv, cpn, p, ph, tv, tp, &              buoybase, t, q, qs, u, v, gz, th, h, lv, cpn, p, ph, tv, tp, &
321              tvp, clw, sig, w0)              tvp, clw, sig, w0)
322    
323         ! UNDILUTE (ADIABATIC) UPDRAFT / second part :         ! Undilute (adiabatic) updraft, second part: find the rest of
324         ! FIND THE REST OF THE LIFTED PARCEL TEMPERATURES         ! the lifted parcel temperatures; compute the precipitation
325         ! &         ! efficiencies and the fraction of precipitation falling
326         ! COMPUTE THE PRECIPITATION EFFICIENCIES AND THE         ! outside of cloud; find the level of neutral buoyancy.
327         ! FRACTION OF PRECIPITATION FALLING OUTSIDE OF CLOUD         CALL cv30_undilute2(klon, ncum, klev, icb, icbs, nk, tnk, qnk, gznk, &
        ! &  
        ! FIND THE LEVEL OF NEUTRAL BUOYANCY  
        CALL cv3_undilute2(klon, ncum, klev, icb, icbs, nk, tnk, qnk, gznk, &  
328              t, qs, gz, p, h, tv, lv, pbase, buoybase, plcl, inb, tp, &              t, qs, gz, p, h, tv, lv, pbase, buoybase, plcl, inb, tp, &
329              tvp, clw, hp, ep, sigp, buoy) !na->klev              tvp, clw, hp, ep, sigp, buoy) !na->klev
330    
331         ! CLOSURE         ! CLOSURE
332         CALL cv3_closure(klon, ncum, klev, icb, inb, pbase, p, ph, tv, &         CALL cv30_closure(klon, ncum, klev, icb, inb, pbase, p, ph, tv, &
333              buoy, sig, w0, cape, m) ! na->klev              buoy, sig, w0, cape, m) ! na->klev
334    
335         ! MIXING         ! MIXING
336         CALL cv3_mixing(klon, ncum, klev, klev, icb, nk, inb, t, q, qs, u, &         CALL cv30_mixing(klon, ncum, klev, klev, icb, nk, inb, t, q, qs, u, &
337              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, &
338              sij, elij, ments, qents)              sij, elij, ments, qents)
339    
340         ! UNSATURATED (PRECIPITATING) DOWNDRAFTS         ! Unsaturated (precipitating) downdrafts
341         CALL cv3_unsat(klon, ncum, klev, klev, icb, inb, t, q, qs, gz, u, &         CALL cv30_unsat(klon, ncum, klev, klev, icb(:ncum), inb(:ncum), t, q, &
342              v, p, ph, th, tv, lv, cpn, ep, sigp, clw, m, ment, elij, delt, &              qs, gz, u, v, p, ph, th, tv, lv, cpn, ep, sigp, clw, m, ment, &
343              plcl, mp, qp, up, vp, wt, water, evap, b)! na->klev              elij, delt, plcl, mp, qp, up, vp, wt, water, evap, b)! na->klev
344    
345         ! YIELD         ! Yield (tendencies, precipitation, variables of interface with
346         ! (tendencies, precipitation, variables of interface with other         ! other processes, etc)
347         ! processes, etc)         CALL cv30_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, &  
348              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, &
349              wt, water, evap, b, ment, qent, uent, vent, nent, elij, sig, &              wt, water, evap, b, ment, qent, uent, vent, nent, elij, sig, &
350              tv, tvp, iflag, precip, VPrecip, ft, fq, fu, fv, upwd, dnwd, &              tv, tvp, iflag, precip, VPrecip, ft, fq, fu, fv, upwd, dnwd, &
351              dnwd0, ma, mike, tls, tps, qcondc, wd)! na->klev              dnwd0, ma, mike, tls, tps, qcondc, wd)! na->klev
352    
353         ! passive tracers         ! passive tracers
354         CALL cv3_tracer(klon, ncum, klev, ment, sij, da, phi)         CALL cv30_tracer(klon, ncum, klev, ment, sij, da, phi)
355    
356         ! UNCOMPRESS THE FIELDS         ! UNCOMPRESS THE FIELDS
357    
358         ! set iflag1 = 42 for non convective points         ! set iflag1 = 42 for non convective points
359         do i = 1, klon         iflag1 = 42
           iflag1(i) = 42  
        end do  
360    
361         CALL cv3_uncompress(idcum(:ncum), iflag, precip, VPrecip, sig, w0, &         CALL cv30_uncompress(idcum(:ncum), iflag, precip, VPrecip, sig, w0, &
362              ft, fq, fu, fv, inb, Ma, upwd, dnwd, dnwd0, qcondc, wd, cape, &              ft, fq, fu, fv, inb, Ma, upwd, dnwd, dnwd0, qcondc, wd, cape, &
363              da, phi, mp, iflag1, precip1, VPrecip1, sig1, w01, ft1, fq1, &              da, phi, mp, iflag1, precip1, VPrecip1, sig1, w01, ft1, fq1, &
364              fu1, fv1, inb1, Ma1, upwd1, dnwd1, dnwd01, qcondc1, wd1, &              fu1, fv1, inb1, Ma1, upwd1, dnwd1, dnwd01, qcondc1, wd1, &

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

  ViewVC Help
Powered by ViewVC 1.1.21