diff --git a/Externals_CAM.cfg b/Externals_CAM.cfg
index 53fea43cf6..736dcee274 100644
--- a/Externals_CAM.cfg
+++ b/Externals_CAM.cfg
@@ -66,9 +66,9 @@ required = True
[mpas]
local_path = src/dynamics/mpas/dycore
protocol = git
-repo_url = https://github.com/EarthWorksOrg/MPAS-Model.git
+repo_url = https://github.com/MPAS-Dev/MPAS-Model.git
sparse = ../.mpas_sparse_checkout
-tag = release-mpasa-ew2.2
+hash = ff76a231
required = True
[geoschem]
@@ -90,7 +90,7 @@ externals = Externals_HCO.cfg
local_path = src/physics/rrtmgp/ext
protocol = git
repo_url = https://github.com/EarthWorksOrg/rte-rrtmgp.git
-tag = v1.7_ew_release_2.2
+tag = v1.7_ew_release_2.3
required = True
[rrtmgp-data]
diff --git a/bld/build-namelist b/bld/build-namelist
index 4b8c43929e..dcdf858f81 100755
--- a/bld/build-namelist
+++ b/bld/build-namelist
@@ -3747,7 +3747,7 @@ if (!$simple_phys) {
}
if ($waccm_phys or
- (!$simple_phys and $cfg->get('nlev') >= 60)) {
+ (!$simple_phys and $cfg->get('nlev') >= 60) and $dyn !~ /mpas/) {
# Spectral gravity waves are part of WACCM physics, and also drive the
# QBO in the high vertical resolution configuration.
add_default($nl, 'use_gw_front' , 'val'=>'.true.');
@@ -3770,7 +3770,7 @@ if ($waccm_phys or
}
add_default($nl, 'gw_qbo_hdepth_scaling', 'val'=>$hdepth_scaling);
add_default($nl, 'gw_top_taper');
-} elsif ($phys =~ /cam_dev/) {
+} elsif ($phys =~ /cam_dev/ and $dyn !~ /mpas/) {
# cam_dev settings for nlev<60 (Other cam_dev set above)
add_default($nl, 'use_gw_front' , 'val'=>'.true.');
add_default($nl, 'use_gw_convect_dp', 'val'=>'.true.');
diff --git a/bld/namelist_files/namelist_defaults_cam.xml b/bld/namelist_files/namelist_defaults_cam.xml
index cd616aad15..93b7bb1101 100644
--- a/bld/namelist_files/namelist_defaults_cam.xml
+++ b/bld/namelist_files/namelist_defaults_cam.xml
@@ -287,19 +287,19 @@
atm/waccm/ic/mpasa120km.waccm_fulltopo_c220818.nc
atm/cam/inic/mpas/cami_01-01-2000_00Z_mpasa480_L32_CFSR_c211013.nc
-atm/cam/inic/mpas/cami_01-01-2000_00Z_mpasa480_L32_CFSR_c240508.nc
+
atm/cam/inic/mpas/cami_01-01-2000_00Z_mpasa120_L32_CFSR_c210426.nc
-atm/cam/inic/mpas/cami_01-01-2000_00Z_mpasa120_L32_CFSR_c240508.nc
+
atm/cam/inic/mpas/cami_01-01-2000_00Z_mpasa60_L32_CFSR_c210518.nc
-atm/cam/inic/mpas/cami_01-01-2000_00Z_mpasa60_L32_CFSR_c240508.nc
+
atm/cam/inic/mpas/cami_01-01-2000_00Z_mpasa30_L32_CFSR_230302.nc
-atm/cam/inic/mpas/cami_01-01-2000_00Z_mpasa30_L32_CFSR_c240508.nc
+
atm/cam/inic/mpas/cami_01-01-2000_00Z_mpasa120_L58_c230901.nc
-atm/cam/inic/mpas/cami_01-01-2000_00Z_mpasa120_L58_CFSR_c240508.nc
+
atm/cam/inic/mpas/cami_01-01-2000_00Z_mpasa15_L58_c230316.nc
-atm/cam/inic/mpas/cami_01-01-2000_00Z_mpasa15_L58_CFSR_c240508.nc
+
atm/cam/topo/topo-from-cami_0000-01-01_256x512_L26_c030918.nc
@@ -357,19 +357,19 @@
atm/cam/topo/se/ne30x8_ARCTICGRIS_nc3000_Co060_Fi001_MulG_PF_RR_Nsw042_c200428.nc
atm/cam/topo/mpas_480_nc3000_Co240_Fi001_MulG_PF_Nsw170.nc
-atm/cam/topo/mpas/mpasa480_gmted2010_modis_bedmachine_nc3000_Laplace0400_noleak_20240507.nc
+
atm/cam/topo/mpas/mpas_120_nc3000_Co060_Fi001_MulG_PF_Nsw042_c200921.nc
-atm/cam/topo/mpas/mpasa120_gmted2010_modis_bedmachine_nc3000_Laplace0100_noleak_20240507.nc
+
atm/cam/topo/mpas_60_nc3000_Co030_Fi001_MulG_PF_Nsw021.nc
-atm/cam/topo/mpas/mpasa60_gmted2010_modis_bedmachine_nc3000_Laplace0050_noleak_20240507.nc
+
atm/cam/topo/mpas_30_nc3000_Co015_Fi001_MulG_PF_Nsw011.nc
-atm/cam/topo/mpas/mpasa30_gmted2010_modis_bedmachine_nc3000_Laplace0025_noleak_20240507.nc
+
atm/cam/topo/mpas_15_nc3500_c20230315.nc
-atm/cam/topo/mpas/mpasa15_gmted2010_modis_bedmachine_nc3000_Laplace0013_noleak_20240507.nc
+
atm/cam/topo/mpasa120_gmted2010_modis_bedmachine_nc3000_Laplace0100_20220728.nc
-atm/cam/topo/mpas/mpasa120_gmted2010_modis_bedmachine_nc3000_Laplace0100_noleak_20240507.nc
+
0.0D0
diff --git a/src/physics/rrtmgp/radiation.F90 b/src/physics/rrtmgp/radiation.F90
index 18488bedb7..ed330240ce 100644
--- a/src/physics/rrtmgp/radiation.F90
+++ b/src/physics/rrtmgp/radiation.F90
@@ -1155,9 +1155,13 @@ subroutine radiation_tend( &
! Compute the gas optics (stored in atm_optics_sw).
! toa_flux is the reference solar source from RRTMGP data.
+ !$acc data copyin(kdist_sw,pmid_day,pint_day,t_day,gas_concs_sw) &
+ !$acc copy(atm_optics_sw) &
+ !$acc copyout(toa_flux)
errmsg = kdist_sw%gas_optics( &
pmid_day, pint_day, t_day, gas_concs_sw, atm_optics_sw, &
toa_flux)
+ !$acc end data
call stop_on_err(errmsg, sub, 'kdist_sw%gas_optics')
! Scale the solar source
@@ -1174,6 +1178,17 @@ subroutine radiation_tend( &
if (nday > 0) then
+ !! ADDED by SS as part of RRTMGP data optimization
+ !$acc data copyin(atm_optics_sw, toa_flux, &
+ !$acc aer_sw, cloud_sw, &
+ !$acc aer_sw%tau, aer_sw%ssa, aer_sw%g, &
+ !$acc atm_optics_sw%tau, &
+ !$acc atm_optics_sw%ssa, atm_optics_sw%g, &
+ !$acc cloud_sw%tau, cloud_sw%ssa, cloud_sw%g, &
+ !$acc alb_dir, alb_dif,coszrs_day) &
+ !$acc copy(fswc, fswc%flux_net,fswc%flux_up,fswc%flux_dn, &
+ !$acc fsw, fsw%flux_net, fsw%flux_up, fsw%flux_dn)
+
! Increment the gas optics (in atm_optics_sw) by the aerosol optics in aer_sw.
errmsg = aer_sw%increment(atm_optics_sw)
call stop_on_err(errmsg, sub, 'aer_sw%increment')
@@ -1193,6 +1208,7 @@ subroutine radiation_tend( &
atm_optics_sw, top_at_1, coszrs_day, toa_flux, &
alb_dir, alb_dif, fsw)
call stop_on_err(errmsg, sub, 'all-sky rte_sw')
+ !$acc end data
end if
@@ -1249,14 +1265,36 @@ subroutine radiation_tend( &
call rrtmgp_set_gases_lw(icall, state, pbuf, nlay, gas_concs_lw)
! Compute the gas optics and Planck sources.
+ !$acc data copyin(kdist_lw,pmid_rad,pint_rad,t_rad,t_sfc, &
+ !$acc gas_concs_lw) &
+ !$acc copy(atm_optics_lw, &
+ !$acc atm_optics_lw%tau, sources_lw, &
+ !$acc sources_lw%lay_source, sources_lw%sfc_source, &
+ !$acc sources_lw%lev_source_inc, sources_lw%lev_source_dec, &
+ !$acc sources_lw%sfc_source_jac)
errmsg = kdist_lw%gas_optics( &
pmid_rad, pint_rad, t_rad, t_sfc, gas_concs_lw, &
atm_optics_lw, sources_lw)
call stop_on_err(errmsg, sub, 'kdist_lw%gas_optics')
+ !$acc end data
! Set LW aerosol optical properties in the aer_lw object.
call rrtmgp_set_aer_lw(icall, state, pbuf, aer_lw)
+ !! Added by SS as part of RRTMGP data optimization
+ !$acc data copyin(atm_optics_lw, aer_lw, cloud_lw, &
+ !$acc aer_lw%tau, &
+ !$acc atm_optics_lw%tau, &
+ !$acc cloud_lw%tau, &
+ !$acc sources_lw, &
+ !$acc sources_lw%lay_source, sources_lw%sfc_source, &
+ !$acc sources_lw%lev_source_inc, sources_lw%lev_source_dec, &
+ !$acc sources_lw%sfc_source_Jac, &
+ !$acc emis_sfc) &
+ !$acc copy(flwc, flwc%flux_net,flwc%flux_up,flwc%flux_dn, &
+ !$acc flw, flw%flux_net, flw%flux_up, flw%flux_dn)
+
+
! Increment the gas optics by the aerosol optics.
errmsg = aer_lw%increment(atm_optics_lw)
call stop_on_err(errmsg, sub, 'aer_lw%increment')
@@ -1272,6 +1310,7 @@ subroutine radiation_tend( &
! Compute all-sky LW fluxes
errmsg = rte_lw(atm_optics_lw, top_at_1, sources_lw, emis_sfc, flw)
call stop_on_err(errmsg, sub, 'all-sky rte_lw')
+ !$acc end data
! Transform RRTMGP outputs to CAM outputs and compute heating rates.
call set_lw_diags()