diff --git a/ccpp/data/CCPP_typedefs.meta b/ccpp/data/CCPP_typedefs.meta index f235c3669..20e9f155b 100644 --- a/ccpp/data/CCPP_typedefs.meta +++ b/ccpp/data/CCPP_typedefs.meta @@ -1700,7 +1700,7 @@ type = real kind = kind_phys [fullradar_diag] - standard_name = flag_for_computing_full_radar_reflectivity + standard_name = do_full_radar_reflectivity long_name = flag for computing full radar reflectivity units = flag dimensions = () diff --git a/ccpp/data/GFS_typedefs.F90 b/ccpp/data/GFS_typedefs.F90 index d02cd5537..6f38fdbe3 100644 --- a/ccpp/data/GFS_typedefs.F90 +++ b/ccpp/data/GFS_typedefs.F90 @@ -925,7 +925,7 @@ module GFS_typedefs integer :: lsnow_lsm !< maximum number of snow layers internal to land surface model integer :: lsnow_lsm_lbound!< lower bound for snow arrays, depending on lsnow_lsm integer :: lsnow_lsm_ubound!< upper bound for snow arrays, depending on lsnow_lsm - logical :: vrbliceden_noah !< flag for variable precip ice density for NOAH LSM + logical :: exticeden !< flag for external precip ice density (e.g. calculated after microphysics rather than inside LSM) real(kind=kind_phys), pointer :: zs(:) => null() !< depth of soil levels for land surface model real(kind=kind_phys), pointer :: dzs(:) => null() !< thickness of soil levels for land surface model real(kind=kind_phys), pointer :: pores(:) => null() !< max soil moisture for a given soil type for land surface model @@ -3124,7 +3124,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & integer :: lsoil = 4 !< number of soil layers integer :: lsoil_lsm = -1 !< number of soil layers internal to land surface model; -1 use lsoil integer :: lsnow_lsm = 3 !< maximum number of snow layers internal to land surface model - logical :: vrbliceden_noah = .false. !< Use variable precip ice density for NOAH LSM if true or original formulation + logical :: exticeden = .false. !< Use external precip ice density for LSM if true; use internal LSM formulation of false logical :: rdlai = .false. !< read LAI from input file (for RUC LSM or NOAH LSM WRFv4) logical :: ua_phys = .false. !< flag for using University of Arizona? extension to NOAH LSM WRFv4 logical :: usemonalb = .true. !< flag to read surface diffused shortwave albedo from input file for NOAH LSM WRFv4 @@ -3528,7 +3528,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & !--- land/surface model control lsm, lsoil, lsoil_lsm, lsnow_lsm, kice, rdlai, & nmtvr, ivegsrc, use_ufo, iopt_thcnd, ua_phys, usemonalb, & - aoasis, fasdas,vrbliceden_noah, & + aoasis, fasdas, exticeden, & ! Noah MP options iopt_dveg,iopt_crs,iopt_btr,iopt_run,iopt_sfc, iopt_frz, & iopt_inf, iopt_rad,iopt_alb,iopt_snf,iopt_tbot,iopt_stc, & @@ -4174,7 +4174,14 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & Model%ivegsrc = ivegsrc Model%isot = isot Model%use_ufo = use_ufo - Model%vrbliceden_noah = vrbliceden_noah + Model%exticeden = exticeden + if (Model%exticeden .and. & + (Model%imp_physics /= Model%imp_physics_gfdl .and. Model%imp_physics /= Model%imp_physics_thompson .and. & + Model%imp_physics /= Model%imp_physics_nssl )) then + !see GFS_MP_generic_post.F90; exticeden is only compatible with GFDL, Thompson, or NSSL MP + print *,' Using exticeden = T is only valid when using GFDL, Thompson, or NSSL microphysics.' + stop + end if ! GFDL surface layer options Model%lcurr_sf = lcurr_sf @@ -4196,7 +4203,11 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & Model%iopt_inf = iopt_inf Model%iopt_rad = iopt_rad Model%iopt_alb = iopt_alb - Model%iopt_snf = iopt_snf + if (Model%lsm==Model%lsm_noahmp .and. Model%exticeden .and. iopt_snf == 4) then + Model%iopt_snf = 5 + else + Model%iopt_snf = iopt_snf + end if Model%iopt_tbot = iopt_tbot Model%iopt_stc = iopt_stc Model%iopt_trs = iopt_trs @@ -5065,7 +5076,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & if (Model%me == Model%master) then if (Model%lsm == 1) then print *,' NOAH Land Surface Model used' - print *,'vrbliceden_noah = ', Model%vrbliceden_noah + print *,'exticeden = ', Model%exticeden elseif (Model%lsm == 0) then print *,' OSU no longer supported - job aborted' @@ -5924,7 +5935,7 @@ subroutine control_print(Model) print *, ' lsoil : ', Model%lsoil print *, ' rdlai : ', Model%rdlai print *, ' lsoil_lsm : ', Model%lsoil_lsm - print *, ' vrbliceden_noah : ', Model%vrbliceden_noah + print *, ' exticeden : ', Model%exticeden if (Model%lsm==Model%lsm_noahmp) then print *, ' lsnow_lsm : ', Model%lsnow_lsm print *, ' lsnow_lsm_lbound : ', Model%lsnow_lsm_lbound diff --git a/ccpp/data/GFS_typedefs.meta b/ccpp/data/GFS_typedefs.meta index d9b9ca82a..bdb61c875 100644 --- a/ccpp/data/GFS_typedefs.meta +++ b/ccpp/data/GFS_typedefs.meta @@ -1628,7 +1628,7 @@ kind = kind_phys active = (control_for_land_surface_scheme == identifier_for_ruc_land_surface_scheme) [rhofr] - standard_name = frozen_precipitation_density + standard_name = lsm_internal_surface_frozen_precipitation_density long_name = density of frozen precipitation units = kg m-3 dimensions = (horizontal_loop_extent) @@ -4170,9 +4170,9 @@ units = count dimensions = () type = integer -[vrbliceden_noah] - standard_name = flag_for_vrbl_prcp_ice_den - long_name = flag for variable precip ice density +[exticeden] + standard_name = do_external_surface_frozen_precipitation_density + long_name = flag for calculating frozen precip ice density outside of the LSM units = flag dimensions = () type = logical @@ -7512,49 +7512,49 @@ type = real kind = kind_phys [frzr] - standard_name = lwe_thickness_of_sfc_freezing_rain_amount + standard_name = cumulative_lwe_thickness_of_surface_freezing_rain_amount long_name = accumulated surface freezing rain units = m dimensions = (horizontal_loop_extent) type = real kind = kind_phys [frzrb] - standard_name = lwe_thickness_of_sfc_freezing_rain_amount_in_bucket + standard_name = cumulative_lwe_thickness_of_surface_freezing_rain_amount_in_bucket long_name = accumulated surface freezing rain in bucket units = m dimensions = (horizontal_loop_extent) type = real kind = kind_phys [frozr] - standard_name = lwe_thickness_of_sfc_graupel_amount + standard_name = cumulative_lwe_thickness_of_surface_graupel_amount long_name = accumulated surface graupel units = m dimensions = (horizontal_loop_extent) type = real kind = kind_phys [frozrb] - standard_name = lwe_thickness_of_sfc_graupel_amount_in_bucket + standard_name = cumulative_lwe_thickness_of_surface_graupel_amount_in_bucket long_name = accumulated surface graupel in bucket units = m dimensions = (horizontal_loop_extent) type = real kind = kind_phys [tsnowp] - standard_name = lwe_thickness_of_sfc_snow_amount + standard_name = cumulative_lwe_thickness_of_surface_snow_amount long_name = accumulated surface snow units = m dimensions = (horizontal_loop_extent) type = real kind = kind_phys [tsnowpb] - standard_name = lwe_thickness_of_sfc_snow_amount_in_bucket + standard_name = cumulative_lwe_thickness_of_surface_snow_amount_in_bucket long_name = accumulated surface snow in bucket units = m dimensions = (horizontal_loop_extent) type = real kind = kind_phys [rhonewsn1] - standard_name = lwe_density_of_precip_ice + standard_name = surface_frozen_precipitation_density long_name = density of precipitation ice units = kg m-3 dimensions = (horizontal_loop_extent)