Felicity: A matlab/C++ toolbox for developing finite element methods and simulation modeling
Document Type
Article
Publication Date
1-1-2018
Abstract
This paper describes a MATLAB/C++ finite element toolbox, called FELICITY, for simulating various types of systems of partial differential equations (e.g., coupled elliptic/parabolic problems) using the finite element method. It uses MATLAB in an object-oriented way for high-level manipulation of data structures in finite element codes, while utilizing a domain-specific language (DSL) and code generation to automate low-level tasks such as matrix assembly (via the MATLAB mex interface). We describe the fundamental functionality of the toolbox's MATLAB interface, such as using higher order Lagrange (simplicial) meshes, defining finite element spaces, allocating degrees-of-freedom, assembling discrete bilinear and linear forms, and interpolation over meshes. Moreover, we describe in-depth how automatic code generation is implemented in FELICITY. Two example problems and their implementation are provided to demonstrate the ability of FELICITY to solve coupled problems with interacting subdomains of different co-dimension. Future improvements are also discussed.
Publication Source (Journal or Book title)
SIAM Journal on Scientific Computing
First Page
C234
Last Page
C257
Recommended Citation
Walker, S. (2018). Felicity: A matlab/C++ toolbox for developing finite element methods and simulation modeling. SIAM Journal on Scientific Computing, 40 (2), C234-C257. https://doi.org/10.1137/17m1128745