From e664d7c31d57817124eb1a8fc89a3d813f16ae3e Mon Sep 17 00:00:00 2001 From: Spencer Clark Date: Mon, 22 Mar 2021 16:20:22 +0000 Subject: [PATCH 1/9] Add payload container and flag for SST modification --- FV3/gfsphysics/GFS_layer/GFS_physics_driver.F90 | 10 ++++++++++ FV3/gfsphysics/GFS_layer/GFS_typedefs.F90 | 12 +++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/FV3/gfsphysics/GFS_layer/GFS_physics_driver.F90 b/FV3/gfsphysics/GFS_layer/GFS_physics_driver.F90 index 7d3be34c1..6efa4db3d 100644 --- a/FV3/gfsphysics/GFS_layer/GFS_physics_driver.F90 +++ b/FV3/gfsphysics/GFS_layer/GFS_physics_driver.F90 @@ -2093,6 +2093,16 @@ subroutine GFS_physics_driver & enddo endif + if (Model%prescribe_sst_from_wrapper) then + do i = 1, im + if (islmsk(i) == 0 ) then + Sfcprop%tsfc(i) = Statein%sst_from_wrapper(i) + Model%sst_perturbation + Sfcprop%tsfco(i) = Statein%sst_from_wrapper(i) + Model%sst_perturbation + tsfc3(i,3) = Statein%sst_from_wrapper(i) + Model%sst_perturbation + endif + enddo + endif + do i=1,im Diag%epi(i) = ep1d(i) Diag%dlwsfci(i) = adjsfcdlw_for_lsm(i) diff --git a/FV3/gfsphysics/GFS_layer/GFS_typedefs.F90 b/FV3/gfsphysics/GFS_layer/GFS_typedefs.F90 index cb50f0293..d78380d66 100644 --- a/FV3/gfsphysics/GFS_layer/GFS_typedefs.F90 +++ b/FV3/gfsphysics/GFS_layer/GFS_typedefs.F90 @@ -193,6 +193,7 @@ module GFS_typedefs real (kind=kind_phys), pointer :: adjsfcdlw_override(:) => null() !< override to the downward longwave radiation flux at the surface real (kind=kind_phys), pointer :: adjsfcdsw_override(:) => null() !< override to the downward shortwave radiation flux at the surface real (kind=kind_phys), pointer :: adjsfcnsw_override(:) => null() !< override to the net shortwave radiation flux at the surface + real (kind=kind_phys), pointer :: sst_from_wrapper(:) => null() !< sea surface temperature set by the Python wrapper contains procedure :: create => statein_create !< allocate array data end type GFS_statein_type @@ -1084,6 +1085,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 :: prescribe_sst_from_wrapper ! Whether to prescribe the sea surface temperature via the Python wrapper #ifdef CCPP ! From physcons.F90, updated/set in control_initialize real(kind=kind_phys) :: dxinv ! inverse scaling factor for critical relative humidity, replaces dxinv in physcons.F90 @@ -2034,6 +2036,11 @@ subroutine statein_create (Statein, IM, Model) Statein%adjsfcdsw_override = 0.0 Statein%adjsfcnsw_override = 0.0 endif + + if (Model%prescribe_sst_from_wrapper) then + allocate(Statein%sst_from_wrapper(IM)) + Statein%sst_from_wrapper = 0.0 + endif end subroutine statein_create @@ -3128,6 +3135,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 :: prescribe_sst_from_wrapper = .false. !--- END NAMELIST VARIABLES NAMELIST /gfs_physics_nml/ & @@ -3219,7 +3227,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & !--- aerosol scavenging factors ('name:value' string array) fscav_aero, & sst_perturbation, & - override_surface_radiative_fluxes + override_surface_radiative_fluxes, prescribe_sst_from_wrapper !--- other parameters integer :: nctp = 0 !< number of cloud types in CS scheme @@ -3688,6 +3696,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%prescribe_sst_from_wrapper = prescribe_sst_from_wrapper !--- tracer handling Model%ntrac = size(tracer_names) #ifdef CCPP @@ -4496,6 +4505,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 *, ' prescribe_sst_from_wrapper: ', Model%prescribe_sst_from_wrapper if (Model%lsm == Model%lsm_noahmp) then print *, ' Noah MP LSM is used, the options are' print *, ' iopt_dveg : ', Model%iopt_dveg From 087ab8857c8b4c54dedd4f12526d78d9c87a2348 Mon Sep 17 00:00:00 2001 From: Spencer Clark Date: Mon, 22 Mar 2021 19:47:50 +0000 Subject: [PATCH 2/9] Shift application of payload within physics driver --- FV3/gfsphysics/GFS_layer/GFS_physics_driver.F90 | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/FV3/gfsphysics/GFS_layer/GFS_physics_driver.F90 b/FV3/gfsphysics/GFS_layer/GFS_physics_driver.F90 index 6efa4db3d..333ba28e2 100644 --- a/FV3/gfsphysics/GFS_layer/GFS_physics_driver.F90 +++ b/FV3/gfsphysics/GFS_layer/GFS_physics_driver.F90 @@ -674,6 +674,7 @@ subroutine GFS_physics_driver & real(kind=kind_phys), allocatable, dimension(:,:) :: den real(kind=kind_phys), allocatable, dimension(:,:) :: dqdt_work real(kind=kind_phys), pointer :: adjsfcdlw_for_lsm(:), adjsfcdsw_for_lsm(:), adjsfcnsw_for_lsm(:) + real(kind=kind_phys), pointer :: sea_surface_temperature(:) integer :: nwat !! Initialize local variables (mainly for debugging purposes, because the @@ -728,6 +729,11 @@ subroutine GFS_physics_driver & adjsfcnsw_for_lsm => adjsfcnsw endif + if (Model%prescribe_sst_from_wrapper) then + sea_surface_temperature => Statein%sst_from_wrapper + else + sea_surface_temperature => Sfcprop%tsfc + endif !------- ! For COORDE-2019 averaging with fwindow, it was done before ! 3Diag fixes and averaging ingested using "fdaily"-factor @@ -2093,16 +2099,6 @@ subroutine GFS_physics_driver & enddo endif - if (Model%prescribe_sst_from_wrapper) then - do i = 1, im - if (islmsk(i) == 0 ) then - Sfcprop%tsfc(i) = Statein%sst_from_wrapper(i) + Model%sst_perturbation - Sfcprop%tsfco(i) = Statein%sst_from_wrapper(i) + Model%sst_perturbation - tsfc3(i,3) = Statein%sst_from_wrapper(i) + Model%sst_perturbation - endif - enddo - endif - do i=1,im Diag%epi(i) = ep1d(i) Diag%dlwsfci(i) = adjsfcdlw_for_lsm(i) From c030ac3e6cd40c991c0f613aaf540c3fce84a786 Mon Sep 17 00:00:00 2001 From: Spencer Clark Date: Mon, 22 Mar 2021 20:05:25 +0000 Subject: [PATCH 3/9] Actually update tsfco with pointer --- FV3/gfsphysics/GFS_layer/GFS_physics_driver.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FV3/gfsphysics/GFS_layer/GFS_physics_driver.F90 b/FV3/gfsphysics/GFS_layer/GFS_physics_driver.F90 index 333ba28e2..9d9740521 100644 --- a/FV3/gfsphysics/GFS_layer/GFS_physics_driver.F90 +++ b/FV3/gfsphysics/GFS_layer/GFS_physics_driver.F90 @@ -1135,7 +1135,7 @@ subroutine GFS_physics_driver & do i = 1, IM frland(i) = zero if (islmsk(i) == 0) then - Sfcprop%tsfco(i) = Sfcprop%tsfc(i) + Sfcprop%tsfco(i) = sea_surface_temperature(i) wet(i) = .true. fice(i) = zero elseif (islmsk(i) == 1) then From d3a3d3ec9097f48fb4486643faba97e845646153 Mon Sep 17 00:00:00 2001 From: Spencer Clark Date: Mon, 22 Mar 2021 20:50:06 +0000 Subject: [PATCH 4/9] No need for payload variable --- FV3/gfsphysics/GFS_layer/GFS_physics_driver.F90 | 2 +- FV3/gfsphysics/GFS_layer/GFS_typedefs.F90 | 6 ------ 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/FV3/gfsphysics/GFS_layer/GFS_physics_driver.F90 b/FV3/gfsphysics/GFS_layer/GFS_physics_driver.F90 index 9d9740521..80232719d 100644 --- a/FV3/gfsphysics/GFS_layer/GFS_physics_driver.F90 +++ b/FV3/gfsphysics/GFS_layer/GFS_physics_driver.F90 @@ -730,7 +730,7 @@ subroutine GFS_physics_driver & endif if (Model%prescribe_sst_from_wrapper) then - sea_surface_temperature => Statein%sst_from_wrapper + sea_surface_temperature => Sfcprop%tsfco else sea_surface_temperature => Sfcprop%tsfc endif diff --git a/FV3/gfsphysics/GFS_layer/GFS_typedefs.F90 b/FV3/gfsphysics/GFS_layer/GFS_typedefs.F90 index d78380d66..677744b39 100644 --- a/FV3/gfsphysics/GFS_layer/GFS_typedefs.F90 +++ b/FV3/gfsphysics/GFS_layer/GFS_typedefs.F90 @@ -193,7 +193,6 @@ module GFS_typedefs real (kind=kind_phys), pointer :: adjsfcdlw_override(:) => null() !< override to the downward longwave radiation flux at the surface real (kind=kind_phys), pointer :: adjsfcdsw_override(:) => null() !< override to the downward shortwave radiation flux at the surface real (kind=kind_phys), pointer :: adjsfcnsw_override(:) => null() !< override to the net shortwave radiation flux at the surface - real (kind=kind_phys), pointer :: sst_from_wrapper(:) => null() !< sea surface temperature set by the Python wrapper contains procedure :: create => statein_create !< allocate array data end type GFS_statein_type @@ -2036,11 +2035,6 @@ subroutine statein_create (Statein, IM, Model) Statein%adjsfcdsw_override = 0.0 Statein%adjsfcnsw_override = 0.0 endif - - if (Model%prescribe_sst_from_wrapper) then - allocate(Statein%sst_from_wrapper(IM)) - Statein%sst_from_wrapper = 0.0 - endif end subroutine statein_create From a89efbb8162294aa5c47dd83263b7c057efe4cf4 Mon Sep 17 00:00:00 2001 From: Spencer Clark Date: Tue, 23 Mar 2021 13:08:14 +0000 Subject: [PATCH 5/9] Rename namelist parameter for consistency --- FV3/gfsphysics/GFS_layer/GFS_physics_driver.F90 | 2 +- FV3/gfsphysics/GFS_layer/GFS_typedefs.F90 | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/FV3/gfsphysics/GFS_layer/GFS_physics_driver.F90 b/FV3/gfsphysics/GFS_layer/GFS_physics_driver.F90 index 80232719d..5c8803fb3 100644 --- a/FV3/gfsphysics/GFS_layer/GFS_physics_driver.F90 +++ b/FV3/gfsphysics/GFS_layer/GFS_physics_driver.F90 @@ -729,7 +729,7 @@ subroutine GFS_physics_driver & adjsfcnsw_for_lsm => adjsfcnsw endif - if (Model%prescribe_sst_from_wrapper) then + if (Model%override_sea_surface_temperature) then sea_surface_temperature => Sfcprop%tsfco else sea_surface_temperature => Sfcprop%tsfc diff --git a/FV3/gfsphysics/GFS_layer/GFS_typedefs.F90 b/FV3/gfsphysics/GFS_layer/GFS_typedefs.F90 index 677744b39..d5de83c77 100644 --- a/FV3/gfsphysics/GFS_layer/GFS_typedefs.F90 +++ b/FV3/gfsphysics/GFS_layer/GFS_typedefs.F90 @@ -1084,7 +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 :: prescribe_sst_from_wrapper ! Whether to prescribe the sea surface temperature via the Python wrapper + logical :: override_sea_surface_temperature ! Whether to allow the Python wrapper to override the sea surface temperature #ifdef CCPP ! From physcons.F90, updated/set in control_initialize real(kind=kind_phys) :: dxinv ! inverse scaling factor for critical relative humidity, replaces dxinv in physcons.F90 @@ -3129,7 +3129,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 :: prescribe_sst_from_wrapper = .false. + logical :: override_sea_surface_temperature = .false. !--- END NAMELIST VARIABLES NAMELIST /gfs_physics_nml/ & @@ -3221,7 +3221,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & !--- aerosol scavenging factors ('name:value' string array) fscav_aero, & sst_perturbation, & - override_surface_radiative_fluxes, prescribe_sst_from_wrapper + override_surface_radiative_fluxes, override_sea_surface_temperature !--- other parameters integer :: nctp = 0 !< number of cloud types in CS scheme @@ -3690,7 +3690,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%prescribe_sst_from_wrapper = prescribe_sst_from_wrapper + Model%override_sea_surface_temperature = override_sea_surface_temperature !--- tracer handling Model%ntrac = size(tracer_names) #ifdef CCPP @@ -4499,7 +4499,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 *, ' prescribe_sst_from_wrapper: ', Model%prescribe_sst_from_wrapper + print *, ' override_sea_surface_temperature: ', Model%override_sea_surface_temperature if (Model%lsm == Model%lsm_noahmp) then print *, ' Noah MP LSM is used, the options are' print *, ' iopt_dveg : ', Model%iopt_dveg From faebdfd1dcb2a0f2b8a875bd4f15b57585e23472 Mon Sep 17 00:00:00 2001 From: Spencer Clark Date: Tue, 23 Mar 2021 15:24:10 +0000 Subject: [PATCH 6/9] Change name to override_ocean_surface_temperature --- FV3/gfsphysics/GFS_layer/GFS_physics_driver.F90 | 2 +- FV3/gfsphysics/GFS_layer/GFS_typedefs.F90 | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/FV3/gfsphysics/GFS_layer/GFS_physics_driver.F90 b/FV3/gfsphysics/GFS_layer/GFS_physics_driver.F90 index 5c8803fb3..8b92913fc 100644 --- a/FV3/gfsphysics/GFS_layer/GFS_physics_driver.F90 +++ b/FV3/gfsphysics/GFS_layer/GFS_physics_driver.F90 @@ -729,7 +729,7 @@ subroutine GFS_physics_driver & adjsfcnsw_for_lsm => adjsfcnsw endif - if (Model%override_sea_surface_temperature) then + if (Model%override_ocean_surface_temperature) then sea_surface_temperature => Sfcprop%tsfco else sea_surface_temperature => Sfcprop%tsfc diff --git a/FV3/gfsphysics/GFS_layer/GFS_typedefs.F90 b/FV3/gfsphysics/GFS_layer/GFS_typedefs.F90 index d5de83c77..f5e054518 100644 --- a/FV3/gfsphysics/GFS_layer/GFS_typedefs.F90 +++ b/FV3/gfsphysics/GFS_layer/GFS_typedefs.F90 @@ -1084,7 +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 :: override_sea_surface_temperature ! Whether to allow the Python wrapper to override the sea surface temperature + logical :: override_ocean_surface_temperature ! Whether to allow the Python wrapper to override the sea surface temperature #ifdef CCPP ! From physcons.F90, updated/set in control_initialize real(kind=kind_phys) :: dxinv ! inverse scaling factor for critical relative humidity, replaces dxinv in physcons.F90 @@ -3129,7 +3129,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 :: override_sea_surface_temperature = .false. + logical :: override_ocean_surface_temperature = .false. !--- END NAMELIST VARIABLES NAMELIST /gfs_physics_nml/ & @@ -3221,7 +3221,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & !--- aerosol scavenging factors ('name:value' string array) fscav_aero, & sst_perturbation, & - override_surface_radiative_fluxes, override_sea_surface_temperature + override_surface_radiative_fluxes, override_ocean_surface_temperature !--- other parameters integer :: nctp = 0 !< number of cloud types in CS scheme @@ -3690,7 +3690,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%override_sea_surface_temperature = override_sea_surface_temperature + Model%override_ocean_surface_temperature = override_ocean_surface_temperature !--- tracer handling Model%ntrac = size(tracer_names) #ifdef CCPP @@ -4499,7 +4499,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 *, ' override_sea_surface_temperature: ', Model%override_sea_surface_temperature + print *, ' override_ocean_surface_temperature: ', Model%override_ocean_surface_temperature if (Model%lsm == Model%lsm_noahmp) then print *, ' Noah MP LSM is used, the options are' print *, ' iopt_dveg : ', Model%iopt_dveg From 7928f67c13b12b160a0c19225445ae01fa2152b8 Mon Sep 17 00:00:00 2001 From: Spencer Clark Date: Tue, 23 Mar 2021 15:51:46 +0000 Subject: [PATCH 7/9] Update internal name too --- FV3/gfsphysics/GFS_layer/GFS_physics_driver.F90 | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/FV3/gfsphysics/GFS_layer/GFS_physics_driver.F90 b/FV3/gfsphysics/GFS_layer/GFS_physics_driver.F90 index 8b92913fc..3b2f9f7a1 100644 --- a/FV3/gfsphysics/GFS_layer/GFS_physics_driver.F90 +++ b/FV3/gfsphysics/GFS_layer/GFS_physics_driver.F90 @@ -674,7 +674,7 @@ subroutine GFS_physics_driver & real(kind=kind_phys), allocatable, dimension(:,:) :: den real(kind=kind_phys), allocatable, dimension(:,:) :: dqdt_work real(kind=kind_phys), pointer :: adjsfcdlw_for_lsm(:), adjsfcdsw_for_lsm(:), adjsfcnsw_for_lsm(:) - real(kind=kind_phys), pointer :: sea_surface_temperature(:) + real(kind=kind_phys), pointer :: ocean_surface_temperature(:) integer :: nwat !! Initialize local variables (mainly for debugging purposes, because the @@ -730,9 +730,9 @@ subroutine GFS_physics_driver & endif if (Model%override_ocean_surface_temperature) then - sea_surface_temperature => Sfcprop%tsfco + ocean_surface_temperature => Sfcprop%tsfco else - sea_surface_temperature => Sfcprop%tsfc + ocean_surface_temperature => Sfcprop%tsfc endif !------- ! For COORDE-2019 averaging with fwindow, it was done before @@ -1135,7 +1135,7 @@ subroutine GFS_physics_driver & do i = 1, IM frland(i) = zero if (islmsk(i) == 0) then - Sfcprop%tsfco(i) = sea_surface_temperature(i) + Sfcprop%tsfco(i) = ocean_surface_temperature(i) wet(i) = .true. fice(i) = zero elseif (islmsk(i) == 1) then From d1bab4a7b89009d272cce0ca81bce05711e78a0e Mon Sep 17 00:00:00 2001 From: Spencer Clark Date: Tue, 23 Mar 2021 18:32:52 +0000 Subject: [PATCH 8/9] Reframe flag per discussion with Jeremy --- FV3/gfsphysics/GFS_layer/GFS_physics_driver.F90 | 6 +++--- FV3/gfsphysics/GFS_layer/GFS_typedefs.F90 | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/FV3/gfsphysics/GFS_layer/GFS_physics_driver.F90 b/FV3/gfsphysics/GFS_layer/GFS_physics_driver.F90 index 3b2f9f7a1..0cb8b5487 100644 --- a/FV3/gfsphysics/GFS_layer/GFS_physics_driver.F90 +++ b/FV3/gfsphysics/GFS_layer/GFS_physics_driver.F90 @@ -729,10 +729,10 @@ subroutine GFS_physics_driver & adjsfcnsw_for_lsm => adjsfcnsw endif - if (Model%override_ocean_surface_temperature) then - ocean_surface_temperature => Sfcprop%tsfco - else + if (Model%use_climatological_sst) then ocean_surface_temperature => Sfcprop%tsfc + else + ocean_surface_temperature => Sfcprop%tsfco endif !------- ! For COORDE-2019 averaging with fwindow, it was done before diff --git a/FV3/gfsphysics/GFS_layer/GFS_typedefs.F90 b/FV3/gfsphysics/GFS_layer/GFS_typedefs.F90 index f5e054518..54e6c10ce 100644 --- a/FV3/gfsphysics/GFS_layer/GFS_typedefs.F90 +++ b/FV3/gfsphysics/GFS_layer/GFS_typedefs.F90 @@ -1084,7 +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 :: override_ocean_surface_temperature ! Whether to allow the Python wrapper to override the sea surface temperature + logical :: use_climatological_sst ! Whether to allow the Python wrapper to override the sea surface temperature #ifdef CCPP ! From physcons.F90, updated/set in control_initialize real(kind=kind_phys) :: dxinv ! inverse scaling factor for critical relative humidity, replaces dxinv in physcons.F90 @@ -3129,7 +3129,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 :: override_ocean_surface_temperature = .false. + logical :: use_climatological_sst = .true. !--- END NAMELIST VARIABLES NAMELIST /gfs_physics_nml/ & @@ -3221,7 +3221,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & !--- aerosol scavenging factors ('name:value' string array) fscav_aero, & sst_perturbation, & - override_surface_radiative_fluxes, override_ocean_surface_temperature + override_surface_radiative_fluxes, use_climatological_sst !--- other parameters integer :: nctp = 0 !< number of cloud types in CS scheme @@ -3690,7 +3690,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%override_ocean_surface_temperature = override_ocean_surface_temperature + Model%use_climatological_sst = use_climatological_sst !--- tracer handling Model%ntrac = size(tracer_names) #ifdef CCPP @@ -4499,7 +4499,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 *, ' override_ocean_surface_temperature: ', Model%override_ocean_surface_temperature + print *, ' use_climatological_sst: ', Model%use_climatological_sst if (Model%lsm == Model%lsm_noahmp) then print *, ' Noah MP LSM is used, the options are' print *, ' iopt_dveg : ', Model%iopt_dveg From 0185532042189f4be6c722a14aa1807109ea26b7 Mon Sep 17 00:00:00 2001 From: Spencer Clark Date: Wed, 24 Mar 2021 17:54:53 +0000 Subject: [PATCH 9/9] Update variable name --- FV3/gfsphysics/GFS_layer/GFS_physics_driver.F90 | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/FV3/gfsphysics/GFS_layer/GFS_physics_driver.F90 b/FV3/gfsphysics/GFS_layer/GFS_physics_driver.F90 index 0cb8b5487..b5700764c 100644 --- a/FV3/gfsphysics/GFS_layer/GFS_physics_driver.F90 +++ b/FV3/gfsphysics/GFS_layer/GFS_physics_driver.F90 @@ -674,7 +674,7 @@ subroutine GFS_physics_driver & real(kind=kind_phys), allocatable, dimension(:,:) :: den real(kind=kind_phys), allocatable, dimension(:,:) :: dqdt_work real(kind=kind_phys), pointer :: adjsfcdlw_for_lsm(:), adjsfcdsw_for_lsm(:), adjsfcnsw_for_lsm(:) - real(kind=kind_phys), pointer :: ocean_surface_temperature(:) + real(kind=kind_phys), pointer :: sea_surface_temperature(:) integer :: nwat !! Initialize local variables (mainly for debugging purposes, because the @@ -730,9 +730,9 @@ subroutine GFS_physics_driver & endif if (Model%use_climatological_sst) then - ocean_surface_temperature => Sfcprop%tsfc + sea_surface_temperature => Sfcprop%tsfc else - ocean_surface_temperature => Sfcprop%tsfco + sea_surface_temperature => Sfcprop%tsfco endif !------- ! For COORDE-2019 averaging with fwindow, it was done before @@ -1135,7 +1135,7 @@ subroutine GFS_physics_driver & do i = 1, IM frland(i) = zero if (islmsk(i) == 0) then - Sfcprop%tsfco(i) = ocean_surface_temperature(i) + Sfcprop%tsfco(i) = sea_surface_temperature(i) wet(i) = .true. fice(i) = zero elseif (islmsk(i) == 1) then