Skip to content

NCAR/MPAS-Model-CI

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6,995 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MPAS-v8.4.0

CI Status

Ensemble Consistency Test

MPICH subsets run on every push and PR. OpenMPI and GPU subsets are available via manual dispatch. Each test builds in double precision, runs 3 perturbed ensemble members (4 MPI ranks), and validates with PyCECT.

Thanks to Teo Price-Broncucia and Allison Baker for their help on ensemble consistency testing. Methodology and background are given in Price-Broncucia et al. (2025), Geosci. Model Dev., 18, 2349–2372.

Compiler MPI Target Status Container
GNU MPICH CPU GNU+MPICH (CPU) hpcdev:almalinux9-gcc14-mpich-26.02
GNU OpenMPI CPU GNU+OpenMPI (CPU) hpcdev:almalinux9-gcc14-openmpi-26.02
Intel MPICH CPU Intel+MPICH (CPU) hpcdev:almalinux9-oneapi-mpich-26.02
Intel OpenMPI CPU Intel+OpenMPI (CPU) hpcdev:almalinux9-oneapi-openmpi-26.02
NVHPC MPICH CPU NVHPC+MPICH (CPU) hpcdev:almalinux9-nvhpc-mpich-26.02
NVHPC OpenMPI CPU NVHPC+OpenMPI (CPU) hpcdev:almalinux9-nvhpc-openmpi-26.02
NVHPC MPICH GPU NVHPC+MPICH (GPU) hpcdev:almalinux9-nvhpc-mpich-cuda-26.02
NVHPC OpenMPI GPU NVHPC+OpenMPI (GPU) hpcdev:almalinux9-nvhpc-openmpi-cuda-26.02

Compile-only workflows verify the NVHPC + OpenACC + CUDA toolchain by building on a Github Action runner without a GPU

Compiler MPI Target Status Container
NVHPC MPICH CUDA (compile) NVHPC+MPICH+CUDA (compile-only) hpcdev:almalinux9-nvhpc-mpich-cuda-26.02

Additional testing

Bit-for-bit (BFB) workflows compare history output in single precision for CPU runs (240km case; see the BFB section in .github/ci-config.env).

Test Status
BFB: I/O (SMIOL vs PIO) BFB: I/O (SMIOL vs PIO)
BFB: Decomposition (1 vs 4 ranks) BFB: Decomposition (1 vs 4 ranks)
BFB: I/O GPU (SMIOL vs PIO) BFB: I/O GPU (SMIOL vs PIO)
BFB: Decomposition GPU (1 vs 4 ranks) BFB: Decomposition GPU (1 vs 4 ranks)
BFB: NVHPC CPU vs GPU BFB: NVHPC CPU vs GPU
Code coverage Code Coverage codecov

Container images are from ncarcisl/hpcdev. Image tags, compiler mappings, and MPI flags are configured in .github/ci-config.env.

The Model for Prediction Across Scales (MPAS) is a collaborative project for developing atmosphere, ocean, and other earth-system simulation components for use in climate, regional climate, and weather studies. The primary development partners are the climate modeling group at Los Alamos National Laboratory (COSIM) and the National Center for Atmospheric Research. Both primary partners are responsible for the MPAS framework, operators, and tools common to the applications; LANL has primary responsibility for the ocean model, and NCAR has primary responsibility for the atmospheric model.

The MPAS framework facilitates the rapid development and prototyping of models by providing infrastructure typically required by model developers, including high-level data types, communication routines, and I/O routines. By using MPAS, developers can leverage pre-existing code and focus more on development of their model.

BUILDING

This README is provided as a brief introduction to the MPAS framework. It does not provide details about each specific model, nor does it provide building instructions.

For information about building and running each core, please refer to each core's user's guide, which can be found at the following web sites:

MPAS-Atmosphere

MPAS-Albany Land Ice

MPAS-Ocean

MPAS-Seaice

Code Layout

Within the MPAS repository, code is laid out as follows. Sub-directories are only described below the src directory.

MPAS-Model
├── src
│   ├── driver -- Main driver for MPAS in stand-alone mode (Shared)
│   ├── external -- External software for MPAS (Shared)
│   ├── framework -- MPAS Framework (Includes DDT Descriptions, and shared routines. Shared)
│   ├── operators -- MPAS Opeartors (Includes Operators for MPAS meshes. Shared)
│   ├── tools -- Empty directory for include files that Registry generates (Shared)
│   │   ├── registry -- Code for building Registry.xml parser (Shared)
│   │   └── input_gen -- Code for generating streams and namelist files (Shared)
│   └── core_* -- Individual model cores.
│       └── inc -- Empty directory for include files that Registry generates
├── testing_and_setup -- Tools for setting up configurations and test cases (Shared)
└── default_inputs -- Copies of default stream and namelists files (Shared)

Model cores are typically developed independently. For information about building and running a particular core, please refer to that core's user's guide.

About

Repository for automated testing of MPAS models and shared framework releases on NCAR resources

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • Fortran 92.9%
  • Python 3.2%
  • C 1.4%
  • C++ 0.8%
  • Makefile 0.8%
  • CMake 0.4%
  • Other 0.5%