| broadcast | Broadcast routines. This particular version contains MPI versions of these routines |
| check | Routuines to verify that the miniapp produced the correct answer |
| communicate | Routines and variables that are necessary for communicating between processors |
| constants | Physical and numerical constants used throughout the Parallel Ocean Program |
| domain_size | This module contains parameters for the global model domain size decomposition block size. It is used by the domain and block modules for decomposing the model domain across processors |
| exit_mod | Routine to provide a graceful means of exiting from POP when encountering an error |
| gshalo | Proxy module for one of the other boundary exchange modules. The value of boundary_exchange_algorithm will determine which boundary exchange algorithm to use |
| io_serial | This module provides several methods to read and write data needed by the miniapp |
| IOUnitsMod | I/O unit manager for tracking, assigning and reserving I/O unit numbers |
| kinds_mod | Default numerical data types for all common data types like integer, character, logical, real4 and real8 |
| linear | This module contains routines for converting to and from the linear data structure in the solver |
| matrix_mod | Routines for multiplying a compressed sparse row matrix and a vector (the linear data structure in the solver) |
| mpi2s_gshalo | Routines to initialize and perform the boundary exchange operation |
| reductions | This module contains all the routines for performing global reductions like global sums, minvals, maxvals, etc |
| simple_blocks | Data types and tools for decomposing a global horizontal domain into a set of blocks. This module contains a data type for describing each block and contains routines for creating and querying the block decomposition for a global domain |
| simple_domain | Model domain and routines for initializing the domain. This module also initializes the decompositions and distributions across processors/threads by calling relevent routines in the block, distribution modules |
| simple_type | This data structure describes the how blocks are distributed accross tasks |
| solvers | This module contains routines and operators for solving the elliptic system for surface pressure in the barotropic mode |
| timers | This module contains routine for supporting multiple CPU timers and accumulates time for each individual block and node (task) |