In this meeting we bring together advanced NGSolve users with different background, as well as newcomers who want to get a quickstart into NGS-Py. We start with a basic tutorial on the first day, present the implementation and use of new and advanced methods, and discuss topics for the near future.

Venue: Technical University Vienna, Karlsplatz 

There are no fees. Please book a hotel by your choice. The list of participants is here. To register, send an email to This email address is being protected from spambots. You need JavaScript enabled to view it.

The meeting is supported by the Vienna Center for PDEs and the SFB Taming Complexity in partial differential systems.

Tutorials and further python examples can be found here.

Tuesday, June 13
 19:00  Come Together at ...
 
Wednesday, June 14, Library building 5th floor
 8:30-9:30      NGSolve installation session        
 9:30-10:50          Solving PDEs with NGSolve - Python (Jay Gopalakrishnan)
 11:10 - 12:30      Numerical methods in NGSolve: finite element spaces, preconditioning (Joachim Schöberl)
   Lunch break
 14:00 - 15:30  Solving non-linear and time-dependent problems (Christoph Lehrenfeld)
 16:00 - 17:00  Geometric modeling and mesh-generation with Netgen - Python (Christoph Wintersteiger)
 
Thursday, June 15, Kontaktraum
 9:00 - 10:30  Getting into C++ programming with My-Little-NGSolve, Python wrapping (Christopher Lackner) talk | resources
 11:00 - 12:30
  • Evaluation of symbolic forms: run-time versus code-generation (Matthias Hochsteger) talk
  • Shared memory parallelization via TaskManager (Matthias Hochsteger) talk
  • Distributed memory parallelization (Lukas Kogler) talk
   Lunch break
 14:00-15:30
  • X-FEM with NGSolve-Python (Christoph Lehrenfeld) talk
  • Advanced methods in elasticity (Astrid Pechstein)
 16:00-18:00
  • Model order reduction with pyMOR and NGSolve (Stephan Rave)
  • Scattering (Peter Monk)
  • Topology optimization with NGS-Py (Atsushi Kawamoto)
  • Optimal-Control with NGS-Py (Simon Stingelin)
  • Multiderivative solvers for PDEs (Jochen Schütz)
  • Pythonic Feast (Jay Gopalakrishnan)
 19:30  Dinner at Heuriger 10er Marie
 
Friday, June 16, Kontaktraum
 9:00-11:00
  • H(div)-conforming HDG for Navier Stokes (Philip Lederer) resources
  • Fluid structure interaction (Michael Neunteufel) resources
  • PML (Markus Wess)
  • SolveLLG - A simulation tool for micromagnetics (Bernhard Stiftner)
  • Solving PDEs in higher dimensions (Gerhard Kitzler)
  • Algebraic multigrid for H1 and H(curl) (Bernd Schwarzenbacher)
  • Mesh generation from voxel-geometries (Daniel Herold)
 11:30-12:30
  • Infrastructure: build system, testing, documentation (Matthias Hochsteger, Christopher Lackner)
  • Outlook, discussion  (Joachim Schöberl)
 15:00 - 17:30  Vienna City Tour

 

 

 

Major parts of Netgen/NGSolve have been developed at the the following universities:

  • Vienna University of Technology
  • University of Göttingen, Germany
  • Portland State University
  • RWTH Aachen University
  • Johannes Kepler University, Linz

The development of Netgen/NGSolve has been supported by the following research projects:

  • Start Project Y192 "3D hp-Finite Elements: Fast Solvers and Adaptivity, granted by the Austrian Sciene Foundation FWF (2002-2008)
  • SFB 65 "Taming Complexity in Partial Differential Systems", granted by the Austrian Science Foundation FWF


The following people have made major contributions to Netgen/NGSolve:

Herbert Egger

Jay Gopalakrishnan

Matthias Hochsteger

Gerhard Kitzler

Lukas Kogler

Christopher Lackner

Ulrich Langer

Philip Lederer

Christoph Lehrenfeld

Michael Neunteufel

Astrid Pechstein

Joachim Schöberl

Markus Wabro

Christoph Wintersteiger

Sabine Zaglmayr

....

 

Peter Gangl, Kevin Sturm, Michael Neunteufel, Joachim Schöberl: "Fully and Semi-Automated Shape Differentiation in NGSolve", arXiv:2004.06783

J. Schöberl: "C++11 Implementation of Finite Elements in NGSolve", ASC Report 30/2014, Institute for Analysis and Scientific Computing, Vienna University of Technology, 2014, preprint

C. Lehrenfeld: Master thesis: "Hybrid Discontinuous Galerkin Methods for Incompressible Flow Problems", RWTH Aachen, 2010, pdf

S. Zaglmayr: Phd thesis "High Order Finite Elements for Electromagnetic Field Computation", Johannes Kepler University Linz, 2006, 

J. Schöberl: "NETGEN - An advancing front 2D/3D-mesh generator based on abstract rules." Computing and Visualization in Science, 1(1), pages 41-52, 1997. link

Recommended for all platforms

# Depending on platform, use either pip or pip3
pip install --upgrade ngsolve

# to work with jupyter notebooks
pip install --upgrade webgui_jupyter_widgets
# following commands are only necessary for jupyter < 7.0.0
jupyter nbextension install --user --py webgui_jupyter_widgets
jupyter nbextension enable --user --py webgui_jupyter_widgets

Ubuntu 64-bit (22.04, and newer)

Packages are now hosted on Launchpad for all supported series starting with 22.04. First make sure to activate the 'universe' repository:

sudo apt-add-repository universe

Now activate the PPA (use ppa:ngsolve/nightly to get nightly builds instead of monthly releases):

sudo add-apt-repository ppa:ngsolve/ngsolve
sudo apt-get update

Now you can install NGSolve like any other Ubuntu package with

sudo apt-get install ngsolve

 

Source Code

You can check out the latest source code using git:

git clone https://github.com/NGSolve/ngsolve.git ngsolve-src

For build instructions see Netgen/NGSolve Documentation.

Extensions (in preparation...)

NGS - XFEM Add-On for unfitted finite element discretizations (XFEM, CutFEM, TraceFEM, etc...)

All in one

Netgen/NGSolve provides the full workflow of finite element simulation: The constructive solid geometry module supports geometric modeling. Alternatively, geometric models can be imported from different formats. The Netgen mesh generator automatically generates high quality tetrahedal meshes. The NGSolve finite element library discretizes many physical models, and efficiently solves the arising systems of equations. The built-in visualization library allows fast and interactive visualization of the solution.

In an adaptive simulation, the mesh refinement routine needs access to the geometric model. Here, the error estimators of NGSolve mark elements for refinement, and Netgen performs the geometry-adapted mesh refinement. The mesh hierarchy is maintained and is used in fast multigrid solvers. Also for high order geometry approximation Netgen and NGSolve work together: Netgen generates the curved elements, and calculates Jacobians in the integration points required by NGSolve.

Flexible

The Python frontend NGS-Py provides a flexible way to setup and combine various physical models. The input is provided in the natural mathematical language of variational formulations, where trial- and test-functions are chosen from all usual function spaces. Solution fields of one model can be used as input for subsequent simulations. Automatic differentiation supports the solution of non-linear equations and optimization problems.

The program flow is defined by Python scripting. A parameterized constructive solid geometry is modelled by a Python progam, and also mesh generation is controlled by scripting. Predefined solvers can be called, or problem-adapted nonlinear solvers may be programmed on a high level.

Accurate

NGSolve provides the right finite element spaces for the common physical fields. Beside the usual scalar function spaces, NGSolve contains vector finite elements of Nedelec type for electromagnetic fields, and Raviart-Thomas or Brezzi-Douglas-Marini elements for fluxes. Discontinuous Galerkin (DG) as well as its hybrid version (HDG) is supported in NGSolve. For this, we have finite element spaces defined on facets between elements. Symmetric matrix-valued finite elements for mechanical stress tensors or moment tensors for plate or shell models are available. Function spaces of these types are available for all common cell types (segm, trig, quad, tet, prism, pyramid, hex), and are available for arbitrary order. The order can be individually adapted for every edge, face, and cell of the mesh supporting hp-adaptive simulations. Netgen/NGSolve supports curved elements of arbitrary order, which is important to achieve high accuracy.

Efficient

Typically, the most time consuming parts of a finite element simulation are equation solvers. For large scale problems iterative solvers with fast preconditioners are required. NGSolve provides a couple of efficient preconditioners such as multigrid or domain decomposition methods. We focus on preconditioning techniques which can be applied for various physical problems. The strength of NGSolve are preconditioners for higher order methods: Only local smoothing is applied for the high order basis function. The global behaviour is treated by the sub-system of lowest-order basis functions, which may be solved by a fast direct solver, or preconditioned by a geometric or algebraic multigrid method. This high-order/low-order strategy can be used within a multigrid preconditioner, or an element-level domain decomposition method of BDDC-type. Problem specific preconditioners or external solver packages can be included as plug-in modules.

High Performance

NGSolve uses various levels of parallel computing: All compute intense functions are task-parallelized. The working functions are organized as compute kernels, which are distributed by a task-manager to available threads. Netgen/NGSolve can be built for distributed memory parallel computing, where we distribute the mesh on the cluster. All the parallelization happens behind the Python interface. The same scripts run in sequential mode, shared memory as well as distributed memory mode. The finite element functions also take profit from modern vector operations such as AVX instructions. Here, shape functions in four points are processed simultaneously, leading nearly to a four-time speedup. We are prepared for the next generation desktop processors, which will support vector instructions of eight double operations in parallel.

Open

Netgen/NGSolve is distributed for free on the basis of the LGPL open source license. This allows you to use it in academic as well as commercial environments. You are invited to build extension modules for the Netgen/NGSolve finite element tool. You can implement new finite element function spaces in C++, and use them naturally within the NGS-Py language. You can program specific finite element operations, or improved and specialized preconditioners within C++. If you develop certain high level packages (like non-linear solvers, model order reduction or topology optimization algorithms), you may prefer to program it in Python. This makes it simple to share your package with the community.