M++ (Meshes, Multigrid and more)
M++ (Meshes, Multigrid and more) ist ein paralleles Finite Elemente-Programm zur Lösung partieller Differentialgleichungen, das am Institut für Angewandte und Numerische Mathematik in der Arbeitsgruppe Wissenschaftliches Rechnen entwicklt wird. Es wird für Forschungsprojekte und in der Lehre eingesetzt. Die zugrunde gelegte Programmiersprache ist C++. Für die parallele Verarbeitung wird MPI verwendet.
Jede Problemklasse kann individuell erstellt und mit bereits implementierten (Standard-) Verfahren gelöst werden, darunter fallen:
- verschiedene Arten Finiter Elemente: Lagrange, Discontinuous Lagrange, Nedelec, Raviart-Thomas
- Löser, u.a.: CG, GMRES, BiCGStab, MINRES
- Vorkonditionierer, u.a.: Jacobi, GaussSeidel, SSOR, paralleler direkter Löser
- Verwendung verschiedener externe Routinen, insb. BLAS, LAPACK, SuperLU
- Möglichkeiten zur Erstellung von Plotdateien, insb. vtk, vtu, gp
Hierbei stehen bereits vorgefertigte Problemklassen zur Verfügung, zum Beispiel Poission, Darcy, Konvektion-Diffusion-Reaktion, Transport, Stokes, Elastizität und Plastizität, Maxwell, etc.
Weitere Beispiele zu M++ mit Praktikumsaufgaben finden Sie auf Vorlesungsseite Einführung in das Wissenschaftliche Rechnen.
Anleitung zum Download und zur Installation
Sie können eine aktuelle M++-Version (inklusive Tutorial) auf GitLab finden: Mpp
Dieses Git-Repository wird in weiteren Git-Repositories eingebunden, um die verschiedenen Projekte zu realisieren.
Der Installationsprozess ist im Readme-Markdown auf den jeweiligen Git-Repositories beschrieben.
Veröffentlichungen
Simulationsergebnisse mit M++ wurde bereits in vielen Dissertationen und Artikeln verwendet.