# 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 |