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"}, \ ]