Skip to content


A polyvalent C++ FEM library.

Build Status Build status



Download the code from the repository. All the C++ dependencies required to build the code are included. It should work on Windows, macOS and Linux, and it should build out of the box with CMake:

mkdir build
cd build
cmake ..
make -j4

On Linux zenity is required for the file dialog window to work. On macOS and Windows the native windows are used directly. The formula for higher order bases are computed at CMake time using an external python script. Consequently, PolyFEM requires a working installation of Python and some additional packages in order to build correctly:

  • numpy and sympy
  • quadpy (optional)


The main executable, ./PolyFEM_bin, can be called with a GUI or through a command-line interface. Simply run:




The code of PolyFEM itself is licensed under MIT License. However, please be mindful of third-party libraries which are used by PolyFEM, and may be available under a different license.


If you use PolyFEM in your project, please consider citing our work:

    author = {Teseo Schneider and Yixin Hu and Jérémie Dumas and Xifeng Gao and Daniele Panozzo and Denis Zorin},
    journal = {ACM Transactions on Graphics},
    link = {},
    month = {10},
    number = {6},
    publisher = {Association for Computing Machinery (ACM)},
    title = {Decoupling Simulation Accuracy from Mesh Quality},
    volume = {37},
    year = {2018}