Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Changes to FV3 for RRTMGP in ccpp-physics #392

Merged
merged 13 commits into from
Oct 7, 2021
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
8 changes: 8 additions & 0 deletions ccpp/data/GFS_typedefs.F90
Original file line number Diff line number Diff line change
Expand Up @@ -449,6 +449,7 @@ module GFS_typedefs
real (kind=kind_phys), pointer :: fluxlwUP_allsky(:,:) => null() !< GP up LW total sky flux profile ( w/m**2/K )
real (kind=kind_phys), pointer :: fluxlwDOWN_allsky(:,:) => null() !< GP down LW total sky flux profile ( w/m**2/K )
real (kind=kind_phys), pointer :: htrlw(:,:) => null() !< GP updated LW heating rate
real (kind=kind_phys), pointer :: tsfc_radtime(:) => null() !< GP surface temperature on radiation timestep

!--- incoming quantities
real (kind=kind_phys), pointer :: dusfcin_cpl(:) => null() !< aoi_fld%dusfcin(item,lan)
Expand Down Expand Up @@ -743,6 +744,7 @@ module GFS_typedefs
real(kind_phys) :: lfnc_p0 !< Logistic function transition level (Pa)
logical :: doGP_lwscat !< If true, include scattering in longwave cloud-optics, only compatible w/ GP cloud-optics
real(kind_phys) :: minGPpres !< Minimum pressure allowed in RRTMGP.
real(kind_phys) :: maxGPpres !< Maximum pressure allowed in RRTMGP.
real(kind_phys) :: minGPtemp !< Minimum temperature allowed in RRTMGP.
real(kind_phys) :: maxGPtemp !< Maximum temperature allowed in RRTMGP.

Expand Down Expand Up @@ -2802,10 +2804,12 @@ subroutine coupling_create (Coupling, IM, Model)
allocate (Coupling%fluxlwUP_allsky (IM,Model%levs+1))
allocate (Coupling%fluxlwDOWN_allsky (IM,Model%levs+1))
allocate (Coupling%htrlw (IM,Model%levs))
allocate (Coupling%tsfc_radtime (IM))
Coupling%fluxlwUP_jac = clear_val
Coupling%fluxlwUP_allsky = clear_val
Coupling%fluxlwDOWN_allsky = clear_val
Coupling%htrlw = clear_val
Coupling%tsfc_radtime = clear_val
endif

if (Model%cplflx .or. Model%do_sppt .or. Model%cplchm .or. Model%ca_global) then
Expand Down Expand Up @@ -3987,6 +3991,10 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
write(0,*) "Logic error, Both RRTMGP cloud-optics options cannot be selected. "
stop
end if
if (.not. Model%doGP_cldoptics_PADE .and. .not. Model%doGP_cldoptics_LUT .and. .not. Model%doG_cldoptics) then
write(0,*) "Logic error, No option for cloud-optics scheme provided. Using RRTMG cloud-optics"
Model%doG_cldoptics = .true.
end if
if (Model%rrtmgp_nGptsSW .lt. 0 .or. Model%rrtmgp_nGptsLW .lt. 0 .or. &
Model%rrtmgp_nBandsSW .lt. 0 .or. Model%rrtmgp_nBandsLW .lt. 0) then
write(0,*) "Logic error, RRTMGP spectral dimensions (bands/gpts) need to be provided."
Expand Down
23 changes: 19 additions & 4 deletions ccpp/data/GFS_typedefs.meta
Original file line number Diff line number Diff line change
Expand Up @@ -1794,6 +1794,14 @@
type = real
kind = kind_phys
active = (flag_for_rrtmgp_radiation_scheme)
[tsfc_radtime]
standard_name = surface_skin_temperature_on_radiation_timestep
long_name = surface skin temperature on radiation timestep
units = K
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
active = (flag_for_rrtmgp_radiation_scheme)
[fluxlwUP_jac]
standard_name = RRTMGP_jacobian_of_lw_flux_upward
long_name = RRTMGP Jacobian upward longwave flux profile
Expand Down Expand Up @@ -2997,6 +3005,13 @@
dimensions = ()
type = real
kind = kind_phys
[maxGPpres]
standard_name = maximum_pressure_in_RRTMGP
long_name = maximum pressure allowed in RRTMGP
units = Pa
dimensions = ()
type = real
kind = kind_phys
[minGPtemp]
standard_name = minimum_temperature_in_RRTMGP
long_name = minimum temperature allowed in RRTMGP
Expand Down Expand Up @@ -10087,17 +10102,17 @@
optional = F
active = (flag_for_rrtmgp_radiation_scheme)
[p_lay]
standard_name = air_pressure_at_layer_for_RRTMGP_in_hPa
standard_name = air_pressure_at_layer_for_RRTMGP
long_name = air pressure layer
units = hPa
units = Pa
dimensions = (horizontal_loop_extent,vertical_layer_dimension)
type = real
kind = kind_phys
active = (flag_for_rrtmgp_radiation_scheme)
[p_lev]
standard_name = air_pressure_at_interface_for_RRTMGP_in_hPa
standard_name = air_pressure_at_interface_for_RRTMGP
long_name = air pressure level
units = hPa
units = Pa
dimensions = (horizontal_loop_extent,vertical_interface_dimension)
type = real
kind = kind_phys
Expand Down