Slot 21: Introduction to Cartesian grid AMR and ForestClaw
Donna Calhoun (speaker)
In this lecture, I introduce the concept of "adaptive mesh
refinement" (AMR) for Cartesian grid solvers from the perspective of early
developers interested in solving problems in shock hydrodynamics, through to
modern developments using tree-based meshing. In the last part of the talk, I
will describe ForestClaw, a parallel, adaptive finite volume solver for
Cartesian grids based on p4est.
ForestClaw uses p4est for all mesh handling and MPI communication.
It leverages the scalability of p4est for dynamic adaptive
regridding and fast, effective load balancing.
ForestClaw is used and adopted by various third-party simuation efforts.
This is the first lecture out of three on the topic (slides).
p4est is a particular lean implementation of linear octree storage,
based on a flexible forest of octrees logical structure (see the
connectivity tutorial for the precise
The theory behind all algorithms is based on the mathematical equivalence of
a tree refinement and a space filling curve.
All operations are reduced to a one-dimensional total order between the elements.
This allows to store local and ghost elements in simple arrays and to index
ranges of them with offset and length information.
Pointers are not needed for single-element access.
p4est provides several high-level algorithms that are implemented
using a large collection of small functions, most of them working on one or two
elements, and some others executing various variants of binary searches.
In this session we will discuss the fundamental logic and how it can be
exploited to realize several interesting and useful AMR algorithms.
Timo is one of the maintainers and developers of the deal.II finite element
Since roughly 2010, deal.II interfaces to p4est for scalable mesh
storage and modification.
The link to p4est is well hidden to the user of the library.
Thus, this connection is a minimally invasive example to upgrade the mesh
storage of an adaptive simulation software without touching the
discretization and solver code at all.
This is the first out of three lectures on this topic.