Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 42 additions & 16 deletions scm/src/GFS_typedefs.F90
Original file line number Diff line number Diff line change
Expand Up @@ -679,7 +679,7 @@ module GFS_typedefs
real (kind=kind_phys), pointer :: dqdt_qmicro(:,:) => null() !< instantanious microphysics tendency to be passed from MP to convection

!-- lake surface temperature from cdeps inline
real (kind=kind_phys), pointer :: mask_dat (:) => null() !< land-sea mask from cdeps inline
real (kind=kind_phys), pointer :: mask_dat (:) => null() !< land-sea mask from cdeps inline
real (kind=kind_phys), pointer :: tsfco_dat (:) => null() !< sfc temperature from cdeps inline
real (kind=kind_phys), pointer :: tice_dat (:) => null() !< sfc temperature over ice from cdeps inline
real (kind=kind_phys), pointer :: hice_dat (:) => null() !< sfc ice thickness from cdeps inline
Expand Down Expand Up @@ -784,7 +784,7 @@ module GFS_typedefs
integer :: dycore_active !< Choice of dynamical core
integer :: dycore_fv3 = 1 !< Choice of FV3 dynamical core
integer :: dycore_mpas = 2 !< Choice of MPAS dynamical core

!--- coupling parameters
logical :: cplflx !< default no cplflx collection
logical :: cplice !< default no cplice collection (used together with cplflx)
Expand Down Expand Up @@ -1075,8 +1075,10 @@ module GFS_typedefs
real(kind=kind_phys) :: ssati_min !< minimum supersaturation over ice threshold for deposition nucleation
real(kind=kind_phys) :: Nt_i_max !< maximum threshold number concentration of cloud ice water crystals in air
real(kind=kind_phys) :: rr_min !< multiplicative tuning parameter for microphysical sedimentation minimum threshold


real(kind=kind_phys) :: fs_fac_rain !< adjustment for rain fall speed
real(kind=kind_phys) :: fs_fac_snow !< adjustment for snow fall speed


!--- GFDL microphysical paramters
logical :: lgfdlmprad !< flag for GFDL mp scheme and radiation consistency
logical :: phys_hydrostatic
Expand Down Expand Up @@ -1359,6 +1361,7 @@ module GFS_typedefs
!< Nccn: CCN number concentration in cm^(-3)
!< Until a realistic Nccn is provided, Nccns are assumed
!< as Nccn=100 for sea and Nccn=1000 for land
real(kind=kind_phys) :: cat_adj_deep !< adjustment for convective advection time for deep convection

!--- mass flux shallow convection
real(kind=kind_phys) :: clam_shal !< c_e for shallow convection (Han and Pan, 2011, eq(6))
Expand All @@ -1373,6 +1376,7 @@ module GFS_typedefs
!< Nccn: CCN number concentration in cm^(-3)
!< Until a realistic Nccn is provided, Nccns are assumed
!< as Nccn=100 for sea and Nccn=1000 for land
real(kind=kind_phys) :: cat_adj_shal !< adjustment for convective advection time for shallow convection

!--- near surface temperature model
logical :: nst_anl !< flag for NSSTM analysis in gcycle/sfcsub
Expand Down Expand Up @@ -1690,6 +1694,8 @@ module GFS_typedefs
real(kind=kind_phys) :: iau_delthrs ! iau time interval (to scale increments) in hours
character(len=240) :: iau_inc_files(7)! list of increment files
real(kind=kind_phys) :: iaufhrs(7) ! forecast hours associated with increment files
logical :: iau_regional !< doing IAU for the nested domain for regional model
real :: iau_inc_scale !< increase IAU weight for 3DIAU
logical :: iau_filter_increments, iau_drymassfixer

! From physcons.F90, updated/set in control_initialize
Expand Down Expand Up @@ -3432,7 +3438,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, &
communicator, ntasks, nthreads, &
tile_num, isc, jsc, nx, ny, cnx, &
cny, gnx, gny, ak, bk, hydrostatic)

!--- modules
use physcons, only: con_rerth, con_pi, con_p0, rhowater
use mersenne_twister, only: random_setseed, random_number
Expand Down Expand Up @@ -3614,7 +3620,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, &
logical :: lrseeds = .false. !< flag to use host-provided random seeds
integer :: nrstreams = 2 !< number of random number streams in host-provided random seed array
logical :: lextop = .false. !< flag for using an extra top layer for radiation
real(kind_phys) :: xr_con = -999.0 !< Xu-Randall cloud fraction multiplicative constant
real(kind_phys) :: xr_con = -999.0 !< Xu-Randall cloud fraction multiplicative constant
real(kind_phys) :: xr_exp = -999.0 !< Xu-Randall cloud fraction exponent constant
! RRTMGP
logical :: do_RRTMGP = .false. !< Use RRTMGP?
Expand Down Expand Up @@ -3721,7 +3727,9 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, &
real(kind=kind_phys) :: ssati_min = 0.15 !< minimum supersaturation over ice threshold for deposition nucleation
real(kind=kind_phys) :: Nt_i_max = 4999.e3 !< maximum threshold number concentration of cloud ice water crystals in air
real(kind=kind_phys) :: rr_min = 1000.0 !< multiplicative tuning parameter for microphysical sedimentation minimum threshold

real(kind=kind_phys) :: fs_fac_rain = 1.0 !< adjustment for rain fall speed
real(kind=kind_phys) :: fs_fac_snow = 1.0 !< adjustment for snow fall speed

!--- GFDL microphysical parameters
logical :: lgfdlmprad = .false. !< flag for GFDLMP radiation interaction
logical :: fast_mp_consv = .false.
Expand Down Expand Up @@ -3976,6 +3984,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, &
!< Nccn: CCN number concentration in cm^(-3)
!< Until a realistic Nccn is provided, Nccns are assumed
!< as Nccn=100 for sea and Nccn=1000 for land
real(kind=kind_phys) :: cat_adj_deep = 1.0 !< adjustment for convective advection time for deep convection

!--- mass flux shallow convection
real(kind=kind_phys) :: clam_shal = 0.3 !< c_e for shallow convection (Han and Pan, 2011, eq(6))
Expand All @@ -3990,6 +3999,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, &
!< Nccn: CCN number concentration in cm^(-3)
!< Until a realistic Nccn is provided, Nccns are assumed
!< as Nccn=100 for sea and Nccn=1000 for land
real(kind=kind_phys) :: cat_adj_shal = 1.0 !< adjustment for convective advection time for shallow convection

!--- near surface sea temperature model
logical :: nst_anl = .false. !< flag for NSSTM analysis in gcycle/sfcsub
Expand Down Expand Up @@ -4080,6 +4090,8 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, &
real(kind=kind_phys) :: iau_delthrs = 0 !< iau time interval (to scale increments)
character(len=240) :: iau_inc_files(7) = '' !< list of increment files
real(kind=kind_phys) :: iaufhrs(7) = -1 !< forecast hours associated with increment files
logical :: iau_regional = .false. !< doing IAU for the nested domain for regional model
real :: iau_inc_scale = 1. !< increase IAU weight for 3DIAU
logical :: iau_filter_increments = .false. !< filter IAU increments
logical :: iau_drymassfixer = .false. !< IAU dry mass fixer

Expand Down Expand Up @@ -4248,7 +4260,8 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, &
mg_alf, mg_qcmin, mg_do_ice_gmao, mg_do_liq_liu, &
ltaerosol, lthailaware, lradar, nsfullradar_diag, lrefres, &
ttendlim, ext_diag_thompson, nt_c_l, nt_c_o, av_i, xnc_max, &
ssati_min, Nt_i_max, rr_min, dt_inner, lgfdlmprad, &
ssati_min, Nt_i_max, rr_min, fs_fac_rain, fs_fac_snow, &
dt_inner, lgfdlmprad, &
sedi_semi, decfl, &
nssl_cccn, nssl_alphah, nssl_alphahl, &
nssl_alphar, nssl_ehw0, nssl_ehlw0, &
Expand Down Expand Up @@ -4314,9 +4327,10 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, &
!--- mass flux deep convection
clam_deep, c0s_deep, c1_deep, betal_deep, &
betas_deep, evef, evfact_deep, evfactl_deep, pgcon_deep, &
asolfac_deep, &
asolfac_deep, cat_adj_deep, &
!--- mass flux shallow convection
clam_shal, c0s_shal, c1_shal, pgcon_shal, asolfac_shal, &
cat_adj_shal, &
!--- near surface sea temperature model
nst_anl, lsea, nstf_name, &
frac_grid, min_lakeice, min_seaice, min_lake_height, &
Expand All @@ -4341,7 +4355,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, &
increment_file_on_native_grid, &
!--- IAU
iau_delthrs,iaufhrs,iau_inc_files,iau_filter_increments, &
iau_drymassfixer, &
iau_drymassfixer,iau_regional,iau_inc_scale, &
!--- debug options
debug, pre_rad, print_diff_pgr, &
!--- parameter range for critical relative humidity
Expand Down Expand Up @@ -4451,7 +4465,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, &
stop
endif
endif

! dtend selection: default is to match all variables:
dtend_select(1)='*'
do ipat=2,pat_count
Expand Down Expand Up @@ -4667,7 +4681,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, &
Model%levs = levs
Model%levsp1 = Model%levs + 1
Model%levsm1 = Model%levs - 1

Model%nblks = size(blksz)
allocate (Model%blksz(1:Model%nblks))
Model%blksz = blksz
Expand Down Expand Up @@ -5042,6 +5056,8 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, &
Model%ssati_min = ssati_min
Model%Nt_i_max = Nt_i_max
Model%rr_min = rr_min
Model%fs_fac_rain = fs_fac_rain
Model%fs_fac_snow = fs_fac_snow

!--- TEMPO MP parameters
! DJS to Anders: Maybe we put more of these nml options into the TEMPO configuration type?
Expand Down Expand Up @@ -5389,13 +5405,15 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, &
Model%evfactl_deep = evfactl_deep
Model%pgcon_deep = pgcon_deep
Model%asolfac_deep = asolfac_deep
Model%cat_adj_deep = cat_adj_deep

!--- mass flux shallow convection
Model%clam_shal = clam_shal
Model%c0s_shal = c0s_shal
Model%c1_shal = c1_shal
Model%pgcon_shal = pgcon_shal
Model%asolfac_shal = asolfac_shal
Model%cat_adj_shal = cat_adj_shal

!--- near surface sea temperature model
Model%nst_anl = nst_anl
Expand Down Expand Up @@ -5515,6 +5533,8 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, &
Model%iaufhrs = iaufhrs
Model%iau_inc_files = iau_inc_files
Model%iau_delthrs = iau_delthrs
Model%iau_regional = iau_regional
Model%iau_inc_scale = iau_inc_scale
Model%iau_filter_increments = iau_filter_increments
Model%iau_drymassfixer = iau_drymassfixer
if(Model%me==0) print *,' model init,iaufhrs=',Model%iaufhrs
Expand Down Expand Up @@ -6510,6 +6530,8 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, &
' ssati_min',ssati_min, &
' Nt_i_max',Nt_i_max, &
' rr_min',rr_min, &
' fs_fac_rain',fs_fac_rain, &
' fs_fac_snow',fs_fac_snow, &
' effr_in =',Model%effr_in, &
' lradar =',Model%lradar, &
' nsfullradar_diag =',Model%nsfullradar_diag, &
Expand Down Expand Up @@ -6655,7 +6677,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, &
!--- BEGIN CODE FROM GLOOPB
!--- set up random number seed needed for RAS and old SAS and when cal_pre=.true.
! Model%imfdeepcnv < 0 when Model%ras = .true.

if (xr_con > 0.0 .and. xr_exp > 0.0) then !values have been read in from namelist, so set them to read values
Model%xr_con = xr_con
Model%xr_exp = xr_exp
Expand All @@ -6680,9 +6702,9 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, &
Model%xr_con = 2000.0
Model%xr_exp = 0.25
endif
endif
endif
endif

if (Model%imfdeepcnv <= 0 .or. Model%cal_pre ) then
if (Model%random_clds) then
seed0 = Model%idate(1) + Model%idate(2) + Model%idate(3) + Model%idate(4)
Expand Down Expand Up @@ -7109,6 +7131,8 @@ subroutine control_print(Model)
print *, ' ssati_min : ', Model%ssati_min
print *, ' Nt_i_max : ', Model%Nt_i_max
print *, ' rr_min : ', Model%rr_min
print *, ' fs_fac_rain : ', Model%fs_fac_rain
print *, ' fs_fac_snow : ', Model%fs_fac_snow
print *, ' '
endif
if (Model%imp_physics == Model%imp_physics_nssl) then
Expand Down Expand Up @@ -7323,6 +7347,7 @@ subroutine control_print(Model)
print *, ' evfactl_deep : ', Model%evfactl_deep
print *, ' pgcon_deep : ', Model%pgcon_deep
print *, ' asolfac_deep : ', Model%asolfac_deep
print *, ' cat_adj_deep : ', Model%cat_adj_deep
print *, ' '
endif
if (Model%imfshalcnv >= 0) then
Expand All @@ -7332,6 +7357,7 @@ subroutine control_print(Model)
print *, ' c1_shal : ', Model%c1_shal
print *, ' pgcon_shal : ', Model%pgcon_shal
print *, ' asolfac_shal : ', Model%asolfac_shal
print *, ' cat_adj_shal : ', Model%cat_adj_shal
endif
print *, ' '
print *, 'near surface sea temperature model'
Expand Down Expand Up @@ -7825,7 +7851,7 @@ subroutine cldprop_create (Cldprop, Model)
Cldprop%cvt = clear_val
Cldprop%cvb = clear_val
Cldprop%cnvw = clear_val

end subroutine cldprop_create


Expand Down
30 changes: 29 additions & 1 deletion scm/src/GFS_typedefs.meta
Original file line number Diff line number Diff line change
Expand Up @@ -3443,7 +3443,7 @@
kind = kind_phys
active = (do_cdeps_inline)
[mask_dat]
standard_name = land_sea_mask_from_data
standard_name = land_sea_mask_from_data
long_name = landmask
units = flag
dimensions = (horizontal_dimension)
Expand Down Expand Up @@ -5201,6 +5201,20 @@
dimensions = ()
type = real
kind = kind_phys
[fs_fac_rain]
standard_name = multiplicative_tuning_parameter_for_rain_fall_speed
long_name = multiplicative tuning parameter for rain fall speed
units = none
dimensions = ()
type = real
kind = kind_phys
[fs_fac_snow]
standard_name = multiplicative_tuning_parameter_for_snow_fall_speed
long_name = multiplicative tuning parameter_for snow fall speed
units = none
dimensions = ()
type = real
kind = kind_phys
[gfs_phys_time_vary_is_init]
standard_name = flag_for_gfs_phys_time_vary_interstitial_initialization
long_name = flag carrying interstitial initialization status
Expand Down Expand Up @@ -6219,6 +6233,13 @@
dimensions = ()
type = real
kind = kind_phys
[cat_adj_deep]
standard_name = adjustment_for_convective_advection_time_for_deep
long_name = adjustment for convective advection time for deep
units = none
dimensions = ()
type = real
kind = kind_phys
[clam_shal]
standard_name = entrainment_rate_coefficient_for_shallow_convection
long_name = entrainment rate coefficient for shallow convection
Expand Down Expand Up @@ -6254,6 +6275,13 @@
dimensions = ()
type = real
kind = kind_phys
[cat_adj_shal]
standard_name = adjustment_for_convective_advection_time_for_shallow
long_name = adjustment for convective advection time for shallow
units = none
dimensions = ()
type = real
kind = kind_phys
[xkzm_m]
standard_name = atmosphere_momentum_diffusivity_due_to_background
long_name = background vertical diffusion for momentum
Expand Down
Loading