Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 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
6 changes: 4 additions & 2 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,10 @@
branch = main
[submodule "ccpp-physics"]
path = ccpp/physics
url = https://github.com/NCAR/ccpp-physics
branch = main
#url = https://github.com/NCAR/ccpp-physics
#branch = main
url = https://github.com/grantfirl/ccpp-physics
branch = ufs-dev-PR309
[submodule "CMakeModules"]
path = CMakeModules
url = https://github.com/noaa-emc/CMakeModules
Expand Down
58 changes: 45 additions & 13 deletions scm/src/GFS_typedefs.F90
Original file line number Diff line number Diff line change
Expand Up @@ -1042,7 +1042,15 @@ module GFS_typedefs
integer :: decfl !< deformed CFL factor
type(ty_tempo_cfg) :: tempo_cfg !< Thompson MP configuration information.
logical :: thompson_mp_is_init=.false. !< Local scheme initialization flag

real(kind=kind_phys) :: nt_c_l !< prescribed cloud liquid water number concentration over land
real(kind=kind_phys) :: nt_c_o !< prescribed cloud liquid water number concentration over ocean
real(kind=kind_phys) :: av_i !< transition value of coefficient matching at crossover from cloud ice to snow
real(kind=kind_phys) :: xnc_max !< maximum mass number concentration of cloud liquid water particles in air used in deposition nucleation
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


!--- GFDL microphysical paramters
logical :: lgfdlmprad !< flag for GFDL mp scheme and radiation consistency
logical :: fast_mp_consv
Expand Down Expand Up @@ -1265,7 +1273,7 @@ module GFS_typedefs
real(kind=kind_phys) :: psauras(2) !< [in] auto conversion coeff from ice to snow in ras
real(kind=kind_phys) :: prauras(2) !< [in] auto conversion coeff from cloud to rain in ras
real(kind=kind_phys) :: wminras(2) !< [in] water and ice minimum threshold for ras

Comment thread
grantfirl marked this conversation as resolved.
Outdated
integer :: seed0 !< random seed for radiation

real(kind=kind_phys) :: rbcr !< Critical Richardson Number in the PBL scheme
Expand Down Expand Up @@ -3660,11 +3668,18 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, &
real(kind=kind_phys) :: dt_inner = -999.0 !< time step for the inner loop
logical :: sedi_semi = .false. !< flag for semi Lagrangian sedi of rain
integer :: decfl = 8 !< deformed CFL factor

real(kind=kind_phys) :: nt_c_l = 150.e6 !< prescribed cloud liquid water number concentration over land
real(kind=kind_phys) :: nt_c_o = 50.e6 !< prescribed cloud liquid water number concentration over ocean
real(kind=kind_phys) :: av_i = -999.0 !< transition value of coefficient matching at crossover from cloud ice to snow
real(kind=kind_phys) :: xnc_max = 1000.e3 !< maximum mass number concentration of cloud liquid water particles in air used in deposition nucleation
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

!--- GFDL microphysical parameters
logical :: lgfdlmprad = .false. !< flag for GFDLMP radiation interaction
logical :: fast_mp_consv = .false.

Comment thread
grantfirl marked this conversation as resolved.
Outdated
!--- Thompson,GFDL microphysical parameter
logical :: lrefres = .false. !< flag for radar reflectivity in restart file

Expand Down Expand Up @@ -4184,7 +4199,8 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, &
mg_ncnst, mg_ninst, mg_ngnst, sed_supersat, do_sb_physics, &
mg_alf, mg_qcmin, mg_do_ice_gmao, mg_do_liq_liu, &
ltaerosol, lthailaware, lradar, nsfullradar_diag, lrefres, &
ttendlim, ext_diag_thompson, dt_inner, lgfdlmprad, &
ttendlim, ext_diag_thompson, nt_c_l, nt_c_o, av_i, xnc_max, &
ssati_min, Nt_i_max, rr_min, dt_inner, lgfdlmprad, &
sedi_semi, decfl, &
nssl_cccn, nssl_alphah, nssl_alphahl, &
nssl_alphar, nssl_ehw0, nssl_ehlw0, &
Expand Down Expand Up @@ -4954,6 +4970,13 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, &
endif
Model%sedi_semi = sedi_semi
Model%decfl = decfl
Model%nt_c_l = nt_c_l
Model%nt_c_o = nt_c_o
Model%av_i = av_i
Model%xnc_max = xnc_max
Model%ssati_min = ssati_min
Model%Nt_i_max = Nt_i_max
Model%rr_min = rr_min

!--- TEMPO MP parameters
! DJS to Anders: Maybe we put more of these nml options into the TEMPO configuration type?
Expand Down Expand Up @@ -5484,7 +5507,6 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, &
endif
!--- initialize parameters for atmospheric chemistry tracers
call Model%init_chemistry(tracer_types)

!--- setup aerosol scavenging factors
call Model%init_scavenging(fscav_aero)

Expand Down Expand Up @@ -5555,6 +5577,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, &
Model%ntocl = get_tracer_index(Model%tracer_names, 'oc2')
end if


! Lake & fractional grid safety checks
if(Model%me==Model%master) then
if(Model%lkm>0 .and. Model%frac_grid) then
Expand Down Expand Up @@ -5627,6 +5650,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, &
endif
endif


call label_dtend_tracer(Model,Model%index_of_temperature,'temp','temperature','K s-1')
call label_dtend_tracer(Model,Model%index_of_x_wind,'u','x wind','m s-2')
call label_dtend_tracer(Model,Model%index_of_y_wind,'v','y wind','m s-2')
Expand Down Expand Up @@ -5654,13 +5678,11 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, &
call label_dtend_tracer(Model,100+Model%ntgz,'graupel_ref','graupel reflectivity','m3 kg-1 s-1')
call label_dtend_tracer(Model,100+Model%nthz,'hail_ref','hail reflectivity','m3 kg-1 s-1')
call label_dtend_tracer(Model,100+Model%ntke,'sgs_tke','turbulent kinetic energy','J s-1')
call label_dtend_tracer(Model,100+Model%ntsigma,'sigmab','prognostic updraft area fraction in convection','frac')
call label_dtend_tracer(Model,100+Model%nqrimef,'q_rimef','mass weighted rime factor','kg-1 s-1')
call label_dtend_tracer(Model,100+Model%ntwa,'liq_aero','number concentration of water-friendly aerosols','kg-1 s-1')
call label_dtend_tracer(Model,100+Model%ntia,'ice_aero','number concentration of ice-friendly aerosols','kg-1 s-1')
call label_dtend_tracer(Model,100+Model%nto,'o_ion','oxygen ion concentration','kg kg-1 s-1')
call label_dtend_tracer(Model,100+Model%nto2,'o2','oxygen concentration','kg kg-1 s-1')

call label_dtend_cause(Model,Model%index_of_process_pbl,'pbl','tendency due to PBL')
call label_dtend_cause(Model,Model%index_of_process_dcnv,'deepcnv','tendency due to deep convection')
call label_dtend_cause(Model,Model%index_of_process_scnv,'shalcnv','tendency due to shallow convection')
Expand Down Expand Up @@ -5710,7 +5732,6 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, &
call fill_dtidx(Model,dtend_select,Model%index_of_y_wind,Model%index_of_process_physics)
call fill_dtidx(Model,dtend_select,Model%index_of_x_wind,Model%index_of_process_non_physics)
call fill_dtidx(Model,dtend_select,Model%index_of_y_wind,Model%index_of_process_non_physics)

if(qdiag3d) then
call fill_dtidx(Model,dtend_select,100+Model%ntqv,Model%index_of_process_scnv,have_scnv)
call fill_dtidx(Model,dtend_select,100+Model%ntqv,Model%index_of_process_dcnv,have_dcnv)
Expand Down Expand Up @@ -5778,7 +5799,6 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, &
enddo
endif
end if

IF ( Model%imp_physics == Model%imp_physics_nssl2mccn ) THEN ! recognize this option for compatibility
Model%imp_physics = Model%imp_physics_nssl
nssl_ccn_on = .true.
Expand Down Expand Up @@ -5921,7 +5941,6 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, &
Model%levh2o = 1
Model%h2o_coeff = 1
end if

!--- quantities to be used to derive phy_f*d totals
Model%nshoc_2d = nshoc_2d
Model%nshoc_3d = nshoc_3d
Expand Down Expand Up @@ -6410,6 +6429,13 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, &
' dt_inner =',Model%dt_inner, &
' sedi_semi=',Model%sedi_semi, &
' decfl=',decfl, &
' nt_c_l=',nt_c_l, &
' nt_c_o=',nt_c_o, &
' av_i=',av_i, &
' xnc_max=',xnc_max, &
' ssati_min',ssati_min, &
' Nt_i_max',Nt_i_max, &
' rr_min',rr_min, &
' effr_in =',Model%effr_in, &
' lradar =',Model%lradar, &
' nsfullradar_diag =',Model%nsfullradar_diag, &
Expand Down Expand Up @@ -6741,7 +6767,6 @@ subroutine control_scavenging_initialize(Model, fscav)
endif
enddo
endif

end subroutine control_scavenging_initialize


Expand Down Expand Up @@ -6971,6 +6996,13 @@ subroutine control_print(Model)
print *, ' dt_inner : ', Model%dt_inner
print *, ' sedi_semi : ', Model%sedi_semi
print *, ' decfl : ', Model%decfl
print *, ' nt_c_l : ', Model%nt_c_l
print *, ' nt_c_o : ', Model%nt_c_o
print *, ' av_i : ', Model%av_i
print *, ' xnc_max : ', Model%xnc_max
print *, ' ssati_min : ', Model%ssati_min
print *, ' Nt_i_max : ', Model%Nt_i_max
print *, ' rr_min : ', Model%rr_min
print *, ' '
endif
if (Model%imp_physics == Model%imp_physics_nssl) then
Expand Down Expand Up @@ -7572,7 +7604,7 @@ subroutine tbd_create (Tbd, Model)
allocate (Tbd%hpbl (IM))
Tbd%hpbl = clear_val

! Allocate horizontal component of dku for dyn_core (SA-3D-TKE)
! Allocate horizontal component of dku for dyn_core (SA-3D-TKE)
allocate (Tbd%dku3d_h (IM,Model%levs))
Tbd%dku3d_h = clear_val
allocate (Tbd%dku3d_e (IM,Model%levs))
Expand Down
49 changes: 49 additions & 0 deletions scm/src/GFS_typedefs.meta
Original file line number Diff line number Diff line change
Expand Up @@ -5013,6 +5013,55 @@
units = flag
dimensions = ()
type = logical
[nt_c_l]
standard_name = prescribed_number_concentration_of_cloud_liquid_water_particles_in_air_over_land
long_name = volumetric number concentration of cloud liquid water droplets in air over land points
units = m-3
dimensions = ()
type = real
kind = kind_phys
[nt_c_o]
standard_name = prescribed_number_concentration_of_cloud_liquid_water_particles_in_air_over_ocean
long_name = volumetric number concentration of cloud liquid water droplets in air over ocean points
units = m-3
dimensions = ()
type = real
kind = kind_phys
[av_i]
standard_name = cloud_ice_to_snow_tuning_parameter
long_name = transition value of coefficient matching at crossover from cloud ice to snow
units = 1
dimensions = ()
type = real
kind = kind_phys
[xnc_max]
standard_name = maximum_mass_number_concentration_of_cloud_liquid_water_particles_in_air_used_in_deposition_nucleation
long_name = maximum mass number concentration of cloud liquid water particles in air
units = kg-1
dimensions = ()
type = real
kind = kind_phys
[ssati_min]
standard_name = minimum_threshold_supersaturation_over_ice_for_deposition_nucleation
long_name = minimum supersaturation over ice threshold for deposition nucleation
units = fraction
dimensions = ()
type = real
kind = kind_phys
[Nt_i_max]
standard_name = maximum_threshold_number_concentration_of_cloud_ice_water_crystals_in_air
long_name = maximum threshold number concentration of cloud ice water crystals in air
units = m-3
dimensions = ()
type = real
kind = kind_phys
[rr_min]
standard_name = multiplicative_tuning_parameter_for_microphysical_sedimentation_minimum_threshold
long_name = multiplicative tuning parameter for microphysical sedimentation minimum threshold
units = 1
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
Loading