Skip to content

Replace ccpp-prebuild and ccpp-capgen v0 with ccpp-capgen v1#762

Open
climbfuji wants to merge 78 commits into
developfrom
feature/capgen-v1
Open

Replace ccpp-prebuild and ccpp-capgen v0 with ccpp-capgen v1#762
climbfuji wants to merge 78 commits into
developfrom
feature/capgen-v1

Conversation

@climbfuji

@climbfuji climbfuji commented Jun 30, 2026

Copy link
Copy Markdown
Collaborator

Description

This PR replaces the two code generators ccpp-prebuild and ccpp-capgen (version 0) with the new, unified ccpp-capgen (version 1). It supports all host models (CAM-SIMA, CCPP-SCM, NEPTUNE, UFS) and combines the features from ccpp-capgen v0 with the performance and operational robustness of ccpp-prebuild.

This pull request will be updated continuously with links to updates of the CCPP technical documentation and additional information. See also #759 for background information and further materials.

User interface changes?: Yes (see documentation)

This feature branch feature/capgen-v1 will support the three ccpp-prebuild-based models CCPP-SCM, NEPTUNE, and UFS, which will transition to ccpp-capgen v1 before CAM-SIMA. Once CAM-SIMA transitions, this PR will be merged and feature/capgen-v1 will be locked.

Todo

  • The LLM-generated documentation and materials in doc/ need to be reviewed and used to update the existing CCPP technical documentation (https://github.com/ncar/ccpp-doc). Once that process is complete, we can remove or trim down the additional documentation in doc/.
  • The LLM-generated code should be reviewed file-by-file. LLMs are known for their verbosity, and we can likely remove or trim down sizeable part sof the code. Open question: Should we do the same for the unit tests?

Issues

To check/may not be implemented yet:

Testing

See #759

climbfuji added 30 commits May 13, 2026 06:40
…gen-ng: entire constituent state now per instance
climbfuji and others added 3 commits July 16, 2026 15:16
…ts (#764)

This PR targets the feature/capgen-v1 branch with follow-up and cleanup changes from manual code reviews (capgen/metadata/parse-tools/*) plus a few selected, minor improvements. This branch is being used by the CAM-SIMA feature branches that replace the original capgen v0 with the new capgen v1.

- Temporary: run CI tests also for pull requests against branch feature/capgen-v1.
- Simplify capgen/metadata/parse_tools/parse_source.py. Some of the removed features were (ab)used by CAM-SIMA and are now in the updated capgen compatibility layer in the CAM-SIMA feature branch.
- Simplify capgen/metadata/parse_tools/parse_log.py. Requires a tiny change in the CAM-SIMA compatibility layer (now in the (CAM-SIMA feature branch).
- Add documentation, simplify, and add a comment about a latent bug that doesn't hurt is today w.r.t. escaping periods in decimals in capgen/metadata/parse_tools/fortran_conditional.py.
- capgen/metadata/parse_tools/io_helpers.py: better documentation, preserve default umask.
- Simplify capgen/metadata/parse_tools/xml_tools.py: remove unneeded arguments, trim down docstring tests (covered in unit tests and end-to-end tests). Requires small changes in the CAM-SIMA compatibility layer (now in the (CAM-SIMA feature branch).
- Strip down capgen/metadata/parse_tools/parse_checkers.py, update capgen/metadata/metadata_table.py accordingly.
- Not cleanup: Fix the trailing comments after the variable conversions in the Group cap ([feature/capgen-v1-cleanup-01] Add correct comment to supported variable conversions (#767) + bug fixes + unit test updates #768) by @dustinswales.
- Not cleanup: Add additional report option --suite-variables to retrieve suite-owned variables from datatable.
- Not cleanup: Log variable transformations during capgen call at default logging level (0d48ab0).

---------

Co-authored-by: Courtney Peverley <courtneyp@ucar.edu>
Co-authored-by: Dustin Swales <dustin.swales@noaa.gov>
Format update of `feature/capgen-v1` from `develop` to resolve conflicts
after merging #765 into develop / #767 into `feature/capgen-v1`.

There's a small leftover change in
`end-to-end-tests/advection_auto_clone/cld_liq.F90` that was made in
#765 but not in #767. The other test data change in
`test/advection_test/test_host_data.F90` (see
https://github.com/NCAR/ccpp-framework/pull/765/changes#diff-04bf1167afd493d2ea37bd03d093e200ba8b563383bfd1cca3fc9126aca9c4a9)
is already in `feature/capgen-v1`.

Co-authored-by: Courtney Peverley <courtneyp@ucar.edu>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment