Skip to content

Commit

Permalink
Changes to FV3 for RRTMGP in ccpp-physics (NOAA-EMC#392)
Browse files Browse the repository at this point in the history
* Update to physics. New field added to GFS_coupling_type
* Cleanup metadata. New field for RRTMGP pressure limit.
  • Loading branch information
dustinswales committed Oct 7, 2021
1 parent 95ff1ca commit f7ed0e0
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 5 deletions.
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

0 comments on commit f7ed0e0

Please sign in to comment.