Skip to content
Clark Evans edited this page Dec 12, 2025 · 9 revisions

Welcome to the MPAS-Model wiki!

Developer's Guide

Our general development philosophy is as follows:

  • Do no harm. In general, this means that we do not change NCAR-developed/maintained code unless absolutely necessary. We'd love to fix some typos and change some indenting options, too, but doing so adds to the code reconciliation we must do every time we update to the top of their trunk (currently the main MPAS-Dev/MPAS-Model repository).
  • New functionality should be user-controllable, and off by default. We love adding new functionality to the model and to our physics parameterizations. We believe that this should be namelist-controllable, with a corresponding entry in the appropriate Registry.xml file, and turned off by default (i.e., users must opt-in to the new functionality). In addition to giving users more control, this also ensures that our regression tests run on each new development do not fail solely because the new option is enabled.
  • One major change per PR. In general, we prefer that each PR be limited to a single major change rather than lumping multiple major changes into a single PR. This helps to facilitate its testing in our real-time development forecast systems and expedite its review.
  • Mimic the NCAR-developed/maintained code structure as closely as possible. Examples include using spaces rather than tabs for indentation, adopting their naming conventions and code structures, documenting user-selectable options in the namelist entry descriptions in the appropriate Registry.xml file, and more.

Code Versioning

We version our code in the format a.b(.c)-d.e, where a.b(.c) refers to the release at the top of the MPAS-Dev/MPAS-Model 'master' branch and d.e refers to the internal version. 'd' is the major increment and is reserved for major new code functionality, whereas 'e' is the minor increment and is used for smaller, more iterative changes. Each new merged PR increments at least the minor increment. Incrementing the major increment resets the smaller increment. Updating to a new major release from MPAS-Dev/MPAS-Model (e.g., from 8.2.x to 8.3) resets both major and minor increments.

The code version is applied in one location: README.md. The code manager will edit the version number to use prior to merge; you do not need to do this unless otherwise directed. We do also append "-noaa" to the end of the MPAS-Dev--specified version numbers in src/core_atmosphere/Registry.xml, and src/core_init_atmosphere/Registry.xml; you should not need to change these.

Questions?

Please don't hesitate to reach out to us with any questions, comments, or concerns that you may have. Thank you for your assistance and contributions!

Clone this wiki locally