CCPP Scientific Documentation
v5.0.0
GFS Surface Layer Scheme Module

This subroutine calculates surface roughness length. More...

Detailed Description

This subroutine includes the surface roughness length formulation based on the surface sublayer scheme in Zeng and Dickinson (1998) [187].

Argument Table

sfc_diff_run argument table
local_namestandard_namelong_nameunitstypedimensionskindintentoptional
imhorizontal_loop_extenthorizontal loop extentcountinteger()inFalse
rvrdm1ratio_of_vapor_to_dry_air_gas_constants_minus_one(rv/rd) - 1 (rv = ideal gas constant for water vapor)nonereal()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
gravgravitational_accelerationgravitational accelerationm s-2real()kind_physinFalse
pssurface_air_pressuresurface pressurePareal(horizontal_dimension)kind_physinFalse
t1air_temperature_at_lowest_model_layer1st model layer air temperatureKreal(horizontal_dimension)kind_physinFalse
q1water_vapor_specific_humidity_at_lowest_model_layer1st model layer specific humiditykg kg-1real(horizontal_dimension)kind_physinFalse
z1height_above_ground_at_lowest_model_layerheight above ground at 1st model layermreal(horizontal_dimension)kind_physinFalse
windwind_speed_at_lowest_model_layerwind speed at lowest model levelm s-1real(horizontal_dimension)kind_physinFalse
prsl1air_pressure_at_lowest_model_layerModel layer 1 mean pressurePareal(horizontal_dimension)kind_physinFalse
prslkiratio_of_exner_function_between_midlayer_and_interface_at_lowest_model_layerExner function ratio bt midlayer and interface at 1st layerratioreal(horizontal_dimension)kind_physinFalse
prsik1dimensionless_exner_function_at_lowest_model_interfacedimensionless Exner function at the ground surfacenonereal(horizontal_dimension)kind_physinFalse
prslk1dimensionless_exner_function_at_lowest_model_layerdimensionless Exner function at the lowest model layernonereal(horizontal_dimension)kind_physinFalse
sigmafbounded_vegetation_area_fractionareal fractional cover of green vegetation bounded on the bottomfracreal(horizontal_dimension)kind_physinFalse
vegtypevegetation_type_classificationvegetation type at each grid cellindexinteger(horizontal_dimension)inFalse
shdmaxmaximum_vegetation_area_fractionmax fractnl cover of green vegfracreal(horizontal_dimension)kind_physinFalse
ivegsrcvegetation_type_dataset_choiceland use dataset choiceindexinteger()inFalse
z0pertperturbation_of_momentum_roughness_lengthperturbation of momentum roughness lengthfracreal(horizontal_dimension)kind_physinFalse
ztpertperturbation_of_heat_to_momentum_roughness_length_ratioperturbation of heat to momentum roughness length ratiofracreal(horizontal_dimension)kind_physinFalse
flag_iterflag_for_iterationflag for iterationflaglogical(horizontal_dimension)inFalse
redragflag_for_reduced_drag_coefficient_over_seaflag for reduced drag coefficient over seaflaglogical()inFalse
u10mx_wind_at_10m10 meter u wind speedm s-1real(horizontal_dimension)kind_physinFalse
v10my_wind_at_10m10 meter v wind speedm s-1real(horizontal_dimension)kind_physinFalse
sfc_z0_typeflag_for_surface_roughness_option_over_oceansurface roughness options over oceanflaginteger()inFalse
wetflag_nonzero_wet_surface_fractionflag indicating presence of some ocean or lake surface area fractionflaglogical(horizontal_dimension)inFalse
dryflag_nonzero_land_surface_fractionflag indicating presence of some land surface area fractionflaglogical(horizontal_dimension)inFalse
icyflag_nonzero_sea_ice_surface_fractionflag indicating presence of some sea ice surface area fractionflaglogical(horizontal_dimension)inFalse
tskin_watsurface_skin_temperature_over_ocean_interstitialsurface skin temperature over ocean (temporary use as interstitial)Kreal(horizontal_dimension)kind_physinFalse
tskin_lndsurface_skin_temperature_over_land_interstitialsurface skin temperature over land (temporary use as interstitial)Kreal(horizontal_dimension)kind_physinFalse
tskin_icesurface_skin_temperature_over_ice_interstitialsurface skin temperature over ice (temporary use as interstitial)Kreal(horizontal_dimension)kind_physinFalse
tsurf_watsurface_skin_temperature_after_iteration_over_oceansurface skin temperature after iteration over oceanKreal(horizontal_dimension)kind_physinFalse
tsurf_lndsurface_skin_temperature_after_iteration_over_landsurface skin temperature after iteration over landKreal(horizontal_dimension)kind_physinFalse
tsurf_icesurface_skin_temperature_after_iteration_over_icesurface skin temperature after iteration over iceKreal(horizontal_dimension)kind_physinFalse
snwdph_watsurface_snow_thickness_water_equivalent_over_oceanwater equivalent snow depth over oceanmmreal(horizontal_dimension)kind_physinFalse
snwdph_lndsurface_snow_thickness_water_equivalent_over_landwater equivalent snow depth over landmmreal(horizontal_dimension)kind_physinFalse
snwdph_icesurface_snow_thickness_water_equivalent_over_icewater equivalent snow depth over icemmreal(horizontal_dimension)kind_physinFalse
z0rl_watsurface_roughness_length_over_ocean_interstitialsurface roughness length over ocean (temporary use as interstitial)cmreal(horizontal_dimension)kind_physinoutFalse
z0rl_lndsurface_roughness_length_over_land_interstitialsurface roughness length over land (temporary use as interstitial)cmreal(horizontal_dimension)kind_physinoutFalse
z0rl_icesurface_roughness_length_over_ice_interstitialsurface roughness length over ice (temporary use as interstitial)cmreal(horizontal_dimension)kind_physinoutFalse
z0rl_wavsurface_roughness_length_from_wave_modelsurface roughness length from wave modelcmreal(horizontal_dimension)kind_physinFalse
ustar_watsurface_friction_velocity_over_oceansurface friction velocity over oceanm s-1real(horizontal_dimension)kind_physinoutFalse
ustar_lndsurface_friction_velocity_over_landsurface friction velocity over landm s-1real(horizontal_dimension)kind_physinoutFalse
ustar_icesurface_friction_velocity_over_icesurface friction velocity over icem s-1real(horizontal_dimension)kind_physinoutFalse
cm_watsurface_drag_coefficient_for_momentum_in_air_over_oceansurface exchange coeff for momentum over oceannonereal(horizontal_dimension)kind_physinoutFalse
cm_lndsurface_drag_coefficient_for_momentum_in_air_over_landsurface exchange coeff for momentum over landnonereal(horizontal_dimension)kind_physinoutFalse
cm_icesurface_drag_coefficient_for_momentum_in_air_over_icesurface exchange coeff for momentum over icenonereal(horizontal_dimension)kind_physinoutFalse
ch_watsurface_drag_coefficient_for_heat_and_moisture_in_air_over_oceansurface exchange coeff heat & moisture over oceannonereal(horizontal_dimension)kind_physinoutFalse
ch_lndsurface_drag_coefficient_for_heat_and_moisture_in_air_over_landsurface exchange coeff heat & moisture over landnonereal(horizontal_dimension)kind_physinoutFalse
ch_icesurface_drag_coefficient_for_heat_and_moisture_in_air_over_icesurface exchange coeff heat & moisture over icenonereal(horizontal_dimension)kind_physinoutFalse
rb_watbulk_richardson_number_at_lowest_model_level_over_oceanbulk Richardson number at the surface over oceannonereal(horizontal_dimension)kind_physinoutFalse
rb_lndbulk_richardson_number_at_lowest_model_level_over_landbulk Richardson number at the surface over landnonereal(horizontal_dimension)kind_physinoutFalse
rb_icebulk_richardson_number_at_lowest_model_level_over_icebulk Richardson number at the surface over icenonereal(horizontal_dimension)kind_physinoutFalse
stress_watsurface_wind_stress_over_oceansurface wind stress over oceanm2 s-2real(horizontal_dimension)kind_physinoutFalse
stress_lndsurface_wind_stress_over_landsurface wind stress over landm2 s-2real(horizontal_dimension)kind_physinoutFalse
stress_icesurface_wind_stress_over_icesurface wind stress over icem2 s-2real(horizontal_dimension)kind_physinoutFalse
fm_watMonin_Obukhov_similarity_function_for_momentum_over_oceanMonin-Obukhov similarity function for momentum over oceannonereal(horizontal_dimension)kind_physinoutFalse
fm_lndMonin_Obukhov_similarity_function_for_momentum_over_landMonin-Obukhov similarity function for momentum over landnonereal(horizontal_dimension)kind_physinoutFalse
fm_iceMonin_Obukhov_similarity_function_for_momentum_over_iceMonin-Obukhov similarity function for momentum over icenonereal(horizontal_dimension)kind_physinoutFalse
fh_watMonin_Obukhov_similarity_function_for_heat_over_oceanMonin-Obukhov similarity function for heat over oceannonereal(horizontal_dimension)kind_physinoutFalse
fh_lndMonin_Obukhov_similarity_function_for_heat_over_landMonin-Obukhov similarity function for heat over landnonereal(horizontal_dimension)kind_physinoutFalse
fh_iceMonin_Obukhov_similarity_function_for_heat_over_iceMonin-Obukhov similarity function for heat over icenonereal(horizontal_dimension)kind_physinoutFalse
fm10_watMonin_Obukhov_similarity_function_for_momentum_at_10m_over_oceanMonin-Obukhov similarity parameter for momentum at 10m over oceannonereal(horizontal_dimension)kind_physinoutFalse
fm10_lndMonin_Obukhov_similarity_function_for_momentum_at_10m_over_landMonin-Obukhov similarity parameter for momentum at 10m over landnonereal(horizontal_dimension)kind_physinoutFalse
fm10_iceMonin_Obukhov_similarity_function_for_momentum_at_10m_over_iceMonin-Obukhov similarity parameter for momentum at 10m over icenonereal(horizontal_dimension)kind_physinoutFalse
fh2_watMonin_Obukhov_similarity_function_for_heat_at_2m_over_oceanMonin-Obukhov similarity parameter for heat at 2m over oceannonereal(horizontal_dimension)kind_physinoutFalse
fh2_lndMonin_Obukhov_similarity_function_for_heat_at_2m_over_landMonin-Obukhov similarity parameter for heat at 2m over landnonereal(horizontal_dimension)kind_physinoutFalse
fh2_iceMonin_Obukhov_similarity_function_for_heat_at_2m_over_iceMonin-Obukhov similarity parameter for heat at 2m over icenonereal(horizontal_dimension)kind_physinoutFalse
errmsgccpp_error_messageerror message for error handling in CCPPnonecharacter()len=*outFalse
errflgccpp_error_flagerror flag for error handling in CCPPflaginteger()outFalse

GFS Surface Layer Scheme General Algorithm

Functions/Subroutines

subroutine, public sfc_diff::sfc_diff_run (im, rvrdm1, eps, epsm1, grav, ps, t1, q1, z1, wind, prsl1, prslki, prsik1, prslk1, sigmaf, vegtype, shdmax, ivegsrc, z0pert, ztpert, flag_iter, redrag, u10m, v10m, sfc_z0_type, wet, dry, icy, tskin_wat, tskin_lnd, tskin_ice, tsurf_wat, tsurf_lnd, tsurf_ice, snwdph_wat, snwdph_lnd, snwdph_ice, z0rl_wat, z0rl_lnd, z0rl_ice, z0rl_wav, ustar_wat, ustar_lnd, ustar_ice, cm_wat, cm_lnd, cm_ice, ch_wat, ch_lnd, ch_ice, rb_wat, rb_lnd, rb_ice, stress_wat, stress_lnd, stress_ice, fm_wat, fm_lnd, fm_ice, fh_wat, fh_lnd, fh_ice, fm10_wat, fm10_lnd, fm10_ice, fh2_wat, fh2_lnd, fh2_ice, errmsg, errflg)
 
subroutine sfc_diff::stability