MooAFEM: An object oriented Matlab code for higher-order adaptive FEM for (nonlinear) elliptic PDEs
Michael Innerberger, Dirk Praetorius
TL;DR
MooAFEM delivers a MATLAB object-oriented adaptive FEM framework for 2D elliptic PDEs with general coefficients and higher-order spaces, including nonlinear problems solved via iterative linearization. The software is organized into Geometry, Integration, and FEM modules, built from a compact set of classes that enable vectorized, reusable, and safely maintained code, with mesh events propagated through an observer pattern. The paper details the AFEM workflow, data structures, and prolongation mechanisms, and demonstrates the approach through higher-order AFEM, GOAFEM with discontinuous data, and iterative nonlinear solvers, highlighting accuracy and computational efficiency in MATLAB. Overall, MooAFEM provides a practical, extensible toolkit that combines expressive MATLAB OO design with robust AFEM capabilities for both linear and nonlinear 2D PDEs.
Abstract
We present an easily accessible, object oriented code (written exclusively in Matlab) for adaptive finite element simulations in 2D. It features various refinement routines for triangular meshes as well as fully vectorized FEM ansatz spaces of arbitrary polynomial order and allows for problems with very general coefficients. In particular, our code can handle problems typically arising from iterative linearization methods used to solve nonlinear PDEs. Due to the object oriented programming paradigm, the code can be used easily and is readily extensible. We explain the basic principles of our code and give numerical experiments that underline its flexibility as well as its efficiency.
