/[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 186 by guez, Mon Mar 21 15:36:26 2016 UTC revision 187 by guez, Mon Mar 21 18:01:02 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 cv30_closure_m, only: cv30_closure
18      use cv30_compress_m, only: cv30_compress      use cv30_compress_m, only: cv30_compress
19      use cv30_feed_m, only: cv30_feed      use cv30_feed_m, only: cv30_feed
20      use cv30_mixing_m, only: cv30_mixing      use cv30_mixing_m, only: cv30_mixing
# Line 26  contains Line 27  contains
27      use cv30_yield_m, only: cv30_yield      use cv30_yield_m, only: cv30_yield
28      USE dimphy, ONLY: klev, klon      USE dimphy, ONLY: klev, klon
29    
30      real, intent(in):: t1(klon, klev) ! temperature      real, intent(in):: t1(klon, klev)
31      real, intent(in):: q1(klon, klev) ! specific hum      ! temperature (K), with first index corresponding to lowest model
32      real, intent(in):: qs1(klon, klev) ! sat specific hum      ! level
33      real, intent(in):: u1(klon, klev) ! u-wind  
34      real, intent(in):: v1(klon, klev) ! v-wind      real, intent(in):: q1(klon, klev)
35      real, intent(in):: p1(klon, klev) ! full level pressure      ! Specific humidity, with first index corresponding to lowest
36      real, intent(in):: ph1(klon, klev + 1) ! half level pressure      ! model level. Must be defined at same grid levels as T1.
37      integer, intent(out):: iflag1(klon) ! flag for Emanuel conditions  
38      real, intent(out):: ft1(klon, klev) ! temp tend      real, intent(in):: qs1(klon, klev)
39      real, intent(out):: fq1(klon, klev) ! spec hum tend      ! Saturation specific humidity, with first index corresponding to
40      real, intent(out):: fu1(klon, klev) ! u-wind tend      ! lowest model level. Must be defined at same grid levels as
41      real, intent(out):: fv1(klon, klev) ! v-wind tend      ! T1.
42      real, intent(out):: precip1(klon) ! precipitation  
43        real, intent(in):: u1(klon, klev), v1(klon, klev)
44        ! Zonal wind and meridional velocity (m/s), witth first index
45        ! corresponding with the lowest model level. Defined at same
46        ! levels as T1.
47    
48        real, intent(in):: p1(klon, klev)
49        ! Full level pressure (mb) of dimension KLEV, with first index
50        ! corresponding to lowest model level. Must be defined at same
51        ! grid levels as T1.
52    
53        real, intent(in):: ph1(klon, klev + 1)
54        ! Half level pressure (mb), with first index corresponding to
55        ! lowest level. These pressures are defined at levels intermediate
56        ! between those of P1, T1, Q1 and QS1. The first value of PH
57        ! should be greater than (i.e. at a lower level than) the first
58        ! value of the array P1.
59    
60        integer, intent(out):: iflag1(klon)
61        ! Flag for Emanuel conditions.
62    
63        ! 0: Moist convection occurs.
64    
65        ! 1: Moist convection occurs, but a CFL condition on the
66        ! subsidence warming is violated. This does not cause the scheme
67        ! to terminate.
68    
69        ! 2: Moist convection, but no precipitation because ep(inb) < 1e-4
70    
71        ! 3: No moist convection because new cbmf is 0 and old cbmf is 0.
72    
73        ! 4: No moist convection; atmosphere is not unstable
74    
75        ! 6: No moist convection because ihmin le minorig.
76    
77        ! 7: No moist convection because unreasonable parcel level
78        ! temperature or specific humidity.
79    
80        ! 8: No moist convection: lifted condensation level is above the
81        ! 200 mb level.
82    
83        ! 9: No moist convection: cloud base is higher then the level NL-1.
84    
85        real, intent(out):: ft1(klon, klev)
86        ! Temperature tendency (K/s), defined at same grid levels as T1,
87        ! Q1, QS1 and P1.
88    
89        real, intent(out):: fq1(klon, klev)
90        ! Specific humidity tendencies (s-1), defined at same grid levels
91        ! as T1, Q1, QS1 and P1.
92    
93        real, intent(out):: fu1(klon, klev), fv1(klon, klev)
94        ! Forcing (tendency) of zonal and meridional velocity (m/s^2),
95        ! defined at same grid levels as T1.
96    
97        real, intent(out):: precip1(klon) ! convective precipitation rate (mm/day)
98    
99      real, intent(out):: VPrecip1(klon, klev + 1)      real, intent(out):: VPrecip1(klon, klev + 1)
100      ! vertical profile of precipitation      ! vertical profile of convective precipitation (kg/m2/s)
101    
102      real, intent(inout):: sig1(klon, klev) ! section adiabatic updraft      real, intent(inout):: sig1(klon, klev) ! section adiabatic updraft
103    
# Line 50  contains Line 106  contains
106    
107      integer, intent(out):: icb1(klon)      integer, intent(out):: icb1(klon)
108      integer, intent(inout):: inb1(klon)      integer, intent(inout):: inb1(klon)
109      real, intent(in):: delt ! time step      real, intent(in):: delt ! the model time step (sec) between calls
110      real Ma1(klon, klev)  
111      ! Ma1 Real Output mass flux adiabatic updraft      real Ma1(klon, klev) ! Output mass flux adiabatic updraft
112    
113      real, intent(out):: upwd1(klon, klev)      real, intent(out):: upwd1(klon, klev)
114      ! total upward mass flux (adiab + mixed)      ! total upward mass flux (adiab + mixed)
# Line 60  contains Line 116  contains
116      real, intent(out):: dnwd1(klon, klev) ! saturated downward mass flux (mixed)      real, intent(out):: dnwd1(klon, klev) ! saturated downward mass flux (mixed)
117      real, intent(out):: dnwd01(klon, klev) ! unsaturated downward mass flux      real, intent(out):: dnwd01(klon, klev) ! unsaturated downward mass flux
118    
119      real qcondc1(klon, klev) ! cld      real qcondc1(klon, klev) ! Output in-cld mixing ratio of condensed water
120      ! qcondc1 Real Output in-cld mixing ratio of condensed water  
121      real wd1(klon) ! gust      real wd1(klon) ! gust
122      ! wd1 Real Output downdraft velocity scale for sfc fluxes      ! Output downdraft velocity scale for surface fluxes
123      real cape1(klon)      ! A convective downdraft velocity scale. For use in surface
124      ! cape1 Real Output CAPE      ! flux parameterizations. See convect.ps file for details.
125    
126        real cape1(klon) ! Output
127      real, intent(inout):: da1(klon, klev), phi1(klon, klev, klev)      real, intent(inout):: da1(klon, klev), phi1(klon, klev, klev)
128      real, intent(inout):: mp1(klon, klev)      real, intent(inout):: mp1(klon, klev)
129    
130      ! ARGUMENTS      ! Local:
   
     ! On input:  
   
     ! t: Array of absolute temperature (K) of dimension KLEV, with first  
     ! index corresponding to lowest model level. Note that this array  
     ! will be altered by the subroutine if dry convective adjustment  
     ! occurs and if IPBL is not equal to 0.  
   
     ! q: Array of specific humidity (gm/gm) of dimension KLEV, with first  
     ! index corresponding to lowest model level. Must be defined  
     ! at same grid levels as T. Note that this array will be altered  
     ! if dry convective adjustment occurs and if IPBL is not equal to 0.  
   
     ! qs: Array of saturation specific humidity of dimension KLEV, with first  
     ! index corresponding to lowest model level. Must be defined  
     ! at same grid levels as T. Note that this array will be altered  
     ! if dry convective adjustment occurs and if IPBL is not equal to 0.  
   
     ! u: Array of zonal wind velocity (m/s) of dimension KLEV, witth first  
     ! index corresponding with the lowest model level. Defined at  
     ! same levels as T. Note that this array will be altered if  
     ! dry convective adjustment occurs and if IPBL is not equal to 0.  
   
     ! v: Same as u but for meridional velocity.  
   
     ! p: Array of pressure (mb) of dimension KLEV, with first  
     ! index corresponding to lowest model level. Must be defined  
     ! at same grid levels as T.  
   
     ! ph: Array of pressure (mb) of dimension KLEV + 1, with first index  
     ! corresponding to lowest level. These pressures are defined at  
     ! levels intermediate between those of P, T, Q and QS. The first  
     ! value of PH should be greater than (i.e. at a lower level than)  
     ! the first value of the array P.  
   
     ! nl: The maximum number of levels to which convection can penetrate, plus 1  
     ! NL MUST be less than or equal to KLEV-1.  
   
     ! delt: The model time step (sec) between calls to CONVECT  
   
     ! On Output:  
   
     ! iflag: An output integer whose value denotes the following:  
     ! VALUE INTERPRETATION  
     ! ----- --------------  
     ! 0 Moist convection occurs.  
     ! 1 Moist convection occurs, but a CFL condition  
     ! on the subsidence warming is violated. This  
     ! does not cause the scheme to terminate.  
     ! 2 Moist convection, but no precip because ep(inb) lt 0.0001  
     ! 3 No moist convection because new cbmf is 0 and old cbmf is 0.  
     ! 4 No moist convection; atmosphere is not  
     ! unstable  
     ! 6 No moist convection because ihmin le minorig.  
     ! 7 No moist convection because unreasonable  
     ! parcel level temperature or specific humidity.  
     ! 8 No moist convection: lifted condensation  
     ! level is above the 200 mb level.  
     ! 9 No moist convection: cloud base is higher  
     ! then the level NL-1.  
   
     ! ft: Array of temperature tendency (K/s) of dimension KLEV, defined at same  
     ! grid levels as T, Q, QS and P.  
   
     ! fq: Array of specific humidity tendencies ((gm/gm)/s) of dimension KLEV,  
     ! defined at same grid levels as T, Q, QS and P.  
   
     ! fu: Array of forcing of zonal velocity (m/s^2) of dimension KLEV,  
     ! defined at same grid levels as T.  
   
     ! fv: Same as FU, but for forcing of meridional velocity.  
   
     ! precip: Scalar convective precipitation rate (mm/day).  
   
     ! VPrecip: Vertical profile of convective precipitation (kg/m2/s).  
   
     ! wd: A convective downdraft velocity scale. For use in surface  
     ! flux parameterizations. See convect.ps file for details.  
   
     ! tprime: A convective downdraft temperature perturbation scale (K).  
     ! For use in surface flux parameterizations. See convect.ps  
     ! file for details.  
   
     ! qprime: A convective downdraft specific humidity  
     ! perturbation scale (gm/gm).  
     ! For use in surface flux parameterizations. See convect.ps  
     ! file for details.  
   
     ! cbmf: The cloud base mass flux ((kg/m**2)/s). THIS SCALAR VALUE MUST  
     ! BE STORED BY THE CALLING PROGRAM AND RETURNED TO CONVECT AT  
     ! ITS NEXT CALL. That is, the value of CBMF must be "remembered"  
     ! by the calling program between calls to CONVECT.  
   
     ! det: Array of detrainment mass flux of dimension KLEV.  
   
     ! Local arrays  
131    
132      real da(klon, klev), phi(klon, klev, klev), mp(klon, klev)      real da(klon, klev), phi(klon, klev, klev), mp(klon, klev)
133    
# Line 195  contains Line 156  contains
156    
157      integer ncum      integer ncum
158    
159      ! (local) compressed fields:      ! Compressed fields:
160    
161      integer idcum(klon)      integer idcum(klon)
162      integer iflag(klon), nk(klon), icb(klon)      integer iflag(klon), nk(klon), icb(klon)
# Line 243  contains Line 204  contains
204      ! includes microphysical parameters and parameters that      ! includes microphysical parameters and parameters that
205      ! control the rate of approach to quasi-equilibrium)      ! control the rate of approach to quasi-equilibrium)
206      ! (common cvparam)      ! (common cvparam)
   
207      CALL cv30_param(delt)      CALL cv30_param(delt)
208    
209      ! INITIALIZE OUTPUT ARRAYS AND PARAMETERS      ! INITIALIZE OUTPUT ARRAYS AND PARAMETERS
210    
211      do k = 1, klev      do k = 1, klev
212         do i = 1, klon         do i = 1, klon
213            ft1(i, k) = 0.0            ft1(i, k) = 0.
214            fq1(i, k) = 0.0            fq1(i, k) = 0.
215            fu1(i, k) = 0.0            fu1(i, k) = 0.
216            fv1(i, k) = 0.0            fv1(i, k) = 0.
217            tvp1(i, k) = 0.0            tvp1(i, k) = 0.
218            tp1(i, k) = 0.0            tp1(i, k) = 0.
219            clw1(i, k) = 0.0            clw1(i, k) = 0.
220            clw(i, k) = 0.0            clw(i, k) = 0.
221            gz1(i, k) = 0.            gz1(i, k) = 0.
222            VPrecip1(i, k) = 0.            VPrecip1(i, k) = 0.
223            Ma1(i, k) = 0.0            Ma1(i, k) = 0.
224            upwd1(i, k) = 0.0            upwd1(i, k) = 0.
225            dnwd1(i, k) = 0.0            dnwd1(i, k) = 0.
226            dnwd01(i, k) = 0.0            dnwd01(i, k) = 0.
227            qcondc1(i, k) = 0.0            qcondc1(i, k) = 0.
228         end do         end do
229      end do      end do
230    
231      do i = 1, klon      do i = 1, klon
232         precip1(i) = 0.0         precip1(i) = 0.
233         iflag1(i) = 0         iflag1(i) = 0
234         wd1(i) = 0.0         wd1(i) = 0.
235         cape1(i) = 0.0         cape1(i) = 0.
236         VPrecip1(i, klev + 1) = 0.0         VPrecip1(i, klev + 1) = 0.
237      end do      end do
238    
239      do il = 1, klon      do il = 1, klon
# Line 320  contains Line 280  contains
280              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, &
281              tvp, clw, sig, w0)              tvp, clw, sig, w0)
282    
283         ! Undilute (adiabatic) updraft, second part: find the rest of         CALL cv30_undilute2(ncum, icb, icbs, nk, tnk, qnk, gznk, t, qs, gz, p, &
284         ! the lifted parcel temperatures; compute the precipitation              h, tv, lv, pbase, buoybase, plcl, inb(:ncum), tp, tvp, clw, hp, &
285         ! efficiencies and the fraction of precipitation falling              ep, sigp, buoy)
        ! outside of cloud; find the level of neutral buoyancy.  
        CALL cv30_undilute2(klon, ncum, klev, icb, icbs, nk, tnk, qnk, gznk, &  
             t, qs, gz, p, h, tv, lv, pbase, buoybase, plcl, inb, tp, &  
             tvp, clw, hp, ep, sigp, buoy) !na->klev  
286    
287         ! CLOSURE         ! CLOSURE
288         CALL cv30_closure(klon, ncum, klev, icb, inb, pbase, p, ph, tv, &         CALL cv30_closure(klon, ncum, klev, icb, inb, pbase, p, ph, tv, &
# Line 338  contains Line 294  contains
294              sij, elij, ments, qents)              sij, elij, ments, qents)
295    
296         ! Unsaturated (precipitating) downdrafts         ! Unsaturated (precipitating) downdrafts
297         CALL cv30_unsat(klon, ncum, klev, klev, icb(:ncum), inb(:ncum), t, q, &         CALL cv30_unsat(ncum, icb(:ncum), inb(:ncum), t, q, qs, gz, u, v, p, &
298              qs, gz, u, v, p, ph, th, tv, lv, cpn, ep, sigp, clw, m, ment, &              ph, th, tv, lv, cpn, ep, sigp, clw, m, ment, elij, delt, plcl, &
299              elij, delt, plcl, mp, qp, up, vp, wt, water, evap, b)! na->klev              mp, qp, up, vp, wt, water, evap, b(:ncum, :))
300    
301         ! Yield (tendencies, precipitation, variables of interface with         ! Yield (tendencies, precipitation, variables of interface with
302         ! other processes, etc)         ! other processes, etc)

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

  ViewVC Help
Powered by ViewVC 1.1.21