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

RRTMGP w/ GFS SDFs + some houskeeping #181

Merged
merged 54 commits into from
Aug 11, 2020
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
ee18201
Updated .submodules.
dustinswales Apr 20, 2020
97e6065
Added RRTMGP to GFS_v16beta ccpp physics suite.
dustinswales Apr 21, 2020
b21888c
Updated GP suite heating rates in ccpp-physics. Cleaned up.
dustinswales Apr 27, 2020
36e2aa1
Updated ccpp-physics submodule.
dustinswales Apr 30, 2020
7d4e4fe
Added in new overlap assumtion used in GFS_FV3_v16beta physics suite.
dustinswales May 11, 2020
23cfdd6
Updated submodule.
dustinswales May 11, 2020
d44574e
Major reorganization of GFDLMP-2-RRTMGP interface.
dustinswales May 14, 2020
7880249
Omission from previous commit.
dustinswales May 14, 2020
e08b726
Cleaned up optional arguments for rte routines.
dustinswales May 20, 2020
358c844
Tidied up. Removed options not exercised. Replaced with errors.
dustinswales May 20, 2020
6fdb2e0
Replaced integer control over cloud-optics scheme with logics.
dustinswales May 20, 2020
6df7ffa
Seperated cloud/precipitation optics.
dustinswales May 21, 2020
d47076f
Housekeeeping. Working with both EMC SDFs in SCM and UFS.
dustinswales May 28, 2020
3c20679
Renamed sampling routines.
dustinswales Jun 1, 2020
19f5ba9
Added infrastructure to use LW jacobians in RRTMGP LW scheme.
dustinswales Jun 9, 2020
3dc5469
Added new scheme for RRTMGP LW surface flux adjustment between radiat…
dustinswales Jun 11, 2020
c68d43f
Merge branch 'dtc/develop' of https://github.com/NCAR/gmtb-scm into u…
dustinswales Jun 12, 2020
3ffa4ea
Omission from previous commit
dustinswales Jun 12, 2020
c26b5d1
Some changes
dustinswales Jun 19, 2020
e9c2a99
Revert "Merge branch 'dtc/develop' of https://github.com/NCAR/gmtb-sc…
dustinswales Jun 19, 2020
ed3c398
Functionally working, but the surface temperature field is not being …
dustinswales Jun 19, 2020
fb8f571
LW adjusted flux using GP Jacobians is working.
dustinswales Jun 19, 2020
d516098
Moved rrtmgp_lwadj into conditional in GFS_suite_interstitial_2_run.
dustinswales Jun 23, 2020
1a0edd6
Merge branch 'use_LW_jacobian' into dtc/develop
dustinswales Jun 23, 2020
933be41
Update ccpp-physics
dustinswales Jul 27, 2020
f69c484
Updated with upstream master.
dustinswales Jul 27, 2020
7d05fd0
Update ccpp-prebuild
dustinswales Jul 27, 2020
2c385b0
Working. Updated to NCAR/master
dustinswales Jul 27, 2020
f61a3a1
Some bug fixes from previous commit. Now running
dustinswales Jul 28, 2020
c8083ec
Updated ccpp-physics
dustinswales Jul 28, 2020
ea8d224
Added exponential-random and exponential cloud-overlap assumptions to…
dustinswales Jul 30, 2020
dc45f04
Added RRTMGP interface for Zhao-Carr scheme. On SCM side, fixed alloc…
dustinswales Jul 31, 2020
1c67ebf
Remove DDTs from argument list in GFS_rrtmgp_pre. Also removed use st…
dustinswales Jul 31, 2020
daedf29
Removed all GFS DDTs. Replaced with flat fields. Physical constants a…
dustinswales Aug 2, 2020
1fbac74
Updated ccpp/physics.
dustinswales Aug 3, 2020
96307b7
Updated ccpp-physics to NCAR-master
dustinswales Aug 10, 2020
2bfc95a
Merge branch 'master' of https://github.com/NCAR/gmtb-scm
dustinswales Aug 10, 2020
fa9ebce
Merge branch 'master' of https://github.com/NCAR/gmtb-scm into dtc/de…
dustinswales Aug 10, 2020
2003405
Updated prebuild script
dustinswales Aug 10, 2020
5943e70
Reverted GFS_typedef files, history got currpoted.
dustinswales Aug 10, 2020
9dc877d
Added con_epsqs to physical_constants.
dustinswales Aug 10, 2020
5b8b41c
revert a bunch of SCM files that didn't have RRTMGP changes to the cu…
grantfirl Aug 10, 2020
6fe8b56
revert some files again (had old local version of master branch for l…
grantfirl Aug 10, 2020
8b43512
manually merge ccpp_prebuild_config.py between latest master and RRTM…
grantfirl Aug 10, 2020
8a8988f
update .gitmodules
grantfirl Aug 10, 2020
eef88c9
manually merge the RRTMGP SDFs between current master and RRTMGP upda…
grantfirl Aug 10, 2020
985202f
manually merge gmtb_scm_physical_constants between current master and…
grantfirl Aug 10, 2020
e5d510c
revert a few small changes in GFS_typedefs.F90
grantfirl Aug 10, 2020
25f65a9
match ccpp_prebuil_config.py changes with FV3 version
grantfirl Aug 10, 2020
aa294ea
update RRTMGP SDFs and default namelists and tracer configs in order …
grantfirl Aug 10, 2020
0473355
comment out ACM scheme in ACM suite to that it doesn't cause trouble …
grantfirl Aug 10, 2020
7280d37
Merge pull request #4 from grantfirl/rrtmgp_update_gjf_20200810
dustinswales Aug 11, 2020
9e01f20
Removed local setup script.
dustinswales Aug 11, 2020
8207944
Removed deprecated code.
dustinswales Aug 11, 2020
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
2 changes: 1 addition & 1 deletion .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@
branch = dtc/develop
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

After testing, we'd like to see this reverted.

[submodule "ccpp-physics"]
path = ccpp/physics
url = https://github.com/NCAR/ccpp-physics
url = https://github.com/dustinswales/ccpp-physics
branch = dtc/develop
2 changes: 2 additions & 0 deletions ccpp/config/ccpp_prebuild_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -418,6 +418,7 @@
},
'GFS_rrtmgp_sw_post' : {
'GFS_rrtmgp_sw_post_run' : [
'tendency_of_air_temperature_due_to_shortwave_heating_assuming_clear_sky_on_radiation_time_step_and_radiation_levels',
'components_of_surface_downward_shortwave_fluxes',
'sw_fluxes_sfc',
'sw_fluxes_toa',
Expand All @@ -431,6 +432,7 @@
},
'GFS_rrtmgp_lw_post' : {
'GFS_rrtmgp_lw_post_run' : [
'tendency_of_air_temperature_due_to_longwave_heating_assuming_clear_sky_on_radiation_time_step_and_radiation_levels',
'lw_fluxes_sfc',
'lw_fluxes_toa',
],
Expand Down
150 changes: 150 additions & 0 deletions ccpp/physics_namelists/input_GFS_v16beta_RRTMGP.nml
Original file line number Diff line number Diff line change
@@ -0,0 +1,150 @@
&gfs_physics_nml
fhzero = 6
h2o_phys = .true.
ldiag3d = .true.
fhcyc = 24
use_ufo = .true.
pre_rad = .false.
ncld = 5
imp_physics = 11
pdfcld = .false.
fhswr = 3600.
fhlwr = 3600.
ialb = 1
iems = 1
iaer = 5111
icliq_sw = 2
iovr_lw = 3
iovr_sw = 3
ico2 = 2
isubc_sw = 2
isubc_lw = 2
isol = 2
lwhtr = .true.
swhtr = .true.
cnvgwd = .true.
shal_cnv = .true.
cal_pre = .false.
redrag = .true.
dspheat = .true.
hybedmf = .false.
satmedmf = .true.
isatmedmf = 1
lheatstrg = .true.
random_clds = .false.
trans_trac = .true.
cnvcld = .true.
imfshalcnv = 2
imfdeepcnv = 2
cdmbgwd = 4.0,0.15,1.0,1.0
prslrd0 = 0.
ivegsrc = 1
isot = 1
lsoil = 4
lsm = 1
iopt_dveg = 1
iopt_crs = 1
iopt_btr = 1
iopt_run = 1
iopt_sfc = 1
iopt_frz = 1
iopt_inf = 1
iopt_rad = 1
iopt_alb = 2
iopt_snf = 4
iopt_tbot = 2
iopt_stc = 1
debug = .false.
oz_phys = .false.
oz_phys_2015 = .true.
nstf_name = 2,1,0,0,0
nst_anl = .true.
psautco = 0.0008,0.0005
prautco = 0.00015,0.00015
lgfdlmprad = .true.
effr_in = .true.
ldiag_ugwp = .false.
do_ugwp = .false.
do_tofd = .true.
do_sppt = .false.
do_shum = .false.
do_skeb = .false.
do_sfcperts = .false.
do_RRTMGP = .true.
active_gases = 'h2o_co2_o3_n2o_ch4_o2'
ngases = 6
rrtmgp_root = '../../ccpp/physics/physics/rte-rrtmgp/'
lw_file_gas = 'rrtmgp/data/rrtmgp-data-lw-g256-2018-12-04.nc'
lw_file_clouds = 'extensions/cloud_optics/rrtmgp-cloud-optics-coeffs-lw.nc'
sw_file_gas = 'rrtmgp/data/rrtmgp-data-sw-g224-2018-12-04.nc'
sw_file_clouds = 'extensions/cloud_optics/rrtmgp-cloud-optics-coeffs-sw.nc'
rrtmgp_cld_optics = 0
rrtmgp_ngauss_ang = 3
rrtmgp_nrghice = 3
/

&gfdl_cloud_microphysics_nml
sedi_transport = .true.
do_sedi_heat = .false.
rad_snow = .true.
rad_graupel = .true.
rad_rain = .true.
const_vi = .F.
const_vs = .F.
const_vg = .F.
const_vr = .F.
vi_max = 1.
vs_max = 2.
vg_max = 12.
vr_max = 12.
qi_lim = 1.
prog_ccn = .false.
do_qa = .false.
fast_sat_adj = .false.
tau_l2v = 225.
tau_v2l = 150.
tau_g2v = 900.
rthresh = 10.e-6 ! This is a key parameter for cloud water
dw_land = 0.16
dw_ocean = 0.10
ql_gen = 1.0e-3
ql_mlt = 1.0e-3
qi0_crt = 8.0E-5
qs0_crt = 1.0e-3
tau_i2s = 1000.
c_psaci = 0.05
c_pgacs = 0.01
rh_inc = 0.30
rh_inr = 0.30
rh_ins = 0.30
ccn_l = 300.
ccn_o = 100.
c_paut = 0.5
c_cracw = 0.8
use_ppm = .false.
use_ccn = .true.
mono_prof = .true.
z_slope_liq = .true.
z_slope_ice = .true.
de_ice = .false.
fix_negative = .true.
icloud_f = 1
mp_time = 150.
reiflag = 2
/

&cires_ugwp_nml
knob_ugwp_solver = 2
knob_ugwp_source = 1,1,0,0
knob_ugwp_wvspec = 1,25,25,25
knob_ugwp_azdir = 2,4,4,4
knob_ugwp_stoch = 0,0,0,0
knob_ugwp_effac = 1,1,1,1
knob_ugwp_doaxyz = 1
knob_ugwp_doheat = 1
knob_ugwp_dokdis = 1
knob_ugwp_ndx4lh = 1
knob_ugwp_version = 0
launch_level = 27
/

88 changes: 88 additions & 0 deletions ccpp/suites/suite_SCM_GFS_v16beta_RRTMGP.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
<?xml version="1.0" encoding="UTF-8"?>

<suite name="SCM_GFS_v16beta_RRTMGP" lib="ccppphys" ver="4">
<group name="time_vary">
<subcycle loop="1">
<scheme>GFS_time_vary_pre</scheme>
<scheme>GFS_rrtmgp_setup</scheme>
<scheme>GFS_rad_time_vary</scheme>
<scheme>GFS_phys_time_vary</scheme>
</subcycle>
</group>
<group name="radiation">
<subcycle loop="1">
<scheme>GFS_suite_interstitial_rad_reset</scheme>
<scheme>GFS_rrtmgp_pre</scheme>
<scheme>GFS_rrtmgp_sw_pre</scheme>
<scheme>rrtmgp_sw_gas_optics</scheme>
<scheme>rrtmgp_sw_aerosol_optics</scheme>
<scheme>rrtmgp_sw_cloud_optics</scheme>
<scheme>rrtmgp_sw_cloud_sampling</scheme>
<scheme>rrtmgp_sw_rte</scheme>
<scheme>GFS_rrtmgp_sw_post</scheme>
<scheme>rrtmgp_lw_pre</scheme>
<scheme>rrtmgp_lw_gas_optics</scheme>
<scheme>rrtmgp_lw_aerosol_optics</scheme>
<scheme>rrtmgp_lw_cloud_optics</scheme>
<scheme>rrtmgp_lw_cloud_sampling</scheme>
<scheme>rrtmgp_lw_rte</scheme>
<scheme>GFS_rrtmgp_lw_post</scheme>
</subcycle>
</group>
<group name="physics">
<subcycle loop="1">
<scheme>GFS_suite_interstitial_phys_reset</scheme>
<scheme>GFS_suite_stateout_reset</scheme>
<scheme>get_prs_fv3</scheme>
<scheme>GFS_suite_interstitial_1</scheme>
<scheme>GFS_surface_generic_pre</scheme>
<scheme>GFS_surface_composites_pre</scheme>
<scheme>dcyc2t3</scheme>
<scheme>GFS_surface_composites_inter</scheme>
<scheme>GFS_suite_interstitial_2</scheme>
</subcycle>
<!-- Surface iteration loop -->
<subcycle loop="2">
<scheme>sfc_diff</scheme>
<scheme>GFS_surface_loop_control_part1</scheme>
<scheme>sfc_nst_pre</scheme>
<scheme>sfc_nst</scheme>
<scheme>sfc_nst_post</scheme>
<scheme>lsm_noah</scheme>
<scheme>sfc_sice</scheme>
<scheme>GFS_surface_loop_control_part2</scheme>
</subcycle>
<!-- End of surface iteration loop -->
<subcycle loop="1">
<scheme>GFS_surface_composites_post</scheme>
<scheme>sfc_diag</scheme>
<scheme>sfc_diag_post</scheme>
<scheme>GFS_surface_generic_post</scheme>
<scheme>GFS_PBL_generic_pre</scheme>
<scheme>satmedmfvdifq</scheme>
<scheme>GFS_PBL_generic_post</scheme>
<scheme>GFS_GWD_generic_pre</scheme>
<scheme>cires_ugwp</scheme>
<scheme>cires_ugwp_post</scheme>
<scheme>GFS_GWD_generic_post</scheme>
<scheme>rayleigh_damp</scheme>
<scheme>GFS_suite_stateout_update</scheme>
<scheme>ozphys_2015</scheme>
<scheme>h2ophys</scheme>
<scheme>GFS_DCNV_generic_pre</scheme>
<scheme>get_phi_fv3</scheme>
<scheme>GFS_suite_interstitial_3</scheme>
<scheme>samfdeepcnv</scheme>
<scheme>GFS_DCNV_generic_post</scheme>
<scheme>GFS_SCNV_generic_pre</scheme>
<scheme>samfshalcnv</scheme>
<scheme>GFS_SCNV_generic_post</scheme>
<scheme>GFS_suite_interstitial_4</scheme>
<scheme>cnvc90</scheme>
<scheme>GFS_MP_generic_pre</scheme>
<scheme>gfdl_cloud_microphys</scheme>
<scheme>GFS_MP_generic_post</scheme>
<scheme>maximum_hourly_diagnostics</scheme>
</subcycle>
</group>
</suite>
49 changes: 49 additions & 0 deletions scm/etc/Apollo_setup_intel.csh
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
#!/bin/tcsh

echo "Setting environment variables for SCM-CCPP on NOAA-ESRL-PSD/Apollo with icc/ifort"

#load the modules in order to compile the GMTB SCM
echo "Loading intel and netcdf modules..."
module purge
module load intel/19.0.1
module load netcdf
module load cmake
module load python
module load py-netcdf4/1.2.7
module load py-numpy/1.13.1
module load py-matplotlib/2.0.2

echo "Setting CC/CXX/FC environment variables"
setenv CC icc
setenv CXX icpc
setenv FC ifort
setenv NETCDF /apps/spack/opt/spack/linux-centos6-x86_64/intel-19.0.1/netcdf-4.6.2-h6ldxvajx4mivywh6t4q64n2ysozaj3j/
setenv BACIO_LIB4 /home/dswales/libs/NCEPlibs/lib/libbacio_4.a
setenv SP_LIBd /home/dswales/libs/NCEPlibs/lib/libsp_v2.0.2_d.a
setenv W3NCO_LIBd /home/dswales/libs/NCEPlibs/lib/libw3nco_d.a


#prepend the anaconda installation to the path so that the anaconda version of python (with its many installed modules) is used; check if the path already contains the right path first
echo "Checking if the path to the anaconda python distribution is in PATH"
echo $PATH | grep '/contrib/ananconda/2.3.0/bin$' >&/dev/null
if ( $? != 0 ) then
echo "anaconda path not found in PATH; prepending anaconda path to PATH environment variable"
setenv PATH /contrib/anaconda/2.3.0/bin:$PATH
else
echo "PATH already has the anaconda path in it"
endif

#install f90nml for the local user

#check to see if f90nml is installed locally
echo "Checking if f90nml python module is installed"
python -c "import f90nml"

if ( $? != 0 ) then
echo "Not found; installing f90nml"
cd etc/scripts/f90nml-0.19
python setup.py install --user
cd ../..
else
echo "f90nml is installed"
endif
24 changes: 0 additions & 24 deletions scm/src/GFS_typedefs.F90
Original file line number Diff line number Diff line change
Expand Up @@ -1850,12 +1850,6 @@ module GFS_typedefs
real (kind=kind_phys), pointer :: cld_resnow(:,:) => null() !< Cloud snow effective radius
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@dustinswales I don't see these same changes in NCAR/fv3atm#46. Were they previously committed there? We try to keep the two GFS_typedefs as close to each other as possible.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@grantfirl
You are correct. I did some cleanup in here to the RRTMGP interstitial fields. I will do the same on the fv3atm side.

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 :: hsw0(:,:) => null() !< RRTMGP shortwave heating-rate (clear-sky)
real (kind=kind_phys), pointer :: hswc(:,:) => null() !< RRTMGP shortwave heating-rate (all-sky)
real (kind=kind_phys), pointer :: hswb(:,:,:) => null() !< RRTMGP shortwave heating-rate (all-sky), by band
real (kind=kind_phys), pointer :: hlw0(:,:) => null() !< RRTMGP longwave heating-rate (clear-sky)
real (kind=kind_phys), pointer :: hlwc(:,:) => null() !< RRTMGP longwave heating-rate (all-sky)
real (kind=kind_phys), pointer :: hlwb(:,:,:) => null() !< RRTMGP longwave heating-rate (all-sky), by band
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
Expand Down Expand Up @@ -5765,12 +5759,6 @@ subroutine interstitial_create (Interstitial, IM, Model)
allocate (Interstitial%cld_resnow (IM, Model%levs))
allocate (Interstitial%cld_rwp (IM, Model%levs))
allocate (Interstitial%cld_rerain (IM, Model%levs))
allocate (Interstitial%hsw0 (IM, Model%levs))
allocate (Interstitial%hswc (IM, Model%levs))
allocate (Interstitial%hswb (IM, Model%levs, Model%rrtmgp_nGptsSW))
allocate (Interstitial%hlw0 (IM, Model%levs))
allocate (Interstitial%hlwc (IM, Model%levs))
allocate (Interstitial%hlwb (IM, Model%levs, Model%rrtmgp_nGptsLW))
allocate (Interstitial%icseed_lw (IM))
allocate (Interstitial%icseed_sw (IM))
allocate (Interstitial%flxprf_lw (IM, Model%levs+1))
Expand Down Expand Up @@ -6133,12 +6121,6 @@ subroutine interstitial_rad_reset (Interstitial, Model)
Interstitial%cld_resnow = clear_val
Interstitial%cld_rwp = clear_val
Interstitial%cld_rerain = clear_val
Interstitial%hsw0 = clear_val
Interstitial%hswc = clear_val
Interstitial%hswb = clear_val
Interstitial%hlw0 = clear_val
Interstitial%hlwc = clear_val
Interstitial%hlwb = clear_val
Interstitial%icseed_lw = clear_val
Interstitial%icseed_sw = clear_val
Interstitial%sfc_emiss_byband = clear_val
Expand Down Expand Up @@ -6727,12 +6709,6 @@ subroutine interstitial_print(Interstitial, Model, mpirank, omprank, blkno)
write (0,*) 'sum(Interstitial%cld_resnow ) = ', sum(Interstitial%cld_resnow )
write (0,*) 'sum(Interstitial%cld_rwp ) = ', sum(Interstitial%cld_rwp )
write (0,*) 'sum(Interstitial%cld_rerain ) = ', sum(Interstitial%cld_rerain )
write (0,*) 'sum(Interstitial%hsw0 ) = ', sum(Interstitial%hsw0 )
write (0,*) 'sum(Interstitial%hswc ) = ', sum(Interstitial%hswc )
write (0,*) 'sum(Interstitial%hswb ) = ', sum(Interstitial%hswb )
write (0,*) 'sum(Interstitial%hlw0 ) = ', sum(Interstitial%hlw0 )
write (0,*) 'sum(Interstitial%hlwc ) = ', sum(Interstitial%hlwc )
write (0,*) 'sum(Interstitial%hlwb ) = ', sum(Interstitial%hlwb )
write (0,*) 'sum(Interstitial%icseed_lw ) = ', sum(Interstitial%icseed_lw )
write (0,*) 'sum(Interstitial%icseed_sw ) = ', sum(Interstitial%icseed_sw )
write (0,*) 'sum(Interstitial%fluxlwUP_allsky ) = ', sum(Interstitial%fluxlwUP_allsky )
Expand Down
Loading