Processing math: 100%
Common Community Physics Package (CCPP) Scientific Documentation  Version 2.0
All Classes Namespaces Functions Variables Modules Pages
subroutine zhaocarr_gscond::zhaocarr_gscond_run ( integer, intent(in)  im,
integer, intent(in)  ix,
integer, intent(in)  km,
real(kind=kind_phys), intent(in)  dt,
real(kind=kind_phys), intent(in)  dtf,
real(kind=kind_phys), dimension(ix,km), intent(in)  prsl,
real(kind=kind_phys), dimension(im), intent(in)  ps,
real(kind=kind_phys), dimension(ix,km), intent(inout)  q,
real(kind=kind_phys), dimension(ix,km), intent(in)  clw1,
real(kind=kind_phys), dimension(ix,km), intent(in)  clw2,
real(kind=kind_phys), dimension(ix,km), intent(out)  cwm,
real(kind=kind_phys), dimension(ix,km), intent(inout)  t,
real(kind=kind_phys), dimension(ix,km), intent(inout)  tp,
real(kind=kind_phys), dimension(ix,km), intent(inout)  qp,
real(kind=kind_phys), dimension(im), intent(inout)  psp,
real(kind=kind_phys), dimension(ix,km), intent(inout)  tp1,
real(kind=kind_phys), dimension(ix,km), intent(inout)  qp1,
real(kind=kind_phys), dimension(im), intent(inout)  psp1,
real(kind=kind_phys), dimension(im,km), intent(in)  u,
logical, intent(in)  lprnt,
integer, intent(in)  ipr,
character(len=*), intent(out)  errmsg,
integer, intent(out)  errflg 
)
  1. Begining of grid-scale condensation/evaporation loop (start of k-loop, i-loop)
  2. Compute ice-water identification number IW.
    The distinction between cloud water and cloud ice is made by the cloud identification number IW, which is zero for cloud water and unity for cloud ice (Table 2 in Zhao and Carr (1997) [111]):
    • All clouds are defined to consist of liquid water below the freezing level ( T\geq 0^oC) and of ice particles above the T=-15^oC level.
    • In the temperature region between -15^oC and 0^oC, clouds may be composed of liquid water or ice. If there are cloud ice particles above this point at the previous or current time step, or if the cloud at this point at the previous time step consists of ice particles, then the cloud substance at this point is considered to be ice particles because of the cloud seeding effect and the memory of its content. Otherwise, all clouds in this region are considered to contain supercooled cloud water.
  3. Condensation and evaporation of cloud
    • Compute the changes in t, q and p ( A_{t}, A_{q} and A_{p}) caused by all the processes except grid-scale condensation and evaporation.

      A_{t}=(t-tp)/dt

      A_{q}=(q-qp)/dt

      A_{p}=(prsl-\frac{prsl}{ps} \times psp)/dt

    • Calculate the saturation specific humidity q_{s} and the relative humidity f using IW.
    • According to Sundqvist et al. (1989) [98], estimate cloud fraction b at a grid point from relative humidity f using the equation

      b=1-\left ( \frac{f_{s}-f}{f_{s}-u} \right )^{1/2}

      for f>u; and b=0 for f<u. where f_{s}=1.0 is the relative humidity in a cloud region and u ,which is an input parameter accounts for the effects of subgrid-scale variations in moisture on large-scale condensation. Since both temperature and moisture may vary at scales smaller than the model grid scale, it is possible for condensation to occur before the grid-average relative humidity reaches 100%. Therefore u needs to be less than 1.0 to account for the subgrid-scale variation of temperature and moisture fields and allow subgrid-scale condensation.
    • If cloud fraction b\leq 1.0\times10^{-3}, then evaporate any existing cloud condensate using evaporation rate E_{c} as computed below.
      If q_{0} represents the specific humidity at relative humidity u, then

      q_{0}=uq_{s}


      if the cloud water/ice at this point is enough to be evaporated until u is reached, then the evaporation rate E_{c}, assuming that the evaporation process occurs in one time step, is determined by

      E_{c}=\frac{q_{0}-q}{dt}


      Using q_{0}=uq_{s} and the equation q=fq_{s}, E_{c} then becomes

      E_{c}=\frac{q_{s}}{dt}(u-f)

      where dt is the time step for precipitation calculation in the model. It is a simplified version of a higher-order cloud evaporation algorithm (Rutledge and Hobbs (1983) [91]). In the case where all clouds will evaporate before u is reached, the following equation is used:

      E_{c}=\frac{cwm}{dt}

    • If cloud fraction b>1.0\times10^{-3}, condense water vapor into cloud condensate ( C_{g}).
      Using q=fq_{s}, q_{s}=\epsilon e_{s}/p, and the Clausius-Clapeyron equation de_{s}/dT=\epsilon Le_{s}/RT^{2}, where q_{s} is the saturation specific humidity, e_{s} is the saturation vapor pressure, R is the specific gas constant for dry air, f is the relative humidity, and \epsilon=0.622, the expression for C_{g} has the form

      C_{g}=\frac{M-q_{s}f_{t}}{1+(f\epsilon L^{2}q_{s}/RC_{p}T^{2})}+E_{c}

      where

      M=A_{q}-\frac{f\epsilon Lq_{s}}{RT^{2}}A_{t}+\frac{fq_{s}}{p}A_{p}

      To close the system, an equation for the relative humidity tendency f_{t} was derived by Sundqvist et al.(1989) [98] using the hypothesis that the quantity M+E_{c} is divided into one part, bM,which condenses in the already cloudy portion of a grid square, and another part, (1-b)M+E_{c},which is used to increase the relative humidity of the cloud-free portion and the cloudiness in the square. The equation is written as

      f_{t}=\frac{2(1-b)(f_{s}-u)[(1-b)M+E_{c}]}{2q_{s}(1-b)(f_{s}-u)+cwm/b}

    • Check and correct if over condensation occurs.
    • Update t, q and cwm (according to Eqs(6) and (7) in Zhao and Carr (1997) [111])

      cwm=cwm+(C_{g}-E_{c})\times dt

      q=q-(C_{g}-E_{c})\times dt

      t=t+\frac{L}{C_{p}}(C_{g}-E_{c})\times dt


      where L is the latent heat of condensation/deposition, and C_{p} is the specific heat of air at constant pressure.
  4. End of the condensation/evaporation loop (end of i-loop,k-loop).
  5. Store t, q, ps for next time step.

References physcons::con_cp, physcons::con_eps, physcons::con_epsm1, physcons::con_g, physcons::con_hfus, physcons::con_hvap, physcons::con_psat, physcons::con_rd, physcons::con_rv, physcons::con_ttp, and funcphys::fpvs().

Here is the call graph for this function: