Repository Descriptions


The MPAS project contains several repositories. Some of the repositories are private for development efforts while some are public for users and releases. These repositories are described below.



Main Development/Release

The main MPAS repositories are described in this section. Users interested in implementing a new feature only need to interest themselves in the “MPAS-Release” section below.


MPAS

Private repository

The main MPAS development repository is where the majority of MPAS development occurs. Instructions on using it to add a feature are in the “Forks” section in Development. This is a private repository for development efforts.


MPAS-Legacy

Private repository

The MPAS-Legacy repository provides a linear history of the previous SVN repository’s trunk/mpas directory. It is provided only for debugging purposes and no development should/will be carried out using it.


MPAS-Release

Public repository

Users should refer to the main MPAS release repository for bug fixes, issues, and major releases for MPAS.

Users who wish to implement a new feature, and have that feature merged into the MPAS repository should follow the instructions on code requirements and repository layout as an MPAS developer would. Forks should be made of this release repository for this type of development rather than the MPAS developer repository. New features will undergo a code review before any merge onto the release repository.


Layouts

The MPAS, MPAS-Release, and MPAS-Legacy repositories are all laid out as follows.

| - Makefile
\ - src
    | - driver
    | - registry
    | - framework
    | - operators
    | - external
    | - inc
    | - core_*
    \ - Makefile

Although there are more files/directories than are listed, these are the relevant directories for source code modifications, with their descriptions below.


src

A directory containing all source code related to MPAS - whether or not it is shared<F6>


Shared parts of MPAS belong in either of the following directories:

registry

The registry contains the parsing code for Registry, which is used for easy modification of variables within a specific MPAS core. Each core has its own Registry.xml file which defines a list of dimensions, namelist options, variables, and other information specific to that core. During compilation, the registry parser (parse) is built. This parser then parses the Registry.xml file and generates some Fortran code, which is stored in src/inc. It is then included at various places within framework to define all of the necessary things. The code generated from registry defines the domain structure for a core, and routines associated with building the domain. Domains are discussed in Development Guidelines.

driver

A directory containing general code for building the MPAS executable, and the general structure of an MPAS executable

external

A directory containing code to MPAS, that is used within MPAS, i.e. ESMF time keeping routines

framework

A directory containing shared code related to the framework of MPAS - this includes the I/O layer, communication routines, and definitions of the data types

operators

A directory containing shared code used for computing specific quantities on an MPAS grid. This includes radial basis function interpolation

inc

An empty staging directory that registry fills at compile time


Non-shared parts of MPAS belong under the remaining directories. As an example, the core sw directory represents the shallow water dynamic core within the MPAS framework. Other directories named core are either dynamical cores, or parts of other dynamical cores.

Most developers will only work under their specific core directory, and should not modify code in another core without permission.



MPAS-Testing

Private repository

The MPAS-Testing repository contains software to setup and run MPAS test cases.


Layout

The MPAS-Testing repository is laid out as follows.

MPAS-Testing
| -- sw (test cases for Shallow Water core)
| -- ocean (test cases for Ocean core)
| -- atmosphere (test cases for Non-hydrostatic Atmospheric core)
\ -- shared (test cases for shared parts of MPAS)


MPAS-Documents

Private repository

The MPAS-Documents repository contains all MPAS-related documents. This includes design documents, users guides, developers guides, etc.


Layout

The MPAS-Documents repository is laid out as follows.

MPAS-Documents
| -- design_documents
|    | -- shared (design documents for project in shared directory)
|    | -- sw (design documents for Shallow Water core)
|    | -- ocean (design documents for Ocean core)
|    | -- atmosphere (design documents for Non-hydrostatic Atmosphere core)
| -- users_guide
|    | -- shared (shared parts of the users guide)
|    | -- sw (Shallow Water-specific parts of the users guide)
|    | -- ocean (Ocean-specific parts of the users guide)
|    | -- atmosphere (Non-hydrostatic Atmosphere- specific parts of the users guide)
\ -- developers_guide (this document)


MPAS-Tools

Private repository

The MPAS-Tools repository contains all MPAS related tools


Layout

The layout of the MPAS-Tools repository is as follows:

MPAS-Tools
| -- analysis (all tools related to analysis)
| -- grid_gen (all tools related to grid generation)
| -- python_scripts (all general purpose python scripts)
\ -- visualization (all visualization tools)

To promote reuse of previously developed tools, tools are not stored in core specific directories. Developers are encouraged to browse other tools to determine if a feature is implemented elsewhere.



MPAS-Data

Public repository

The MPAS-Data repository contains data required to run specific MPAS models. This data does not include input files related to specific runs, it is intended to house general data that does not change between runs.


Layout

The layout of the MPAS-Data repository is as follows:

MPAS-Data
| -- framework (data required for parts of framework)
| -- operators (data required for parts of operators)
\ -- core_* (Data required for specific cores)