Module strat_cloud_mod
OVERVIEW
Code to compute time tendencies of stratiform clouds and diagnoses
rain and snow flux with prognostic scheme.
The prognostic scheme returns the time tendencies of liquid,
ice, and saturated volume fraction that are suspended in
stratiform clouds. The scheme diagnoses the fluxes of rain
and snow in saturated and unsaturated areas.
The prognostic cloud scheme is responsible for determing
cloud volume fractions, condensed water tendencies, and
the stratiform precipitation rate. It includes processes
for evaporation, condensation, deposition, and sublimation
of cloud water, conversion of cloud water to precipitation,
evaporation of falling precipitation, the bergeron-findeisan
process, freezing of cloud liquid, accretion of cloud water
by precipitation, and melting of falling precipitation.
This scheme is based on the experience the author had
at the ECMWF in 1997. The saturated volume fraction formalism
and type of solution follow directly from the scheme of Tiedtke
(1993): Monthly Weather Review, Volume 121, pages 3040-3061.
The form of most of the microphysics follows Rotstayn , 1997:
Quart. J. Roy. Met. Soc. vol 123, pages 1227-1282. The partial
precipitation area formulism follows Jakob and Klein, 2000:
Quart. J. Roy. Met. Soc. vol 126, pages 2525-2544.
The statistical cloud scheme treatment, which is used as
a replacement for the Tiedtke cloud fraction scheme, is based
on a number of publications: Tompkins, A., 2002: J. Atmos.
Sci., 59, 1917-1942, Klein et al., 2005: J. Geophys. Res.,
110, D15S06, doi:10.1029/2004JD005017.
OTHER MODULES USED
sat_vapor_pres_mod
fms_mod
fms_io_mod
constants_mod
cloud_rad_mod
diag_manager_mod
time_manager_mod
cloud_generator_mod
beta_dist_mod
rad_utilities_mod
aer_ccn_act_mod
PUBLIC INTERFACE
PUBLIC DATA
None.
PUBLIC ROUTINES
-
strat_cloud_init
call strat_cloud_init (axes,Time,idim,jdim,kdim)
-
DESCRIPTION
- Initializes strat_cloud. Reads namelist, calls cloud_rad_init,
reads restart (if present), initializes netcdf output.
-
INPUT
-
axes | Axes integer vector used for netcdf initialization. [integer] |
Time | Time type variable used for netcdf. [time_type] |
idim | Size of first array (usually longitude) dimension. [integer] |
jdim | Size of second array (usually latitude) dimension. [integer] |
kdim | Size of vertical array (usually height) dimension. [integer] |
-
diag_field_init
call diag_field_init (axes,Time)
-
DESCRIPTION
- Initializes netcdf diagnostics.
-
INPUT
-
axes | Integer array containing axes integers. [integer] |
Time | Time [time_type] |
-
strat_cloud
call strat_cloud (Time,is,ie,js,je,dtcloud,pfull,phalf,radturbten2, T,qv,ql,qi,qa,omega,Mc,diff_t,LAND, ST,SQ,SL,SI,SA,surfrain, surfsnow,qrat,ahuco,MASK, qn, SN, Aerosol)
-
DESCRIPTION
-
-
INPUT
-
Time | Time [time_type] |
is | Indice of starting point in the longitude direction of the slab being passed to strat_cloud [integer] |
ie | Indice of ending point in the longitude direction of the slab being passed [integer] |
js | Indice of starting point in the latitude direction of the slab being passed [integer] |
je | Indice of ending point in the latitude direction of the slab being passed [integer] |
dtcloud | Physics time step (sec) [real] |
pfull | Pressure on model full levels (Pa) [real] |
phalf | Pressure on model half levels (Pa) [real] |
radturbten2 | Sum of the tendencies of temperature from turbulence and radiation schemes (K/s) [real] |
T | Temperature (K) [real] |
qv | Water vapor specific humidity (kg vapor/kg air) [real] |
ql | Grid-box mean liquid water specific humidity (kg liquid/kg air) [real] |
qi | Grid-box mean ice water specific humidity (kg ice/kg air) [real] |
qa | Cloud fraction (3d array and a prognostic variable) (fraction) [real] |
qn | Cloud droplet number (3d array and a prognostic variable) (#/kg air) [real] |
omega | Vertical pressure velocity (Pa/sec) [real] |
Mc | Cumulus mass flux (defined positive as upward) (kg air/m2/sec) [real] |
diff_t | Vertical diffusion coefficient for temperature and tracer from vertical diffusion scheme (m2/sec) [real] |
LAND | Fraction of surface that contains land (fraction) [real] |
qrat | Ratio of large-scale specific humidity to specific humidity in
environment outside convective system (from donner_deep)
Will be equal to 1 for all normal AM2 operations (i.e. donner_deep is not activated)
Note that index 1 is nearest ground
[real] |
ahuco | The fraction of the grid box containing either cumulus cells or the mesoscale circulation (from donner_deep).
Will be equal to 0 for all normal AM2 operations (i.e. donner_deep is not activated)
Note that index 1 is nearest ground
[real] |
MASK | Optional input real array indicating the point is above the surface
if equal to 1.0 and indicating the point is below the surface if
equal to 0.
Used only in eta vertical coordinate model. [real] |
-
OUTPUT
-
ST | Change in temperature due to strat_cloud (K) [real] |
SQ | Change in water vapor due to strat_cloud (kg vapor/kg air) [real] |
SL | Change in cloud liquid due to strat_cloud (kg liquid/kg air) [real] |
SI | Change in cloud ice due to strat_cloud (kg ice/kg air) [real] |
SA | Change in cloud fraction due to strat_cloud (fraction) [real] |
SN | Change in cloud droplet number due to strat_cloud (fraction) [real] |
surfrain | Surface rain fall over time step dtcloud (kg liquid/m2) [real] |
surfsnow | Surface snow fall over time step dtcloud (kg ice/m2) [real] |
rain3d | 3D rain fall over time step dtcloud (kg liquid/m2) [real] |
snow3d | 3D snow fall over time step dtcloud (kg ice/m2) [real] |
-
strat_cloud_end
call strat_cloud_end
-
DESCRIPTION
- This writes out a restart (if needed).
-
strat_cloud_sum
call strat_cloud_sum (is, js, ql, qi, cf)
-
DESCRIPTION
- This increments cloud variables for passing to radiation.
It is expected that this will become obsolete soon.
-
INPUT
-
is | Starting integer for longitude window. [integer] |
js | Starting integer for latitude window. [integer] |
ql | Cloud liquid water specific humidity (kg/kg) [real] |
qi | Cloud ice water specific humidity (kg/kg) [real] |
cf | Cloud fraction (fraction, 0-1) [real] |
-
strat_cloud_avg
call strat_cloud_avg (is, js, ql, qi, cf, ierr)
-
DESCRIPTION
- Averaging routine for cloud variables to be passed to radiation.
Expected to be removed shortly.
-
INPUT
-
is | Starting integer for longitude window. [integer] |
js | Starting integer for latitude window. [integer] |
-
OUTPUT
-
ql | Cloud liquid water specific humidity (kg/kg) [real] |
qi | Cloud ice water specific humidity (kg/kg) [real] |
cf | Cloud fraction (0-1) [real] |
ierr | Error integer. [integer] |
-
do_strat_cloud
result = do_strat_cloud ( ) result (answer)
-
DESCRIPTION
- Logical function to indicate whether or not strat_cloud is running.
NAMELIST
&strat_cloud_nml
-
do_netcdf_restart
netcdf/native restart format
[logical, dimension, units: fraction, default: ]
-
U00
Threshold relative humidity for cloud formation by large-scale condensation. (default = 0.80)
[real, dimension, units: , default: ]
-
u00_profile
Should low-level u00 ECMWF profile be applied? (default = .false.)
[logical, dimension, units: , default: ]
-
rthresh
Liquid cloud drop radius threshold for autoconversion. (default = 10.)
[real, dimension, units: microns, default: ]
-
use_kk_auto
Should the Khairoutdinov and Kogan (2000) autoconversion be used? ( default = .false.)
[logical, dimension, units: , default: ]
-
N_land
Fixed number of cloud drops per unit volume in liquid clouds on land. ( default = 250.E+06)
[real, dimension, units: 1/(m*m*m), default: ]
-
N_ocean
Fixed number of cloud drops per unit volume in liquid clouds over ocean. ( default = 100.E+06)
[real, dimension, units: 1/(m*m*m), default: ]
-
U_evap
Critical relative humidity above which rain does not evaporate. (default = 1.0)
[real, dimension, units: fraction, default: ]
-
eros_scale
Normal erosion rate constant cloud destruction (default = 1.E-06)
[real, dimension, units: 1/sec, default: ]
-
eros_choice
Should enhanced erosion in turbulent conditions be done? (default = .false.)
[real, dimension, units: , default: ]
-
eros_scale_c
Erosion rate constant for convective conditions. (default = 8.E-05)
[real, dimension, units: 1/sec, default: ]
-
eros_scale_t
Erosion rate constant for cloud destruction for turbulent conditions. (default = 5.E-05)
[real, dimension, units: 1/sec, default: ]
-
mc_thresh
Convective mass-flux threshold for enhanced erosion to turn on. (default = 0.001)
[real, dimension, units: kg/m2/sec, default: ]
-
diff_thresh
Diffusion coefficient threshold for enhanced erosion to turn on. (default = 1.0)
[real, dimension, units: m2/s, default: ]
-
super_choice
Should should excess vapor in supersaturated conditions be put into cloud water (true) or precipitation fluxes (false)? (default = .false.)
[logical, dimension, units: , default: ]
-
tracer_advec
Are cloud liquid,ice and fraction advected by the grid resolved motion? (default = .false.)
[logical, dimension, units: , default: ]
-
qmin
Minimum permissible value of cloud liquid, cloud ice, saturated volume fraction, or rain and snow areas.
NOTE: qmin should be chosen such that the range of {qmin, max(qa,ql,qi)} is resolved by the precision of the numbers used. (default = 1.E-10)
[real, dimension, units: kg condensate/kg air, default: ]
-
Dmin
Minimum permissible dissipation in analytic integration of qa, ql, qi equations. This constant only affects the method by which the prognostic equations are integrated.
NOTE: Dmin will be MACHINE DEPENDENT and occur when
a. 1. -exp(-Dmin) = 0. instead of Dmin in the limit of very small Dmin
AND
b. 1. - exp(-D) < D for all D > Dmin
(default = 1.E-08)
[real, dimension, units: Dimensionless, default: ]
-
num_strat_pts
Number of grid points where instantaneous output will be saved to file strat.data
num_strat_pts <= max_strat_pts
(default = 0)
[integer, dimension, units: , default: ]
-
strat_pts
num_strat_pts" pairs of grid indices, e.g., the global indices for i,j. (default = 0)
[integer, dimension, units: , default: ]
-
efact
(default = 0.0)
[real, dimension, units: , default: ]
-
do_old_snowmelt
Should the old version of snow melting, which has a bug,be run? (default = .false.)
[logical, dimension, units: , default: ]
-
do_liq_num
Should the prognostic droplet number code be run? (default = .false.)
[logical, dimension, units: , default: ]
-
do_pdf_clouds
Should the statistical cloud scheme be run? (default = .false.)
[logical, dimension, units: , default: ]
-
qthalfwidth
Half-width to the qt PDF - used only if do_pdf_clouds is true and diagnostic variance(default = 0.1)
[real, dimension, units: none, default: ]
-
nsublevels
Number of sublevels to vertical sub-grid cloud structure - used only if do_pdf_cloud is true (default = 1)
[integer, dimension, units: none, default: ]
-
kmap
PPM partial remap integer - used only if do_pdf_cloud is true and if vertical subgrid structure is used(default = 1)
[integer, dimension, units: none, default: ]
-
kord
PPM method number - used only if do_pdf_cloud is true and if vertical subgrid structure is used (default = 7)
[integer, dimension, units: none, default: ]
-
betaP
p-parameter to the beta distribution - used only if do_pdf_clouds is true (default = 5)
[integer, dimension, units: none, default: ]
DATA SETS
- strat_cloud.res
- native format of the restart file
- strat_cloud.res.nc
- netcdf format of the restart file
ERROR MESSAGES
None.
REFERENCES
- The saturation volume fraction formalism comes from:
Tiedtke, M., 1993: Representation of clouds in large-scale models. Mon. Wea. Rev., 121, 3040-3061.
- The form of most of the microphysics follows:
Rotstayn, L., 1997: A physically based scheme for the treatment of stratiform clouds and precipitation in large-scale models. I: Description and evaluation of microphysical processes. Quart. J. Roy. Met. Soc. 123, 1227-1282.
COMPILER SPECIFICS
PRECOMPILER OPTIONS
LOADER OPTIONS
TEST PROGRAM
KNOWN BUGS
NOTES
1. qmin should be chosen such that the range of {qmin, max(qa,ql,qi)} is resolved by the precision of the numbers used. (default = 1.E-10)
2. Dmin will be MACHINE DEPENDENT and occur when
a. 1. -exp(-Dmin) = 0. instead of Dmin in the limit of very small Dmin
b. 1. - exp(-D) < D for all D > Dmin
FUTURE PLANS