an add-on to NGSolve for Trefftz methods

Binder Docker Image Version (latest semver) PyPI GitHub Workflow Status status docs

NGSTrefftz provides a framework to implement Trefftz finite element spaces for NGSolve, with several Trefftz spaces already implemented. Additionally, Trefftz-DG on tent-pitched meshes for the acoustic wave equation is implemented using meshes provided by ngstents. Furthermore, the package includes an implementation of the embedded Trefftz method.

Try it out!

You can try out some jupyter notebooks:

  • Launch the Binder here: Binder

  • Or run the docker locally (you need to have docker installed):

git clone
cd NGSTrefftz && docker build -t ngstrefftz_jupyter .
docker run -p 8888:8888 ngstrefftz_jupyter

Installing the package

You can either:

  • install using pip

pip install ngstrefftz
  • or build from source

git clone --recursive
mkdir ./NGSTrefftz/make && cd ./NGSTrefftz/make
cmake ../src && make install


  • if you are using pip to install the package you can install the newest ngsolve and other dependencies using

pip install ngsolve --pre
  • if you build the package from source the following software needs to be installed

    • cmake >= 3.1

    • gcc >= 9 or clang >= 10

    • lapack >= 3.9 (required to access the newest features)

    • ngsolve >= 6.2 (to access the newest features the nightly version of NGSolve works best)


⚠️ Oct, 2022: With v0.2.0 the git history has undergone a major cleanup, please make sure to clone the repo anew.

🚀 Oct, 2022: New and improved implementation of the embedded Trefftz method via EmbeddedTrefftzFES!

🚀 Aug, 2022: Three different pip-installer available, now using wheels!

🚀 Mar, 2022: NGSTrefftz now has a website!

⚠️ Feb, 2022: If you are using NGSolve nightly releases: NGSolve@eda758d breaks a dependency and NGSolve@3d52ecd produces import issue. Make sure to update ngstrefftz submodules and move to newest ngsolve version, at least NGSolve@5839a09.

🚀 Jan, 2022: NGSTrefftz is now available via pip!

🚀 Nov, 2021: NGSTrefftz now comes in a docker and with binder notebooks!

Papers using the code

  • Trefftz Discontinuous Galerkin discretization for the Stokes problem Philip L. Lederer, Christoph Lehrenfeld, Paul Stocker arXiv

  • Unfitted Trefftz discontinuous Galerkin methods for elliptic boundary value problems Fabian Heimann, Christoph Lehrenfeld, Paul Stocker, Henry von Wahl arXiv

  • Embedded Trefftz discontinuous Galerkin methods Christoph Lehrenfeld, Paul Stocker arXiv

  • A space-time quasi-Trefftz DG method for the wave equation with piecewise-smooth coefficients Lise-Marie Imbert-Gérard, Andrea Moiola, Paul Stocker arXiv

  • Tent pitching and Trefftz-DG method for the acoustic wave equation Ilaria Perugia, Joachim Schöberl, Paul Stocker, Christoph Wintersteiger arXiv

If you are using ngstrefftz in your academic work, please consider citing

Stocker, P., (2022). NGSTrefftz: Add-on to NGSolve for Trefftz methods.
Journal of Open Source Software, 7(71), 4135,