Solving PDEs in C++: Numerical Methods in a Unified Object-Oriented Approach

Chapter 19: Diffusion Equations

In this chapter, we apply the adaptive-refinement algorithm to a diffusion equation with discontinuous and anisotropic coefficients in a complicated nonrectangular domain. We show that this algorithm gives good accuracy with a moderate number of nodes. We also show that the multigrid preconditioner is more efficient than other preconditioners in solving the individual stiffness systems.

19.1 The Boundary-Value Problem

Here, we introduce the diffusion equation used in the present numerical tests. The PDE is


in the domain in Figure 19.1, where the diffusion coefficients P and Q are equal to 1 in most of the domain, except its lower-left quarter, where they are very large:



Figure 19.1: The domain, diffusion coefficients, and boundary conditions for the present diffusion example.

The boundary conditions are also indicated in Figure 19.1. On the circular part of the boundary, mixed boundary conditions of the form


are given, where is the outer normal vector. The letter D in the figure indicates the part of the boundary where Dirichlet boundary conditions of the form


are given. Finally, homogeneous Neumann boundary conditions of the form


are given on the rest of the boundary. This completes the introduction of the boundary-value problem. In the next section, we discuss the finite-element discretization.

19.2 The Finite-Element Mesh

The finite-element mesh is constructed by the adaptive-refinement algorithm with automatic boundary refinement (Chapter 14, Section 8). The initial mesh contains only 11 nodes and 9 triangles, providing a rather poor approximation of the domain and its boundary (Figure 19.2).

UNLIMITED FREE
ACCESS
TO THE WORLD'S BEST IDEAS

SUBMIT
Already a GlobalSpec user? Log in.

This is embarrasing...

An error occurred while processing the form. Please try again in a few minutes.

Customize Your GlobalSpec Experience

Category: Mesh Generators
Finish!
Privacy Policy

This is embarrasing...

An error occurred while processing the form. Please try again in a few minutes.