Skip to content

Supporting CCPP for various host models

ligiabernardet edited this page Aug 1, 2023 · 2 revisions

The CCPP Physics code management protocols have been devised to support the efficient use and safe connection of CCPP Physics with various host models. The envisioned code management consists of this authoritative code repository (https://github.com/NCAR/ccpp-physics/) maintained by the CCPP team and of forks maintained by the teams of the participating host models (referred to as model X). The CCPP team is currently solely composed of staff from the Developmental Testbed Center but it could include others in the future.

Figure

Development within a given host model community is primarily conducted within their fork and submitted via a PR to the authoritative repository. To avoid confusion, the forks should not maintain a main branch and should collect their development in a uniquely named branch, such as modelX/dev.

Each host modeling team is responsible for devising and conducting tests, such as regression tests, to ascertain that CCPP innovations work well with their model. The main branch of the authoritative repository should be compatible with all host models, which is enforced by tests for all host models using the CCPP and/or contributing development. Such tests are conducted prior to commits to the authoritative repository.

As of October 2022, the envisioned code management has been implemented for the Unified Forecast System (UFS) and for the CCPP Single-Column Model. The UFS Fork of CCPP is located at https://github.com/ufs-community/ccpp-physics/ and its code management is described in its wiki. The establishment of the NRL NEPTUNE fork is in progress.

FAQ:

Q: What is the point of having forks for the host models using CCPP?

A: The forks are used to gather development within a community. They expedite the pace of reviews and make development more quickly available within that community.

Q: When was the UFS Fork Implemented?

A: The UFS Fork was implemented in September 2022.

Q: I am a UFS developer. Should I submit my development to the authoritative repository or to the UFS Fork?

A: Please submit your development to the UFS Fork.

Q: Is there a risk that the forks will diverge from the authoritative repository?

A: Code managers for the authoritative repository and the forks are in constant contact and exchange innovations to keep the development unified.

Q: Isn’t this whole fork thing an overkill?

A: The fork system may feel like an overhead when there are just a couple of host models using CCPP. As more models adopt CCPP, it organizes and simplifies development.