CCPP Scientific Documentation
v5.0.0
GFS Hybrid Eddy-Diffusivity Mass-Flux (HEDMF) Scheme Module

This subroutine contains all of logic for the Hybrid EDMF PBL scheme except for the calculation of the updraft properties and mass flux. More...

Detailed Description

Argument Table

hedmf_run argument table
local_namestandard_namelong_nameunitstypedimensionskindintentoptional
imhorizontal_loop_extenthorizontal loop extentcountinteger()inFalse
kmvertical_dimensionvertical layer dimensioncountinteger()inFalse
ntracnumber_of_vertical_diffusion_tracersnumber of tracers to diffuse verticallycountinteger()inFalse
ntcwindex_for_liquid_cloud_condensatecloud condensate index in tracer arrayindexinteger()inFalse
dvtendency_of_y_wind_due_to_model_physicsupdated tendency of the y windm s-2real(horizontal_dimension, vertical_dimension)kind_physinoutFalse
dutendency_of_x_wind_due_to_model_physicsupdated tendency of the x windm s-2real(horizontal_dimension, vertical_dimension)kind_physinoutFalse
tautendency_of_air_temperature_due_to_model_physicsupdated tendency of the temperatureK s-1real(horizontal_dimension, vertical_dimension)kind_physinoutFalse
rtgtendency_of_vertically_diffused_tracer_concentrationupdated tendency of the tracers due to vertical diffusion in PBL schemekg kg-1 s-1real(horizontal_dimension, vertical_dimension, number_of_vertical_diffusion_tracers)kind_physinoutFalse
u1x_windx component of layer windm s-1real(horizontal_dimension, vertical_dimension)kind_physinFalse
v1y_windy component of layer windm s-1real(horizontal_dimension, vertical_dimension)kind_physinFalse
t1air_temperaturelayer mean air temperatureKreal(horizontal_dimension, vertical_dimension)kind_physinFalse
q1vertically_diffused_tracer_concentrationtracer concentration diffused by PBL schemekg kg-1real(horizontal_dimension, vertical_dimension, number_of_vertical_diffusion_tracers)kind_physinFalse
swhtendency_of_air_temperature_due_to_shortwave_heating_on_radiation_time_steptotal sky shortwave heating rateK s-1real(horizontal_dimension, vertical_dimension)kind_physinFalse
hlwtendency_of_air_temperature_due_to_longwave_heating_on_radiation_time_steptotal sky longwave heating rateK s-1real(horizontal_dimension, vertical_dimension)kind_physinFalse
xmuzenith_angle_temporal_adjustment_factor_for_shortwave_fluxeszenith angle temporal adjustment factor for shortwavenonereal(horizontal_dimension)kind_physinFalse
pskdimensionless_exner_function_at_lowest_model_interfacedimensionless Exner function at the surface interfacenonereal(horizontal_dimension)kind_physinFalse
rbsoilbulk_richardson_number_at_lowest_model_levelbulk Richardson number at the surfacenonereal(horizontal_dimension)kind_physinFalse
zorlsurface_roughness_lengthsurface roughness length in cmcmreal(horizontal_dimension)kind_physinFalse
u10mx_wind_at_10mx component of wind at 10 mm s-1real(horizontal_dimension)kind_physinFalse
v10my_wind_at_10my component of wind at 10 mm s-1real(horizontal_dimension)kind_physinFalse
fmMonin_Obukhov_similarity_function_for_momentumMonin-Obukhov similarity function for momentumnonereal(horizontal_dimension)kind_physinFalse
fhMonin_Obukhov_similarity_function_for_heatMonin-Obukhov similarity function for heatnonereal(horizontal_dimension)kind_physinFalse
tseasurface_skin_temperaturesurface skin temperatureKreal(horizontal_dimension)kind_physinFalse
heatkinematic_surface_upward_sensible_heat_flux_reduced_by_surface_roughnesskinematic surface upward sensible heat fluxK m s-1real(horizontal_dimension)kind_physinFalse
evapkinematic_surface_upward_latent_heat_flux_reduced_by_surface_roughnesskinematic surface upward latent heat fluxkg kg-1 m s-1real(horizontal_dimension)kind_physinFalse
stresssurface_wind_stresssurface wind stressm2 s-2real(horizontal_dimension)kind_physinFalse
spd1wind_speed_at_lowest_model_layerwind speed at lowest model levelm s-1real(horizontal_dimension)kind_physinFalse
kpblvertical_index_at_top_of_atmosphere_boundary_layerPBL top model level indexindexinteger(horizontal_dimension)outFalse
prsiair_pressure_at_interfaceair pressure at model layer interfacesPareal(horizontal_dimension, vertical_dimension_plus_one)kind_physinFalse
delair_pressure_difference_between_midlayerspres(k) - pres(k+1)Pareal(horizontal_dimension, vertical_dimension)kind_physinFalse
prslair_pressuremean layer pressurePareal(horizontal_dimension, vertical_dimension)kind_physinFalse
prslkdimensionless_exner_function_at_model_layersExner function at layersnonereal(horizontal_dimension, vertical_dimension)kind_physinFalse
phiigeopotential_at_interfacegeopotential at model layer interfacesm2 s-2real(horizontal_dimension, vertical_dimension_plus_one)kind_physinFalse
philgeopotentialgeopotential at model layer centersm2 s-2real(horizontal_dimension, vertical_dimension)kind_physinFalse
delttime_step_for_physicstime step for physicssreal()kind_physinFalse
dspheatflag_TKE_dissipation_heatingflag for using TKE dissipation heatingflaglogical()inFalse
dusfcinstantaneous_surface_x_momentum_fluxx momentum fluxPareal(horizontal_dimension)kind_physoutFalse
dvsfcinstantaneous_surface_y_momentum_fluxy momentum fluxPareal(horizontal_dimension)kind_physoutFalse
dtsfcinstantaneous_surface_upward_sensible_heat_fluxsurface upward sensible heat fluxW m-2real(horizontal_dimension)kind_physoutFalse
dqsfcinstantaneous_surface_upward_latent_heat_fluxsurface upward latent heat fluxW m-2real(horizontal_dimension)kind_physoutFalse
hpblatmosphere_boundary_layer_thicknessPBL thicknessmreal(horizontal_dimension)kind_physoutFalse
hgamtcountergradient_mixing_term_for_temperaturecountergradient mixing term for temperatureKreal(horizontal_dimension)kind_physinoutFalse
hgamqcountergradient_mixing_term_for_water_vaporcountergradient mixing term for water vaporkg kg-1real(horizontal_dimension)kind_physinoutFalse
dktatmosphere_heat_diffusivitydiffusivity for heatm2 s-1real(horizontal_dimension, vertical_dimension_minus_one)kind_physoutFalse
kinverindex_of_highest_temperature_inversionindex of highest temperature inversionindexinteger(horizontal_dimension)inFalse
xkzm_matmosphere_momentum_diffusivity_backgroundbackground value of momentum diffusivitym2 s-1real()kind_physinFalse
xkzm_hatmosphere_heat_diffusivity_backgroundbackground value of heat diffusivitym2 s-1real()kind_physinFalse
xkzm_sdiffusivity_background_sigma_levelsigma level threshold for background diffusivitynonereal()kind_physinFalse
lprntflag_printflag for printing diagnostics to outputflaglogical()inFalse
iprhorizontal_index_of_printed_columnhorizontal index of printed columnindexinteger()inFalse
xkzminvatmosphere_heat_diffusivity_background_maximummaximum background value of heat diffusivitym2 s-1real()kind_physinFalse
moninq_facatmosphere_diffusivity_coefficient_factormultiplicative constant for atmospheric diffusivitiesnonereal()kind_physinFalse
lssavflag_diagnosticslogical flag for storing diagnosticsflaglogical()inFalse
ldiag3dflag_diagnostics_3Dflag for 3d diagnostic fieldsflaglogical()inFalse
qdiag3dflag_tracer_diagnostics_3Dflag for 3d tracer diagnostic fieldsflaglogical()inFalse
ntozindex_for_ozonetracer index for ozone mixing ratioindexinteger()inFalse
du3dt_PBLcumulative_change_in_x_wind_due_to_PBLcumulative change in x wind due to PBLm s-1real(horizontal_loop_extent, vertical_dimension)kind_physinoutFalse
dv3dt_PBLcumulative_change_in_y_wind_due_to_PBLcumulative change in y wind due to PBLm s-1real(horizontal_loop_extent, vertical_dimension)kind_physinoutFalse
dt3dt_PBLcumulative_change_in_temperature_due_to_PBLcumulative change in temperature due to PBLKreal(horizontal_loop_extent, vertical_dimension)kind_physinoutFalse
dq3dt_PBLcumulative_change_in_water_vapor_specific_humidity_due_to_PBLcumulative change in water vapor specific humidity due to PBLkg kg-1real(horizontal_loop_extent, vertical_dimension)kind_physinoutFalse
do3dt_PBLcumulative_change_in_ozone_mixing_ratio_due_to_PBLcumulative change in ozone mixing ratio due to PBLkg kg-1real(horizontal_loop_extent, vertical_dimension)kind_physinoutFalse
flag_for_pbl_generic_tendflag_for_generic_planetary_boundary_layer_tendencytrue if GFS_PBL_generic should calculate tendenciesflaglogical()inFalse
errmsgccpp_error_messageerror message for error handling in CCPPnonecharacter()len=*outFalse
errflgccpp_error_flagerror flag for error handling in CCPPflaginteger()outFalse

GFS Hybrid EDMF General Algorithm

  1. Compute preliminary variables from input arguments.
  2. Calculate the first estimate of the PBL height ("Predictor step").
  3. Calculate Monin-Obukhov similarity parameters.
  4. Update thermal properties of surface parcel and recompute PBL height ("Corrector step").
  5. Determine whether stratocumulus layers exist and compute quantities needed for enhanced diffusion.
  6. Calculate the inverse Prandtl number.
  7. Compute diffusion coefficients below the PBL top.
  8. Compute diffusion coefficients above the PBL top.
  9. If the PBL is convective, call the mass flux scheme to replace the countergradient terms.
  10. Compute enhanced diffusion coefficients related to stratocumulus-topped PBLs.
  11. Solve for the temperature and moisture tendencies due to vertical mixing.
  12. Calculate heating due to TKE dissipation and add to the tendency for temperature.
  13. Solve for the horizontal momentum tendencies and add them to output tendency terms.

GFS Hybrid HEDMF Detailed Algorithm

Functions/Subroutines

subroutine hedmf::hedmf_run (im, km, ntrac, ntcw, dv, du, tau, rtg, u1, v1, t1, q1, swh, hlw, xmu, psk, rbsoil, zorl, u10m, v10m, fm, fh, tsea, heat, evap, stress, spd1, kpbl, prsi, del, prsl, prslk, phii, phil, delt, dspheat, dusfc, dvsfc, dtsfc, dqsfc, hpbl, hgamt, hgamq, dkt, kinver, xkzm_m, xkzm_h, xkzm_s, lprnt, ipr, xkzminv, moninq_fac, lssav, ldiag3d, qdiag3d, ntoz, du3dt_PBL, dv3dt_PBL, dt3dt_PBL, dq3dt_PBL, do3dt_PBL, flag_for_pbl_generic_tend, errmsg, errflg)
 
subroutine tridi1 (l, n, cl, cm, cu, r1, au, a1)
 Routine to solve the tridiagonal system to calculate temperature and moisture at \( t + \Delta t \); part of two-part process to calculate time tendencies due to vertical diffusion. More...
 
subroutine mfpbl (im, ix, km, ntrac, delt, cnvflg, zl, zm, thvx, q1, t1, u1, v1, hpbl, kpbl, sflx, ustar, wstar, xmf, tcko, qcko, ucko, vcko)
 This subroutine is used for calculating the mass flux and updraft properties. More...