2D Laplace Example Codes

Example 3

This code solves a system corresponding to a discretization of the Laplace equation with zero boundary conditions on the unit square. The domain is split into an N x N processor grid. Thus, the given number of processors should be a perfect square. Each processor's piece of the grid has n x n cells with n x n nodes connected by the standard 5-point stencil. Note that the struct interface assumes a cell-centered grid, and, therefore, the nodes are not shared. This example demonstrates more features than the previous two struct examples (Example 1 and Example 2). Two solvers are available.

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. We can split the matrix A as

A = [A_ii A_ib; A_bi A_bb].

Let u_0 be the Dirichlet B.C. We can simply say that x_b = u_0. If b_i is the right-hand side, then we just need to solve in the interior:

A_ii x_i = b_i - A_ib u_0.

For this partitcular example, u_0 = 0, so we are just solving A_ii x_i = b_i.

We recommend viewing examples 1 and 2 before viewing this example.

Example 5

This example solves the 2-D Laplacian problem with zero boundary conditions on an nxn grid. The number of unknowns is N=n^2. The standard 5-point stencil is used, and we solve for the interior nodes only.

This example solves the same problem as Example 3. Available solvers are AMG, PCG, and PCG with AMG or Parasails preconditioners.

Example 10

This code solves a system corresponding to a discretization of the Laplace equation with zero boundary conditions on the unit square. The domain is split into a n x n grid of quadrilateral elements and each processors owns a horizontal strip of size m x n, where m = n/nprocs. We use bilinear finite element discretization, so there are nodes (vertices) that are shared between neighboring processors. The Finite Element Interface is used to assemble the matrix and solve the problem. Nine different solvers are available.