  In this paper we describe in detail the computational algorithm used by our
parallel multigrid elliptic equation solver with adaptive mesh refinement. Our
code uses truncation error estimates to adaptively refine the grid as part of
the solution process. The presentation includes a discussion of the orders of
accuracy that we use for prolongation and restriction operators to ensure
second order accurate results and to minimize computational work. Code tests
are presented that confirm the overall second order accuracy and demonstrate
the savings in computational resources provided by adaptive mesh refinement.
