* * README 9.1 92/07/01 17:54:55 * examples/fortran/gauss This program illustrates how a program would pass messages to exchange information during each cycle of an iterative procedure. Specifically, the program solves LaPlace's Equation in two dimensions with fixed boundary conditions using a finite difference approximation and the iterative Gauss-Seidel method. The program illustrates the domain decomposition method. It sets up a rectangular grid over the domain and assigns portions of the domain to different nodes. In second order, each iteration cycle consists of starting with some guessed value and then replacing the value at each grid point with the average value of its nearest neighbors. The grid is represented as a two-dimensional array and assigned in vertical strips to each node. A node with an internal strip shares boundaries with two other nodes, a left node and a right node. When it calculates a value for a point on its boundaries, it needs those nearest neighbor values from those left and right nodes. Those values change with each iteration. The solution is for each node to maintain a "shadow" buffer. Before each iteration cycle, a node receives values from the boundaries of adjacent nodes into its shadow buffer and sends the values of its own boundaries to the shadow buffers of its neighbor nodes. The rectangular grid for this example is a 16 x 16 array. If you partition this among four nodes, each nodes gets four columns. It doesn't make sense to partition it over more that 16 nodes, and the program won't allow you to do it. If you partition it over eight nodes, each node has no interior columns. The program best illustrates the technique with a four-node cube.