## PMD Example: The 1D Poisson Problem |

Let us consider the following classical 1D Poisson problem:

PMD splits the global domain into as many subdomains as the user required
processes. At this time, PMD only implements a 1D Domain decomposition
("1DD"). Each subdomain is divided into regular meshes which step size
and local node number are denoted here by h and Nx respectively.

Standard second order centered differences is used to discretize the second order
operator so that, in each subdomain, the previous global system now reads:

Let us denote by L, D and Up the lower, the main and the upper diagonals of the local operator matrix. All the user has to provide to PMD is two subroutines: MyLocalSolver() and MyFirstDerivative() (see source code examples included in the PMD package). The former, to solve the previous local linear system and the latter, to compute the normal first derivative at the subdomain interfaces. The source code, hereafter, parallel solve such a problem using few PMD routine calls:

PROGRAM Poisson USE |

As we notice from the previous program, PMD hides to the user the subdomain
interface problem. Also, from the user point of view, the distributed problem
reduces to a local one since data can be viewed as local to each process
memory. Especially noteworthy is that PMD doesn't depend on the user
discretization technique. It also let the user free to define his local solver
and his own method to compute the local normal first derivative at the
subdomain interfaces.

The PMD package includes some examples involving others linear second order
operators:

1D Laplace | 2D Laplace | 1D PseudoLaplace | 2D PseudoLaplace | 1D Helmholtz | 2D Helmholtz | 2D Navier-Stokes |