The DMPLEX class encapsulates an unstructured mesh, with interfaces for both topology and geometry. It is capable of parallel refinement and coarsening (using Pragmatic) and parallel redistribution for load balancing. It is designed to interface with the PetscFE and PetscFV trial discretization objects.