Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions CITATION.cff
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,29 @@ authors:
email: paige.martin@anu.edu.au
affiliation: Australia's Climate Simulator (ACCESS-NRI), Australian National University, Canberra, Australia
orcid: 'https://orcid.org/0000-0003-3538-633X'
- given-names: Angus H.
family-names: Gibson
affiliation: Research School of Earth Sciences, Australian National University, Canberra, Australia
orcid: 'https://orcid.org/0000-0001-7577-3604'
- given-names: Josef I.
family-names: Bisits
affiliation: School of Biological Earth and Environmental Sciences, The University of New South Wales, Sydney, Australia
orcid: 'https://orcid.org/0000-0002-6340-4470'
- given-names: Claire
family-names: Yung
email: Claire.Yung@anu.edu.au
affiliation: Research School of Earth Sciences, Australian National University
orcid: 'https://orcid.org/0000-0002-0052-7668'
- given-names: Dougal
family-names: Squire
email: Dougie.Squire@anu.edu.au
affiliation: Australia’s Climate Simulator (ACCESS-NRI), Australian National University, Canberra, Australia
orcid: 'https://orcid.org/0000-0003-3271-6874'
- given-names: Andrew
family-names: Kiss
email: Andrew.Kiss@anu.edu.au
affiliation: Research School of Earth Sciences, Australian National University, Canberra, Australia
orcid: 'https://orcid.org/0000-0001-8960-9557'
repository-code: 'https://github.com/ACCESS-Community-Hub/decoding-om3'
url: 'https://github.com/ACCESS-Community-Hub/decoding-om3'
repository-artifact: >-
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Decoding OM3
An open source project to fearlessly peer inside OM3! Contributions _extremely_ welcome! See rendered pages at [https://decoding-access-om3.readthedocs.io/](https://decoding-access-om3.readthedocs.io/).
An open source project to fearlessly peer inside OM3! Contributions _extremely_ welcome! See rendered pages at [https://decoding-access-om3.readthedocs.io/](https://decoding-access-om3.readthedocs.io/decoding_mom6/).

Training as part of the regular Thursday 11:30 am COSIMA meetings being coordinated [here](https://docs.google.com/spreadsheets/d/1vk8m-oDRZChAFPnZ-HuF81YmiF7dkSXQkhZXekuj4fw/edit?gid=0#gid=0). Please get in touch with @chrisb13 (`chris.bull@anu.edu.au`) or @adele-morrison to get involved. Meetings are [announced on this thread](https://forum.access-hive.org.au/t/cosima-working-group-announce/238/181) and the [meeting link is this](https://utas.zoom.us/j/82678917036?from=addon).

# Get started...
All community members are welcome to contribute or correct errors/typos. To get write access, you need to create an issue and request access. You're also welcome to make a fork and put in a pull request.
All community members are welcome to contribute or correct errors/typos. To get write access, [create an issue and request access](https://github.com/ACCESS-Community-Hub/decoding-om3/issues/new). You're also very welcome to make a fork and put in a pull request.
62 changes: 61 additions & 1 deletion documentation/docs/pages/decoding_mom6.md
Original file line number Diff line number Diff line change
Expand Up @@ -304,8 +304,68 @@ Handy resources:
- [Another explanation of config files from MOM6 regional](https://regional-mom6.readthedocs.io/en/latest/mom6-file-structure-primer.html);
- [AOS MOM6 tutorial 2022: Running and controlling MOM6](https://www.youtube.com/watch?v=94m3CMTwJ1E) (e.g. ~15 minutes)

## Overview of MOM6 code structure
Presenter: Paul Spence (@PaulSpence)
Date: 26/03/2026.

Suggested resources in which this presentation was heavily based:

- [Central MOM6 code](https://github.com/mom-ocean/MOM6);
- [ACCESS-NRI MOM6 fork](https://github.com/acCESS-nri/mom6);
- [Marshall Ward's talk on the structure of the MOM6 code base](https://www.marshallward.org/mom6workshop/internals.html#/mom6-directory-tree);
- [Overview: MOM6 internals](https://www.youtube.com/watch?v=E8WKrESscc4).

Thanks to @marshallward for some great content!

Looking at the `mom6` [directory](https://github.com/aCCESS-NRI/mom6), we have:

- `src/` -- model code;
- `config_src/` -- configurable components;
- `pkg/` -- code directory but written by other people (eg. TEOS10 equation of state);
- `doc/` -- documentation;
- `ac/` -- autoconf build.

See 1 minute 20 in this [Overview: MOM6 internals](https://www.youtube.com/watch?v=E8WKrESscc4) for more details.

`Config_src` is particurly important. It has functions that call other model components (e.g NUOPC coupler):

- `config_src/drivers`;
- `solo_driver/` (example [here](https://github.com/ACCESS-NRI/MOM6/tree/2026.01/config_src/drivers/solo_driver));
- [NUOPC](https://github.com/ACCESS-NRI/MOM6/tree/2026.01/config_src/drivers/nuopc_cap) used in OM3 is an example of this.

Other configs are:

- `config_src/memory` (e.g. [symmetric](https://github.com/ACCESS-NRI/MOM6/tree/2026.01/config_src/memory/dynamic_symmetric), [non-symmetric](https://github.com/ACCESS-NRI/MOM6/tree/2026.01/config_src/memory/dynamic_nonsymmetric), static.)
- `config/src_infra` FMS1, FMS2
- `config_src/external` BGC, data assimilation, python interface, etc.

Note: `config_src/external` just contains a set of stubs (dummy interfaces) for external codebases that could be used with MOM6. For example there is no actual BGC code in there - that lives in a different repository ([here](https://github.com/ACCESS-NRI/GFDL-generic-tracers)).

The `src` folder has model code and has directories:

- `core/`
- `parameterizations`
- `tracer`
- `ALE`
- `diagnostics`
- `user`

Also see `framework/`, `equation_of_state/` etc

We then watched a little of this video ([Overview: MOM6 internals](https://www.youtube.com/watch?v=E8WKrESscc4)) focusing on modules.

Module Format. Here's some examples:

- [MOM_diagnostics](https://github.com/mom-ocean/MOM6/blob/main/src/diagnostics/MOM_diagnostics.F90);
- [MOM_diagnose_MLD](https://github.com/mom-ocean/MOM6/blob/main/src/diagnostics/MOM_diagnose_MLD.F90);
- A simple example is the geothermal module ([here](https://github.com/mom-ocean/MOM6/blob/08529ba87ea4ee6403446afc0c8b14f744f79c58/src/parameterizations/vertical/MOM_geothermal.F90)).

Public parts of the interface are the ones that you can call elsewhere (as opposed to private ones that you can't)

https://github.com/mom-ocean/MOM6/blob/08529ba87ea4ee6403446afc0c8b14f744f79c58/src/parameterizations/vertical/MOM_geothermal.F90#L25


## Searching through the MOM parameter docs and other output, e.g. what’s in what file, how to interpret maxCFL, truncations, warnings, errors
## Overview of MOM6 code structure -
## How to contribute code back to MOM6
# Season 2
## Navier Stokes -> stacked shallow water (adiabatic)
Expand Down