Netgen/NGSolve#

Joachim Schöberl
TU Wien

_images/TU_Wien.png

with contributions by Jay Gopalakrishnan, Portland State University
Christoph Lehrenfeld, Georg-August-Universität Göttingen
Philip Lederer, Twente University
Michael Neunteufel, Portland State University
Sabine Zaglmayr, Dassault Systems
Astrid Pechstein, Johannes Kepler University Linz
Lukas Kogler, Siemens Industry Software GmbH
Matthias Hochsteger, Christopher Lackner, CERBSim GmbH

p\(\partial\)esoft 2024, Cambridge, July 2024

This presentation uses the open-source finite element library NGSolve (www.ngsolve.org) within Jupyter Notebooks.

_images/NGSlogo.png

The talk is available online from https://jschoeberl.github.io/talk-pdesoft

_images/talk-pdesoft-QR.png

Some first examples:#

If you like to try out this talk on your computer:

python3 -m pip install numpy scipy matplotlib ipywidgets jupyter notebook 
python3 -m pip install --upgrade ngsolve webgui_jupyter_widgets

Download notebooks from the jupyter-book, and run them like

jupyter-notebook elasticity3D.ipynb

If local installation fails, you may use our jupyterhub:

jupyterhub.cerbsim.com

user: ngshub_xx
pwd: solve!xx

xx = choose a number: 01 to 31

(pick the day of month of your birthday)

You find the notebooks in the shared/talk-LLNL folder.

Some more online material:

Software design:#

  • NGSolve is written in modern C++, now on C++17

  • Classes are ported to Python using pybind11

  • MPI-based distributed memory parallelization

  • C++ thread based shared memory parallelization (TaskManager)

  • Python expression trees passed to C++, optional Code generation at run-time

Function spaces:#

  • Provide finite elements, connectivity, and certain well-defined operators

  • Many high and variable order spaces

  • Scalar, vectorial, and matrix-valued

  • Spaces on surfaces, and on interelement-facets

Flow problems:#

History:#

  • Origin 1998 - 2002 within SFB on Numerical+Symbolic Sci. Comp, JKU Linz (U. Langer, G. Haase, M. Kuhn)

  • Redesign in 2000 at Texas A&M
    T. Kolev and V. Dobrev have been around, find similar classes in MFEM

  • Starting grant on high order methods 2002-2008 in Linz, Austria
    In particular high order methods for Maxwell equations (S. Zaglmayr) and Elasticity (A. Pechstein)

  • Fluid dynamics during time at RWTH Aachen 2006-2010, HDG methods (C. Lehrenfeld, H. Egger)

  • Python frontend (started in 2015, M. Hochsteger) inspired by FEniCS

  • TU Wien / Uni Wien joint FWF-funded research project SFB 65 on Nonlinear PDEs

  • TU Wien spin-off CERBSim started 2019: support and applications (C. Lackner, M. Hochsteger)

  • Switch to OpenCascade Technology (OCCT) geometry kernel (2020)

  • PETSc interface provide access to parallel solvers (U. Zerbinati, S. Zampini, P.E. Farrell, 2023)

Recent developemnt:#

Packages on top of NGSolve#

  • ngs-xfem Cut-FEM package by C. Lehrenfeld

  • tent-pitching space-time solvers for hyperbolic equations with C. Wintersteiger, J. Gopalakrishnan

  • shape optimization by P. Gangl, K. Sturm

  • model order reduction pyMOR by R. Milk, S. Rave, F. Schindler

  • boundary elements with NGSolve ngbem with L. Weggler and D. Seibold

  • cell-method time-stepping for Maxwell with M. Wess, B. Kapidani and L. Codecasa

  • ngsPETSc PETSc interface, U. Zerbinati et al

A lot of new material from the NGSolve User Meeting 2024: NGS24