Skip to content
Merged
Show file tree
Hide file tree
Changes from 25 commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
cd19c38
Use ip@5: if available instead of sp if available
climbfuji Oct 7, 2024
89f3bab
Adding no OpenMP flag
scrasmussen Mar 24, 2026
b97d575
sp to ip changes in ccpp-physics repo, enhancement/build-with-ip branch
scrasmussen Mar 24, 2026
f78c1dd
sp to ip changes in ccpp-physics repo, enhancement/build-with-ip branch
scrasmussen Feb 25, 2026
e8d6fa1
-O2 to -O0 changes required to get ifx 2025.2.1 to build on Derecho. …
scrasmussen Feb 26, 2026
0ff17e3
Module variables to build spack stack 2.0.0 and 1.9.3. Note 2.0.0 doe…
scrasmussen Feb 26, 2026
2e62b76
add GNU module for Ursa with spack-stack 2.0.0
grantfirl Mar 12, 2026
306607d
use intel-specific spack-stack 2.0.0 python environment in ursa intel…
grantfirl Mar 12, 2026
75a1840
Supported case arm_sgp_summer_1997_A requires SCM_GFS_v16_ps suite to…
scrasmussen Mar 28, 2026
82b1cb9
Use scm/dev ccpp-physics
scrasmussen Mar 28, 2026
d6d217a
- Using name/version format for spackstack and derecho_gnu and derech…
scrasmussen Mar 28, 2026
7d37d1f
point to ccpp-physics IP PR into scm/dev
grantfirl Mar 31, 2026
2f23c75
add run list arugment to suite_info to only compile subset of suites …
grantfirl Mar 31, 2026
47bb8b1
add rl option to CMakeLists.txt to compile smaller subset of suites i…
grantfirl Mar 31, 2026
dcd1979
remove warning prints; use default rl if no match
grantfirl Mar 31, 2026
f4904e5
revert optimization change and edit to supported_suites.py
Apr 1, 2026
92d7d44
Merge pull request #11 from grantfirl/add_rl_type
scrasmussen Apr 1, 2026
122be00
Removing supported_cases.py and supported_suites.py since they have b…
scrasmussen Apr 1, 2026
b269c26
Add emacs as a shell function, pointing to an emacs executable on Der…
scrasmussen Apr 1, 2026
c1aa907
Switch DEFAULT_SUITE_BEHAVIOR to supported from regression_test. Whit…
scrasmussen Apr 2, 2026
560b0bb
Removing spack_stack from module name
scrasmussen Apr 7, 2026
0f29bb5
Moving hera and ursa module files to be versioned modules
scrasmussen Apr 7, 2026
bb0168a
Converting documentation code blocks to use the traditional $ to indi…
scrasmussen Apr 8, 2026
e4e87df
Make the default documenation opened the latest, instead of v7.0.0
scrasmussen Apr 8, 2026
007a1d5
Add additional details regarding suite_info.py and the default suppor…
scrasmussen Apr 8, 2026
663ace6
update ccpp/physics after merge
grantfirl Apr 10, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@
branch = develop
[submodule "ccpp-physics"]
path = ccpp/physics
url = https://github.com/NCAR/ccpp-physics
branch = main
# url = https://github.com/NCAR/ccpp-physics
url = https://github.com/grantfirl/ccpp-physics
branch = scm/dev-ip_update
[submodule "CMakeModules"]
path = CMakeModules
url = https://github.com/noaa-emc/CMakeModules
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,6 @@ The SCM is a tool for developing physics suites and diagnosing their performance
- [CCPP Framework:](https://github.com/NCAR/ccpp-framework) a framework for connecting atmospheric models to physics suites.

## Documentation
- [SCM readthedocs](https://ccpp-scm.readthedocs.io/en/v7.0.0/)
- [CCPP readthedocs](https://ccpp-techdoc.readthedocs.io/en/v7.0.0/)
- [SCM readthedocs](https://ccpp-scm.readthedocs.io)
- [CCPP readthedocs](https://ccpp-techdoc.readthedocs.io)
- [Scientific documentation](https://dtcenter.ucar.edu/GMTB/v7.0.0/sci_doc/index.html)
2 changes: 1 addition & 1 deletion ccpp/physics
Submodule physics updated 2 files
+5 −1 CMakeLists.txt
+1 −184 CODEOWNERS
76 changes: 41 additions & 35 deletions scm/doc/TechGuide/chap_cases.rst
Original file line number Diff line number Diff line change
Expand Up @@ -110,10 +110,10 @@ DEPHY-SCM file location to the SCM.

.. note::

Not all forcing methods available in external DEPHY-SCM cases are currently
Not all forcing methods available in external DEPHY-SCM cases are currently
supported in the CCPP SCM. For example:
- ``surface_forcing_moisture``: "beta", "mrsos"

- ``surface_forcing_moisture``: "beta", "mrsos"
- ``surface_forcing_wind``: "ustar"
- ``surface_type``: "seaice"

Expand All @@ -123,10 +123,10 @@ Example to run a DEPHY-SCM case:

.. code:: bash

cd [...]/ccpp-scm/scm/data
git clone https://github.com/GdR-DEPHY/DEPHY-SCM DEPHY-SCM
cd [...]/ccpp-scm/scm/bin
./run_scm.py -c MAGIC_LEG04A --case_data_dir [...]/ccpp-scm/scm/data/DEPHY-SCM/MAGIC/LEG04A -v
$ cd [...]/ccpp-scm/scm/data
$ git clone https://github.com/GdR-DEPHY/DEPHY-SCM DEPHY-SCM
$ cd [...]/ccpp-scm/scm/bin
$ ./run_scm.py -c MAGIC_LEG04A --case_data_dir [...]/ccpp-scm/scm/data/DEPHY-SCM/MAGIC/LEG04A -v

Each DEPHY file has three dimensions (``time``, ``t0``, ``levels``) and contains the initial
conditions (``t0``, ``levels``) and forcing data (``time``, ``levels``). Not all fields
Expand Down Expand Up @@ -158,7 +158,7 @@ To convert a case, run the script with the -n option followed by the name of the

.. code:: bash

python dephy_converter.py -n name_of_case
$ python dephy_converter.py -n name_of_case

This script performs the following actions:
- Reads the legacy case file from ccpp-scm/scm/data/processed_case_data/name_of_case.nc
Expand Down Expand Up @@ -365,7 +365,7 @@ following steps:

.. code:: bash

./lasso1_forcing_file_generator_gjf.py
$ ./lasso1_forcing_file_generator_gjf.py

#. Create a new case configuration file (or copy and modify an existing
one) in ``ccpp-scm/scm/etc/case_config``. Be sure that the ``case_name`` variable points to the newly
Expand All @@ -390,29 +390,29 @@ Create environment (only once):

.. code:: bash

> conda env create -f environment-ufscasegen.yml
$ conda env create -f environment-ufscasegen.yml

This will create the conda environment ``env_ufscasegen``

Activate environment:

.. code:: bash

> conda activate env_ufscasegen
$ conda activate env_ufscasegen

Note that it may be possible for conda to fail to solve for the environment when attempting to use the yml file. It
should still be possible to create the same environment manually:

.. code:: bash

> conda create --name env_ufscasegen
> conda install -n env_ufscasegen --channel=conda-forge python=3.8.5
> conda install -n env_ufscasegen --channel=conda-forge netcdf4
> conda install -n env_ufscasegen --channel=conda-forge f90nml
> conda install -n env_ufscasegen --channel=conda-forge xarray
> conda install -n env_ufscasegen --channel=conda-forge numpy
> conda install -n env_ufscasegen --channel=conda-forge shapely
> conda install -n env_ufscasegen --channel=conda-forge xesmf
$ conda create --name env_ufscasegen
$ conda install -n env_ufscasegen --channel=conda-forge python=3.8.5
$ conda install -n env_ufscasegen --channel=conda-forge netcdf4
$ conda install -n env_ufscasegen --channel=conda-forge f90nml
$ conda install -n env_ufscasegen --channel=conda-forge xarray
$ conda install -n env_ufscasegen --channel=conda-forge numpy
$ conda install -n env_ufscasegen --channel=conda-forge shapely
$ conda install -n env_ufscasegen --channel=conda-forge xesmf

.. _`ufscasegenpy`:

Expand All @@ -425,10 +425,13 @@ format.

.. code:: bash

./UFS_case_gen.py [-h] (-l LOCATION LOCATION | -ij INDEX INDEX) -d
DATE -i IN_DIR -g GRID_DIR -f FORCING_DIR -n
CASE_NAME [-t {1,2,3,4,5,6,7}] [-a AREA] [-oc]
[-lam] [-sc] [-near] [-fm] [-vm] [-wn] [-geos]
$ ./UFS_case_gen.py --help
usage: ./UFS_case_gen.py [-h] (-l LOCATION LOCATION | -ij INDEX INDEX)
[-d DATE] -i IN_DIR -g GRID_DIR -f FORCING_DIR
-n CASE_NAME [-t {1,2,3,4,5,6,7}] [-a AREA]
[-oc] [-lam] [-sc] [-near]
[-fm {1,2,3}] [-vm {1,2}] [-wn] [-geos]


Mandatory arguments:

Expand Down Expand Up @@ -559,12 +562,12 @@ generating multiple cases at once.

.. code:: bash

UFS_forcing_ensemble_generator.py [-h] -d DIR -n CASE_NAME
(-lonl LON_1 LON_2 -latl LAT_1 LAT_2 -nens NENSMEMBERS |
-lons [LON_LIST] -lats [LAT_LIST] |
-fxy [LON_LAT_FILE] |
-tile [TILE_NUMBER] -is [I_INDEX_LIST] -js [J_INDEX_LIST])
[-dt TIMESTEP] [-cres C_RES] [-sdf SUITE] [-sc] [-near] [-fm] [-vm] [-wn] [-geos]
$ UFS_forcing_ensemble_generator.py --help
usage: UFS_forcing_ensemble_generator.py [-h] -d DIR -n CASE_NAME [-lonl LON_LIMITS LON_LIMITS] [-latl LAT_LIMITS LAT_LIMITS]
[-lons [LON_LIST ...]] [-lats [LAT_LIST ...]] [-fxy LONLAT_FILE]
[-nens NENSMEMBERS] [-tile TILE] [-is [I_LIST ...]] [-js [J_LIST ...]] [-dt TIMESTEP]
[-cres C_RES] [-sdf SUITE] [-sc] [-near] [-lam] [-fm {1,2,3}]
[-vm {1,2}] [-wn] [-geos]

Mandatory arguments:

Expand Down Expand Up @@ -624,14 +627,15 @@ supplying the vertical velocity for the vertical advective terms and nudging the

.. code:: bash

./UFS_forcing_ensemble_generator.py -d [path_to_regression_tests_output]/control_c192_intel/ -sc --C_RES 192 -dt 360 -n control_c192 -lons 300 -lats 34 -fm 2 -vm 2 -wn
$ ./UFS_forcing_ensemble_generator.py -d [path_to_regression_tests_output]/control_c192_intel/ \
-sc --C_RES 192 -dt 360 -n control_c192 -lons 300 -lats 34 -fm 2 -vm 2 -wn

Upon successful completion of the script, the command to run the case(s)
will print to the screen. For example,

.. code:: bash

./run_scm.py --npz_type gfs --file scm_ufsens_control_c192.py --timestep 360
$ ./run_scm.py --npz_type gfs --file scm_ufsens_control_c192.py --timestep 360

The file ``scm_ufsens_control_c192.py`` is created in ``ccpp-scm/scm/bin/``, where the SCM run script is to be exectued.

Expand All @@ -644,14 +648,15 @@ UFS regression test, ``control_c384``, for multiple points assuming the same for

.. code:: bash

./UFS_forcing_ensemble_generator.py -d /glade/derecho/scratch/epicufsrt/ufs-weather-model/RT/NEMSfv3gfs/develop-20240607/control_c384_intel/ -sc --C_RES 384 -dt 225 -n control_c384 -lons 300 300 300 300 -lats 34 35 35 37 -fm 2 -vm 2 -wn
$ ./UFS_forcing_ensemble_generator.py -d /glade/derecho/scratch/epicufsrt/ufs-weather-model/RT/NEMSfv3gfs/develop-20240607/control_c384_intel/ \
-sc --C_RES 384 -dt 225 -n control_c384 -lons 300 300 300 300 -lats 34 35 35 37 -fm 2 -vm 2 -wn

Upon successful completion of the script, the command to run the case(s)
will print to the screen. For example,

.. code:: bash

./run_scm.py --npz_type gfs --file scm_ufsens_control_c384.py --timestep 225
$ ./run_scm.py --npz_type gfs --file scm_ufsens_control_c384.py --timestep 225

The file ``scm_ufsens_control_c384.py`` contains ALL of the cases created. Each case created will have the
naming convention ``case_name_nXXX``, where the suffix ``XXX`` is the case number from 0 to the
Expand Down Expand Up @@ -689,14 +694,15 @@ Now the cases can be generated with the following command:

.. code:: bash

./UFS_forcing_ensemble_generator.py -d /glade/derecho/scratch/epicufsrt/ufs-weather-model/RT/NEMSfv3gfs/develop-20240607/control_p8_intel -sc --C_RES 96 -dt 720 -n control_p8 -lonl 300 320 -latl 40 50 -nens 10 -sdf SCM_GFS_v17_p8
$ ./UFS_forcing_ensemble_generator.py -d /glade/derecho/scratch/epicufsrt/ufs-weather-model/RT/NEMSfv3gfs/develop-20240607/control_p8_intel \
-sc --C_RES 96 -dt 720 -n control_p8 -lonl 300 320 -latl 40 50 -nens 10 -sdf SCM_GFS_v17_p8

Upon successful completion of the script, the command to run the case(s)
will print to the screen. For example,

.. code:: bash

./run_scm.py --npz_type gfs --file scm_ufsens_control_p8.py --timestep 720
$ ./run_scm.py --npz_type gfs --file scm_ufsens_control_p8.py --timestep 720

The file ``scm_ufsens_control_p8.py`` contains ten cases (n000-n009) to be run. The contents of the
file should look like:
Expand Down
37 changes: 20 additions & 17 deletions scm/doc/TechGuide/chap_hsd.rst
Original file line number Diff line number Diff line change
Expand Up @@ -114,15 +114,15 @@ Create environment (only once):

.. code:: bash

> conda env create -f environment-suite-sim.yml
$ conda env create -f environment-suite-sim.yml

This will create the conda environment ``scm_suite_sim``

Activate environment:

.. code:: bash

> conda activate scm_suite_sim
$ conda activate scm_suite_sim

Enabling the CCPP Suite Simulator
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Expand Down Expand Up @@ -211,25 +211,25 @@ interpolates these forcings in time.

.. code:: bash

cd ccpp-scm/scm/bin
./run_scm.py -c twpice -s SCM_GFS_v16
./run_scm.py -c twpice -s SCM_GFS_v17_p8
$ cd ccpp-scm/scm/bin
$ ./run_scm.py -c twpice -s SCM_GFS_v16
$ ./run_scm.py -c twpice -s SCM_GFS_v17_p8

#. Create 2D forcing data for the CSS, using SCM output from TWPICE case
with ``GFS_v16`` suite.

.. code:: bash

cd ccpp-scm/scm/etc/scripts/ccpp_suite_sim
./create_2D_CSSdata.py --cases twpice --suites SCM_GFS_v16
$ cd ccpp-scm/scm/etc/scripts/ccpp_suite_sim
$ ./create_2D_CSSdata.py --cases twpice --suites SCM_GFS_v16

#. Create constant forcing data for the CSS, using SCM output, at
forecast time 3600s, from TWPICE case with ``GFS_v17_p8`` suite.

.. code:: bash

cd ccpp-scm/scm/etc/scripts/ccpp_suite_sim
./create_1D_CSSdata.py --cases twpice --suites SCM_GFS_v17_p8 --time 3600
$ cd ccpp-scm/scm/etc/scripts/ccpp_suite_sim
$ ./create_1D_CSSdata.py --cases twpice --suites SCM_GFS_v17_p8 --time 3600

The data file will be written to ``ccpp-scm/scm/etc/scripts/ccpp_suite_sim/`` with the format ``data_CSS_DIM.CASES.SUITES.nc``

Expand Down Expand Up @@ -267,9 +267,9 @@ and run the SCM using TWPICE case with the modified suite.

.. code:: bash

cd ccpp-scm/scm/bin
cmake ../src -DCCPP_SUITES=SCM_GFS_v16
./run_scm.py -c twpice -s SCM_GFS_v16
$ cd ccpp-scm/scm/bin
$ cmake ../src -DCCPP_SUITES=SCM_GFS_v16
$ ./run_scm.py -c twpice -s SCM_GFS_v16

.. _`Suite_with_Active_cldmp`:

Expand Down Expand Up @@ -309,9 +309,9 @@ and run the SCM using TWPICE case with the modified suite.

.. code:: bash

cd ccpp-scm/scm/bin
cmake ../src -DCCPP_SUITES=SCM_GFS_v17_p8
./run_scm.py -c twpice -s SCM_GFS_v17_p8
$ cd ccpp-scm/scm/bin
$ cmake ../src -DCCPP_SUITES=SCM_GFS_v17_p8
$ ./run_scm.py -c twpice -s SCM_GFS_v17_p8

.. _`plotting_tools`:

Expand All @@ -322,7 +322,9 @@ Additionally, plotting scripts provided in :

#. .. code:: bash

./plt_scmout_2d.py [-h] -n CASE_NAME -sdf SDF -nmls NMLS -vars VAR1 VAR2 VAR3
$ ./plt_scmout_2d.py --help
usage: plt_scmout_2d.py [-h] -n CASE_NAME -sdf SUITE [-nmls [NML_LIST ...]] -vars [VAR_LIST ...]


Mandatory arguments:

Expand All @@ -336,7 +338,8 @@ Additionally, plotting scripts provided in :

#. .. code:: bash

./plt_scmout_3d.py [-h] -n CASE_NAME -sdf SDF -nmls NMLS -vars VAR1 VAR2 VAR3 -time TIME
$ ./plt_scmout_3d.py --help
usage: plt_scmout_3d.py [-h] -n CASE_NAME -sdf SUITE [-nmls [NML_LIST ...]] -vars [VAR_LIST ...] [-time TIME_PLOT]

Mandatory arguments:

Expand Down
Loading
Loading