A library-centric finite element solver written in C++

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.


  • 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

More information can be found at