next up previous contents
Next: Implementational details Up: Navcalc and Navcalcmpi Previous: Command line arguments   Contents


Parallelization issues

For the parallelization the domain $ \Omega_{R}$ is divided into several rectangular subdomains $ \Omega_1,\dots,\Omega_\mu$. A simple 2D example is shown in figure [*].
Figure: 2D parallelization example.
\includegraphics[width=0.5\textwidth,keepaspectratio]{p4.eps}
Each process holds some ghost cells which overlap inner cells of the adjacent process. Values are copied from these to the ghost cells when necessary. To minimize communication, the program divides $ \Omega_{R}$ in a way that minimizes the area of the touching faces and equilibrates the number of cells in the different subdomains.

The data required for parallelization is kept in the class ParParams which can be found in parallel.hpp. The most important variables are described in the following table:

variable description
biug, biog, bjug, bjog, bkug, bkog This defines the computational domain for this process (excluding the necessary ghost cells) as $ \{{\tt biug},\dots,{\tt biog}\}\times\{{\tt bjug},\dots,{\tt bjog}\}\times
\{{\tt bkug},\dots,{\tt bkog}\}$. For your convenience, read access is possible using the macros iug, iog, etc. For example, $ \{1,16\}\times\{1,10\}\times\{1,10\}$ will be divided into $ \{1,8\}\times\{1,10\}\times\{1,10\}$ and $ \{9,16\}\times\{1,10\}\times\{1,10\}$.
me Process ID of this task.
tn, ts, tw, te, tb, tt IDs of the neighbour processes in each direction (see figure [*]). The value -1 means that there is no neighbour process.


next up previous contents
Next: Implementational details Up: Navcalc and Navcalcmpi Previous: Command line arguments   Contents
Martin Engel 2004-03-15