Interactive NGSolve Tutorial

What are the i-tutorials ?

The i-tutorials are interactive tutorials to NGS-Py, the Python front-end to NGSolve. The i-tutorials are Jupyter notebooks which allow you to explore the features of NGS-Py.

The i-tutorials have been setup for the 2017 NGSolve user meeting. The authors of the sections are Jay Gopalakrishnan (Getting Started), Joachim Schöberl (Advanced Topics), Christoph Lehrenfeld (Time-dependent and non-linear problems), Christoph Wintersteiger (Geometric modeling and mesh generation). Big thanks to Matthias Hochsteger for integrating the Netgen-GUI into Jupyter.

Copyright: The i-tutorials are a part of NGSolve and are covered by the LGPL open source license. You may extend and modify them for your use, but you have to refer to the original source.

We acknowledge support from the TU Wien and by the Austrian Science Foundation FWF within project grant SFB65 Taming Complexity in Partial Differential Systems.

Installation

To work through the i-tutorials, you first have to install

To use the webgui visualization within jupyter you need

pip3 install webgui_jupyter_widgets
jupyter nbextension install --user --py widgetsnbextension
jupyter nbextension enable --user --py widgetsnbextension
jupyter nbextension install --user --py webgui_jupyter_widgets
jupyter nbextension enable --user --py webgui_jupyter_widgets

Some of the tutorials require packages from scipy and matplotlib, so it is a good idea to install them as well:

pip3 install scipy matplotlib matplotlib

i-tutorials on Youtube

We have recorded the tutorial sessions from the 3rd NGSolve Usermeeting in which most of these tutorial files were presented. You can watch the presentations on the NGSolve Youtube channel.

Starting

You start with the interactive tutorial by opening a terminal, go to the main folder containing the i-tutorials, and start

jupyter-notebook index.ipynb

Whetting the Appetite

1. Getting started

2. Advanced Topics

3. Time-dependent and non-linear problems

4. Geometric modeling and mesh generation

5. MPI - Parallelization and CUDA Support

More on PETSc coupling is available by Stefano Zampini and Umberto Zerbinati at https://ngspetsc.readthedocs.io/en/latest/ngsPETSc.html

CUDA Device support:

some more MPI examples:

6. Various Topics

7. Shape- and Topology Optimization

Peter Gangl and Kevin Sturm

8. Unfitted Finite Elements

  1. Lehrenfeld and the ngsxfem authors

These units require the Add-on ngsxfem to be installed. There are further ngsxfem-tutorials here.

9. Extending by C++ programming

10. NGSolve and ...

Appendix