The Hybrid EDMF scheme is a first-order turbulent transport scheme used for subgrid-scale vertical turbulent mixing in the PBL and above. It blends the traditional first-order approach that has been used and improved over the last several years with a more recent scheme that uses a mass-flux approach to calculate the countergradient diffusion terms. More...
The PBL scheme's main task is to calculate tendencies of temperature, moisture, and momentum due to vertical diffusion throughout the column (not just the PBL). The scheme is an amalgamation of decades of work, starting from the initial first-order PBL scheme of Troen and Mahrt (1986) [93], implemented according to Hong and Pan (1996) [41] and modified by Han and Pan (2011) [34] and Han et al. (2015) [35] to include top-down mixing due to stratocumulus layers from Lock et al. (2000) [63] and replacement of counter-gradient terms with a mass flux scheme according to Siebesma et al. (2007) [89] and Soares et al. (2004) [90]. Recently, heating due to TKE dissipation was also added according to Han et al. (2015) [35].
This subroutine contains all of logic for the Hybrid EDMF PBL scheme except for the calculation of the updraft properties and mass flux. The scheme works on a basic level by calculating background diffusion coefficients and updating them according to which processes are occurring in the column. The most important difference in diffusion coefficients occurs between those levels in the PBL and those above the PBL, so the PBL height calculation is of utmost importance. An initial estimate is calculated in a "predictor" step in order to calculate Monin-Obukhov similarity values and a corrector step recalculates the PBL height based on updated surface thermal characteristics. Using the PBL height and the similarity parameters, the diffusion coefficients are updated below the PBL top based on Hong and Pan (1996) [41] (including counter-gradient terms). Diffusion coefficients in the free troposphere (above the PBL top) are calculated according to Louis (1979) [68] with updated Richardson number-dependent functions. If it is diagnosed that PBL top-down mixing is occurring according to Lock et al. (2000) [63] , then then diffusion coefficients are updated accordingly. Finally, for convective boundary layers (defined as when the Obukhov length exceeds a threshold), the counter-gradient terms are replaced using the mass flux scheme of Siebesma et al. (2007) [89] . In order to return time tendencies, a fully implicit solution is found using tridiagonal matrices, and time tendencies are "backed out." Before returning, the time tendency of temperature is updated to reflect heating due to TKE dissipation following Han et al. (2015) [35] .
local_name | standard_name | long_name | units | rank | type | kind | intent | optional |
---|---|---|---|---|---|---|---|---|
ix | horizontal_dimension | horizontal dimension | count | 0 | integer | in | F | |
im | horizontal_loop_extent | horizontal loop extent | count | 0 | integer | in | F | |
km | vertical_dimension | vertical layer dimension | count | 0 | integer | in | F | |
ntrac | number_of_vertical_diffusion_tracers | number of tracers to diffuse vertically | count | 0 | integer | in | F | |
ntcw | index_for_liquid_cloud_condensate | cloud condensate index in tracer array | index | 0 | integer | in | F | |
dv | tendency_of_y_wind_due_to_model_physics | updated tendency of the y wind | m s-2 | 2 | real | kind_phys | inout | F |
du | tendency_of_x_wind_due_to_model_physics | updated tendency of the x wind | m s-2 | 2 | real | kind_phys | inout | F |
tau | tendency_of_air_temperature_due_to_model_physics | updated tendency of the temperature | K s-1 | 2 | real | kind_phys | inout | F |
rtg | tendency_of_tracers_due_to_model_physics | updated tendency of the tracers | kg kg-1 s-1 | 3 | real | kind_phys | inout | F |
u1 | x_wind | x component of layer wind | m s-1 | 2 | real | kind_phys | in | F |
v1 | y_wind | y component of layer wind | m s-1 | 2 | real | kind_phys | in | F |
t1 | air_temperature | layer mean air temperature | K | 2 | real | kind_phys | in | F |
q1 | tracer_concentration | layer mean tracer concentration, cf. GFS_typedefs.F90 | kg kg-1 | 3 | real | kind_phys | in | F |
swh | tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_time_step | total sky shortwave heating rate | K s-1 | 2 | real | kind_phys | in | F |
hlw | tendency_of_air_temperature_due_to_longwave_heating_on_radiation_time_step | total sky longwave heating rate | K s-1 | 2 | real | kind_phys | in | F |
xmu | zenith_angle_temporal_adjustment_factor_for_shortwave_fluxes | zenith angle temporal adjustment factor for shortwave | none | 1 | real | kind_phys | in | F |
psk | dimensionless_exner_function_at_lowest_model_interface | dimensionless Exner function at the surface interface | none | 1 | real | kind_phys | in | F |
rbsoil | bulk_richardson_number_at_lowest_model_level | bulk Richardson number at the surface | none | 1 | real | kind_phys | in | F |
zorl | surface_roughness_length | surface roughness length in cm | cm | 1 | real | kind_phys | in | F |
u10m | x_wind_at_10m | x component of wind at 10 m | m s-1 | 1 | real | kind_phys | in | F |
v10m | y_wind_at_10m | y component of wind at 10 m | m s-1 | 1 | real | kind_phys | in | F |
fm | Monin-Obukhov_similarity_function_for_momentum | Monin-Obukhov similarity function for momentum | none | 1 | real | kind_phys | in | F |
fh | Monin-Obukhov_similarity_function_for_heat | Monin-Obukhov similarity function for heat | none | 1 | real | kind_phys | in | F |
tsea | surface_skin_temperature | surface temperature | K | 1 | real | kind_phys | in | F |
heat | kinematic_surface_upward_sensible_heat_flux | kinematic surface upward sensible heat flux | K m s-1 | 1 | real | kind_phys | in | F |
evap | kinematic_surface_upward_latent_heat_flux | kinematic surface upward latent heat flux | kg kg-1 m s-1 | 1 | real | kind_phys | in | F |
stress | surface_wind_stress | surface wind stress | m2 s-2 | 1 | real | kind_phys | in | F |
spd1 | wind_speed_at_lowest_model_layer | wind speed at lowest model level | m s-1 | 1 | real | kind_phys | in | F |
kpbl | vertical_index_at_top_of_atmosphere_boundary_layer | PBL top model level index | index | 1 | integer | out | F | |
prsi | air_pressure_at_interface | air pressure at model layer interfaces | Pa | 2 | real | kind_phys | in | F |
del | air_pressure_difference_between_midlayers | pres(k) - pres(k+1) | Pa | 2 | real | kind_phys | in | F |
prsl | air_pressure | mean layer pressure | Pa | 2 | real | kind_phys | in | F |
prslk | dimensionless_exner_function_at_model_layers | Exner function at layers | none | 2 | real | kind_phys | in | F |
phii | geopotential_at_interface | geopotential at model layer interfaces | m2 s-2 | 2 | real | kind_phys | in | F |
phil | geopotential | geopotential at model layer centers | m2 s-2 | 2 | real | kind_phys | in | F |
delt | time_step_for_physics | time step for physics | s | 0 | real | kind_phys | in | F |
dspheat | flag_TKE_dissipation_heating | flag for using TKE dissipation heating | flag | 0 | logical | in | F | |
dusfc | instantaneous_surface_x_momentum_flux | x momentum flux | Pa | 1 | real | kind_phys | out | F |
dvsfc | instantaneous_surface_y_momentum_flux | y momentum flux | Pa | 1 | real | kind_phys | out | F |
dtsfc | instantaneous_surface_upward_sensible_heat_flux | surface upward sensible heat flux | W m-2 | 1 | real | kind_phys | out | F |
dqsfc | instantaneous_surface_upward_latent_heat_flux | surface upward latent heat flux | W m-2 | 1 | real | kind_phys | out | F |
hpbl | atmosphere_boundary_layer_thickness | PBL thickness | m | 1 | real | kind_phys | out | F |
hgamt | countergradient_mixing_term_for_temperature | countergradient mixing term for temperature | K | 1 | real | kind_phys | inout | F |
hgamq | countergradient_mixing_term_for_water_vapor | countergradient mixing term for water vapor | kg kg-1 | 1 | real | kind_phys | inout | F |
dkt | atmosphere_heat_diffusivity | diffusivity for heat | m2 s-1 | 2 | real | kind_phys | out | F |
kinver | index_of_highest_temperature_inversion | index of highest temperature inversion | index | 1 | integer | in | F | |
xkzm_m | atmosphere_momentum_diffusivity_background | background value of momentum diffusivity | m2 s-1 | 0 | real | kind_phys | in | F |
xkzm_h | atmosphere_heat_diffusivity_background | background value of heat diffusivity | m2 s-1 | 0 | real | kind_phys | in | F |
xkzm_s | diffusivity_background_sigma_level | sigma level threshold for background diffusivity | none | 0 | real | kind_phys | in | F |
lprnt | flag_print | flag for printing diagnostics to output | flag | 0 | logical | in | F | |
ipr | horizontal_index_of_printed_column | horizontal index of printed column | index | 0 | integer | in | F | |
xkzminv | atmosphere_heat_diffusivity_background_maximum | maximum background value of heat diffusivity | m2 s-1 | 0 | real | kind_phys | in | F |
moninq_fac | atmosphere_diffusivity_coefficient_factor | multiplicative constant for atmospheric diffusivities | none | 0 | real | kind_phys | in | F |
errmsg | error_message | error message for error handling in CCPP | none | 0 | character | len=* | out | F |
errflg | error_flag | error flag for error handling in CCPP | flag | 0 | integer | out | F |
Functions/Subroutines | |
subroutine | hedmf::hedmf_run (ix, 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, errmsg, errflg) |
subroutine | tridi2 (l, n, cl, cm, cu, r1, r2, au, a1, a2) |
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 | tridin (l, n, nt, cl, cm, cu, r1, r2, au, a1, a2) |
Routine to solve the tridiagonal system to calculate u- and v-momentum 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... | |