Netgen/NGSolve#
Joachim Schöberl
TU Wien
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.
The talk is available online from https://jschoeberl.github.io/talk-pdesoft
Some first examples:#
Maxwell: coil transformer
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:
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 MFEMStarting 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