CCPP Scientific Documentation
v5.0.0
GFS Scale-Aware Mass-Flux Deep Convection Scheme Module

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

Detailed Description

For grid sizes larger than threshold value, as in Grell (1993) [73] , 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) [79] ), which in turn, determines changes of the large-scale environment due to the cumulus convection.

Argument Table

samfdeepcnv_run argument table
local_namestandard_namelong_nameunitstypedimensionskindintentoptional
imhorizontal_loop_extenthorizontal loop extentcountinteger()inFalse
kmvertical_dimensionvertical layer dimensioncountinteger()inFalse
itcnumber_of_aerosol_tracers_for_convectionnumber of aerosol tracers transported/scavenged by convectioncountinteger()inFalse
ntcnumber_of_chemical_tracersnumber of chemical tracerscountinteger()inFalse
cliqspecific_heat_of_liquid_water_at_constant_pressurespecific heat of liquid water at constant pressureJ kg-1 K-1real()kind_physinFalse
cpspecific_heat_of_dry_air_at_constant_pressurespecific heat of dry air at constant pressureJ kg-1 K-1real()kind_physinFalse
cvapspecific_heat_of_water_vapor_at_constant_pressurespecific heat of water vapor at constant pressureJ kg-1 K-1real()kind_physinFalse
epsratio_of_dry_air_to_water_vapor_gas_constantsrd/rvnonereal()kind_physinFalse
epsm1ratio_of_dry_air_to_water_vapor_gas_constants_minus_one(rd/rv) - 1nonereal()kind_physinFalse
fvratio_of_vapor_to_dry_air_gas_constants_minus_one(rv/rd) - 1 (rv = ideal gas constant for water vapor)nonereal()kind_physinFalse
gravgravitational_accelerationgravitational accelerationm s-2real()kind_physinFalse
hvaplatent_heat_of_vaporization_of_water_at_0Clatent heat of evaporation/sublimationJ kg-1real()kind_physinFalse
rdgas_constant_dry_airideal gas constant for dry airJ kg-1 K-1real()kind_physinFalse
rvgas_constant_water_vaporideal gas constant for water vaporJ kg-1 K-1real()kind_physinFalse
t0ctemperature_at_zero_celsiustemperature at 0 degree CelsiusKreal()kind_physinFalse
delttime_step_for_physicsphysics time stepsreal()kind_physinFalse
ntkindex_for_turbulent_kinetic_energy_convective_transport_tracerindex for turbulent kinetic energy in the convectively transported tracer arrayindexinteger()inFalse
ntrnumber_of_tracers_for_samfnumber of tracers for scale-aware mass flux schemescountinteger()inFalse
delpair_pressure_difference_between_midlayerspres(k) - pres(k+1)Pareal(horizontal_dimension, vertical_dimension)kind_physinFalse
prslpair_pressuremean layer pressurePareal(horizontal_dimension, vertical_dimension)kind_physinFalse
pspsurface_air_pressuresurface pressurePareal(horizontal_dimension)kind_physinFalse
philgeopotentiallayer geopotentialm2 s-2real(horizontal_dimension, vertical_dimension)kind_physinFalse
qtrconvective_transportable_tracersarray to contain cloud water and other convective trans. tracerskg kg-1real(horizontal_dimension, vertical_dimension, number_of_tracers_for_convective_transport)kind_physinoutFalse
q1water_vapor_specific_humidity_updated_by_physicsupdated vapor specific humiditykg kg-1real(horizontal_dimension, vertical_dimension)kind_physinoutFalse
t1air_temperature_updated_by_physicsupdated temperatureKreal(horizontal_dimension, vertical_dimension)kind_physinoutFalse
u1x_wind_updated_by_physicsupdated x-direction windm s-1real(horizontal_dimension, vertical_dimension)kind_physinoutFalse
v1y_wind_updated_by_physicsupdated y-direction windm s-1real(horizontal_dimension, vertical_dimension)kind_physinoutFalse
fscavcoefficients_for_aerosol_scavengingarray of aerosol scavenging coefficientsnonereal(number_of_chemical_tracers)kind_physinFalse
hwrf_samfdeepflag_for_hwrf_samfdeepcnv_schemeflag for hwrf samfdeepcnv schemeflaglogical()inFalse
cldwrkcloud_work_functioncloud work functionm2 s-2real(horizontal_dimension)kind_physoutFalse
rnlwe_thickness_of_deep_convective_precipitation_amountdeep convective rainfall amount on physics timestepmreal(horizontal_dimension)kind_physoutFalse
kbotvertical_index_at_cloud_baseindex for cloud baseindexinteger(horizontal_dimension)outFalse
ktopvertical_index_at_cloud_topindex for cloud topindexinteger(horizontal_dimension)outFalse
kcnvflag_deep_convectiondeep convection: 0=no, 1=yesflaginteger(horizontal_dimension)inoutFalse
islimsksea_land_ice_masklandmask: sea/land/ice=0/1/2flaginteger(horizontal_dimension)inFalse
gareacell_areagrid cell aream2real(horizontal_dimension)kind_physinFalse
dotomegalayer mean vertical velocityPa s-1real(horizontal_dimension, vertical_dimension)kind_physinFalse
ncloudnumber_of_hydrometeorsnumber of hydrometeorscountinteger()inFalse
ud_mfinstantaneous_atmosphere_updraft_convective_mass_flux(updraft mass flux) * deltkg m-2real(horizontal_dimension, vertical_dimension)kind_physoutFalse
dd_mfinstantaneous_atmosphere_downdraft_convective_mass_flux(downdraft mass flux) * deltkg m-2real(horizontal_dimension, vertical_dimension)kind_physoutFalse
dt_mfinstantaneous_atmosphere_detrainment_convective_mass_flux(detrainment mass flux) * deltkg m-2real(horizontal_dimension, vertical_dimension)kind_physoutFalse
cnvwconvective_cloud_water_mixing_ratiomoist convective cloud water mixing ratiokg kg-1real(horizontal_dimension, vertical_dimension)kind_physinoutFalse
cnvcconvective_cloud_coverconvective cloud coverfracreal(horizontal_dimension, vertical_dimension)kind_physinoutFalse
qlcnmass_fraction_of_convective_cloud_liquid_watermass fraction of convective cloud liquid waterkg kg-1real(horizontal_dimension, vertical_dimension)kind_physinoutFalse
qicnmass_fraction_of_convective_cloud_icemass fraction of convective cloud ice waterkg kg-1real(horizontal_dimension, vertical_dimension)kind_physinoutFalse
w_upivertical_velocity_for_updraftvertical velocity for updraftm s-1real(horizontal_dimension, vertical_dimension)kind_physinoutFalse
cf_upiconvective_cloud_fraction_for_microphysicsconvective cloud fraction for microphysicsfracreal(horizontal_dimension, vertical_dimension)kind_physinoutFalse
cnv_mfddetrained_mass_fluxdetrained mass fluxkg m-2 s-1real(horizontal_dimension, vertical_dimension)kind_physinoutFalse
cnv_dqldttendency_of_cloud_water_due_to_convective_microphysicstendency of cloud water due to convective microphysicskg m-2 s-1real(horizontal_dimension, vertical_dimension)kind_physinoutFalse
clcnconvective_cloud_volume_fractionconvective cloud volume fractionfracreal(horizontal_dimension, vertical_dimension)kind_physinoutFalse
cnv_ficeice_fraction_in_convective_towerice fraction in convective towerfracreal(horizontal_dimension, vertical_dimension)kind_physinoutFalse
cnv_ndropnumber_concentration_of_cloud_liquid_water_particles_for_detrainmentdroplet number concentration in convective detrainmentm-3real(horizontal_dimension, vertical_dimension)kind_physinoutFalse
cnv_nicenumber_concentration_of_ice_crystals_for_detrainmentcrystal number concentration in convective detrainmentm-3real(horizontal_dimension, vertical_dimension)kind_physinoutFalse
mp_physflag_for_microphysics_schemechoice of microphysics schemeflaginteger()inFalse
mp_phys_mgflag_for_morrison_gettelman_microphysics_schemechoice of Morrison-Gettelman microphysics schemeflaginteger()inFalse
clamentrainment_rate_coefficient_deep_convectionentrainment rate coefficient for deep conv.nonereal()kind_physinFalse
c0srain_conversion_parameter_deep_convectionconvective rain conversion parameter for deep conv.m-1real()kind_physinFalse
c1detrainment_conversion_parameter_deep_convectionconvective detrainment conversion parameter for deep conv.m-1real()kind_physinFalse
betaldowndraft_fraction_reaching_surface_over_land_deep_convectiondowndraft fraction reaching surface over land for deep conv.fracreal()kind_physinFalse
betasdowndraft_fraction_reaching_surface_over_ocean_deep_convectiondowndraft fraction reaching surface over ocean for deep conv.fracreal()kind_physinFalse
evfactrain_evaporation_coefficient_deep_convectionconvective rain evaporation coefficient for deep conv.fracreal()kind_physinFalse
evfactlrain_evaporation_coefficient_over_land_deep_convectionconvective rain evaporation coefficient over land for deep conv.fracreal()kind_physinFalse
pgconmomentum_transport_reduction_factor_pgf_deep_convectionreduction factor in momentum transport due to deep conv. induced pressure gradient forcefracreal()kind_physinFalse
asolfacaerosol_aware_parameter_deep_convectionaerosol-aware parameter inversely proportional to CCN number concentraion from Lim (2011) for deep conv.nonereal()kind_physinFalse
do_caflag_for_cellular_automatacellular automata main switchflaglogical()inFalse
ca_closureflag_for_global_cellular_automata_closureswitch for ca on closureflaglogical()inFalse
ca_entrflag_for_global_cellular_automata_entrswitch for ca on entrflaglogical()inFalse
ca_triggerflag_for_global_cellular_automata_triggerswitch for ca on triggerflaglogical()inFalse
nthreshthreshold_for_perturbed_vertical_velocitythreshold used for perturbed vertical velocitym s-1real()kind_physinFalse
ca_deepfraction_of_cellular_automata_for_deep_convectionfraction of cellular automata for deep convectionfracreal(horizontal_dimension)kind_physinFalse
rainevapphysics_field_for_couplingphysics_field_for_couplingm2 s-2real(horizontal_dimension)kind_physoutFalse
errmsgccpp_error_messageerror message for error handling in CCPPnonecharacter()len=*outFalse
errflgccpp_error_flagerror flag for error handling in CCPPflaginteger()outFalse

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

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, 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, evfact, evfactl, pgcon, asolfac, do_ca, ca_closure, ca_entr, ca_trigger, nthresh, ca_deep, rainevap, errmsg, errflg)