_Domain_decomposition.dox

1/*! \page Domain_Decomposition Domain Decomposition
2
3\section section_domain_decomp Domain Decomposition
4
5MOM6 supports serial, OpenMP, and MPI computations, with the user
6choosing between them at run time. All are accomplished
7through domain decomposition in the horizontal. All of the
8horizontal operations are explicit with a relatively small
9footprint, so the tiling is a logical choice. Some goals in the
10parallel design of MOM6 were:
11
12\li Don't hard-code the number of processes.
13\li MPI and OpenMP share the same basic structure.
14\li Don't break the serial optimizations.
15\li Same result as serial code for any number of processes.
16\li Portability - able to run on any (Unix) system.
17
18The whole horizontal MOM6 grid is shown in \ref section_Memory.
19The computations are done over the cells inside the darker line;
20the cells are numbered 1 to NIGLOBAL in the \f$x\f$-direction and
211 to NJGLOBAL in the \f$y\f$-direction. Those looking ahead to
22running in parallel would be wise to include factors of two and three in
23their choice of NIGLOBAL and NJGLOBAL when building new grids. MOM6 will run in
24parallel with any values of these, but the computations
25might not be load-balanced.
26
27\section section_wide_halos Wide Halos
28
29*/