ViennaFEM is a free open-source implementation of a finite element solver for partial differential equations in C++. The library is built from several orthogonal components: ViennaCL for the linear solver (including GPU acceleration), ViennaData for storing quantities on the grid, which is handled by ViennaGrid, and ViennaMath as a symbolic math kernel used for automatically deriving the weak formulation of the provided PDE.
A non-exhaustive list of features is as follows:
- Automatic derivation of the weak form for a given strong form (restrictions apply)
- Dimension-independent programming: The same code works in 1d, 2d and 3d.
- Multiple FEM runs on the same mesh supported (no data interference)
- Mesh refinement for triangular and tetrahedral meshes
- GPU-acceleration via ViennaCL available
- Multi-Platform support
- Header-Only library
- Permissive MIT/X11 license