Tutorials


On this page you find a list of tutorials that explain the usage of features offered by Concepts.


The basic example in How to get started deals as a model problem in all tutorials and is extended by certain aspects such as alternative boundary conditions, the usage of advanced linear solvers, parallelization etc. You can find tutorials directly in C++ version and in Python version, where C++ classes are mirrored.




Basic Example C++ Python
Solving elliptic PDE with homogeneous Dirichlet Boundary Conditions howToGetStarted.cc howToGetStarted.py


You can try out all tutorials yourself. The C++ code of each tutorial is stored in /applications folder and Python code of each tutorial is stored in /python/applications folder.

The tutorials gives an explanation of the new aspect, the extensively commented source code of the program, the results and, at the end, the complete source code without comments. The recognized names in the source code and in the comments are linked with the class documentation.

For a list of tutorials on certain applications (e.g. scattering problems in 2D, Maxwell eigenvalue problem in 3D), please see Applications.

Boundary conditions


Applications C++ Python
Implement inhomogeneous Dirichlet boundary conditions using a Dirichlet lift ansatz inhomDirichletBCs.cc inhomDirichletBCs.py
Implement inhomogeneous Dirichlet boundary conditions using a Lagrangian multiplier and a mixed variational formulation inhomDirichletBCsLagrange.cc inhomDirichletBCsLagrange.py
Implement inhomogeneous Neumann boundary conditions inhomNeumannBCs.cc inhomNeumannBCs.py
Implement Robin boundary conditions using trace spaces RobinBCs.cc RobinBCs.py

Mesh definition, mesh import

Meshes are defined with exterior packages which can be imported into Concepts. Currently, we support the mesh format of the mesh generator Gmsh and an own format. A documentation for the definition and import with your own format consisting of five .dat files can be found here.

The imported meshes are represented in a class structure inside Concepts, where the topological information (connectivity) and geometrical information is separated. To get familiar with these Concepts classes we recommend to study the tutorial on mesh definition inside Concepts below.



Tutorial C++
How to define 1D, 2D, and 3D meshes directly as Concepts classes meshes.cc

Overview of Solvers

A number of iterative solvers are available inside Concepts, e.g. the conjugate gradient method or GMRES, and we provide access to several direct solvers, which are installed or can be installed on your system, Mumps or SuperLU. The installation guide, documentation, and syntax (for both C++ and Python) to use the solvers for linear systems can be found here.

Parameter input


Tutorial C++ Python
How to input (and output) the parameter from command line and data files inputoutput.cc inputoutput.py

Import from and export to Matlab binary files


Tutorial C++ Python
How to import data from and export data to Matlab binary files matfileTutorial.cc matfileTutorial.py

Eigenvalue problems


Tutorial C++
How to solve standard and general eigenvalue problems using the interface to Arpack++ arpackppTutorial.cc

Parallelization


Tutorial C++

How to solve PDEs on multiple processors

(The example solved is the one introduced in How to get started)

parallelizationTutorial.cc

Graphical output

We have written an application, showSol2D.cc, to create graphical output to Matlab for solutions stored in the disk.

Page URL: http://wiki.math.ethz.ch/bin/view/Concepts/Tutorials
2020-10-26
© 2020 Eidgenössische Technische Hochschule Zürich