diff --git a/FV3/gfsphysics/GFS_layer/GFS_physics_driver.F90 b/FV3/gfsphysics/GFS_layer/GFS_physics_driver.F90 index f2b5f806e..8753107f8 100644 --- a/FV3/gfsphysics/GFS_layer/GFS_physics_driver.F90 +++ b/FV3/gfsphysics/GFS_layer/GFS_physics_driver.F90 @@ -1457,6 +1457,14 @@ subroutine GFS_physics_driver & !--------------------------------------------------------------------- endif ! + if (Model%override_surface_radiative_fluxes .and. Model%derive_net_surface_shortwave_radiative_flux) then + where (adjsfcdsw .gt. adjsfcnsw) + Statein%adjsfcnsw_override = (adjsfcnsw / adjsfcdsw) * Statein%adjsfcdsw_override + elsewhere + Statein%adjsfcnsw_override = 0.0 + endwhere + endif + if (Model%lsidea) then !idea jw dtdt(:,:) = zero endif diff --git a/FV3/gfsphysics/GFS_layer/GFS_typedefs.F90 b/FV3/gfsphysics/GFS_layer/GFS_typedefs.F90 index 788788d16..584b0380d 100644 --- a/FV3/gfsphysics/GFS_layer/GFS_typedefs.F90 +++ b/FV3/gfsphysics/GFS_layer/GFS_typedefs.F90 @@ -1084,6 +1084,7 @@ module GFS_typedefs logical :: iau_filter_increments real(kind=kind_phys) :: sst_perturbation ! Sea surface temperature perturbation to climatology or nudging SST (default 0.0 K) logical :: override_surface_radiative_fluxes ! Whether to use Statein to override the surface radiative fluxes + logical :: derive_net_surface_shortwave_radiative_flux ! Whether to compute the net shortwave radiative flux using override downward shortwave flux and the RRTMG effective albedo logical :: use_climatological_sst ! Whether to allow the Python wrapper to override the sea surface temperature logical :: emulate_zc_microphysics ! Use an emulator in place of ZC microphysics logical :: save_zc_microphysics ! Save ZC microphysics state @@ -3162,6 +3163,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & real(kind=kind_phys) :: sst_perturbation = 0.0 ! Sea surface temperature perturbation [K] logical :: override_surface_radiative_fluxes = .false. + logical :: derive_net_surface_shortwave_radiative_flux = .false. logical :: use_climatological_sst = .true. logical :: emulate_zc_microphysics = .false. logical :: save_zc_microphysics = .false. @@ -3256,8 +3258,10 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & !--- aerosol scavenging factors ('name:value' string array) fscav_aero, & sst_perturbation, & - override_surface_radiative_fluxes, use_climatological_sst, & - emulate_zc_microphysics, save_zc_microphysics + override_surface_radiative_fluxes, & + derive_net_surface_shortwave_radiative_flux, & + use_climatological_sst, emulate_zc_microphysics, & + save_zc_microphysics !--- other parameters integer :: nctp = 0 !< number of cloud types in CS scheme @@ -3726,6 +3730,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & Model%sst_perturbation = sst_perturbation Model%override_surface_radiative_fluxes = override_surface_radiative_fluxes + Model%derive_net_surface_shortwave_radiative_flux = derive_net_surface_shortwave_radiative_flux Model%use_climatological_sst = use_climatological_sst !--- emulation parameters @@ -4544,6 +4549,7 @@ subroutine control_print(Model) print *, ' isot : ', Model%isot print *, ' sst_perturbation : ', Model%sst_perturbation print *, ' override_surface_radiative_fluxes: ', Model%override_surface_radiative_fluxes + print *, ' derive_net_surface_shortwave_radiative_flux: ', Model%derive_net_surface_shortwave_radiative_flux print *, ' use_climatological_sst: ', Model%use_climatological_sst if (Model%lsm == Model%lsm_noahmp) then print *, ' Noah MP LSM is used, the options are'