This example differs from the previous structured example (Example 3) in that a more sophisticated stencil and boundary conditions are implemented. The method illustrated here to implement the boundary conditions is much more general than that in the previous example. Also symmetric storage is utilized when applicable.
This code solves the convection-reaction-diffusion problem div (-K grad u + B u) + C u = F in the unit square with boundary condition u = U0. The domain is split into N x N processor grid. Thus, the given number of processors should be a perfect square. Each processor has a n x n grid, with nodes connected by a 5-point stencil. Note that the struct interface assumes a cell-centered grid, and, therefore, the nodes are not shared.
To incorporate the boundary conditions, we do the following: Let x_i and x_b be the interior and boundary parts of the solution vector x. If we split the matrix A as
then we solve
Note that this differs from the previous example in that we are actually solving for the boundary conditions (so they may not be exact as in ex3, where we only solved for the interior). This approach is useful for more general types of b.c.
A number of solvers are available. More information can be found in the Solvers and Preconditioners chapter of the User's Manual.
We recommend viewing examples 1, 2, and 3 before viewing this example.