From acf8aa97288675621c09581184d746f2aeb432ea Mon Sep 17 00:00:00 2001 From: Ben Green Date: Mon, 26 Apr 2021 17:59:18 +0000 Subject: [PATCH] Changes necessary to get rid of GSD_SURFACE_FLUXES_BUGFIX --- ccpp/data/GFS_typedefs.F90 | 12 ++++++++++++ ccpp/data/GFS_typedefs.meta | 6 ++++++ 2 files changed, 18 insertions(+) diff --git a/ccpp/data/GFS_typedefs.F90 b/ccpp/data/GFS_typedefs.F90 index cc9ef5db0..520a10724 100644 --- a/ccpp/data/GFS_typedefs.F90 +++ b/ccpp/data/GFS_typedefs.F90 @@ -1038,6 +1038,9 @@ module GFS_typedefs !< 6=areodynamical roughness over water with input 10-m wind !< 7=slightly decrease Cd for higher wind speed compare to 6 +!--- potential temperature definition in surface layer physics + logical :: thsfc_loc !< flag for local vs. standard potential temperature + !--- vertical diffusion real(kind=kind_phys) :: xkzm_m !< [in] bkgd_vdif_m background vertical diffusion for momentum real(kind=kind_phys) :: xkzm_h !< [in] bkgd_vdif_h background vertical diffusion for heat q @@ -3363,6 +3366,11 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & !< 7=slightly decrease Cd for higher wind speed compare to 6 !< negative when cplwav2atm=.true. - i.e. two way wave coupling +!--- potential temperature definition in surface layer physics + logical :: thsfc_loc = .true. !< flag for local vs. standard potential temperature + !<.true. means use local (gridpoint) surface pressure to define potential temperature + !<.false. means use reference pressure of 1000 hPa to define potential temperature + !--- vertical diffusion real(kind=kind_phys) :: xkzm_m = 1.0d0 !< [in] bkgd_vdif_m background vertical diffusion for momentum real(kind=kind_phys) :: xkzm_h = 1.0d0 !< [in] bkgd_vdif_h background vertical diffusion for heat q @@ -3522,6 +3530,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & ignore_lake, & !--- surface layer sfc_z0_type, & + thsfc_loc, & ! vertical diffusion xkzm_m, xkzm_h, xkzm_s, xkzminv, moninq_fac, dspfac, & bl_upfr, bl_dnfr, & @@ -4165,6 +4174,9 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & Model%sfc_z0_type = sfc_z0_type if (Model%cplwav2atm) Model%sfc_z0_type = -1 +!--- potential temperature reference in sfc layer + Model%thsfc_loc = thsfc_loc + !--- vertical diffusion Model%xkzm_m = xkzm_m Model%xkzm_h = xkzm_h diff --git a/ccpp/data/GFS_typedefs.meta b/ccpp/data/GFS_typedefs.meta index 1bcd10f49..9e78a1382 100644 --- a/ccpp/data/GFS_typedefs.meta +++ b/ccpp/data/GFS_typedefs.meta @@ -3771,6 +3771,12 @@ units = flag dimensions = () type = logical +[thsfc_loc] + standard_name = flag_for_reference_pressure_theta + long_name = flag for reference pressure in theta calculation + units = flag + dimensions = () + type = logical [hybedmf] standard_name = flag_for_hedmf long_name = flag for hybrid edmf pbl scheme (moninedmf)