subroutine, public shalcnv::shalcnv_run | ( | real(kind=kind_phys), intent(in) | grav, |
real(kind=kind_phys), intent(in) | cp, | ||
real(kind=kind_phys), intent(in) | hvap, | ||
real(kind=kind_phys), intent(in) | rv, | ||
real(kind=kind_phys), intent(in) | fv, | ||
real(kind=kind_phys), intent(in) | t0c, | ||
real(kind=kind_phys), intent(in) | rd, | ||
real(kind=kind_phys), intent(in) | cvap, | ||
real(kind=kind_phys), intent(in) | cliq, | ||
real(kind=kind_phys), intent(in) | eps, | ||
real(kind=kind_phys), intent(in) | epsm1, | ||
integer, intent(in) | im, | ||
integer, intent(in) | km, | ||
integer, intent(in) | jcap, | ||
real(kind=kind_phys), intent(in) | delt, | ||
real(kind=kind_phys), dimension(:,:), intent(in) | delp, | ||
real(kind=kind_phys), dimension(:,:), intent(in) | prslp, | ||
real(kind=kind_phys), dimension(:), intent(in) | psp, | ||
real(kind=kind_phys), dimension(:,:), intent(in) | phil, | ||
real(kind=kind_phys), dimension(:,:), intent(inout) | qlc, | ||
real(kind=kind_phys), dimension(:,:), intent(inout) | qli, | ||
real(kind=kind_phys), dimension(:,:), intent(inout) | q1, | ||
real(kind=kind_phys), dimension(:,:), intent(inout) | t1, | ||
real(kind=kind_phys), dimension(:,:), intent(inout) | u1, | ||
real(kind=kind_phys), dimension(:,:), intent(inout) | v1, | ||
real(kind=kind_phys), dimension(:), intent(out) | rn, | ||
integer, dimension(:), intent(inout) | kbot, | ||
integer, dimension(:), intent(inout) | ktop, | ||
integer, dimension(:), intent(inout) | kcnv, | ||
integer, dimension(:), intent(in) | islimsk, | ||
real(kind=kind_phys), dimension(:,:), intent(in) | dot, | ||
integer, intent(in) | ncloud, | ||
real(kind=kind_phys), dimension(:), intent(in) | hpbl, | ||
real(kind=kind_phys), dimension(:), intent(in) | heat, | ||
real(kind=kind_phys), dimension(:), intent(in) | evap, | ||
real(kind=kind_phys), dimension(:,:), intent(out), optional | ud_mf, | ||
real(kind=kind_phys), dimension(:,:), intent(out) | dt_mf, | ||
real(kind=kind_phys), dimension(:,:), intent(inout) | cnvw, | ||
real(kind=kind_phys), dimension(:,:), intent(inout) | cnvc, | ||
real(kind=kind_phys), intent(in) | clam, | ||
real(kind=kind_phys), intent(in) | c0, | ||
real(kind=kind_phys), intent(in) | c1, | ||
real(kind=kind_phys), intent(in) | pgcon, | ||
character(len=*), intent(out) | errmsg, | ||
integer, intent(out) | errflg ) |
This routine follows the Simplified Arakawa-Schubert Deep Convection scheme quite closely, although it can be interpreted as only having the "static" and "feedback" control portions, since the "dynamic" control is not necessary to find the cloud base mass flux. The algorithm is simplified from SAS deep convection by excluding convective downdrafts and being confined to operate below \(p=0.7p_{sfc}\). Also, entrainment is both simpler and stronger in magnitude compared to the deep scheme.
[in] | im | horizontal dimension |
[in] | km | vertical layer dimension |
[in] | jcap | number of spectral wave trancation |
[in] | delt | physics time step in seconds |
[in] | delp | pressure difference between level k and k+1 (Pa) |
[in] | prslp | mean layer presure (Pa) |
[in] | psp | surface pressure (Pa) |
[in] | phil | layer geopotential ( \(m^2/s^2\)) |
[in,out] | qlc | cloud water (kg/kg) |
[in,out] | qli | ice (kg/kg) |
[in,out] | q1 | updated tracers (kg/kg) |
[in,out] | t1 | updated temperature (K) |
[in,out] | u1 | updated zonal wind ( \(m s^{-1}\)) |
[in,out] | v1 | updated meridional wind ( \(m s^{-1}\)) |
[out] | rn | convective rain (m) |
[out] | kbot | index for cloud base |
[out] | ktop | index for cloud top |
[out] | kcnv | flag to denote deep convection (0=no, 1=yes) |
[in] | islimsk | sea/land/ice mask (=0/1/2) |
[in] | dot | layer mean vertical velocity (Pa/s) |
[in] | ncloud | number of cloud species |
[in] | hpbl | PBL height (m) |
[in] | heat | surface sensible heat flux (K m/s) |
[in] | evap | surface latent heat flux (kg/kg m/s) |
[out] | ud_mf | updraft mass flux multiplied by time step ( \(kg/m^2\)) |
[out] | dt_mf | ud_mf at cloud top ( \(kg/m^2\)) |
[out] | cnvw | convective cloud water (kg/kg) |
[out] | cnvc | convective cloud cover (unitless) |
local_name | standard_name | long_name | units | type | dimensions | kind | intent |
---|---|---|---|---|---|---|---|
grav | gravitational_acceleration | gravitational acceleration | m s-2 | real | () | kind_phys | in |
cp | specific_heat_of_dry_air_at_constant_pressure | specific heat of dry air at constant pressure | J kg-1 K-1 | real | () | kind_phys | in |
hvap | latent_heat_of_vaporization_of_water_at_0c | latent heat of evaporation/sublimation | J kg-1 | real | () | kind_phys | in |
rv | gas_constant_water_vapor | ideal gas constant for water vapor | J kg-1 K-1 | real | () | kind_phys | in |
fv | ratio_of_vapor_to_dry_air_gas_constants_minus_one | (rv/rd) - 1 (rv = ideal gas constant for water vapor) | none | real | () | kind_phys | in |
t0c | temperature_at_zero_celsius | temperature at 0 degree Celsius | K | real | () | kind_phys | in |
rd | gas_constant_of_dry_air | ideal gas constant for dry air | J kg-1 K-1 | real | () | kind_phys | in |
cvap | specific_heat_of_water_vapor_at_constant_pressure | specific heat of water vapor at constant pressure | J kg-1 K-1 | real | () | kind_phys | in |
cliq | specific_heat_of_liquid_water_at_constant_pressure | specific heat of liquid water at constant pressure | J kg-1 K-1 | real | () | kind_phys | in |
eps | ratio_of_dry_air_to_water_vapor_gas_constants | rd/rv | none | real | () | kind_phys | in |
epsm1 | ratio_of_dry_air_to_water_vapor_gas_constants_minus_one | (rd/rv) - 1 | none | real | () | kind_phys | in |
im | horizontal_loop_extent | horizontal loop extent | count | integer | () | in | |
km | vertical_layer_dimension | number of vertical levels | count | integer | () | in | |
jcap | number_of_spectral_wave_truncation_for_simplified_arakawa_schubert_convection | number of spectral wave trancation used only by sascnv and shalcnv | count | integer | () | in | |
delt | timestep_for_physics | physics timestep | s | real | () | kind_phys | in |
delp | air_pressure_difference_between_midlayers | air pressure difference between midlayers | Pa | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension) | kind_phys | in |
prslp | air_pressure | mean layer pressure | Pa | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension) | kind_phys | in |
psp | surface_air_pressure | surface pressure | Pa | real | (ccpp_constant_one:horizontal_loop_extent) | kind_phys | in |
phil | geopotential | geopotential at model layer centers | m2 s-2 | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension) | kind_phys | in |
qlc | cloud_condensed_water_mixing_ratio_convective_transport_tracer | ratio of mass of cloud water to mass of dry air plus vapor (without condensates) in the convectively transported tracer array | kg kg-1 | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension) | kind_phys | inout |
qli | ice_water_mixing_ratio_convective_transport_tracer | ratio of mass of ice water to mass of dry air plus vapor (without condensates) in the convectively transported tracer array | kg kg-1 | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension) | kind_phys | inout |
q1 | specific_humidity_of_new_state | water vapor specific humidity updated by physics | kg kg-1 | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension) | kind_phys | inout |
t1 | air_temperature_of_new_state | temperature updated by physics | K | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension) | kind_phys | inout |
u1 | x_wind_of_new_state | zonal wind updated by physics | m s-1 | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension) | kind_phys | inout |
v1 | y_wind_of_new_state | meridional wind updated by physics | m s-1 | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension) | kind_phys | inout |
rn | lwe_thickness_of_shallow_convective_precipitation_amount | shallow convective rainfall amount on physics timestep | m | real | (ccpp_constant_one:horizontal_loop_extent) | kind_phys | out |
kbot | vertical_index_at_cloud_base | index for cloud base | index | integer | (ccpp_constant_one:horizontal_loop_extent) | inout | |
ktop | vertical_index_at_cloud_top | index for cloud top | index | integer | (ccpp_constant_one:horizontal_loop_extent) | inout | |
kcnv | flag_deep_convection | deep convection: 0=no, 1=yes | flag | integer | (ccpp_constant_one:horizontal_loop_extent) | inout | |
islimsk | sea_land_ice_mask | landmask: sea/land/ice=0/1/2 | flag | integer | (ccpp_constant_one:horizontal_loop_extent) | in | |
dot | lagrangian_tendency_of_air_pressure | layer mean vertical velocity | Pa s-1 | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension) | kind_phys | in |
ncloud | number_of_condensate_species | number of cloud condensate types | count | integer | () | in | |
hpbl | atmosphere_boundary_layer_thickness | pbl height | m | real | (ccpp_constant_one:horizontal_loop_extent) | kind_phys | in |
heat | kinematic_surface_upward_sensible_heat_flux_reduced_by_surface_roughness_and_vegetation | kinematic surface upward sensible heat flux reduced by surface roughness and vegetation | K m s-1 | real | (ccpp_constant_one:horizontal_loop_extent) | kind_phys | in |
evap | surface_upward_specific_humidity_flux | kinematic surface upward latent heat flux | kg kg-1 m s-1 | real | (ccpp_constant_one:horizontal_loop_extent) | kind_phys | in |
ud_mf | instantaneous_atmosphere_updraft_convective_mass_flux | (updraft mass flux) * delt | kg m-2 | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension) | kind_phys | out |
dt_mf | instantaneous_atmosphere_detrainment_convective_mass_flux | (detrainment mass flux) * delt | kg m-2 | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension) | kind_phys | out |
cnvw | convective_cloud_water_mixing_ratio | moist convective cloud water mixing ratio | kg kg-1 | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension) | kind_phys | inout |
cnvc | convective_cloud_cover | convective cloud cover | frac | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension) | kind_phys | inout |
clam | entrainment_rate_coefficient_for_shallow_convection | entrainment rate coefficient for shallow convection | none | real | () | kind_phys | in |
c0 | rain_conversion_parameter_for_shallow_convection | convective rain conversion parameter for shallow convection | m-1 | real | () | kind_phys | in |
c1 | detrainment_conversion_parameter_for_shallow_convection | convective detrainment conversion parameter for shallow convection | m-1 | real | () | kind_phys | in |
pgcon | momentum_transport_reduction_factor_due_to_pressure_gradient_force_for_shallow_convection | reduction factor in momentum transport due to shallow convection induced pressure gradient force | frac | real | () | kind_phys | in |
errmsg | ccpp_error_message | error message for error handling in CCPP | none | character | () | len=* | out |
errflg | ccpp_error_code | error code for error handling in CCPP | 1 | integer | () | out |
\[ \overline{w'\theta_v'}=\overline{w'\theta'}+\left(\frac{R_v}{R_d}-1\right)T_0\overline{w'q'} \]
where \(\overline{w'\theta'}\) is the surface sensible heat flux, \(\overline{w'q'}\) is the surface latent heat flux, \(R_v\) is the gas constant for water vapor, \(R_d\) is the gas constant for dry air, and \(T_0\) is a reference temperature.\[ \frac{1}{\eta}\frac{\partial \eta}{\partial z} = \lambda_e - \lambda_d \]
where \(\eta\) is the normalized mass flux, \(\lambda_e\) is the entrainment rate and \(\lambda_d\) is the detrainment rate. The normalized mass flux increases upward below the cloud base and decreases upward above.\[ A_u=\int_{z_0}^{z_t}\frac{g}{c_pT(z)}\frac{\eta}{1 + \gamma}[h(z)-h^*(z)]dz \]
(discretized according to Grell (1993) [75] equation B.10 using B.2 and B.3 of Arakawa and Schubert (1974) [6] and assuming \(\eta=1\)) where \(A_u\) is the updraft cloud work function, \(z_0\) and \(z_t\) are cloud base and cloud top, respectively, \(\gamma = \frac{L}{c_p}\left(\frac{\partial \overline{q_s}}{\partial T}\right)_p\) and other quantities are previously defined.\[ M_c = 0.03\rho w_* \]
where \(M_c\) is the cloud base mass flux, \(\rho\) is the air density, and \(w_*=\left(\frac{g}{T_0}\overline{w'\theta_v'}h\right)^{1/3}\) with \(h\) the PBL height and other quantities have been defined previously.