CCPP SciDoc  v6.0.0
Common Community Physics Package Developed at DTC
GFS saSAS Deep Convection Module

This subroutine contains the entirety of the SAMF deep convection scheme. More...

Functions/Subroutines

subroutine samfdeepcnv::samfdeepcnv_run (im, km, itc, ntc, cliq, cp, cvap, eps, epsm1, fv, grav, hvap, rd, rv, t0c, delt, ntk, ntr, delp, prslp, psp, phil, qtr, q1, t1, u1, v1, fscav, hwrf_samfdeep, cldwrk, rn, kbot, ktop, kcnv, islimsk, garea, dot, ncloud, hpbl, ud_mf, dd_mf, dt_mf, cnvw, cnvc, QLCN, QICN, w_upi, cf_upi, CNV_MFD, CNV_DQLDT, CLCN, CNV_FICE, CNV_NDROP, CNV_NICE, mp_phys, mp_phys_mg, clam, c0s, c1, betal, betas, evef, pgcon, asolfac, do_ca, ca_closure, ca_entr, ca_trigger, nthresh, ca_deep, rainevap, errmsg, errflg)
 

Detailed Description

For grid sizes larger than threshold value, as in Grell (1993) [74] , the SAMF deep convection scheme can be described in terms of three types of "controls": static, dynamic, and feedback. The static control component consists of the simple entraining/detraining updraft/downdraft cloud model and is used to determine the cloud properties, convective precipitation, as well as the convective cloud top height. The dynamic control is the determination of the potential energy available for convection to "consume", or how primed the large-scale environment is for convection to occur due to changes by the dyanmics of the host model. The feedback control is the determination of how the parameterized convection changes the large-scale environment (the host model state variables) given the changes to the state variables per unit cloud base mass flux calculated in the static control portion and the deduced cloud base mass flux determined from the dynamic control.

For grid sizes smaller than threshold value, the cloud base mass flux in the SAMF scheme is determined by the cumulus updraft velocity averaged ove the whole cloud depth (Han et al. (2017) [80] ), which in turn, determines changes of the large-scale environment due to the cumulus convection.

Argument Table

samfdeepcnv_run argument table
local_namestandard_namelong_nameunitstypedimensionskindintent
imhorizontal_loop_extenthorizontal loop extentcountinteger()in
kmvertical_layer_dimensionvertical layer dimensioncountinteger()in
itcindex_of_first_chemical_tracer_for_convectionindex of first chemical tracer transported/scavenged by convectionindexinteger()in
ntcnumber_of_chemical_tracersnumber of chemical tracerscountinteger()in
cliqspecific_heat_of_liquid_water_at_constant_pressurespecific heat of liquid water at constant pressureJ kg-1 K-1real()kind_physin
cpspecific_heat_of_dry_air_at_constant_pressurespecific heat of dry air at constant pressureJ kg-1 K-1real()kind_physin
cvapspecific_heat_of_water_vapor_at_constant_pressurespecific heat of water vapor at constant pressureJ kg-1 K-1real()kind_physin
epsratio_of_dry_air_to_water_vapor_gas_constantsrd/rvnonereal()kind_physin
epsm1ratio_of_dry_air_to_water_vapor_gas_constants_minus_one(rd/rv) - 1nonereal()kind_physin
fvratio_of_vapor_to_dry_air_gas_constants_minus_one(rv/rd) - 1 (rv = ideal gas constant for water vapor)nonereal()kind_physin
gravgravitational_accelerationgravitational accelerationm s-2real()kind_physin
hvaplatent_heat_of_vaporization_of_water_at_0clatent heat of evaporation/sublimationJ kg-1real()kind_physin
rdgas_constant_of_dry_airideal gas constant for dry airJ kg-1 K-1real()kind_physin
rvgas_constant_water_vaporideal gas constant for water vaporJ kg-1 K-1real()kind_physin
t0ctemperature_at_zero_celsiustemperature at 0 degree CelsiusKreal()kind_physin
delttimestep_for_physicsphysics time stepsreal()kind_physin
ntkindex_for_turbulent_kinetic_energy_convective_transport_tracerindex for turbulent kinetic energy in the convectively transported tracer arrayindexinteger()in
ntrnumber_of_tracers_for_samfnumber of tracers for scale-aware mass flux schemescountinteger()in
delpair_pressure_difference_between_midlayerspres(k) - pres(k+1)Pareal(ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension)kind_physin
prslpair_pressuremean layer pressurePareal(ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension)kind_physin
pspsurface_air_pressuresurface pressurePareal(ccpp_constant_one:horizontal_loop_extent)kind_physin
philgeopotentiallayer geopotentialm2 s-2real(ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension)kind_physin
qtrconvective_transportable_tracersarray to contain cloud water and other convective trans. tracerskg kg-1real(ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension, ccpp_constant_one:number_of_tracers_for_convective_transport)kind_physinout
q1specific_humidity_of_new_stateupdated vapor specific humiditykg kg-1real(ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension)kind_physinout
t1air_temperature_of_new_stateupdated temperatureKreal(ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension)kind_physinout
u1x_wind_of_new_stateupdated x-direction windm s-1real(ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension)kind_physinout
v1y_wind_of_new_stateupdated y-direction windm s-1real(ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension)kind_physinout
fscavchemical_tracer_scavenging_fractionsarray of aerosol scavenging coefficientsnonereal(ccpp_constant_one:number_of_chemical_tracers)kind_physin
hwrf_samfdeepflag_for_hurricane_specific_code_in_scale_aware_mass_flux_deep_convectionflag for hwrf samfdeepcnv schemeflaglogical()in
cldwrkcloud_work_functioncloud work functionm2 s-2real(ccpp_constant_one:horizontal_loop_extent)kind_physout
rnlwe_thickness_of_deep_convective_precipitation_amountdeep convective rainfall amount on physics timestepmreal(ccpp_constant_one:horizontal_loop_extent)kind_physout
kbotvertical_index_at_cloud_baseindex for cloud baseindexinteger(ccpp_constant_one:horizontal_loop_extent)out
ktopvertical_index_at_cloud_topindex for cloud topindexinteger(ccpp_constant_one:horizontal_loop_extent)out
kcnvflag_deep_convectiondeep convection: 0=no, 1=yesflaginteger(ccpp_constant_one:horizontal_loop_extent)inout
islimsksea_land_ice_masklandmask: sea/land/ice=0/1/2flaginteger(ccpp_constant_one:horizontal_loop_extent)in
gareacell_areagrid cell aream2real(ccpp_constant_one:horizontal_loop_extent)kind_physin
dotlagrangian_tendency_of_air_pressurelayer mean vertical velocityPa s-1real(ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension)kind_physin
ncloudnumber_of_condensate_speciesnumber of cloud condensate typescountinteger()in
hpblatmosphere_boundary_layer_thicknessPBL top heightmreal(ccpp_constant_one:horizontal_loop_extent)kind_physin
ud_mfinstantaneous_atmosphere_updraft_convective_mass_flux(updraft mass flux) * deltkg m-2real(ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension)kind_physout
dd_mfinstantaneous_atmosphere_downdraft_convective_mass_flux(downdraft mass flux) * deltkg m-2real(ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension)kind_physout
dt_mfinstantaneous_atmosphere_detrainment_convective_mass_flux(detrainment mass flux) * deltkg m-2real(ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension)kind_physout
cnvwconvective_cloud_water_mixing_ratiomoist convective cloud water mixing ratiokg kg-1real(ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension)kind_physinout
cnvcconvective_cloud_coverconvective cloud coverfracreal(ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension)kind_physinout
qlcnmass_fraction_of_convective_cloud_liquid_watermass fraction of convective cloud liquid waterkg kg-1real(ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension)kind_physinout
qicnmass_fraction_of_convective_cloud_icemass fraction of convective cloud ice waterkg kg-1real(ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension)kind_physinout
w_upivertical_velocity_for_updraftvertical velocity for updraftm s-1real(ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension)kind_physinout
cf_upiconvective_cloud_fraction_for_microphysicsconvective cloud fraction for microphysicsfracreal(ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension)kind_physinout
cnv_mfddetrained_mass_fluxdetrained mass fluxkg m-2 s-1real(ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension)kind_physinout
cnv_dqldttendency_of_cloud_water_due_to_convective_microphysicstendency of cloud water due to convective microphysicskg m-2 s-1real(ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension)kind_physinout
clcnconvective_cloud_volume_fractionconvective cloud volume fractionfracreal(ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension)kind_physinout
cnv_ficeice_fraction_in_convective_towerice fraction in convective towerfracreal(ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension)kind_physinout
cnv_ndropnumber_concentration_of_cloud_liquid_water_particles_for_detrainmentdroplet number concentration in convective detrainmentm-3real(ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension)kind_physinout
cnv_nicenumber_concentration_of_ice_crystals_for_detrainmentcrystal number concentration in convective detrainmentm-3real(ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension)kind_physinout
mp_physcontrol_for_microphysics_schemechoice of microphysics schemeflaginteger()in
mp_phys_mgidentifier_for_morrison_gettelman_microphysics_schemechoice of Morrison-Gettelman microphysics schemeflaginteger()in
clamentrainment_rate_coefficient_for_deep_convectionentrainment rate coefficient for deep conv.nonereal()kind_physin
c0srain_conversion_parameter_for_deep_convectionconvective rain conversion parameter for deep conv.m-1real()kind_physin
c1detrainment_conversion_parameter_for_deep_convectionconvective detrainment conversion parameter for deep conv.m-1real()kind_physin
betaldowndraft_fraction_reaching_surface_over_land_for_deep_convectiondowndraft fraction reaching surface over land for deep conv.fracreal()kind_physin
betasdowndraft_fraction_reaching_surface_over_water_for_deep_convectiondowndraft fraction reaching surface over water for deep conv.fracreal()kind_physin
evefrain_evaporation_coefficient_for_convectionconvective rain evaporation coefficient for convectionfracreal()kind_physin
pgconmomentum_transport_reduction_factor_due_to_pressure_gradient_force_for_deep_convectionreduction factor in momentum transport due to deep conv. induced pressure gradient forcefracreal()kind_physin
asolfacaerosol_aware_multiplicative_rain_conversion_parameter_for_deep_convectionaerosol-aware parameter inversely proportional to CCN number concentraion from Lim (2011) for deep conv.nonereal()kind_physin
do_caflag_for_cellular_automatacellular automata main switchflaglogical()in
ca_closureflag_for_global_cellular_automata_closureswitch for ca on closureflaglogical()in
ca_entrflag_for_global_cellular_automata_deep_convective_entrainmentswitch for ca on entrflaglogical()in
ca_triggerflag_for_global_cellular_automata_triggerswitch for ca on triggerflaglogical()in
nthreshcellular_automata_vertical_velocity_perturbation_threshold_for_deep_convectionthreshold used for perturbed vertical velocitym s-1real()kind_physin
ca_deepcellular_automata_area_fraction_for_deep_convection_from_coupled_processfraction of cellular automata for deep convectionfracreal(ccpp_constant_one:horizontal_loop_extent)kind_physin
rainevapphysics_field_for_couplingphysics_field_for_couplingm2 s-2real(ccpp_constant_one:horizontal_loop_extent)kind_physout
errmsgccpp_error_messageerror message for error handling in CCPPnonecharacter()len=*out
errflgccpp_error_codeerror code for error handling in CCPP1integer()out

GFS samfdeepcnv General Algorithm

  1. Compute preliminary quantities needed for static, dynamic, and feedback control portions of the algorithm.
  2. Perform calculations related to the updraft of the entraining/detraining cloud model ("static control").
  3. Perform calculations related to the downdraft of the entraining/detraining cloud model ("static control").
  4. For grid sizes larger than the threshold value (currently 8 km):
    • 1) Using the updated temperature and moisture profiles that were modified by the convection on a short time-scale, recalculate the total cloud work function to determine the change in the cloud work function due to convection, or the stabilizing effect of the cumulus.
    • 2) For the "dynamic control", using a reference cloud work function, estimate the change in cloud work function due to the large-scale dynamics. Following the quasi-equilibrium assumption, calculate the cloud base mass flux required to keep the large-scale convective destabilization in balance with the stabilization effect of the convection.
  5. For grid sizes smaller than the threshold value (currently 8 km):
    • 1) compute the cloud base mass flux using the cumulus updraft velocity averaged ove the whole cloud depth.
  6. For scale awareness, the updraft fraction (sigma) is obtained as a function of cloud base entrainment. Then, the final cloud base mass flux is obtained by the original mass flux multiplied by the (1-sigma) 2.
  7. For the "feedback control", calculate updated values of the state variables by multiplying the cloud base mass flux and the tendencies calculated per unit cloud base mass flux from the static control.

GFS samfdeepcnv Detailed Algorithm