Block-Structured Adaptive Mesh Refinement Methods for Partial Differential Equations