# Numerical Software

In the working group we also work on (i.e. develop and use) numerical software packages.

## Netgen/NGSolve

NGSolve is a high performance multiphysics finite element software. It is widely used to analyze models from solid mechanics, fluid dynamics and electromagnetics. Due to its flexible Python interface new physical equations and solution algorithms can be implemented easily. NGSolve is our main working horse when it comes to developing finite element based discretizations or solving PDEs numerically in general. For more related content see here and here. For people from the Göttingen campus, setup instructions for the use of NGSolve on the HPC cluster are given here.

## ngsxfem

ngsxfem is an Add-on library to Netgen/NGSolve which enables the use of unfitted finite element technologies known as XFEM, CutFEM, TraceFEM, Finite Cell, ... . ngsxfem is an academic software. Its primary intention is to facilitate the development and validation of new numerical methods. ngsxfem is our working horse for the research on unfitted FEM. For more related content see here.

## regpy

regpy is a python toolbox for regularization methods. We interface NGSolve to regpy to solve forward problems in NGSolve that are needed for an inverse problem that is solved for in regpy. For more related content see here.

## Additional content (documentation, demos, examples)

Here, we collect a list of additional content that is related to one of the previously mentioned packages. You may benefit from this list when looking for code examples, documentation or further explanations. Note that some content is newer and frequently updated while other content may be compatible mainly (or only) with an older version. The version/date in the following table refers to the latest compatible version tested, i.e. newer version may or may not work. Reproduction files are another source for code examples that we consider in a separate paragraph below.

content / link description version / date

### NGSolve

i-tutorials

documented jupyter-notebook examples of essentially all NGSolve features (authors: Joachim Schöberl, Jay Gopalakrishnan, Christoph Lehrenfeld, Christoph Wintersteiger, Lukas Kogler, ...)

latest

videos of lectures on NGSolve content (mostly from user meetings) from different authors (Joachim Schöberl, Jay Gopalakrishnan, Christoph Lehrenfeld, ...)

iFEM

An introduction to FEM for engineers based on NGSolve by Joachim Schöberl from a course given in September 2017.

Sept 2017

Forum

The NGSolve forum with many examples and explanations.

mylittlengsolve

An Introduction into C++ Programming with NGSolve. Define finite elements / CoefficientFunctions / ...

showcases, features and user meeting material

NGSolve provides a few show cases and explanation for new features on its home page. A highlight is the fluid-structure interaction example. Note that there is also advanced NGSolve material on the user meeting pages 1,2 and 3.

Jay's teaching material

Jay Gopalakrishnan has some nice examples on NGSolve programming from Winter 2015, i.e. the unit What's under the hood, Give me your element, Come to the edge and Take the rough with the smooth. And a nice jupyter notebook on Nedelec elements for Maxwell's equations.

Winter 2015

hyperbolic DG

Introductory material for Discontinuous Galerkin for hyperbolic problems with NGSolve from a Summer school in Hasselt in 2018 by Christoph Lehrenfeld. The material also introduces some basic NGSolve concepts somewhat slower than in the i-tutorials.

June 2018

FEM crash course

Quick crash course to FEM in 1D/2D (Poisson only) by Christoph Lehrenfeld.

Nov. 2019

physics camp (XLAB)

Course on physics modeling, experiments and simulation with ODEs and PDEs for high school kids (in german) by Christoph Lehrenfeld and Carsten Nowak. A live demonstration can be found here (using binder).

v6.2.2008

NPDE2 examples

Some simple example discretizations (with possible room for solving tasks) for the teaching course "Numerics of PDEs 2) by Christoph Lehrenfeld in the summer term 2020. Interactive access can be found here (using binder). A starting point is the mini tutorial.

April 2020

### NGSolve extensions (except ngsxfem)

ngs-special-functions

Special functions of SLATEC for NGSolve

NGSolve model templates

A convenience layer on top of NGSolve implementing standard building blocks in multiphysics applications (by Joachim Schöberl, Matthias Hochsteger, Christopher Lackner, Lukas Kogler).

v6.2.2008

pyeigfeast

A class of spectral projectors for implementing FEAST algorithm with various discretizations, including the DPG discretization. Filters are constructed using approximations of operator-values contour integrals. Authored by Jay Gopalakrishnan and Dow Drake.

August 2020

jayggg/elasticity

Implementation of the Arnold-Falk-Winther and Gopalakrishnan-Guzman stress finite element spaces in 2D and 3D (with weakly imposed symmetry). Further facilities to experiment with mixed methods are provided. Authored by Jay Gopalakrishnan and Paulina Sepulveda.

March 2019

NgsAMG

Implementation of Algebraic Multigrid Preconditioners for NGSolve ($$H^1$$ and elasticity) with full MPI support. Authored by Lukas Kogler.

Sept 2020

learned infinite els.

Implementation of learned infinite elements based on NGSolve and Ceres. Authored by Janosch Preuß. A live demonstration can be found here (using binder).

v6.2.2008

### ngsxfem (NGSolve extension for unfitted FEM)

jupyter tutorials

documented jupyter-notebook examples of some ngsxfem features (by Christoph Lehrenfeld, Fabian Heimann, Yimin Lou, Janosch Preuß, Thomas Jankuhn, Thomas Ludescher, Henry von Wahl).

latest

### regpy

jupyter examples

A rudimentary interactive online example of the coupling of regpy to bart and NGSolve is given here (by Christoph Rügge, Martin Uecker, Christoph Lehrenfeld).

ngs:v6.2.2008 regpy:4d4e3611

## Reproduction files

For reproducibility of research results it is good style to publish scientific results alongside the code and data that can be used to reproduce the results. An advantage of this procedure is that these reproduction files can serve also as a starting point for your investigations and developments. Here, we gather a few of these reproduction files that are using one of the previously mentioned software packages.

paper / link description package / version / date

M.Neunteufel, A.Pechstein, J.Schöberl, Three-field mixed finite element methods for nonlinear elasticity, arXiv:2009.03928, [reproduction code](github)

Nonlinear elasticity using the tangential-displacement normal-normal-stress continuous (TDNNS) method, provided examples: cooks membrane, cylindrical shell

NGSolve

Sept 2022

[vWRL20]

[reproduction files]

BDF time stepping in unfitted finite element methods for unsteady Stokes using ghost penalty stabilization.

ngsxfem

February 2020

[PHL20]

[reproduction files]

Sweeping preconditioners for wave equations in stratified media. Moving PML and DtN-FE with NGSolve.

NGSolve

e805ab54 (v6.2.1910+)

[LLS20]

[reproduction files]

Exactly tangential DG, HDG and $$H(\operatorname{div}_\Gamma)$$-conforming HDG methods for the Vector-Laplacian and the unsteady incompressible Navier-Stokes equations on surfaces with NGSolve.

NGSolve

Sept. 2019

[vWRL+19]

[reproduction files]

Simplified fluid-structure interaction problem. Steady and unsteady incompressible Navier-Stokes equations for flow around a (rotating) circle (2D) and a (rotating) sphere (3D). Discretizations with Taylor-Hood and $$H(\operatorname{div})$$-conforming HDG elements NGSolve (and other software).

NGSolve

v6.2.1906 (+patch)

[LR18a]

[reproduction files]

Model order reduction for an ALE formulation of a free boundary osmotic cell swelling problem. ALE problem solved using NGSolve, model order reduction using the reduced basis method solved using pymor.

NGSolve

pymor