Skip to content
Merged
Show file tree
Hide file tree
Changes from 28 commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
d063408
GP coupled SDF
dustinswales Oct 26, 2021
42e65c5
Some cleanup for P8.
dustinswales Nov 3, 2021
c0a91c6
Switch physics repo/branch
dustinswales Nov 9, 2021
1284969
Bug fix for decomposition tests.
dustinswales Nov 10, 2021
1cc4c22
Meta data fix.
dustinswales Nov 10, 2021
9d01c6e
Synced with NCAR:main
dustinswales Nov 10, 2021
01087cd
Merge branch 'develop' of https://github.com/NOAA-EMC/fv3atm into HEAD
dustinswales Nov 10, 2021
4f85063
Cleanup physics
dustinswales Nov 10, 2021
5d8d9e0
Changes to physics.
dustinswales Nov 11, 2021
e7ca292
Some housekeeping
dustinswales Nov 17, 2021
dedc221
Synced ccpp-physics with origin
dustinswales Nov 18, 2021
8e55a85
Merge branch 'develop' of https://github.com/NOAA-EMC/fv3atm into HEAD
dustinswales Nov 18, 2021
9ba83b9
Fixed typos in physics.
dustinswales Nov 30, 2021
6cb9f68
Updated FV3 submodules.
dustinswales Nov 30, 2021
2774ece
Updated FV3 submodule atmos_cubed_sphere.
dustinswales Nov 30, 2021
8a141e4
Merge branch 'develop' of https://github.com/NOAA-EMC/fv3atm into HEAD
dustinswales Nov 30, 2021
85cd258
New SDF for un-coupled prototype 8.
dustinswales Dec 1, 2021
e34a7d4
Reverted setting RRTMGP sw interstitials to zero.
dustinswales Dec 1, 2021
40c1153
Merge branch 'develop' of https://github.com/NOAA-EMC/fv3atm into HEAD
dustinswales Dec 2, 2021
fb57f09
Renamed SDF.
dustinswales Dec 3, 2021
17d3737
Merge branch 'add_GPorts' of https://github.com/dustinswales/fv3atm i…
dustinswales Dec 3, 2021
0d9bf4d
Updated rte-rrtmgp submodule. Small change to RRTMGP coupled SDF.
dustinswales Dec 3, 2021
0920614
New SDF for un-coupled p7 runs with RRTMGP
dustinswales Dec 3, 2021
523aadc
Updated ccpp-physics branch name.
dustinswales Dec 3, 2021
462a1bc
Fixed error in rte-rrtmgp submodule hash.
dustinswales Dec 3, 2021
b5a416f
Updated physics
dustinswales Dec 6, 2021
ab18c94
Merge branch 'develop' of https://github.com/NOAA-EMC/fv3atm into HEAD
dustinswales Dec 6, 2021
ec0d0c6
Removed redundant definition/allocation of scmpsw.
dustinswales Dec 6, 2021
cf0a731
Reverted .gitmodules.
dustinswales Dec 9, 2021
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
4 changes: 2 additions & 2 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
branch = main
[submodule "ccpp/physics"]
path = ccpp/physics
url = https://github.com/NCAR/ccpp-physics
branch = main
url = https://github.com/dustinswales/ccpp-physics
branch = update_rterrtmgp
[submodule "upp"]
path = upp
url = https://github.com/NOAA-EMC/UPP
Expand Down
2 changes: 1 addition & 1 deletion atmos_cubed_sphere
77 changes: 46 additions & 31 deletions ccpp/data/GFS_typedefs.F90
Original file line number Diff line number Diff line change
Expand Up @@ -435,6 +435,13 @@ module GFS_typedefs
real (kind=kind_phys), pointer :: visbmui(:) => null() !< sfc uv+vis beam sw upward flux (w/m2)
real (kind=kind_phys), pointer :: visdfui(:) => null() !< sfc uv+vis diff sw upward flux (w/m2)

! RRTMGP
real (kind=kind_phys), pointer :: fluxlwUP_jac(:,:) => null() !< RRTMGP Jacobian of upward longwave all-sky flux
real (kind=kind_phys), pointer :: htrlw(:,:) => null() !< RRTMGP updated LW heating rate
real (kind=kind_phys), pointer :: tsfc_radtime(:) => null() !< RRTMGP surface temperature on radiation timestep
real (kind=kind_phys), pointer :: fluxlwUP_radtime(:,:) => null() !< RRTMGP upward longwave all-sky flux profile
real (kind=kind_phys), pointer :: fluxlwDOWN_radtime(:,:) => null() !< RRTMGP downward longwave all-sky flux profile

!--- In (physics only)
real (kind=kind_phys), pointer :: sfcdsw(:) => null() !< total sky sfc downward sw flux ( w/m**2 )
!< GFS_radtend_type%sfcfsw%dnfxc
Expand All @@ -443,11 +450,6 @@ module GFS_typedefs
real (kind=kind_phys), pointer :: sfcdlw(:) => null() !< total sky sfc downward lw flux ( w/m**2 )
!< GFS_radtend_type%sfclsw%dnfxc
real (kind=kind_phys), pointer :: sfculw(:) => null() !< total sky sfc upward lw flux ( w/m**2 )
real (kind=kind_phys), pointer :: fluxlwUP_jac(:,:) => null() !< GP Jacobian up LW total sky flux profile ( w/m**2/K )
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 @@ -745,6 +747,9 @@ module GFS_typedefs
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.
logical :: top_at_1 !< Vertical ordering flag.
integer :: iSFC !< Vertical index for surface
integer :: iTOA !< Vertical index for TOA

!--- microphysical switch
logical :: convert_dry_rho = .true. !< flag for converting mass/number concentrations from moist to dry
Expand Down Expand Up @@ -2101,8 +2106,6 @@ module GFS_typedefs
real (kind=kind_phys), pointer :: dudt_tms(:,:) => null() !< daily aver u-wind tend due to TMS

! RRTMGP
integer :: ipsdlw0 !<
integer :: ipsdsw0 !<
real (kind=kind_phys), pointer :: p_lay(:,:) => null() !<
real (kind=kind_phys), pointer :: p_lev(:,:) => null() !<
real (kind=kind_phys), pointer :: t_lev(:,:) => null() !<
Expand All @@ -2127,6 +2130,8 @@ module GFS_typedefs
real (kind=kind_phys), pointer :: cld_rwp(:,:) => null() !< Cloud rain water path
real (kind=kind_phys), pointer :: cld_rerain(:,:) => null() !< Cloud rain effective radius
real (kind=kind_phys), pointer :: precip_frac(:,:) => null() !< Precipitation fraction
real (kind=kind_phys), pointer :: fluxlwUP_allsky(:,:) => null() !< RRTMGP upward longwave all-sky flux profile
real (kind=kind_phys), pointer :: fluxlwDOWN_allsky(:,:) => null() !< RRTMGP downward longwave all-sky flux profile
real (kind=kind_phys), pointer :: fluxlwUP_clrsky(:,:) => null() !< RRTMGP upward longwave clr-sky flux profile
real (kind=kind_phys), pointer :: fluxlwDOWN_clrsky(:,:) => null() !< RRTMGP downward longwave clr-sky flux profile
real (kind=kind_phys), pointer :: fluxswUP_allsky(:,:) => null() !< RRTMGP upward shortwave all-sky flux profile
Expand All @@ -2141,8 +2146,6 @@ module GFS_typedefs
real (kind=kind_phys), pointer :: sfc_alb_uvvis_dif(:,:) => null() !<
real (kind=kind_phys), pointer :: toa_src_lw(:,:) => null() !<
real (kind=kind_phys), pointer :: toa_src_sw(:,:) => null() !<
integer, pointer :: icseed_lw(:) => null() !< RRTMGP seed for RNG for longwave radiation
integer, pointer :: icseed_sw(:) => null() !< RRTMGP seed for RNG for shortwave radiation
type(proflw_type), pointer :: flxprf_lw(:,:) => null() !< DDT containing RRTMGP longwave fluxes
type(profsw_type), pointer :: flxprf_sw(:,:) => null() !< DDT containing RRTMGP shortwave fluxes
type(ty_optical_props_2str) :: lw_optical_props_cloudsByBand !< RRTMGP DDT
Expand Down Expand Up @@ -2744,18 +2747,17 @@ subroutine coupling_create (Coupling, IM, Model)
Coupling%sfcdlw = clear_val
Coupling%sfculw = clear_val

! Coupling to RRTMGP, used for time step LW rad adjustment.
if (Model%do_RRTMGP) then
allocate (Coupling%fluxlwUP_jac (IM,Model%levs+1))
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
allocate (Coupling%fluxlwUP_radtime (IM, Model%levs+1))
allocate (Coupling%fluxlwDOWN_radtime (IM, Model%levs+1))
allocate (Coupling%fluxlwUP_jac (IM, Model%levs+1))
allocate (Coupling%htrlw (IM, Model%levs))
allocate (Coupling%tsfc_radtime (IM))
Coupling%fluxlwUP_radtime = clear_val
Coupling%fluxlwDOWN_radtime = clear_val
Coupling%fluxlwUP_jac = 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 @@ -7160,6 +7162,8 @@ subroutine interstitial_create (Interstitial, IM, Model)
allocate (Interstitial%t_lay (IM, Model%levs))
allocate (Interstitial%cloud_overlap_param (IM, Model%levs))
allocate (Interstitial%precip_overlap_param (IM, Model%levs))
allocate (Interstitial%fluxlwUP_allsky (IM, Model%levs+1))
allocate (Interstitial%fluxlwDOWN_allsky (IM, Model%levs+1))
allocate (Interstitial%fluxlwUP_clrsky (IM, Model%levs+1))
allocate (Interstitial%fluxlwDOWN_clrsky (IM, Model%levs+1))
allocate (Interstitial%fluxswUP_allsky (IM, Model%levs+1))
Expand All @@ -7178,8 +7182,6 @@ subroutine interstitial_create (Interstitial, IM, Model)
allocate (Interstitial%cld_rwp (IM, Model%levs))
allocate (Interstitial%cld_rerain (IM, Model%levs))
allocate (Interstitial%precip_frac (IM, Model%levs))
allocate (Interstitial%icseed_lw (IM))
allocate (Interstitial%icseed_sw (IM))
allocate (Interstitial%flxprf_lw (IM, Model%levs+1))
allocate (Interstitial%flxprf_sw (IM, Model%levs+1))
allocate (Interstitial%sfc_emiss_byband (Model%rrtmgp_nBandsLW,IM))
Expand Down Expand Up @@ -7552,18 +7554,19 @@ subroutine interstitial_rad_reset (Interstitial, Model)
Interstitial%plyr = clear_val
Interstitial%qlyr = clear_val
Interstitial%raddt = clear_val
Interstitial%scmpsw%uvbfc = clear_val
Interstitial%scmpsw%uvbf0 = clear_val
Interstitial%scmpsw%nirbm = clear_val
Interstitial%scmpsw%nirdf = clear_val
Interstitial%scmpsw%visbm = clear_val
Interstitial%scmpsw%visdf = clear_val
Interstitial%sfcalb = clear_val
Interstitial%tlvl = clear_val
Interstitial%tlyr = clear_val
Interstitial%tsfa = clear_val
Interstitial%tsfg = clear_val

! Interstitials used by both RRTMG and RRTMGP
Interstitial%scmpsw%uvbfc = clear_val
Interstitial%scmpsw%uvbf0 = clear_val
Interstitial%scmpsw%nirbm = clear_val
Interstitial%scmpsw%nirdf = clear_val
Interstitial%scmpsw%visbm = clear_val
Interstitial%scmpsw%visdf = clear_val
if (Model%do_RRTMGP) then
Interstitial%tracer = clear_val
Interstitial%tv_lay = clear_val
Expand All @@ -7577,6 +7580,8 @@ subroutine interstitial_rad_reset (Interstitial, Model)
Interstitial%t_lay = clear_val
Interstitial%cloud_overlap_param = clear_val
Interstitial%precip_overlap_param = clear_val
Interstitial%fluxlwUP_allsky = clear_val
Interstitial%fluxlwDOWN_allsky = clear_val
Interstitial%fluxlwUP_clrsky = clear_val
Interstitial%fluxlwDOWN_clrsky = clear_val
Interstitial%fluxswUP_allsky = clear_val
Expand All @@ -7595,8 +7600,6 @@ subroutine interstitial_rad_reset (Interstitial, Model)
Interstitial%cld_rwp = clear_val
Interstitial%cld_rerain = clear_val
Interstitial%precip_frac = clear_val
Interstitial%icseed_lw = clear_val
Interstitial%icseed_sw = clear_val
Interstitial%sfc_emiss_byband = clear_val
Interstitial%sec_diff_byband = clear_val
Interstitial%sfc_alb_nir_dir = clear_val
Expand All @@ -7616,13 +7619,25 @@ subroutine interstitial_rad_reset (Interstitial, Model)
Interstitial%lw_optical_props_precip%tau = clear_val
Interstitial%lw_optical_props_precip%ssa = clear_val
Interstitial%lw_optical_props_precip%g = clear_val
Interstitial%lw_optical_props_clrsky%tau = clear_val
Interstitial%lw_optical_props_cloudsByBand%tau = clear_val
Interstitial%lw_optical_props_cloudsByBand%ssa = clear_val
Interstitial%lw_optical_props_cloudsByBand%g = clear_val
Interstitial%lw_optical_props_precipByBand%tau = clear_val
Interstitial%lw_optical_props_precipByBand%ssa = clear_val
Interstitial%lw_optical_props_precipByBand%g = clear_val
Interstitial%sources%sfc_source = clear_val
Interstitial%sources%lay_source = clear_val
Interstitial%sources%lev_source_inc = clear_val
Interstitial%sources%lev_source_dec = clear_val
Interstitial%sources%sfc_source_Jac = clear_val
Interstitial%flxprf_lw%upfxc = clear_val
Interstitial%flxprf_lw%dnfxc = clear_val
Interstitial%flxprf_lw%upfx0 = clear_val
Interstitial%flxprf_lw%dnfx0 = clear_val
Interstitial%flxprf_sw%upfxc = clear_val
Interstitial%flxprf_sw%dnfxc = clear_val
Interstitial%flxprf_sw%upfx0 = clear_val
Interstitial%flxprf_sw%dnfx0 = clear_val
end if
!
end subroutine interstitial_rad_reset
Expand Down
144 changes: 76 additions & 68 deletions ccpp/data/GFS_typedefs.meta
Original file line number Diff line number Diff line change
Expand Up @@ -1798,46 +1798,6 @@
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
[htrlw]
standard_name = updated_tendency_of_air_temperature_due_to_longwave_heating_on_physics_timestep
long_name = total sky longwave heating rate on physics time step
units = K s-1
dimensions = (horizontal_loop_extent,vertical_layer_dimension)
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
units = W m-2 K-1
dimensions = (horizontal_loop_extent,vertical_interface_dimension)
type = real
kind = kind_phys
active = (flag_for_rrtmgp_radiation_scheme)
[fluxlwUP_allsky]
standard_name = RRTMGP_lw_flux_profile_upward_allsky
long_name = RRTMGP upward longwave all-sky flux profile
units = W m-2
dimensions = (horizontal_loop_extent,vertical_interface_dimension)
type = real
kind = kind_phys
active = (flag_for_rrtmgp_radiation_scheme)
[fluxlwDOWN_allsky]
standard_name = RRTMGP_lw_flux_profile_downward_allsky
long_name = RRTMGP downward longwave all-sky flux profile
units = W m-2
dimensions = (horizontal_loop_extent,vertical_interface_dimension)
type = real
kind = kind_phys
active = (flag_for_rrtmgp_radiation_scheme)
[rain_cpl]
standard_name = cumulative_lwe_thickness_of_precipitation_amount_for_coupling
long_name = total rain precipitation
Expand Down Expand Up @@ -2332,6 +2292,46 @@
type = real
kind = kind_phys
active = (flag_for_chemistry_coupling)
[htrlw]
standard_name = updated_tendency_of_air_temperature_due_to_longwave_heating_on_physics_timestep
long_name = total sky longwave heating rate on physics time step
units = K s-1
dimensions = (horizontal_loop_extent,vertical_layer_dimension)
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
units = W m-2 K-1
dimensions = (horizontal_loop_extent,vertical_interface_dimension)
type = real
kind = kind_phys
active = (flag_for_rrtmgp_radiation_scheme)
[fluxlwUP_radtime]
standard_name = RRTMGP_lw_flux_profile_upward_allsky_on_radiation_timestep
long_name = RRTMGP upward longwave all-sky flux profile
units = W m-2
dimensions = (horizontal_loop_extent,vertical_interface_dimension)
type = real
kind = kind_phys
active = (flag_for_rrtmgp_radiation_scheme)
[fluxlwDOWN_radtime]
standard_name = RRTMGP_lw_flux_profile_downward_allsky_on_radiation_timestep
long_name = RRTMGP downward longwave all-sky flux profile
units = W m-2
dimensions = (horizontal_loop_extent,vertical_interface_dimension)
type = real
kind = kind_phys
active = (flag_for_rrtmgp_radiation_scheme)

########################################################################
[ccpp-table-properties]
Expand Down Expand Up @@ -3048,6 +3048,24 @@
dimensions = ()
type = real
kind = kind_phys
[top_at_1]
standard_name = flag_for_vertical_ordering_in_RRTMGP
long_name = flag for vertical ordering in RRTMGP
units = flag
dimensions = ()
type = logical
[iSFC]
standard_name = vertical_index_for_surface_in_RRTMGP
long_name = index for surface layer in RRTMGP
units = flag
dimensions = ()
type = integer
[iTOA]
standard_name = vertical_index_for_TOA_in_RRTMGP
long_name = index for TOA layer in RRTMGP
units = flag
dimensions = ()
type = integer
[convert_dry_rho]
standard_name = flag_for_converting_hydrometeors_from_moist_to_dry_air
long_name = flag for converting hydrometeors from moist to dry air
Expand Down Expand Up @@ -9968,18 +9986,22 @@
type = real
kind = kind_phys
active = (flag_for_rrtmgp_radiation_scheme)
[ipsdsw0]
standard_name = initial_permutation_seed_sw
long_name = initial seed for McICA SW
units = none
dimensions = ()
type = integer
[ipsdlw0]
standard_name = initial_permutation_seed_lw
long_name = initial seed for McICA LW
units = none
dimensions = ()
type = integer
[fluxlwUP_allsky]
standard_name = RRTMGP_lw_flux_profile_upward_allsky
long_name = RRTMGP upward longwave all-sky flux profile
units = W m-2
dimensions = (horizontal_loop_extent,vertical_interface_dimension)
type = real
kind = kind_phys
active = (flag_for_rrtmgp_radiation_scheme)
[fluxlwDOWN_allsky]
standard_name = RRTMGP_lw_flux_profile_downward_allsky
long_name = RRTMGP downward longwave all-sky flux profile
units = W m-2
dimensions = (horizontal_loop_extent,vertical_interface_dimension)
type = real
kind = kind_phys
active = (flag_for_rrtmgp_radiation_scheme)
[fluxlwUP_clrsky]
standard_name = RRTMGP_lw_flux_profile_upward_clrsky
long_name = RRTMGP upward longwave clr-sky flux profile
Expand Down Expand Up @@ -10100,20 +10122,6 @@
dimensions = (horizontal_loop_extent,vertical_layer_dimension, number_of_shortwave_bands)
type = real
kind = kind_phys
[icseed_lw]
standard_name = seed_random_numbers_lw_for_RRTMGP
long_name = seed for random number generation for longwave radiation
units = none
dimensions = (horizontal_loop_extent)
type = integer
active = (flag_for_rrtmgp_radiation_scheme)
[icseed_sw]
standard_name = seed_random_numbers_sw_for_RRTMGP
long_name = seed for random number generation for shortwave radiation
units = none
dimensions = (horizontal_loop_extent)
type = integer
active = (flag_for_rrtmgp_radiation_scheme)
[precip_frac]
standard_name = precipitation_fraction_by_layer
long_name = precipitation fraction in each layer
Expand Down Expand Up @@ -10253,15 +10261,15 @@
kind = kind_phys
active = (flag_for_rrtmgp_radiation_scheme)
[sfc_alb_uvvis_dir]
standard_name = surface_albedo_uvvis_dir
standard_name = surface_albedo_uvvis_direct
long_name = UVVIS (direct) surface albedo (sfc_alb_uvvis_dir)
units = none
dimensions = (number_of_shortwave_bands,horizontal_loop_extent)
type = real
kind = kind_phys
active = (flag_for_rrtmgp_radiation_scheme)
[sfc_alb_uvvis_dif]
standard_name = surface_albedo_uvvis_dif
standard_name = surface_albedo_uvvis_diffuse
long_name = UVVIS (diffuse) surface albedo (sfc_alb_uvvis_dif)
units = none
dimensions = (number_of_shortwave_bands,horizontal_loop_extent)
Expand Down
Loading