Here is a list of the major changes that the user who is accustomed to the serial code may notice.
1. The parallel version defaults to a double precision calculation.
2. All of the principal arrays used in this code have been changed from a one-dimensional vector representation into a 3-D vector representation, i.e. the vector pix(m) from the serial version has its parallel counterpart, pix(i, j, k). This 3-D representation describes the data in a more natural way and also allows easier manipulation in a multiple processing environment for communication between processing nodes.
3. The array vox(nx, ny, d1 − 1: d2 + 1) is used throughout this program in lieu of pix and is invoked to do the rest of the computations. Pix itself is dynamically allocated and is deallocated as soon as the array vox is created.
4. The principal data arrays in this program have been changed. The arrays u, b, gb, h, and Ah were originally dimensioned as (ns, 3) in the serial problem, but in this new paradigm they are changed to reflect the 3-dimensionality of the problem. They are now dimensioned on a per node basis (akin to the array vox) to (nx, ny, d1 − 1 : d2 + 1,3); each has their own set of top and bottom ghost layers as well.
5. Arrays that are dependent on nx, ny, nz (like the forementioned set) and nphase e.g., dk, cmod and prob are now dynamically allocated. This saves the user time editing the code for his problem since the dimensions do not have to be changed from problem to problem. One only has to change the respective values of nx, ny, nz and nphase.