diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 00000000..257a9e2d
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,8 @@
+version: 2
+updates:
+ # Maintain dependencies for GitHub Actions
+ - package-ecosystem: "github-actions"
+ directory: "/"
+ schedule:
+ interval: "daily"
+ target-branch: "main"
diff --git a/.github/workflows/build_and_push_docker_latest.yml b/.github/workflows/build_and_push_docker_latest.yml
index 4f04b7ec..639c761f 100644
--- a/.github/workflows/build_and_push_docker_latest.yml
+++ b/.github/workflows/build_and_push_docker_latest.yml
@@ -25,7 +25,7 @@ jobs:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Push latest tag
- uses: docker/build-push-action@v5
+ uses: docker/build-push-action@v6
with:
context: .
file: docker/Dockerfile
diff --git a/.github/workflows/ci_build_scm_ubuntu_22.04.yml b/.github/workflows/ci_build_scm_ubuntu_22.04.yml
index e89dcb50..115b5836 100644
--- a/.github/workflows/ci_build_scm_ubuntu_22.04.yml
+++ b/.github/workflows/ci_build_scm_ubuntu_22.04.yml
@@ -21,7 +21,7 @@ jobs:
sp_ROOT: /home/runner/NCEPLIBS-sp
w3emc_ROOT: /home/runner/myw3emc
SCM_ROOT: /home/runner/work/ccpp-scm/ccpp-scm
- suites: SCM_GFS_v15p2,SCM_GFS_v16,SCM_GFS_v17_p8,SCM_HRRR,SCM_RRFS_v1beta,SCM_RAP,SCM_WoFS_v0,SCM_GFS_v15p2_ps,SCM_GFS_v16_ps,SCM_GFS_v17_p8_ps,SCM_HRRR_ps,SCM_RRFS_v1beta_ps,SCM_RAP_ps,SCM_WoFS_v0_ps
+ suites: SCM_GFS_v15p2,SCM_GFS_v16,SCM_GFS_v16_RRTMGP,SCM_GFS_v17_p8,SCM_HRRR,SCM_RRFS_v1beta,SCM_RAP,SCM_WoFS_v0,SCM_GFS_v15p2_ps,SCM_GFS_v16_ps,SCM_GFS_v16_RRTMGP_ps,SCM_GFS_v17_p8_ps,SCM_HRRR_ps,SCM_RRFS_v1beta_ps,SCM_RAP_ps,SCM_WoFS_v0_ps,SCM_HRRR_gf,SCM_HRRR_gf_ps
# Workflow steps
steps:
@@ -29,7 +29,7 @@ jobs:
# Initial
#######################################################################################
- name: Checkout SCM code (into /home/runner/work/ccpp-scm/)
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
- name: Initialize submodules
run: git submodule update --init --recursive
@@ -38,7 +38,7 @@ jobs:
# Python setup
#######################################################################################
- name: Set up Python
- uses: actions/setup-python@v3
+ uses: actions/setup-python@v5
with:
python-version: ${{matrix.py-version}}
@@ -70,7 +70,7 @@ jobs:
- name: Cache bacio library v2.4.1
id: cache-bacio-fortran
- uses: actions/cache@v3
+ uses: actions/cache@v4
with:
path: /home/runner/bacio
key: cache-bacio-fortran-${{matrix.fortran-compiler}}-key
@@ -87,7 +87,7 @@ jobs:
- name: Cache SP-library v2.3.3
id: cache-sp-fortran
- uses: actions/cache@v3
+ uses: actions/cache@v4
with:
path: /home/runner/NCEPLIBS-sp
key: cache-sp-fortran-${{matrix.fortran-compiler}}-key
@@ -104,7 +104,7 @@ jobs:
- name: Cache w3emc library v2.9.2
id: cache-w3emc-fortran
- uses: actions/cache@v3
+ uses: actions/cache@v4
with:
path: /home/runner/myw3emc
key: cache-w3emc-fortran-${{matrix.fortran-compiler}}-key
@@ -126,7 +126,7 @@ jobs:
- name: Cache NetCDF Fortran library
id: cache-netcdf-fortran
- uses: actions/cache@v3
+ uses: actions/cache@v4
with:
path: /home/runner/netcdf-fortran
key: cache-netcdf-fortran-${{matrix.fortran-compiler}}-key
diff --git a/.github/workflows/ci_run_scm_DEPHY.yml b/.github/workflows/ci_run_scm_DEPHY.yml
index 326eeb75..52a9993e 100644
--- a/.github/workflows/ci_run_scm_DEPHY.yml
+++ b/.github/workflows/ci_run_scm_DEPHY.yml
@@ -10,6 +10,7 @@ jobs:
strategy:
matrix:
fortran-compiler: [gfortran-12]
+ build-type: [Release, Debug]
py-version: [3.7.13]
# Environmental variables
@@ -28,7 +29,7 @@ jobs:
# Initial
#######################################################################################
- name: Checkout SCM code (into /home/runner/work/ccpp-scm/)
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
- name: Initialize submodules
run: git submodule update --init --recursive
@@ -37,7 +38,7 @@ jobs:
# Python setup
#######################################################################################
- name: Set up Python
- uses: actions/setup-python@v3
+ uses: actions/setup-python@v5
with:
python-version: ${{matrix.py-version}}
@@ -68,7 +69,7 @@ jobs:
- name: Cache bacio library v2.4.1
id: cache-bacio-fortran
- uses: actions/cache@v3
+ uses: actions/cache@v4
with:
path: /home/runner/bacio
key: cache-bacio-fortran-${{matrix.fortran-compiler}}-key
@@ -85,7 +86,7 @@ jobs:
- name: Cache SP-library v2.3.3
id: cache-sp-fortran
- uses: actions/cache@v3
+ uses: actions/cache@v4
with:
path: /home/runner/NCEPLIBS-sp
key: cache-sp-fortran-${{matrix.fortran-compiler}}-key
@@ -102,7 +103,7 @@ jobs:
- name: Cache w3emc library v2.9.2
id: cache-w3emc-fortran
- uses: actions/cache@v3
+ uses: actions/cache@v4
with:
path: /home/runner/myw3emc
key: cache-w3emc-fortran-${{matrix.fortran-compiler}}-key
@@ -122,7 +123,7 @@ jobs:
- name: Cache NetCDF Fortran library v4.4.4
id: cache-netcdf-fortran
- uses: actions/cache@v3
+ uses: actions/cache@v4
with:
path: /home/runner/netcdf-fortran
key: cache-netcdf-fortran-${{matrix.fortran-compiler}}-key
@@ -150,13 +151,21 @@ jobs:
cd ${SCM_ROOT}
./contrib/get_all_static_data.sh
./contrib/get_thompson_tables.sh
-
- - name: Configure build with CMake
+
+ - name: Configure build with CMake (Release)
+ if: contains(matrix.build-type, 'Release')
run: |
cd ${SCM_ROOT}/scm
mkdir bin && cd bin
cmake -DCCPP_SUITES=${suites} ../src
+ - name: Configure build with CMake (Debug)
+ if: contains(matrix.build-type, 'Debug')
+ run: |
+ cd ${SCM_ROOT}/scm
+ mkdir bin && cd bin
+ cmake -DCCPP_SUITES=${suites} -DCMAKE_BUILD_TYPE=Debug ../src
+
- name: Build SCM
run: |
cd ${SCM_ROOT}/scm/bin
diff --git a/.github/workflows/ci_run_scm_rts.yml b/.github/workflows/ci_run_scm_rts.yml
index 89db8a0a..b23c0342 100644
--- a/.github/workflows/ci_run_scm_rts.yml
+++ b/.github/workflows/ci_run_scm_rts.yml
@@ -1,3 +1,4 @@
+
name: CI test to build and run SCM regression tests
on: [pull_request, workflow_dispatch]
@@ -21,8 +22,8 @@ jobs:
sp_ROOT: /home/runner/NCEPLIBS-sp
w3emc_ROOT: /home/runner/myw3emc
SCM_ROOT: /home/runner/work/ccpp-scm/ccpp-scm
- suites: SCM_GFS_v15p2,SCM_GFS_v16,SCM_GFS_v17_p8,SCM_HRRR,SCM_RRFS_v1beta,SCM_RAP,SCM_WoFS_v0,SCM_RRFS_v1,SCM_GFS_v17_HR3,SCM_GFS_v17_HR3_RRTMGP
- suites_ps: SCM_GFS_v15p2_ps,SCM_GFS_v16_ps,SCM_GFS_v17_p8_ps,SCM_HRRR_ps,SCM_RRFS_v1beta_ps,SCM_RAP_ps,SCM_WoFS_v0_ps,SCM_RRFS_v1_ps,SCM_GFS_v17_HR3_ps,SCM_GFS_v17_HR3_RRTMGP_ps
+ suites: SCM_GFS_v15p2,SCM_GFS_v16,SCM_GFS_v17_p8,SCM_HRRR,SCM_RRFS_v1beta,SCM_RAP,SCM_WoFS_v0,SCM_HRRR_gf,SCM_GFS_v17_p8_ugwpv1,SCM_GFS_v16_RRTMGP
+ suites_ps: SCM_GFS_v15p2_ps,SCM_GFS_v16_ps,SCM_GFS_v17_p8_ps,SCM_HRRR_ps,SCM_RRFS_v1beta_ps,SCM_RAP_ps,SCM_WoFS_v0_ps,SCM_HRRR_gf_ps,SCM_GFS_v17_p8_ugwpv1_ps,SCM_GFS_v16_RRTMGP_ps
dir_rt: /home/runner/work/ccpp-scm/ccpp-scm/test/artifact-${{matrix.build-type}}
dir_bl: /home/runner/work/ccpp-scm/ccpp-scm/test/BL-${{matrix.build-type}}
@@ -32,7 +33,7 @@ jobs:
# Initial
#######################################################################################
- name: Checkout SCM code (into /home/runner/work/ccpp-scm/)
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
- name: Initialize submodules
run: git submodule update --init --recursive
@@ -41,7 +42,7 @@ jobs:
# Python setup
#######################################################################################
- name: Set up Python
- uses: actions/setup-python@v3
+ uses: actions/setup-python@v5
with:
python-version: ${{matrix.py-version}}
@@ -74,7 +75,7 @@ jobs:
- name: Cache bacio library v2.4.1
id: cache-bacio-fortran
- uses: actions/cache@v3
+ uses: actions/cache@v4
with:
path: /home/runner/bacio
key: cache-bacio-fortran-${{matrix.fortran-compiler}}-key
@@ -91,7 +92,7 @@ jobs:
- name: Cache SP-library v2.3.3
id: cache-sp-fortran
- uses: actions/cache@v3
+ uses: actions/cache@v4
with:
path: /home/runner/NCEPLIBS-sp
key: cache-sp-fortran-${{matrix.fortran-compiler}}-key
@@ -108,7 +109,7 @@ jobs:
- name: Cache w3emc library v2.9.2
id: cache-w3emc-fortran
- uses: actions/cache@v3
+ uses: actions/cache@v4
with:
path: /home/runner/myw3emc
key: cache-w3emc-fortran-${{matrix.fortran-compiler}}-key
@@ -128,7 +129,7 @@ jobs:
- name: Cache NetCDF Fortran library
id: cache-netcdf-fortran
- uses: actions/cache@v3
+ uses: actions/cache@v4
with:
path: /home/runner/netcdf-fortran
key: cache-netcdf-fortran-${{matrix.fortran-compiler}}-key
@@ -208,7 +209,7 @@ jobs:
- name: Download SCM RT baselines
run: |
cd ${dir_bl}
- wget https://dtcenter.ucar.edu/ccpp/users/rt/rt-baselines-${{matrix.build-type}}.zip
+ wget https://dtcenter.ucar.edu/ccpp/rt/rt-baselines-${{matrix.build-type}}.zip
unzip rt-baselines-${{matrix.build-type}}.zip
- name: Compare SCM RT output to baselines
@@ -217,13 +218,13 @@ jobs:
./cmp_rt2bl.py --dir_rt ${dir_rt} --dir_bl ${dir_bl}
- name: Upload plots of SCM Baselines/RTs as GitHub Artifact.
- uses: actions/upload-artifact@v2
+ uses: actions/upload-artifact@v4
with:
name: rt-plots-${{matrix.build-type}}
path: /home/runner/work/ccpp-scm/ccpp-scm/test/scm_rt_out
- name: Upload SCM RTs as GitHub Artifact
- uses: actions/upload-artifact@v2
+ uses: actions/upload-artifact@v4
with:
name: rt-baselines-${{matrix.build-type}}
path: /home/runner/work/ccpp-scm/ccpp-scm/test/artifact-${{matrix.build-type}}
diff --git a/.github/workflows/ci_run_scm_ufs_replay.yml b/.github/workflows/ci_run_scm_ufs_replay.yml
index 0bd6a161..508d3c49 100644
--- a/.github/workflows/ci_run_scm_ufs_replay.yml
+++ b/.github/workflows/ci_run_scm_ufs_replay.yml
@@ -23,7 +23,7 @@ jobs:
#######################################################################################
- name: Checkout SCM.
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
- name: Initialize SCM submodules.
run: git submodule update --init --recursive
@@ -32,13 +32,13 @@ jobs:
run: sudo apt-get update
- name: Cache conda
- uses: actions/cache@v3
+ uses: actions/cache@v4
with:
path: ~/conda_pkgs_dir
key: conda-pkgs
- name: Setup python.
- uses: conda-incubator/setup-miniconda@v2
+ uses: conda-incubator/setup-miniconda@v3
with:
activate-environment: env_ufsreplay
environment-file: environment-ufsreplay.yml
@@ -51,7 +51,7 @@ jobs:
#######################################################################################
- name: Cache UWM regression test output.
- uses: actions/cache@v3
+ uses: actions/cache@v4
with:
path: ${dir_rt_cache}
key: ufs-rt-files
@@ -72,4 +72,4 @@ jobs:
#######################################################################################
# Done
- #######################################################################################
\ No newline at end of file
+ #######################################################################################
diff --git a/.github/workflows/ci_scm_ccpp_prebuild.yml b/.github/workflows/ci_scm_ccpp_prebuild.yml
index bb9e3bd1..fbcaa169 100644
--- a/.github/workflows/ci_scm_ccpp_prebuild.yml
+++ b/.github/workflows/ci_scm_ccpp_prebuild.yml
@@ -11,13 +11,13 @@ jobs:
steps:
- name: Checkout code
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
- name: Initialize submodules
run: git submodule update --init --recursive
-
+
- name: Set up Python 3.8.5
- uses: actions/setup-python@v3
+ uses: actions/setup-python@v5
with:
python-version: 3.8.5
diff --git a/.github/workflows/ci_test_docker.yml b/.github/workflows/ci_test_docker.yml
index 3406d832..e6508a00 100644
--- a/.github/workflows/ci_test_docker.yml
+++ b/.github/workflows/ci_test_docker.yml
@@ -16,7 +16,7 @@ jobs:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build and export test tag
- uses: docker/build-push-action@v5
+ uses: docker/build-push-action@v6
with:
context: .
file: docker/Dockerfile
diff --git a/ccpp/framework b/ccpp/framework
index 011db4f8..0f823272 160000
--- a/ccpp/framework
+++ b/ccpp/framework
@@ -1 +1 @@
-Subproject commit 011db4f80a02cba6d65958ace56e8efb197be62b
+Subproject commit 0f8232724975c13289cad390c9a71fa2c6a9bff4
diff --git a/ccpp/physics b/ccpp/physics
index 76cf93fc..160aa035 160000
--- a/ccpp/physics
+++ b/ccpp/physics
@@ -1 +1 @@
-Subproject commit 76cf93fc26d7b843f6d89ed0ba4799fd5f2c21f7
+Subproject commit 160aa0359cf28b7f2f05ec23f3ac2fed59afad8b
diff --git a/ccpp/physics_namelists/input_GFS_v17_HR3_RRTMGP.nml b/ccpp/physics_namelists/input_GFS_v17_HR3_RRTMGP.nml
deleted file mode 100644
index f7cf9097..00000000
--- a/ccpp/physics_namelists/input_GFS_v17_HR3_RRTMGP.nml
+++ /dev/null
@@ -1,171 +0,0 @@
-&gfs_physics_nml
- fhzero = 6
- h2o_phys = .true.
- ldiag3d = .true.
- qdiag3d = .true.
- print_diff_pgr = .false.
- fhcyc = 24
- use_ufo = .true.
- pre_rad = .false.
- imp_physics = 8
- iovr = 3
- ltaerosol = .false.
- lradar = .true.
- ttendlim = -999
- dt_inner = 150
- sedi_semi = .true.
- decfl = 10
- oz_phys = .false.
- oz_phys_2015 = .true.
- lsoil_lsm = 4
- do_mynnedmf = .false.
- do_mynnsfclay = .false.
- icloud_bl = 1
- bl_mynn_edmf = 1
- bl_mynn_tkeadvect = .true.
- bl_mynn_edmf_mom = 1
- do_ugwp = .false.
- do_tofd = .false.
- gwd_opt = 2
- do_ugwp_v0 = .false.
- do_ugwp_v1 = .true.
- do_ugwp_v0_orog_only = .false.
- do_ugwp_v0_nst_only = .false.
- do_gsl_drag_ls_bl = .true.
- do_gsl_drag_ss = .true.
- do_gsl_drag_tofd = .true.
- do_ugwp_v1_orog_only = .false.
- min_lakeice = 0.15
- min_seaice = 1.0e-6
- use_cice_alb = .true.
- pdfcld = .false.
- fhswr = 1200.
- fhlwr = 1200.
- progsigma = .true.
- betascu = 8.0
- betamcu = 1.0
- betadcu = 2.0
- ialb = 2
- iems = 2
- iaer = 1011
- icliq_sw = 2
- 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.
- lseaspray = .true.
- random_clds = .false.
- trans_trac = .true.
- cnvcld = .true.
- imfshalcnv = 2
- imfdeepcnv = 2
- ras = .false.
- cdmbgwd = 2.5,7.5,1.0,1.0
- prslrd0 = 0.
- ivegsrc = 1
- isot = 1
- lsoil = 4
- lsm = 2
- iopt_dveg = 4
- iopt_crs = 2
- iopt_btr = 1
- iopt_run = 1
- iopt_sfc = 3
- iopt_trs = 2
- iopt_frz = 1
- iopt_inf = 1
- iopt_rad = 3
- iopt_alb = 1
- iopt_snf = 4
- iopt_tbot = 2
- iopt_stc = 3
- debug = .false.
- nstf_name = 2,0,0,0,0
- nst_anl = .true.
- psautco = 0.0008,0.0005
- prautco = 0.00015,0.00015
- lgfdlmprad = .false.
- effr_in = .true.
- ldiag_ugwp = .false.
- do_sppt = .false.
- do_shum = .false.
- do_skeb = .false.
- do_RRTMGP = .true.
- doGP_cldoptics_LUT = .true.
- doGP_lwscat = .true.
- active_gases = 'h2o_co2_o3_n2o_ch4_o2'
- ngases = 6
- rrtmgp_root = '../../ccpp/physics/physics/Radiation/RRTMGP/rte-rrtmgp/'
- lw_file_gas = 'rrtmgp/data/rrtmgp-data-lw-g128-210809.nc'
- lw_file_clouds = 'extensions/cloud_optics/rrtmgp-cloud-optics-coeffs-lw.nc'
- sw_file_gas = 'rrtmgp/data/rrtmgp-data-sw-g112-210809.nc'
- sw_file_clouds = 'extensions/cloud_optics/rrtmgp-cloud-optics-coeffs-reordered-sw.nc'
- rrtmgp_nGptsSW = 112
- rrtmgp_nGptsLW = 128
- rrtmgp_nBandsLW = 16
- rrtmgp_nBandsSW = 14
- frac_grid = .true.
- cplchm = .false.
- cplflx = .false.
- cplice = .false.
- cplwav = .false.
- cplwav2atm = .false.
- do_ca = .false.
- ca_global = .false.
- ca_sgs = .true.
- nca = 1
- ncells = 5
- nlives = 12
- nseed = 1
- nfracseed = 0.5
- nthresh = 18
- ca_trigger = .true.
- nspinup = 1
- iseed_ca = 1448371824
-/
-
-&cires_ugwp_nml
- knob_ugwp_solver = 2
- knob_ugwp_version = 1
- 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 = 2
- knob_ugwp_ndx4lh = 4
- knob_ugwp_palaunch = 275.0e2
- knob_ugwp_nslope = 1
- knob_ugwp_lzmax = 15.750e3
- knob_ugwp_lzmin = 0.75e3
- knob_ugwp_lzstar = 2.0e3
- knob_ugwp_taumin = 0.25e-3
- knob_ugwp_tauamp = 0.5e-3
- knob_ugwp_lhmet = 200.0e3
- knob_ugwp_orosolv = 'pss-1986'
-/
-
-&ccpp_suite_sim_nml
- suite_sim_file = ''
- nprc_sim = 7
- prc_LWRAD_cfg = 0, 0, 1
- prc_SWRAD_cfg = 0, 0, 2
- prc_PBL_cfg = 1, 0, 3
- prc_GWD_cfg = 1, 0, 4
- prc_SCNV_cfg = 1, 1, 5
- prc_DCNV_cfg = 1, 1, 6
- prc_cldMP_cfg = 1, 1, 7
-/
diff --git a/ccpp/physics_namelists/input_GFS_v17_HR3_RRTMGP_ps.nml b/ccpp/physics_namelists/input_GFS_v17_HR3_RRTMGP_ps.nml
deleted file mode 100644
index c562957f..00000000
--- a/ccpp/physics_namelists/input_GFS_v17_HR3_RRTMGP_ps.nml
+++ /dev/null
@@ -1,171 +0,0 @@
-&gfs_physics_nml
- fhzero = 6
- h2o_phys = .true.
- ldiag3d = .true.
- qdiag3d = .true.
- print_diff_pgr = .false.
- fhcyc = 24
- use_ufo = .true.
- pre_rad = .false.
- imp_physics = 8
- iovr = 3
- ltaerosol = .False.
- lradar = .true.
- ttendlim = -999
- dt_inner = 150
- sedi_semi = .true.
- decfl = 10
- oz_phys = .false.
- oz_phys_2015 = .true.
- lsoil_lsm = 4
- do_mynnedmf = .false.
- do_mynnsfclay = .false.
- icloud_bl = 1
- bl_mynn_edmf = 1
- bl_mynn_tkeadvect = .true.
- bl_mynn_edmf_mom = 1
- do_ugwp = .false.
- do_tofd = .false.
- gwd_opt = 2
- do_ugwp_v0 = .false.
- do_ugwp_v1 = .true.
- do_ugwp_v0_orog_only = .false.
- do_ugwp_v0_nst_only = .false.
- do_gsl_drag_ls_bl = .true.
- do_gsl_drag_ss = .true.
- do_gsl_drag_tofd = .true.
- do_ugwp_v1_orog_only = .false.
- min_lakeice = 0.15
- min_seaice = 1.0e-6
- use_cice_alb = .true.
- pdfcld = .false.
- fhswr = 1200.
- fhlwr = 1200.
- progsigma = .true.
- betascu = 8.0
- betamcu = 1.0
- betadcu = 2.0
- ialb = 2
- iems = 2
- iaer = 1011
- icliq_sw = 2
- 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 = .false.
- lseaspray = .true.
- random_clds = .false.
- trans_trac = .true.
- cnvcld = .true.
- imfshalcnv = 2
- imfdeepcnv = 2
- ras = .false.
- cdmbgwd = 2.5,7.5,1.0,1.0
- prslrd0 = 0.
- ivegsrc = 1
- isot = 1
- lsoil = 4
- lsm = 2
- iopt_dveg = 4
- iopt_crs = 2
- iopt_btr = 1
- iopt_run = 1
- iopt_sfc = 3
- iopt_trs = 2
- iopt_frz = 1
- iopt_inf = 1
- iopt_rad = 3
- iopt_alb = 1
- iopt_snf = 4
- iopt_tbot = 2
- iopt_stc = 3
- debug = .false.
- nstf_name = 2,0,0,0,0
- nst_anl = .true.
- psautco = 0.0008,0.0005
- prautco = 0.00015,0.00015
- lgfdlmprad = .false.
- effr_in = .true.
- ldiag_ugwp = .false.
- do_sppt = .false.
- do_shum = .false.
- do_skeb = .false.
- do_RRTMGP = .true.
- doGP_cldoptics_LUT = .true.
- doGP_lwscat = .true.
- active_gases = 'h2o_co2_o3_n2o_ch4_o2'
- ngases = 6
- rrtmgp_root = '../../ccpp/physics/physics/Radiation/RRTMGP/rte-rrtmgp/'
- lw_file_gas = 'rrtmgp/data/rrtmgp-data-lw-g128-210809.nc'
- lw_file_clouds = 'extensions/cloud_optics/rrtmgp-cloud-optics-coeffs-lw.nc'
- sw_file_gas = 'rrtmgp/data/rrtmgp-data-sw-g112-210809.nc'
- sw_file_clouds = 'extensions/cloud_optics/rrtmgp-cloud-optics-coeffs-reordered-sw.nc'
- rrtmgp_nGptsSW = 112
- rrtmgp_nGptsLW = 128
- rrtmgp_nBandsLW = 16
- rrtmgp_nBandsSW = 14
- frac_grid = .true.
- cplchm = .false.
- cplflx = .false.
- cplice = .false.
- cplwav = .false.
- cplwav2atm = .false.
- do_ca = .false.
- ca_global = .false.
- ca_sgs = .true.
- nca = 1
- ncells = 5
- nlives = 12
- nseed = 1
- nfracseed = 0.5
- nthresh = 18
- ca_trigger = .true.
- nspinup = 1
- iseed_ca = 1448371824
-/
-
-&cires_ugwp_nml
- knob_ugwp_solver = 2
- knob_ugwp_version = 1
- 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 = 2
- knob_ugwp_ndx4lh = 4
- knob_ugwp_palaunch = 275.0e2
- knob_ugwp_nslope = 1
- knob_ugwp_lzmax = 15.750e3
- knob_ugwp_lzmin = 0.75e3
- knob_ugwp_lzstar = 2.0e3
- knob_ugwp_taumin = 0.25e-3
- knob_ugwp_tauamp = 0.5e-3
- knob_ugwp_lhmet = 200.0e3
- knob_ugwp_orosolv = 'pss-1986'
-/
-
-&ccpp_suite_sim_nml
- suite_sim_file = ''
- nprc_sim = 7
- prc_LWRAD_cfg = 0, 0, 1
- prc_SWRAD_cfg = 0, 0, 2
- prc_PBL_cfg = 1, 0, 3
- prc_GWD_cfg = 1, 0, 4
- prc_SCNV_cfg = 1, 1, 5
- prc_DCNV_cfg = 1, 1, 6
- prc_cldMP_cfg = 1, 1, 7
-/
diff --git a/ccpp/physics_namelists/input_GFS_v17_HR3.nml b/ccpp/physics_namelists/input_GFS_v17_p8_ugwpv1.nml
similarity index 100%
rename from ccpp/physics_namelists/input_GFS_v17_HR3.nml
rename to ccpp/physics_namelists/input_GFS_v17_p8_ugwpv1.nml
diff --git a/ccpp/physics_namelists/input_GFS_v17_HR3_ps.nml b/ccpp/physics_namelists/input_GFS_v17_p8_ugwpv1_ps.nml
similarity index 100%
rename from ccpp/physics_namelists/input_GFS_v17_HR3_ps.nml
rename to ccpp/physics_namelists/input_GFS_v17_p8_ugwpv1_ps.nml
diff --git a/ccpp/physics_namelists/input_RRFS_v1.nml b/ccpp/physics_namelists/input_HRRR_gf.nml
similarity index 100%
rename from ccpp/physics_namelists/input_RRFS_v1.nml
rename to ccpp/physics_namelists/input_HRRR_gf.nml
diff --git a/ccpp/suites/suite_SCM_GFS_v17_HR3_RRTMGP.xml b/ccpp/suites/suite_SCM_GFS_v17_HR3_RRTMGP.xml
deleted file mode 100644
index 09bcbfa6..00000000
--- a/ccpp/suites/suite_SCM_GFS_v17_HR3_RRTMGP.xml
+++ /dev/null
@@ -1,89 +0,0 @@
-
-
-
-
-
-
- GFS_time_vary_pre
- GFS_rrtmgp_setup
- GFS_rad_time_vary
- GFS_phys_time_vary
-
-
-
-
- GFS_suite_interstitial_rad_reset
- GFS_rrtmgp_pre
- GFS_radiation_surface
- GFS_rrtmgp_cloud_mp
- GFS_rrtmgp_cloud_overlap
- GFS_cloud_diagnostics
- rrtmgp_aerosol_optics
- rrtmgp_sw_main
- rrtmgp_lw_main
- GFS_rrtmgp_post
-
-
-
-
- GFS_suite_interstitial_phys_reset
- GFS_suite_stateout_reset
- get_prs_fv3
- GFS_suite_interstitial_1
- GFS_surface_generic_pre
- GFS_surface_composites_pre
- dcyc2t3
- GFS_surface_composites_inter
- GFS_suite_interstitial_2
-
-
-
- sfc_diff
- GFS_surface_loop_control_part1
- sfc_nst_pre
- sfc_nst
- sfc_nst_post
- noahmpdrv
- sfc_sice
- GFS_surface_loop_control_part2
-
-
-
- GFS_surface_composites_post
- sfc_diag
- sfc_diag_post
- GFS_surface_generic_post
- GFS_PBL_generic_pre
- satmedmfvdifq
- GFS_PBL_generic_post
- GFS_GWD_generic_pre
- ugwpv1_gsldrag
- ugwpv1_gsldrag_post
- GFS_GWD_generic_post
- GFS_suite_stateout_update
- h2ophys
- get_phi_fv3
- GFS_suite_interstitial_3
- GFS_DCNV_generic_pre
- samfdeepcnv
- GFS_DCNV_generic_post
- GFS_SCNV_generic_pre
- samfshalcnv
- GFS_SCNV_generic_post
- GFS_suite_interstitial_4
- cnvc90
- GFS_MP_generic_pre
- mp_thompson_pre
-
-
- mp_thompson
-
-
- mp_thompson_post
- GFS_MP_generic_post
- maximum_hourly_diagnostics
- GFS_physics_post
-
-
-
-
diff --git a/ccpp/suites/suite_SCM_GFS_v17_HR3_RRTMGP_ps.xml b/ccpp/suites/suite_SCM_GFS_v17_HR3_RRTMGP_ps.xml
deleted file mode 100644
index 0ba77dff..00000000
--- a/ccpp/suites/suite_SCM_GFS_v17_HR3_RRTMGP_ps.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-
-
-
-
-
-
- GFS_time_vary_pre
- GFS_rrtmgp_setup
- GFS_rad_time_vary
- GFS_phys_time_vary
-
-
-
-
- GFS_suite_interstitial_rad_reset
- GFS_rrtmgp_pre
- GFS_radiation_surface
- GFS_rrtmgp_cloud_mp
- GFS_rrtmgp_cloud_overlap
- GFS_cloud_diagnostics
- rrtmgp_aerosol_optics
- rrtmgp_sw_main
- rrtmgp_lw_main
- GFS_rrtmgp_post
-
-
-
-
- GFS_suite_interstitial_phys_reset
- GFS_suite_stateout_reset
- get_prs_fv3
- GFS_suite_interstitial_1
- GFS_surface_generic_pre
- scm_sfc_flux_spec
- dcyc2t3
- GFS_suite_interstitial_2
- GFS_PBL_generic_pre
- satmedmfvdifq
- GFS_PBL_generic_post
- GFS_GWD_generic_pre
- ugwpv1_gsldrag
- ugwpv1_gsldrag_post
- GFS_GWD_generic_post
- GFS_suite_stateout_update
- h2ophys
- get_phi_fv3
- GFS_suite_interstitial_3
- GFS_DCNV_generic_pre
- samfdeepcnv
- GFS_DCNV_generic_post
- GFS_SCNV_generic_pre
- samfshalcnv
- GFS_SCNV_generic_post
- GFS_suite_interstitial_4
- cnvc90
- GFS_MP_generic_pre
- mp_thompson_pre
-
-
- mp_thompson
-
-
- mp_thompson_post
- GFS_MP_generic_post
- maximum_hourly_diagnostics
- GFS_physics_post
-
-
-
-
diff --git a/ccpp/suites/suite_SCM_GFS_v17_HR3.xml b/ccpp/suites/suite_SCM_GFS_v17_p8_ugwpv1.xml
similarity index 98%
rename from ccpp/suites/suite_SCM_GFS_v17_HR3.xml
rename to ccpp/suites/suite_SCM_GFS_v17_p8_ugwpv1.xml
index 92effe13..865fe47f 100644
--- a/ccpp/suites/suite_SCM_GFS_v17_HR3.xml
+++ b/ccpp/suites/suite_SCM_GFS_v17_p8_ugwpv1.xml
@@ -1,6 +1,6 @@
-
+
diff --git a/ccpp/suites/suite_SCM_GFS_v17_HR3_ps.xml b/ccpp/suites/suite_SCM_GFS_v17_p8_ugwpv1_ps.xml
similarity index 97%
rename from ccpp/suites/suite_SCM_GFS_v17_HR3_ps.xml
rename to ccpp/suites/suite_SCM_GFS_v17_p8_ugwpv1_ps.xml
index d9e83393..cd62b628 100644
--- a/ccpp/suites/suite_SCM_GFS_v17_HR3_ps.xml
+++ b/ccpp/suites/suite_SCM_GFS_v17_p8_ugwpv1_ps.xml
@@ -1,6 +1,6 @@
-
+
diff --git a/ccpp/suites/suite_SCM_RRFS_v1.xml b/ccpp/suites/suite_SCM_HRRR_gf.xml
similarity index 98%
rename from ccpp/suites/suite_SCM_RRFS_v1.xml
rename to ccpp/suites/suite_SCM_HRRR_gf.xml
index ef1c7315..f80ab4c7 100644
--- a/ccpp/suites/suite_SCM_RRFS_v1.xml
+++ b/ccpp/suites/suite_SCM_HRRR_gf.xml
@@ -1,6 +1,6 @@
-
+
GFS_time_vary_pre
@@ -76,4 +76,4 @@
GFS_physics_post
-
\ No newline at end of file
+
diff --git a/ccpp/suites/suite_SCM_RRFS_v1_ps.xml b/ccpp/suites/suite_SCM_HRRR_gf_ps.xml
similarity index 97%
rename from ccpp/suites/suite_SCM_RRFS_v1_ps.xml
rename to ccpp/suites/suite_SCM_HRRR_gf_ps.xml
index 91918a6b..3fc25cc5 100644
--- a/ccpp/suites/suite_SCM_RRFS_v1_ps.xml
+++ b/ccpp/suites/suite_SCM_HRRR_gf_ps.xml
@@ -1,6 +1,6 @@
-
+
GFS_time_vary_pre
@@ -60,4 +60,4 @@
GFS_physics_post
-
\ No newline at end of file
+
diff --git a/scm/doc/TechGuide/chap_quick.rst b/scm/doc/TechGuide/chap_quick.rst
index f1524079..78a8b715 100644
--- a/scm/doc/TechGuide/chap_quick.rst
+++ b/scm/doc/TechGuide/chap_quick.rst
@@ -448,7 +448,7 @@ contents in the directory ``scm/data``. Similarly, do the same for
``thompson_tables.tar.gz`` and ``MG_INCCN_data.tar.gz`` and extract
to ``scm/data/physics_input_data/``.
-New with the SCM v7 release, static data is available for running cases with GOCART climatological aerosols (where the value of ``iaer`` in the ``&gfs_physics_nml`` namelist starts with 1; see the `CCPP Scientific Documentation `__ for more information); one example of this is with the default namelist settings for the GFS_v17_HR3 scheme. This dataset is very large (~12 GB), so it is recommended only to download it if you will be using it.
+New with the SCM v7 release, static data is available for running cases with GOCART climatological aerosols (where the value of ``iaer`` in the ``&gfs_physics_nml`` namelist starts with 1; see the `CCPP Scientific Documentation `__ for more information); one example of this is with the default namelist settings for the GFS_v17_p8_ugwpv1 suite. This dataset is very large (~12 GB), so it is recommended only to download it if you will be using it.
.. code:: bash
diff --git a/scm/etc/modules/hera_gnu.lua b/scm/etc/modules/hera_gnu.lua
index 0e28df2d..10d0c82f 100644
--- a/scm/etc/modules/hera_gnu.lua
+++ b/scm/etc/modules/hera_gnu.lua
@@ -5,24 +5,23 @@ the NOAA RDHPC machine Hera using GNU 9.2.0
whatis([===[Loads libraries needed for building the CCPP SCM on Hera with GNU compilers ]===])
-prepend_path("MODULEPATH", "/scratch1/NCEPDEV/jcsda/jedipara/spack-stack/modulefiles")
-load("cmake/3.28.1")
-load("miniconda/3.9.12")
+prepend_path("MODULEPATH", "/scratch2/NCEPDEV/stmp1/role.epic/installs/gnu/modulefiles")
+prepend_path("MODULEPATH", "/scratch2/NCEPDEV/stmp1/role.epic/installs/openmpi/modulefiles")
+prepend_path("MODULEPATH", "/scratch2/NCEPDEV/stmp1/role.epic/spack-stack/spack-stack-1.6.0_gnu13/envs/ufs-wm-srw-rocky8/install/modulefiles/Core")
-prepend_path("MODULEPATH", "/scratch1/NCEPDEV/nems/role.epic/spack-stack/spack-stack-1.5.1/envs/unified-env-rocky8/install/modulefiles/Core")
-
-load("stack-gcc/9.2.0")
-load("stack-openmpi/4.1.5")
-load("stack-python/3.10.8")
+load("stack-gcc/13.3.0")
+load("stack-openmpi/4.1.6")
+load("cmake/3.23.1")
+load("stack-python/3.10.13")
load("py-f90nml")
load("py-netcdf4/1.5.8")
load("netcdf-c/4.9.2")
-load("netcdf-fortran/4.6.0")
+load("netcdf-fortran/4.6.1")
load("bacio/2.4.1")
-load("sp/2.3.3")
-load("w3emc")
+load("sp/2.5.0")
+load("w3emc/2.10.0")
setenv("CMAKE_C_COMPILER","mpicc")
setenv("CMAKE_CXX_COMPILER","mpicxx")
diff --git a/scm/etc/modules/hera_intel.lua b/scm/etc/modules/hera_intel.lua
index 6cdbf7d4..e682bef4 100644
--- a/scm/etc/modules/hera_intel.lua
+++ b/scm/etc/modules/hera_intel.lua
@@ -5,23 +5,20 @@ the NOAA RDHPC machine Hera using Intel-2021.5.0
whatis([===[Loads libraries needed for building the CCPP SCM on Hera with Intel compilers ]===])
-prepend_path("MODULEPATH", "/scratch1/NCEPDEV/jcsda/jedipara/spack-stack/modulefiles")
-load("cmake/3.28.1")
-load("miniconda/3.9.12")
-
-prepend_path("MODULEPATH", "/scratch1/NCEPDEV/nems/role.epic/spack-stack/spack-stack-1.5.1/envs/unified-env-rocky8/install/modulefiles/Core")
+prepend_path("MODULEPATH", "/scratch1/NCEPDEV/nems/role.epic/spack-stack/spack-stack-1.6.0/envs/unified-env-rocky8/install/modulefiles/Core")
load("stack-intel/2021.5.0")
load("stack-intel-oneapi-mpi/2021.5.1")
-load("stack-python/3.10.8")
+load("cmake/3.23.1")
+load("stack-python/3.10.13")
load("py-f90nml")
load("py-netcdf4/1.5.8")
load("netcdf-c/4.9.2")
-load("netcdf-fortran/4.6.0")
+load("netcdf-fortran/4.6.1")
load("bacio/2.4.1")
-load("sp/2.3.3")
-load("w3emc")
+load("sp/2.5.0")
+load("w3emc/2.10.0")
setenv("CMAKE_C_COMPILER","mpiicc")
setenv("CMAKE_CXX_COMPILER","mpiicpc")
diff --git a/scm/etc/tracer_config/tracers_RRFS_v1.txt b/scm/etc/tracer_config/tracers_HRRR_gf.txt
similarity index 100%
rename from scm/etc/tracer_config/tracers_RRFS_v1.txt
rename to scm/etc/tracer_config/tracers_HRRR_gf.txt
diff --git a/scm/src/CCPP_typedefs.meta b/scm/src/CCPP_typedefs.meta
index 8208bd1d..adffe90c 100644
--- a/scm/src/CCPP_typedefs.meta
+++ b/scm/src/CCPP_typedefs.meta
@@ -344,7 +344,7 @@
dimensions = (horizontal_loop_extent,4)
type = real
kind = kind_phys
- active = (control_for_drag_suite_gravity_wave_drag == 3 .or. control_for_drag_suite_gravity_wave_drag == 33)
+ active = (control_for_drag_suite_gravity_wave_drag == 2 .or. control_for_drag_suite_gravity_wave_drag == 3 .or. control_for_drag_suite_gravity_wave_drag == 22 .or. control_for_drag_suite_gravity_wave_drag == 33)
[cmm_water]
standard_name = surface_drag_wind_speed_for_momentum_in_air_over_water
long_name = momentum exchange coefficient over water
@@ -1526,7 +1526,7 @@
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
- active = (control_for_drag_suite_gravity_wave_drag == 3 .or. control_for_drag_suite_gravity_wave_drag == 33)
+ active = (control_for_drag_suite_gravity_wave_drag == 2 .or. control_for_drag_suite_gravity_wave_drag == 3 .or. control_for_drag_suite_gravity_wave_drag == 22 .or. control_for_drag_suite_gravity_wave_drag == 33)
[oa4ss]
standard_name = asymmetry_of_subgrid_orography_small_scale
long_name = asymmetry of subgrid height_above_mean_sea_level small scale
@@ -1534,7 +1534,7 @@
dimensions = (horizontal_loop_extent,4)
type = real
kind = kind_phys
- active = (control_for_drag_suite_gravity_wave_drag == 3 .or. control_for_drag_suite_gravity_wave_drag == 33)
+ active = (control_for_drag_suite_gravity_wave_drag == 2 .or. control_for_drag_suite_gravity_wave_drag == 3 .or. control_for_drag_suite_gravity_wave_drag == 22 .or. control_for_drag_suite_gravity_wave_drag == 33)
[oc]
standard_name = convexity_of_subgrid_orography
long_name = convexity of subgrid height_above_mean_sea_level
@@ -1549,7 +1549,7 @@
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
- active = (control_for_drag_suite_gravity_wave_drag == 3 .or. control_for_drag_suite_gravity_wave_drag == 33)
+ active = (control_for_drag_suite_gravity_wave_drag == 2 .or. control_for_drag_suite_gravity_wave_drag == 3 .or. control_for_drag_suite_gravity_wave_drag == 22 .or. control_for_drag_suite_gravity_wave_drag == 33)
[olyr]
standard_name = ozone_concentration_at_layer_for_radiation
long_name = ozone concentration layer
diff --git a/scm/src/CMakeLists.txt b/scm/src/CMakeLists.txt
index a42583c6..7fe4a546 100644
--- a/scm/src/CMakeLists.txt
+++ b/scm/src/CMakeLists.txt
@@ -76,6 +76,14 @@ if(NOT MPI_Fortran_HAVE_F08_MODULE)
message(FATAL_ERROR "MPI_F08 Required")
endif()
+find_package(MPI REQUIRED Fortran)
+if(NOT MPI_Fortran_HAVE_F08_MODULE)
+ message(FATAL_ERROR "MPI implementation does not support the Fortran 2008 mpi_f08 interface")
+endif()
+
+message(STATUS "MPI Include Path: ${MPI_INCLUDE_PATH}")
+message(STATUS "MPI Libraries: ${MPI_LIBRARIES}")
+
SET(CCPP_FRAMEWORK_SRC ${CMAKE_SOURCE_DIR}/../../ccpp/framework)
SET(CCPP_PHYSICS_SRC ${CMAKE_SOURCE_DIR}/../../ccpp/physics)
diff --git a/scm/src/GFS_typedefs.F90 b/scm/src/GFS_typedefs.F90
index 51e6ae1e..d8fe5f44 100644
--- a/scm/src/GFS_typedefs.F90
+++ b/scm/src/GFS_typedefs.F90
@@ -302,7 +302,7 @@ module GFS_typedefs
real (kind=kind_phys), pointer :: ffmm (:) => null() !< fm parameter from PBL scheme
real (kind=kind_phys), pointer :: ffhh (:) => null() !< fh parameter from PBL scheme
real (kind=kind_phys), pointer :: f10m (:) => null() !< fm at 10m - Ratio of sigma level 1 wind and 10m wind
- real (kind=kind_phys), pointer :: rca (:) => null() !< canopy resistance
+ real (kind=kind_phys), pointer :: rca (:) => null() !< canopy resistance
real (kind=kind_phys), pointer :: tprcp (:) => null() !< sfc_fld%tprcp - total precipitation
real (kind=kind_phys), pointer :: srflag (:) => null() !< sfc_fld%srflag - snow/rain flag for precipitation
real (kind=kind_phys), pointer :: slc (:,:) => null() !< liquid soil moisture
@@ -703,7 +703,9 @@ module GFS_typedefs
!< for use with internal file reads
integer :: input_nml_file_length !< length (number of lines) in namelist for internal reads
integer :: logunit
- real(kind=kind_phys) :: fhzero !< hours between clearing of diagnostic buckets
+ real(kind=kind_phys) :: fhzero !< hours between clearing of diagnostic buckets (current bucket)
+ real(kind=kind_phys) :: fhzero_array(2) !< array to hold the the hours between clearing of diagnostic buckets
+ real(kind=kind_phys) :: fhzero_fhour(2) !< the maximum forecast length for the hours between clearing of diagnostic buckets
logical :: ldiag3d !< flag for 3d diagnostic fields
logical :: qdiag3d !< flag for 3d tracer diagnostic fields
logical :: flag_for_gwd_generic_tend !< true if GFS_GWD_generic should calculate tendencies
@@ -1121,6 +1123,7 @@ module GFS_typedefs
logical :: do_gsl_drag_ls_bl !< flag for GSL drag (mesoscale GWD and blocking only)
logical :: do_gsl_drag_ss !< flag for GSL drag (small-scale GWD only)
logical :: do_gsl_drag_tofd !< flag for GSL drag (turbulent orog form drag only)
+ logical :: do_gwd_opt_psl !< flag for PSL drag (mesoscale GWD and blocking only)
logical :: do_ugwp_v1 !< flag for version 1 ugwp GWD
logical :: do_ugwp_v1_orog_only !< flag for version 1 ugwp GWD (orographic drag only)
logical :: do_ugwp_v1_w_gsldrag !< flag for version 1 ugwp with OGWD of GSL
@@ -1205,6 +1208,8 @@ module GFS_typedefs
real(kind=kind_phys) :: ccwf(2) !< multiplication factor for critical cloud
!< workfunction for RAS
real(kind=kind_phys) :: cdmbgwd(4) !< multiplication factors for cdmb, gwd and NS gwd, tke based enhancement
+ real(kind=kind_phys) :: alpha_fd !< alpha coefficient for turbulent orographic form drag
+ real(kind=kind_phys) :: psl_gwd_dx_factor !< multiplication factors for grid spacing
real(kind=kind_phys) :: sup !< supersaturation in pdf cloud when t is very low
real(kind=kind_phys) :: ctei_rm(2) !< critical cloud top entrainment instability criteria
!< (used if mstrat=.true.)
@@ -2568,11 +2573,13 @@ subroutine sfcprop_create (Sfcprop, IM, Model)
Sfcprop%dt_cool = zero
Sfcprop%qrain = zero
endif
+ if (Model%lsm == Model%lsm_noah .or. Model%lsm == Model%lsm_noahmp) then
+ allocate (Sfcprop%rca (IM))
+ Sfcprop%rca = clear_val
+ end if
if (Model%lsm == Model%lsm_noah) then
allocate (Sfcprop%xlaixy (IM))
- allocate (Sfcprop%rca (IM))
Sfcprop%xlaixy = clear_val
- Sfcprop%rca = clear_val
end if
if (Model%lsm == Model%lsm_ruc .or. Model%lsm == Model%lsm_noahmp .or. &
(Model%lkm>0 .and. Model%iopt_lake==Model%iopt_lake_clm)) then
@@ -2733,12 +2740,13 @@ subroutine sfcprop_create (Sfcprop, IM, Model)
!
end if
- allocate (Sfcprop%rmol (IM ))
- allocate (Sfcprop%flhc (IM ))
- allocate (Sfcprop%flqc (IM ))
- Sfcprop%rmol = clear_val
- Sfcprop%flhc = clear_val
- Sfcprop%flqc = clear_val
+ allocate (Sfcprop%rmol (IM ))
+ allocate (Sfcprop%flhc (IM ))
+ allocate (Sfcprop%flqc (IM ))
+ Sfcprop%rmol = clear_val
+ Sfcprop%flhc = clear_val
+ Sfcprop%flqc = clear_val
+
if (Model%do_mynnsfclay) then
! For MYNN surface layer scheme
!print*,"Allocating all MYNN-sfclay variables"
@@ -3314,6 +3322,8 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
!--- BEGIN NAMELIST VARIABLES
real(kind=kind_phys) :: fhzero = 0.0 !< hours between clearing of diagnostic buckets
+ real(kind=kind_phys) :: fhzero_array(1:2) = 0.0 !< array with hours between clearing of diagnostic buckets
+ real(kind=kind_phys) :: fhzero_fhour(1:2) = 0.0 !< the maximum forecast length for the hours between clearing of diagnostic buckets
logical :: ldiag3d = .true. !< flag for 3d diagnostic fields
logical :: qdiag3d = .true. !< flag for 3d tracer diagnostic fields
logical :: lssav = .false. !< logical flag for storing diagnostics
@@ -3635,6 +3645,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
logical :: do_gsl_drag_ls_bl = .false. !< flag for GSL drag (mesoscale GWD and blocking only)
logical :: do_gsl_drag_ss = .false. !< flag for GSL drag (small-scale GWD only)
logical :: do_gsl_drag_tofd = .false. !< flag for GSL drag (turbulent orog form drag only)
+ logical :: do_gwd_opt_psl = .false. !< flag for PSL drag (mesoscale GWD and blocking only)
logical :: do_ugwp_v1 = .false. !< flag for version 1 ugwp GWD
logical :: do_ugwp_v1_orog_only = .false. !< flag for version 1 ugwp GWD (orographic drag only)
logical :: do_ugwp_v1_w_gsldrag = .false. !< flag for version 1 ugwp GWD (orographic drag only)
@@ -3739,6 +3750,8 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
real(kind=kind_phys) :: ccwf(2) = (/1.0d0,1.0d0/) !< multiplication factor for critical cloud
!< workfunction for RAS
real(kind=kind_phys) :: cdmbgwd(4) = (/2.0d0,0.25d0,1.0d0,1.0d0/) !< multiplication factors for cdmb, gwd, and NS gwd, tke based enhancement
+ real(kind=kind_phys) :: alpha_fd = 12.0 !< alpha coefficient for turbulent orographic form drag
+ real(kind=kind_phys) :: psl_gwd_dx_factor = 6.0 !< multiplication factors for grid spacing
real(kind=kind_phys) :: sup = 1.0 !< supersaturation in pdf cloud (IMP_physics=98) when t is very low
!< or ice super saturation in SHOC (when do_shoc=.true.)
real(kind=kind_phys) :: ctei_rm(2) = (/10.0d0,10.0d0/) !< critical cloud top entrainment instability criteria
@@ -3984,9 +3997,9 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
NAMELIST /gfs_physics_nml/ &
!--- general parameters
- fhzero, ldiag3d, qdiag3d, lssav, naux2d, dtend_select, &
- naux3d, aux2d_time_avg, aux3d_time_avg, fhcyc, &
- thermodyn_id, sfcpress_id, &
+ fhzero, fhzero_array, fhzero_fhour, ldiag3d, qdiag3d, lssav, &
+ naux2d, dtend_select, naux3d, aux2d_time_avg, &
+ aux3d_time_avg, fhcyc, thermodyn_id, sfcpress_id, &
!--- coupling parameters
cplflx, cplice, cplocn2atm, cplwav, cplwav2atm, cplaqm, &
cplchm, cpllnd, cpllnd2atm, cpl_imp_mrg, cpl_imp_dbg, &
@@ -4062,6 +4075,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
gwd_opt, do_ugwp_v0, do_ugwp_v0_orog_only, &
do_ugwp_v0_nst_only, &
do_gsl_drag_ls_bl, do_gsl_drag_ss, do_gsl_drag_tofd, &
+ do_gwd_opt_psl, &
do_ugwp_v1, do_ugwp_v1_orog_only, do_ugwp_v1_w_gsldrag, &
ugwp_seq_update, var_ric, coef_ric_l, coef_ric_s, hurr_pbl, &
do_myjsfc, do_myjpbl, &
@@ -4070,7 +4084,9 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
shinhong, do_ysu, dspheat, lheatstrg, lseaspray, cnvcld, &
xr_cnvcld, random_clds, shal_cnv, imfshalcnv, imfdeepcnv, &
isatmedmf, do_deep, jcap, &
- cs_parm, flgmin, cgwf, ccwf, cdmbgwd, sup, ctei_rm, crtrh, &
+ cs_parm, flgmin, cgwf, ccwf, cdmbgwd, alpha_fd, &
+ psl_gwd_dx_factor, &
+ sup, ctei_rm, crtrh, &
dlqf, rbcr, shoc_parm, psauras, prauras, wminras, &
do_sppt, do_shum, do_skeb, &
do_spp, n_var_spp, &
@@ -4203,6 +4219,11 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
Model%fn_nml = fn_nml
Model%logunit = logunit
Model%fhzero = fhzero
+ Model%fhzero_array = fhzero_array
+ Model%fhzero_fhour = fhzero_fhour
+ if( Model%fhzero_array(1) > 0. ) then
+ Model%fhzero = Model%fhzero_array(1)
+ endif
Model%ldiag3d = ldiag3d
Model%qdiag3d = qdiag3d
if (qdiag3d .and. .not. ldiag3d) then
@@ -4961,6 +4982,8 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
Model%cgwf = cgwf
Model%ccwf = ccwf
Model%cdmbgwd = cdmbgwd
+ Model%alpha_fd = alpha_fd
+ Model%psl_gwd_dx_factor = psl_gwd_dx_factor
Model%sup = sup
Model%ctei_rm = ctei_rm
Model%crtrh = crtrh
@@ -5008,6 +5031,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
Model%do_gsl_drag_ls_bl = do_gsl_drag_ls_bl
Model%do_gsl_drag_ss = do_gsl_drag_ss
Model%do_gsl_drag_tofd = do_gsl_drag_tofd
+ Model%do_gwd_opt_psl = do_gwd_opt_psl
Model%do_ugwp_v1 = do_ugwp_v1
Model%do_ugwp_v1_orog_only = do_ugwp_v1_orog_only
Model%do_ugwp_v1_w_gsldrag = do_ugwp_v1_w_gsldrag
@@ -5023,6 +5047,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
Model%do_gsl_drag_tofd = .true.
Model%do_gsl_drag_ss = .true.
Model%do_ugwp_v1_orog_only = .false.
+ Model%do_gwd_opt_psl = .true.
endif
Model%do_myjsfc = do_myjsfc
@@ -5673,6 +5698,10 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
Model%restart = restart
Model%lsm_cold_start = .not. restart
Model%hydrostatic = hydrostatic
+ if (Model%me == Model%master) then
+ print *,'in atm phys init, phour=',Model%phour,'fhour=',Model%fhour,'zhour=',Model%zhour,'kdt=',Model%kdt
+ endif
+
if(Model%hydrostatic .and. Model%lightning_threat) then
write(0,*) 'Turning off lightning threat index for hydrostatic run.'
@@ -6466,6 +6495,8 @@ subroutine control_print(Model)
print *, ' nlunit : ', Model%nlunit
print *, ' fn_nml : ', trim(Model%fn_nml)
print *, ' fhzero : ', Model%fhzero
+ print *, ' fhzero_array : ', Model%fhzero_array
+ print *, ' fhzero_fhour : ', Model%fhzero_fhour
print *, ' ldiag3d : ', Model%ldiag3d
print *, ' qdiag3d : ', Model%qdiag3d
print *, ' lssav : ', Model%lssav
@@ -6821,6 +6852,8 @@ subroutine control_print(Model)
print *, ' cgwf : ', Model%cgwf
print *, ' ccwf : ', Model%ccwf
print *, ' cdmbgwd : ', Model%cdmbgwd
+ print *, ' alpha_fd : ', Model%alpha_fd
+ print *, ' psl_gwd_dx_factor : ', Model%psl_gwd_dx_factor
print *, ' sup : ', Model%sup
print *, ' ctei_rm : ', Model%ctei_rm
print *, ' crtrh : ', Model%crtrh
@@ -6841,6 +6874,7 @@ subroutine control_print(Model)
print *, ' do_gsl_drag_ls_bl : ', Model%do_gsl_drag_ls_bl
print *, ' do_gsl_drag_ss : ', Model%do_gsl_drag_ss
print *, ' do_gsl_drag_tofd : ', Model%do_gsl_drag_tofd
+ print *, ' do_gwd_opt_psl : ', Model%do_gwd_opt_psl
print *, ' do_ugwp_v1 : ', Model%do_ugwp_v1
print *, ' do_ugwp_v1_orog_only : ', Model%do_ugwp_v1_orog_only
print *, ' do_ugwp_v1_w_gsldrag : ', Model%do_ugwp_v1_w_gsldrag
diff --git a/scm/src/GFS_typedefs.meta b/scm/src/GFS_typedefs.meta
index 2b2d485b..2e74c0e7 100644
--- a/scm/src/GFS_typedefs.meta
+++ b/scm/src/GFS_typedefs.meta
@@ -992,7 +992,6 @@
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
- active = (control_for_land_surface_scheme == identifier_for_ruc_land_surface_scheme)
[fire_heat_flux]
standard_name = surface_fire_heat_flux
long_name = heat flux of fire at the surface
@@ -1179,7 +1178,7 @@
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
- active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection)
+ active = (control_for_deep_convection_scheme == identifier_for_grell_freitas_deep_convection .or. control_for_deep_convection_scheme == identifier_for_c3_deep_convection)
[conv_act]
standard_name = consecutive_calls_for_grell_freitas_convection
long_name = Memory counter for GF
@@ -1259,6 +1258,7 @@
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
+ active = (control_for_land_surface_scheme == identifier_for_noah_land_surface_scheme .or. control_for_land_surface_scheme == identifier_for_noahmp_land_surface_scheme)
[tprcp]
standard_name = nonnegative_lwe_thickness_of_precipitation_amount_on_dynamics_timestep
long_name = total precipitation amount in each time step
@@ -1956,7 +1956,6 @@
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
- active = (flag_for_mellor_yamada_nakanishi_niino_surface_layer_scheme)
[flhc]
standard_name = surface_exchange_coefficient_for_heat
long_name = surface exchange coefficient for heat
@@ -1964,7 +1963,6 @@
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
- active = (flag_for_mellor_yamada_nakanishi_niino_surface_layer_scheme)
[flqc]
standard_name = surface_exchange_coefficient_for_moisture
long_name = surface exchange coefficient for moisture
@@ -1972,7 +1970,6 @@
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
- active = (flag_for_mellor_yamada_nakanishi_niino_surface_layer_scheme)
[chs2]
standard_name = surface_exchange_coefficient_for_heat_at_2m
long_name = exchange coefficient for heat at 2 meters
@@ -2776,7 +2773,7 @@
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
- active = (flag_for_surface_flux_coupling .or. flag_for_ocean_wave_coupling)
+ active = (flag_for_surface_flux_coupling .or. flag_for_chemistry_coupling .or. flag_for_ocean_wave_coupling)
[v10mi_cpl]
standard_name = y_wind_at_10m_for_coupling
long_name = instantaneous V10m
@@ -2784,7 +2781,7 @@
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
- active = (flag_for_surface_flux_coupling .or. flag_for_ocean_wave_coupling)
+ active = (flag_for_surface_flux_coupling .or. flag_for_chemistry_coupling .or. flag_for_ocean_wave_coupling)
[tsfci_cpl]
standard_name = surface_skin_temperature_for_coupling
long_name = instantaneous sfc temperature
@@ -2792,7 +2789,7 @@
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
- active = (flag_for_surface_flux_coupling)
+ active = (flag_for_surface_flux_coupling .or. flag_for_chemistry_coupling .or. flag_for_land_coupling)
[psurfi_cpl]
standard_name = surface_air_pressure_for_coupling
long_name = instantaneous sfc pressure
@@ -3392,7 +3389,6 @@
dimensions = (number_of_lines_in_internal_namelist)
type = character
kind = len=256
- active = (number_of_lines_in_internal_namelist > 0)
[logunit]
standard_name = iounit_of_log
long_name = fortran unit number for logfile
@@ -5230,7 +5226,7 @@
long_name = model 2m diagnostics use the temperature and humidity calculated by the lake model
units = flag
dimensions = ()
- type = integer
+ type = logical
[lkm]
standard_name = control_for_lake_model_execution_method
long_name = control for lake model execution: 0=no lake, 1=lake, 2=lake+nsst
@@ -5644,6 +5640,13 @@
dimensions = (4)
type = real
kind = kind_phys
+[alpha_fd]
+ standard_name = alpha_coefficient_for_turbulent_orographic_form_drag
+ long_name = alpha coefficient for Beljaars et al turbulent orographic form drag
+ units = 1
+ dimensions = ()
+ type = real
+ kind = kind_phys
[ccwf]
standard_name = tunable_parameter_for_critical_cloud_workfunction_in_relaxed_arakawa_schubert_deep_convection
long_name = multiplication factor for tical_cloud_workfunction
@@ -6734,14 +6737,12 @@
units = flag
dimensions = ()
type = logical
- active = (do_smoke_coupling)
[enh_mix]
standard_name = do_planetary_boundary_layer_fire_enhancement
long_name = flag for rrfs smoke mynn enh vermix
units = flag
dimensions = ()
type = logical
- active = (do_smoke_coupling)
[smoke_dir_fdb_coef]
standard_name = smoke_dust_direct_fdb_coef
long_name = smoke dust direct feedback coefficents
@@ -6749,7 +6750,6 @@
dimensions = (7)
type = real
kind = kind_phys
- active = (do_smoke_coupling)
[smoke_conv_wet_coef]
standard_name = smoke_dust_conv_wet_coef
long_name = smoke dust convetive wet scavanging coefficents
@@ -6757,7 +6757,6 @@
dimensions = (3)
type = real
kind = kind_phys
- active = (do_smoke_coupling)
[dust_moist_correction]
standard_name = dust_moist_correction_fengsha_dust_scheme
long_name = moisture correction term for fengsha dust emission
@@ -6765,7 +6764,6 @@
dimensions = ()
type = real
kind = kind_phys
- active = (do_smoke_coupling)
[dust_drylimit_factor]
standard_name = dust_drylimit_factor_fengsha_dust_scheme
long_name = moisture correction term for drylimit in fengsha dust emission
@@ -6773,14 +6771,12 @@
dimensions = ()
type = real
kind = kind_phys
- active = (do_smoke_coupling)
[dust_moist_opt]
standard_name = control_for_dust_soil_moisture_option
long_name = smoke dust moisture parameterization 1 - fecan 2 - shao
units = index
dimensions = ()
type = integer
- active = (do_smoke_coupling)
[dust_alpha]
standard_name = alpha_fengsha_dust_scheme
long_name = alpha paramter for fengsha dust scheme
@@ -6788,7 +6784,6 @@
dimensions = ()
type = real
kind = kind_phys
- active = (do_smoke_coupling)
[dust_gamma]
standard_name = gamma_fengsha_dust_scheme
long_name = gamma paramter for fengsha dust scheme
@@ -6796,7 +6791,6 @@
dimensions = ()
type = real
kind = kind_phys
- active = (do_smoke_coupling)
[wetdep_ls_alpha]
standard_name = alpha_for_ls_wet_depoistion
long_name = alpha paramter for ls wet deposition
@@ -6804,126 +6798,108 @@
dimensions = ()
type = real
kind = kind_phys
- active = (do_smoke_coupling)
[ebb_dcycle]
standard_name = control_for_diurnal_cycle_of_biomass_burning_emissions
long_name = rrfs smoke diurnal cycle option
units = index
dimensions = ()
type = integer
- active = (do_smoke_coupling)
[seas_opt]
standard_name = control_for_smoke_sea_salt
long_name = rrfs smoke sea salt emission option
units = index
dimensions = ()
type = integer
- active = (do_smoke_coupling)
[dust_opt]
standard_name = control_for_smoke_dust
long_name = rrfs smoke dust chem option
units = index
dimensions = ()
type = integer
- active = (do_smoke_coupling)
[drydep_opt]
standard_name = control_for_smoke_dry_deposition
long_name = rrfs smoke dry deposition option
units = index
dimensions = ()
type = integer
- active = (do_smoke_coupling)
[coarsepm_settling]
standard_name = control_for_smoke_pm_settling
long_name = rrfs smoke coarsepm settling option
units = index
dimensions = ()
type = integer
- active = (do_smoke_coupling)
[plume_wind_eff]
standard_name = option_for_wind_effects_on_smoke_plumerise
long_name = wind effect plumerise option
units = index
dimensions = ()
type = integer
- active = (do_smoke_coupling)
[extended_sd_diags]
standard_name = flag_for_extended_smoke_dust_diagnostics
long_name = flag for extended smoke dust diagnostics
units = flag
dimensions = ()
type = logical
- active = (do_smoke_coupling)
[wetdep_ls_opt]
standard_name = control_for_smoke_wet_deposition
long_name = rrfs smoke large scale wet deposition option
units = index
dimensions = ()
type = integer
- active = (do_smoke_coupling)
[do_plumerise]
standard_name = do_smoke_plumerise
long_name = rrfs smoke plumerise option
units = index
dimensions = ()
type = logical
- active = (do_smoke_coupling)
[plumerisefire_frq]
standard_name = smoke_plumerise_frequency
long_name = rrfs smoke add smoke option
units = min
dimensions = ()
type = integer
- active = (do_smoke_coupling)
[n_dbg_lines]
standard_name = smoke_debug_lines
long_name = rrfs smoke add smoke option
units = index
dimensions = ()
type = integer
- active = (do_smoke_coupling)
[addsmoke_flag]
standard_name = control_for_smoke_biomass_burning_emissions
long_name = rrfs smoke add smoke option
units = index
dimensions = ()
type = integer
- active = (do_smoke_coupling)
[smoke_forecast]
standard_name = do_smoke_forecast
long_name = index for rrfs smoke forecast
units = index
dimensions = ()
type = integer
- active = (do_smoke_coupling)
[aero_ind_fdb]
standard_name = do_smoke_aerosol_indirect_feedback
long_name = flag for wfa ifa emission indirect feedback
units = flag
dimensions = ()
type = logical
- active = (do_smoke_coupling)
[aero_dir_fdb]
standard_name = do_smoke_aerosol_direct_feedback
long_name = flag for smoke and dust radiation feedback
units = flag
dimensions = ()
type = logical
- active = (do_smoke_coupling)
[rrfs_smoke_debug]
standard_name = do_smoke_debug
long_name = flag for rrfs smoke plumerise debug
units = flag
dimensions = ()
type = logical
- active = (do_smoke_coupling)
[do_smoke_transport]
standard_name = do_smoke_conv_transport
long_name = flag for rrfs smoke convective transport
units = flag
dimensions = ()
type = logical
- active = (do_smoke_coupling)
[ncnvcld3d]
standard_name = number_of_convective_cloud_variables_in_xyz_dimensioned_restart_array
long_name = number of convective 3d clouds fields
@@ -7569,6 +7545,19 @@
units = flag
dimensions = ()
type = logical
+[do_gwd_opt_psl]
+ standard_name = do_gsl_drag_suite_with_psl_gwd_option
+ long_name = flag to activate PSL drag suite - mesoscale GWD and blocking
+ units = flag
+ dimensions = ()
+ type = logical
+[psl_gwd_dx_factor]
+ standard_name = effective_grid_spacing_of_psl_gwd_suite
+ long_name = multiplication of grid spacing
+ units = 1
+ dimensions = ()
+ type = real
+ kind = kind_phys
[do_ugwp_v1]
standard_name = flag_for_ugwp_version_1
long_name = flag to activate ver 1 CIRES UGWP
diff --git a/scm/src/scm.F90 b/scm/src/scm.F90
index 9a05e974..ff28593f 100644
--- a/scm/src/scm.F90
+++ b/scm/src/scm.F90
@@ -176,7 +176,8 @@ subroutine scm_main_sub()
cdata%blk_no = 1
cdata%thrd_no = 1
-
+ cdata%thrd_cnt = 1
+
call physics%associate(scm_state)
call physics%set(scm_input_instance, scm_state)
diff --git a/scm/src/scm_output.F90 b/scm/src/scm_output.F90
index 3458da3c..b41347c1 100644
--- a/scm/src/scm_output.F90
+++ b/scm/src/scm_output.F90
@@ -101,7 +101,7 @@ subroutine output_init(scm_state, physics)
call NetCDF_def_var(ncid, 'time_rad', NF90_FLOAT, "model elapsed time for either LW or SW radiation variables", "s", time_rad_var_id, (/ time_rad_id /))
!> - Define the state variables
- CALL output_init_state(ncid, time_inst_id, hor_dim_id, vert_dim_id, vert_dim_i_id)
+ CALL output_init_state(ncid, time_inst_id, hor_dim_id, vert_dim_id, vert_dim_i_id, scm_state)
!> - Define the forcing variables
CALL output_init_forcing(ncid, time_inst_id, hor_dim_id, vert_dim_id)
@@ -165,10 +165,12 @@ subroutine output_init(scm_state, physics)
!> @}
end subroutine output_init
-subroutine output_init_state(ncid, time_inst_id, hor_dim_id, vert_dim_id, vert_dim_i_id)
+subroutine output_init_state(ncid, time_inst_id, hor_dim_id, vert_dim_id, vert_dim_i_id, scm_state)
+ use scm_type_defs, only: scm_state_type
use NetCDF_def, only : NetCDF_def_var
integer, intent(in) :: ncid, time_inst_id, hor_dim_id, vert_dim_id, vert_dim_i_id
+ type(scm_state_type), intent(in) :: scm_state
integer :: dummy_id
@@ -187,7 +189,9 @@ subroutine output_init_state(ncid, time_inst_id, hor_dim_id, vert_dim_id, vert_d
call NetCDF_def_var(ncid, 'ql', NF90_FLOAT, "suspended resolved liquid cloud water on model layer centers", "kg kg-1", dummy_id, (/ hor_dim_id, vert_dim_id, time_inst_id /))
call NetCDF_def_var(ncid, 'qi', NF90_FLOAT, "suspended resolved ice cloud water on model layer centers", "kg kg-1", dummy_id, (/ hor_dim_id, vert_dim_id, time_inst_id /))
call NetCDF_def_var(ncid, 'qc', NF90_FLOAT, "suspended (resolved + SGS) total cloud water on model layer centers", "kg kg-1", dummy_id, (/ hor_dim_id, vert_dim_id, time_inst_id /))
- call NetCDF_def_var(ncid, 'sigmab', NF90_FLOAT, "updraft area fraction on model layer centers", "frac", dummy_id, (/ hor_dim_id, time_inst_id /))
+ if (scm_state%sigmab_index > 0) then
+ call NetCDF_def_var(ncid, 'sigmab', NF90_FLOAT, "updraft area fraction at lowest model layer", "frac", dummy_id, (/ hor_dim_id, time_inst_id /))
+ end if
end subroutine output_init_state
@@ -498,7 +502,9 @@ subroutine output_append_state(ncid, scm_state, physics)
call NetCDF_put_var(ncid, "v", scm_state%state_v(:,:,1), scm_state%itt_out)
call NetCDF_put_var(ncid, "ql", scm_state%state_tracer(:,:,scm_state%cloud_water_index,1), scm_state%itt_out)
call NetCDF_put_var(ncid, "qi", scm_state%state_tracer(:,:,scm_state%cloud_ice_index,1), scm_state%itt_out)
- call NetCDF_put_var(ncid, "sigmab", scm_state%state_tracer(:,1,scm_state%sigmab_index,1), scm_state%itt_out)
+ if (scm_state%sigmab_index > 0) then
+ call NetCDF_put_var(ncid, "sigmab", scm_state%state_tracer(:,1,scm_state%sigmab_index,1), scm_state%itt_out)
+ endif
if (physics%model%do_mynnedmf) then
call NetCDF_put_var(ncid, "qc", scm_state%state_tracer(:,:,scm_state%cloud_water_index,1) + &
scm_state%state_tracer(:,:,scm_state%cloud_ice_index,1) + &
diff --git a/scm/src/suite_info.py b/scm/src/suite_info.py
index 5564287f..97aebaf5 100755
--- a/scm/src/suite_info.py
+++ b/scm/src/suite_info.py
@@ -43,15 +43,15 @@ def timestep(self, value):
suite_list = []
suite_list.append(suite('SCM_GFS_v16', 'tracers_GFS_v16.txt', 'input_GFS_v16.nml', 600.0, 1800.0, True ))
-suite_list.append(suite('SCM_GFS_v17_p8', 'tracers_GFS_v17_p8.txt', 'input_GFS_v17_p8.nml', 600.0, 600.0, True ))
-suite_list.append(suite('SCM_GFS_v17_HR3', 'tracers_GFS_v17_HR3.txt', 'input_GFS_v17_HR3.nml', 600.0, 600.0, True ))
-suite_list.append(suite('SCM_GFS_v17_HR3_RRTMGP','tracers_GFS_v17_HR3.txt', 'input_GFS_v17_HR3_RRTMGP.nml', 600.0, 600.0, True ))
+suite_list.append(suite('SCM_GFS_v17_p8_ugwpv1', 'tracers_GFS_v17_p8.txt', 'input_GFS_v17_p8_ugwpv1.nml', 600.0, 600.0, True ))
suite_list.append(suite('SCM_RAP', 'tracers_RAP.txt', 'input_RAP.nml', 600.0, 600.0 , True ))
-suite_list.append(suite('SCM_RRFS_v1', 'tracers_RRFS_v1.txt', 'input_RRFS_v1.nml', 600.0, 600.0 , True ))
-suite_list.append(suite('SCM_RRFS_v1beta', 'tracers_RRFS_v1beta.txt', 'input_RRFS_v1beta.nml', 600.0, 600.0 , True ))
+suite_list.append(suite('SCM_HRRR_gf', 'tracers_HRRR_gf.txt', 'input_HRRR_gf.nml', 600.0, 600.0 , True ))
suite_list.append(suite('SCM_WoFS_v0', 'tracers_WoFS_v0.txt', 'input_WoFS_v0.nml', 600.0, 600.0 , True ))
-suite_list.append(suite('SCM_HRRR', 'tracers_HRRR.txt', 'input_HRRR.nml', 600.0, 600.0 , True ))
+suite_list.append(suite('SCM_GFS_v16_RRTMGP', 'tracers_GFS_v16.txt', 'input_GFS_v16_RRTMGP.nml', 600.0, 1800.0, True ))
+suite_list.append(suite('SCM_GFS_v17_p8', 'tracers_GFS_v17_p8.txt', 'input_GFS_v17_p8.nml', 600.0, 600.0, False))
+suite_list.append(suite('SCM_HRRR', 'tracers_HRRR.txt', 'input_HRRR.nml', 600.0, 600.0 , False))
+suite_list.append(suite('SCM_RRFS_v1beta', 'tracers_RRFS_v1beta.txt', 'input_RRFS_v1beta.nml', 600.0, 600.0 , False))
suite_list.append(suite('SCM_GFS_v15p2', 'tracers_GFS_v15p2.txt', 'input_GFS_v15p2.nml', 600.0, 1800.0, False))
suite_list.append(suite('SCM_GFS_v15p2_RRTMGP', 'tracers_GFS_v15p2.txt', 'input_GFS_v15p2_RRTMGP.nml', 600.0, 1800.0, False))
suite_list.append(suite('SCM_GFS_v15p2_no_nsst', 'tracers_GFS_v15p2.txt', 'input_GFS_v15p2.nml', 600.0, 1800.0, False))
@@ -60,7 +60,6 @@ def timestep(self, value):
suite_list.append(suite('SCM_GFS_v15p2_YSU', 'tracers_GFS_v15p2.txt', 'input_GFS_v15p2_YSU.nml', 600.0, 1800.0, False))
suite_list.append(suite('SCM_GFS_v15p2_saYSU', 'tracers_GFS_v15p2.txt', 'input_GFS_v15p2_saYSU.nml', 600.0, 1800.0, False))
suite_list.append(suite('SCM_GFS_v15p2_ACM', 'tracers_GFS_v15p2.txt', 'input_GFS_v15p2_ACM.nml', 600.0, 1800.0, False))
-suite_list.append(suite('SCM_GFS_v16_RRTMGP', 'tracers_GFS_v16.txt', 'input_GFS_v16_RRTMGP.nml', 600.0, 1800.0, False))
suite_list.append(suite('SCM_GFS_v16_no_nsst', 'tracers_GFS_v16.txt', 'input_GFS_v16.nml', 600.0, 1800.0, False))
suite_list.append(suite('HAFS_v0_hwrf', 'tracers_HAFS_v0_hwrf.txt', 'input_HAFS_v0_hwrf.nml', 600.0, 1800.0, False))
suite_list.append(suite('HAFS_v0_hwrf_thompson', 'tracers_HAFS_v0_hwrf_thompson.txt', 'input_HAFS_v0_hwrf_thompson.nml', 600.0, 600.0 , False))
diff --git a/scm/src/supported_suites.py b/scm/src/supported_suites.py
index aee06a70..6c1f0d31 100644
--- a/scm/src/supported_suites.py
+++ b/scm/src/supported_suites.py
@@ -1 +1,2 @@
-suites = ["SCM_GFS_v16","SCM_GFS_v17_p8","SCM_GFS_v17_HR3","SCM_HRRR","SCM_RAP","SCM_RRFS_v1beta","SCM_WoFS_v0"]
+suites = ["SCM_GFS_v16","SCM_GFS_v16_RRTMGP","SCM_GFS_v17_p8_ugwpv1","SCM_RAP","SCM_HRRR_gf","SCM_WoFS_v0"]
+
diff --git a/test/rt_test_cases.py b/test/rt_test_cases.py
index 0a2bd76d..f1db91bf 100644
--- a/test/rt_test_cases.py
+++ b/test/rt_test_cases.py
@@ -2,31 +2,31 @@
#----------------------------------------------------------------------------------------------------------------------------------------------
# Supported suites for CCPP Version 7 release
#----------------------------------------------------------------------------------------------------------------------------------------------
- {"case": "arm_sgp_summer_1997_A", "suite": "SCM_GFS_v17_HR3"}, \
- {"case": "arm_sgp_summer_1997_A", "suite": "SCM_GFS_v17_HR3_RRTMGP"}, \
+ {"case": "arm_sgp_summer_1997_A", "suite": "SCM_GFS_v17_p8_ugwpv1"}, \
+ {"case": "arm_sgp_summer_1997_A", "suite": "SCM_GFS_v16_RRTMGP"}, \
{"case": "arm_sgp_summer_1997_A", "suite": "SCM_GFS_v16"}, \
{"case": "arm_sgp_summer_1997_A", "suite": "SCM_WoFS_v0"}, \
- {"case": "arm_sgp_summer_1997_A", "suite": "SCM_RRFS_v1"}, \
- {"case": "twpice", "suite": "SCM_GFS_v17_HR3"}, \
- {"case": "twpice", "suite": "SCM_GFS_v17_HR3_RRTMGP"}, \
+ {"case": "arm_sgp_summer_1997_A", "suite": "SCM_HRRR_gf"}, \
+ {"case": "twpice", "suite": "SCM_GFS_v17_p8_ugwpv1"}, \
+ {"case": "twpice", "suite": "SCM_GFS_v16_RRTMGP"}, \
{"case": "twpice", "suite": "SCM_GFS_v16"}, \
{"case": "twpice", "suite": "SCM_WoFS_v0"}, \
- {"case": "twpice", "suite": "SCM_RRFS_v1"}, \
- {"case": "bomex", "suite": "SCM_GFS_v17_HR3"}, \
- {"case": "bomex", "suite": "SCM_GFS_v17_HR3_RRTMGP"}, \
+ {"case": "twpice", "suite": "SCM_HRRR_gf"}, \
+ {"case": "bomex", "suite": "SCM_GFS_v17_p8_ugwpv1"}, \
+ {"case": "bomex", "suite": "SCM_GFS_v16_RRTMGP"}, \
{"case": "bomex", "suite": "SCM_GFS_v16"}, \
{"case": "bomex", "suite": "SCM_WoFS_v0"}, \
- {"case": "bomex", "suite": "SCM_RRFS_v1"}, \
- {"case": "astex", "suite": "SCM_GFS_v17_HR3"}, \
- {"case": "astex", "suite": "SCM_GFS_v17_HR3_RRTMGP"}, \
+ {"case": "bomex", "suite": "SCM_HRRR_gf"}, \
+ {"case": "astex", "suite": "SCM_GFS_v17_p8_ugwpv1"}, \
+ {"case": "astex", "suite": "SCM_GFS_v16_RRTMGP"}, \
{"case": "astex", "suite": "SCM_GFS_v16"}, \
{"case": "astex", "suite": "SCM_WoFS_v0"}, \
- {"case": "astex", "suite": "SCM_RRFS_v1"}, \
- {"case": "LASSO_2016051812", "suite": "SCM_GFS_v17_HR3"}, \
- {"case": "LASSO_2016051812", "suite": "SCM_GFS_v17_HR3_RRTMGP"}, \
+ {"case": "astex", "suite": "SCM_HRRR_gf"}, \
+ {"case": "LASSO_2016051812", "suite": "SCM_GFS_v17_p8_ugwpv1"}, \
+ {"case": "LASSO_2016051812", "suite": "SCM_GFS_v16_RRTMGP"}, \
{"case": "LASSO_2016051812", "suite": "SCM_GFS_v16"}, \
{"case": "LASSO_2016051812", "suite": "SCM_WoFS_v0"}, \
- {"case": "LASSO_2016051812", "suite": "SCM_RRFS_v1"}, \
+ {"case": "LASSO_2016051812", "suite": "SCM_HRRR_gf"}, \
#----------------------------------------------------------------------------------------------------------------------------------------------
# Unsupported suites (w/ supported cases)
#----------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/test/rt_test_cases_sp.py b/test/rt_test_cases_sp.py
index a9a88864..a52ed156 100644
--- a/test/rt_test_cases_sp.py
+++ b/test/rt_test_cases_sp.py
@@ -2,9 +2,9 @@
#----------------------------------------------------------------------------------------------------------------------------------------------
# CCPP-SCM single precision supported suites
#----------------------------------------------------------------------------------------------------------------------------------------------
- {"case": "arm_sgp_summer_1997_A", "suite": "SCM_RAP"}, \
- {"case": "twpice", "suite": "SCM_RAP"}, \
- {"case": "bomex", "suite": "SCM_RAP"}, \
- {"case": "astex", "suite": "SCM_RAP"}, \
- {"case": "LASSO_2016051812", "suite": "SCM_RAP"}, \
+# {"case": "arm_sgp_summer_1997_A", "suite": "SCM_HRRR_gf"}, \
+ {"case": "twpice", "suite": "SCM_HRRR_gf"}, \
+ {"case": "bomex", "suite": "SCM_HRRR_gf"}, \
+ {"case": "astex", "suite": "SCM_HRRR_gf"}, \
+ {"case": "LASSO_2016051812", "suite": "SCM_HRRR_gf"}, \
]