Skip to content

Commit e6949b3

Browse files
authored
Merge pull request NCAR#305 from dustinswales/feature/rte-rrtmgp-v1.8
Feature/rte rrtmgp v1.8
2 parents 0722a9d + baf9502 commit e6949b3

27 files changed

Lines changed: 431 additions & 663 deletions

.gitmodules

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[submodule "physics/Radiation/RRTMGP/rte-rrtmgp"]
22
path = physics/Radiation/RRTMGP/rte-rrtmgp
3-
url = https://github.com/earth-system-radiation/rte-rrtmgp
3+
url = https://github.com/NCAR/rte-rrtmgp
44
branch = main
55
[submodule "physics/MP/TEMPO/TEMPO"]
66
path = physics/MP/TEMPO/TEMPO

CMakeLists.txt

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -82,31 +82,32 @@ get_filename_component(LOCAL_CURRENT_SOURCE_DIR ${FULL_PATH_TO_CMAKELISTS} DIREC
8282
#------------------------------------------------------------------------------
8383

8484
# List of files that need to be compiled without OpenMP
85-
set(SCHEMES_OPENMP_OFF ${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/rrtmgp/mo_gas_optics.F90
86-
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/rrtmgp/mo_rrtmgp_constants.F90
87-
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/rrtmgp/mo_gas_concentrations.F90
88-
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/rrtmgp/mo_rrtmgp_util_string.F90
89-
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/rrtmgp/kernels/mo_gas_optics_kernels.F90
90-
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/rrtmgp/mo_gas_optics_rrtmgp.F90
85+
set(SCHEMES_OPENMP_OFF ${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/gas-optics/mo_gas_optics.F90
86+
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/gas-optics/mo_gas_optics_constants.F90
87+
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/gas-optics/mo_gas_concentrations.F90
88+
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/gas-optics/mo_gas_optics_util_string.F90
89+
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/rrtmgp-frontend/mo_gas_optics_rrtmgp.F90
90+
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/rrtmgp-kernels/mo_gas_optics_rrtmgp_kernels.F90
91+
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/rrtmgp-frontend/mo_cloud_optics_rrtmgp.F90
9192
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/extensions/mo_rrtmgp_clr_all_sky.F90
9293
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/extensions/mo_fluxes_byband.F90
9394
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/extensions/solar_variability/mo_solar_variability.F90
9495
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/extensions/mo_heating_rates.F90
9596
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/extensions/mo_fluxes_bygpoint.F90
9697
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/extensions/mo_compute_bc.F90
97-
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/extensions/cloud_optics/mo_cloud_sampling.F90
98-
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/extensions/cloud_optics/mo_cloud_optics.F90
99-
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/rte/mo_rte_config.F90
100-
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/rte/mo_source_functions.F90
101-
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/rte/mo_rte_sw.F90
102-
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/rte/mo_fluxes.F90
103-
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/rte/mo_rte_lw.F90
104-
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/rte/mo_rte_util_array.F90
105-
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/rte/kernels/mo_rte_solver_kernels.F90
106-
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/rte/kernels/mo_optical_props_kernels.F90
107-
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/rte/kernels/mo_fluxes_broadband_kernels.F90
108-
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/rte/mo_rte_kind.F90
109-
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/rte/mo_optical_props.F90)
98+
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/extensions/mo_cloud_sampling.F90
99+
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/rte-frontend/mo_rte_util_array_validation.F90
100+
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/rte-frontend/mo_rte_config.F90
101+
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/rte-frontend/mo_source_functions.F90
102+
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/rte-frontend/mo_rte_sw.F90
103+
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/rte-frontend/mo_fluxes.F90
104+
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/rte-frontend/mo_rte_lw.F90
105+
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/rte-kernels/mo_rte_util_array.F90
106+
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/rte-kernels/mo_rte_solver_kernels.F90
107+
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/rte-kernels/mo_optical_props_kernels.F90
108+
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/rte-kernels/mo_fluxes_broadband_kernels.F90
109+
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/rte-frontend/mo_rte_kind.F90
110+
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/rte-frontend/mo_optical_props.F90)
110111

111112
# List of files that need to be compiled with different precision
112113
set(SCHEMES_DYNAMICS)
@@ -127,7 +128,7 @@ endif()
127128
# of files with standard compiler flags, and assign no-OpenMP flags
128129
if(SCHEMES_OPENMP_OFF)
129130
SET_PROPERTY(SOURCE ${SCHEMES_OPENMP_OFF}
130-
APPEND_STRING PROPERTY COMPILE_FLAGS " ${CMAKE_Fortran_FLAGS_PHYSICS}")
131+
APPEND_STRING PROPERTY COMPILE_FLAGS " ${CMAKE_Fortran_FLAGS_RTERRTMGP}")
131132
list(REMOVE_ITEM SCHEMES ${SCHEMES_OPENMP_OFF})
132133
endif()
133134

physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rad_time_vary.fv3.meta

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,14 +140,14 @@
140140
intent = in
141141
[ipsd0]
142142
standard_name = initial_seed_for_mcica
143-
long_name = initial permutaion seed for mcica radiation
143+
long_name = initial permutation seed for mcica radiation
144144
units = 1
145145
dimensions = ()
146146
type = integer
147147
intent = in
148148
[ipsdlim]
149149
standard_name = limit_for_initial_seed_for_mcica
150-
long_name = limit for initial permutaion seed for mcica radiation
150+
long_name = limit for initial permutation seed for mcica radiation
151151
units = 1
152152
dimensions = ()
153153
type = integer

physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rad_time_vary.scm.meta

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,14 +140,14 @@
140140
intent = in
141141
[ipsd0]
142142
standard_name = initial_seed_for_mcica
143-
long_name = initial permutaion seed for mcica radiation
143+
long_name = initial permutation seed for mcica radiation
144144
units = 1
145145
dimensions = ()
146146
type = integer
147147
intent = in
148148
[ipsdlim]
149149
standard_name = limit_for_initial_seed_for_mcica
150-
long_name = limit for initial permutaion seed for mcica radiation
150+
long_name = limit for initial permutation seed for mcica radiation
151151
units = 1
152152
dimensions = ()
153153
type = integer

physics/Interstitials/UFS_SCM_NEPTUNE/GFS_radiation_post.F90

Lines changed: 24 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ module GFS_radiation_post
1717
use module_radsw_parameters, only: topfsw_type, sfcfsw_type, cmpfsw_type
1818
use mo_heating_rates, only: compute_heating_rate
1919
use radiation_tools, only: check_error_msg
20+
use mo_rte_kind, only: rte_wp => wp
2021
implicit none
2122

2223
public GFS_radiation_post_run
@@ -176,7 +177,8 @@ subroutine GFS_radiation_post_run(doLWrad, doSWrad, lssav, total_albedo, topfsw,
176177

177178
! Local variables
178179
integer :: i
179-
real(kind_phys), dimension(nDay, nLev) :: thetaTendClrSky, thetaTendAllSky
180+
real(rte_wp), dimension(nDay, nLev) :: thetaTendClrSkySW, thetaTendAllSkySW
181+
real(rte_wp), dimension(nCol, nLev) :: thetaTendClrSkyLW, thetaTendAllSkyLW
180182

181183
! Initialize CCPP error handling variables
182184
errmsg = ''
@@ -193,19 +195,21 @@ subroutine GFS_radiation_post_run(doLWrad, doSWrad, lssav, total_albedo, topfsw,
193195
! Clear-sky heating-rate (optional)
194196
if (do_lw_clrsky_hr) then
195197
call check_error_msg('GFS_radiation_post',compute_heating_rate( &
196-
fluxlwUP_clrsky, & ! IN - RRTMGP upward longwave clear-sky flux profiles (W/m2)
197-
fluxlwDOWN_clrsky, & ! IN - RRTMGP downward longwave clear-sky flux profiles (W/m2)
198-
p_lev, & ! IN - Pressure @ layer-interfaces (Pa)
199-
htrlwc)) ! OUT - Longwave clear-sky heating rate (K/sec)
198+
real(fluxlwUP_clrsky, kind=rte_wp), & ! IN - RRTMGP upward longwave clear-sky flux profiles (W/m2)
199+
real(fluxlwDOWN_clrsky, kind=rte_wp), & ! IN - RRTMGP downward longwave clear-sky flux profiles (W/m2)
200+
real(p_lev, kind=rte_wp), & ! IN - Pressure @ layer-interfaces (Pa)
201+
thetaTendClrSkyLW)) ! OUT - Longwave clear-sky heating rate (K/sec)
202+
htrlwc = thetaTendClrSkyLW
200203
endif
201204

202205
! All-sky heating-rate (mandatory)
203206
call check_error_msg('GFS_radiation_post',compute_heating_rate( &
204-
fluxlwUP_allsky, & ! IN - RRTMGP upward longwave all-sky flux profiles (W/m2)
205-
fluxlwDOWN_allsky, & ! IN - RRTMGP downward longwave all-sky flux profiles (W/m2)
206-
p_lev, & ! IN - Pressure @ layer-interfaces (Pa)
207-
htrlw)) ! OUT - Longwave all-sky heating rate (K/sec)
208-
207+
real(fluxlwUP_allsky, kind=rte_wp), & ! IN - RRTMGP upward longwave all-sky flux profiles (W/m2)
208+
real(fluxlwDOWN_allsky, kind=rte_wp), & ! IN - RRTMGP downward longwave all-sky flux profiles (W/m2)
209+
real(p_lev, kind=rte_wp), & ! IN - Pressure @ layer-interfaces (Pa)
210+
thetaTendAllSkyLW)) ! OUT - Longwave all-sky heating rate (K/sec)
211+
htrlw = thetaTendAllSkyLW
212+
209213
! (Copy fluxes from RRTMGP types into model radiation types.)
210214
! TOA fluxes
211215
topflw(:)%upfxc = fluxlwUP_allsky(:,iTOA)
@@ -239,21 +243,21 @@ subroutine GFS_radiation_post_run(doLWrad, doSWrad, lssav, total_albedo, topfsw,
239243
if (do_sw_clrsky_hr) then
240244
htrswc(:,:) = 0._kind_phys
241245
call check_error_msg('GFS_radiation_post',compute_heating_rate( &
242-
fluxswUP_clrsky(idxday(1:nDay),:), & ! IN - Shortwave upward clear-sky flux profiles (W/m2)
243-
fluxswDOWN_clrsky(idxday(1:nDay),:), & ! IN - Shortwave downward clear-sky flux profiles (W/m2)
244-
p_lev(idxday(1:nDay),:), & ! IN - Pressure at model-interface (Pa)
245-
thetaTendClrSky)) ! OUT - Clear-sky heating-rate (K/sec)
246-
htrswc(idxday(1:nDay),:)=thetaTendClrSky !**NOTE** GP doesn't use radiation levels, it uses the model fields. Not sure if this is necessary
246+
real(fluxswUP_clrsky(idxday(1:nDay),:), kind=rte_wp), & ! IN - Shortwave upward clear-sky flux profiles (W/m2)
247+
real(fluxswDOWN_clrsky(idxday(1:nDay),:), kind=rte_wp), & ! IN - Shortwave downward clear-sky flux profiles (W/m2)
248+
real(p_lev(idxday(1:nDay),:), kind=rte_wp), & ! IN - Pressure at model-interface (Pa)
249+
thetaTendClrSkySW)) ! OUT - Clear-sky heating-rate (K/sec)
250+
htrswc(idxday(1:nDay),:)=thetaTendClrSkySW !**NOTE** GP doesn't use radiation levels, it uses the model fields. Not sure if this is necessary
247251
endif
248252

249253
! All-sky heating-rate (mandatory)
250254
htrsw(:,:) = 0._kind_phys
251255
call check_error_msg('GFS_radiation_post',compute_heating_rate( &
252-
fluxswUP_allsky(idxday(1:nDay),:), & ! IN - Shortwave upward all-sky flux profiles (W/m2)
253-
fluxswDOWN_allsky(idxday(1:nDay),:), & ! IN - Shortwave downward all-sky flux profiles (W/m2)
254-
p_lev(idxday(1:nDay),:), & ! IN - Pressure at model-interface (Pa)
255-
thetaTendAllSky)) ! OUT - All-sky heating-rate (K/sec)
256-
htrsw(idxday(1:nDay),:) = thetaTendAllSky
256+
real(fluxswUP_allsky(idxday(1:nDay),:), kind=rte_wp), & ! IN - Shortwave upward all-sky flux profiles (W/m2)
257+
real(fluxswDOWN_allsky(idxday(1:nDay),:), kind=rte_wp), & ! IN - Shortwave downward all-sky flux profiles (W/m2)
258+
real(p_lev(idxday(1:nDay),:), kind=rte_wp), & ! IN - Pressure at model-interface (Pa)
259+
thetaTendAllSkySW)) ! OUT - All-sky heating-rate (K/sec)
260+
htrsw(idxday(1:nDay),:) = thetaTendAllSkySW
257261

258262
! (Copy fluxes from RRTMGP types into model radiation types.)
259263

physics/Interstitials/UFS_SCM_NEPTUNE/GFS_radiation_post.meta

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
relative_path = ../../
55
dependencies = hooks/machine.F,Radiation/radiation_aerosols.f
66
dependencies = Radiation/RRTMG/radlw_param.f,Radiation/radiation_tools.F90,Radiation/RRTMGP/rte-rrtmgp/extensions/mo_heating_rates.F90
7+
dependencies = Radiation/RRTMGP/rte-rrtmgp/rte-frontend/mo_rte_kind.F90
78

89
########################################################################
910
[ccpp-arg-table]

physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmg_setup.meta

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,7 @@
364364
intent = in
365365
[ipsd0]
366366
standard_name = initial_seed_for_mcica
367-
long_name = initial permutaion seed for mcica radiation
367+
long_name = initial permutation seed for mcica radiation
368368
units = 1
369369
dimensions = ()
370370
type = integer

0 commit comments

Comments
 (0)