gmgpolar
High Order Geometric Multigrid for planes in curvilinear coordinates
Science Score: 67.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 1 DOI reference(s) in README -
✓Academic publication links
Links to: springer.com -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (15.3%) to scientific vocabulary
Keywords
Repository
High Order Geometric Multigrid for planes in curvilinear coordinates
Basic Info
Statistics
- Stars: 16
- Watchers: 2
- Forks: 2
- Open Issues: 11
- Releases: 6
Topics
Metadata Files
README.md

GMGPolar is a performant geometric multigrid solver using implicit extrapolation to raise the convergence order. It is based on meshes in tensor- or product-format. GMGPolar's focus applications are geometries that can be described by polar or curvilinear coordinates for which suited smoothing procedures have been developed.
If using GMGPolar, please cite:
M. J. Kühn, C. Kruse, U. Rüde. Implicitly extrapolated geometric multigrid on disk-like domains for the gyrokinetic Poisson equation from fusion plasma applications. Journal of Scientific Computing, 91 (28). Springer (2022). Link: https://link.springer.com/article/10.1007/s10915-022-01802-1
Obtaining the source code
The GMGPolar Solver can run with or without the sparse direct solver MUMPS, though using MUMPS is recommended for optimal performance. This guide provides instructions on obtaining the code and installing the necessary dependencies.
Clone the GMGPolar Repository
To begin, download the latest stable version of GMGPolar by running the following commands in your terminal:
# Clone the repository. This will create a directory named GMGPolar.
git clone https://github.com/mknaranja/GMGPolar
Configuring the Solver
After cloning the repository, you'll need to configure the solver for your system. Edit the CMakeLists.txt file to reflect your system's configuration (e.g., paths to libraries, file names, etc.).
Installing MUMPS using Spack
We highly recommend using Spack to manage and install external dependencies such as MUMPS. The following steps outline the process for installing MUMPS and related tools.
Step 1: Install Spack
To install and set up Spack, execute the following commands in your terminal:
# Clone the Spack repository
git clone https://github.com/spack/spack.git
# Add Spack to your environment by sourcing its setup script
echo ". $HOME/spack/share/spack/setup-env.sh" >> ~/.bashrc
# Refresh your terminal or source your .bashrc
source ~/.bashrc
Step 2: Install MUMPS
With Spack set up, you can now install MUMPS. The following command installs version 5.5.1 of MUMPS with specific options that are recommended for GMGPolar:
spack install mumps@5.5.1 ~blr_mt ~complex +double +float ~incfort ~int64 +metis ~mpi +openmp ~parmetis ~ptscotch ~scotch +shared
Note on AVX / AVX-512 Compatibility
If your system does not support AVX or AVX-512 instructions (e.g., on AMD processors), install MUMPS with the following command:
spack install mumps@5.5.1 target=x86_64 ~blr_mt ~complex +double +float ~incfort ~int64 +metis ~mpi +openmp ~parmetis ~ptscotch ~scotch +shared
Step 3: Configure CMake for GMGPolar
After installing MUMPS and other dependencies, ensure that the paths to the libraries are correctly set in the CMakeLists.txt file.
Final Step: Compiling the GMGPolar Solver
Once everything is configured, compile the solver by running the following commands:
bash
cd scripts
./compile.sh [Debug|Release]
After executing ./compile.sh [Debug|Release], the script will compile the solver using the specified build type. You can also run ./compile.sh without any arguments afterward, and it will automatically use the last configured build type.
Currently, the default build process only supports gnu compiler although Intel compiler has been successfully tested for some configurations.
Optional: Measuring performance
We use Likwid for performance monitoring. You can install it using Spack as well:
Install Likwid (Performance Monitoring Tool):
bash
spack install likwid
Running GMGPolar
You can run the solver without having to write a code (as we do in the next section). After building
the library, a binary is created called ./build/gmgpolar, it takes parameters directly from command-line.
# To try GMGPolar on a small problem size, without having to write any code,
# ./build/gmgpolar uses default parameters with a grid 33 x 64.
./build/gmgpolar
# For more details on the available parameters, see the scripts/tutorial/run.sh script.
Issue tracker
If you find any bug, didn't understand a step in the documentation, or if you
have a feature request, submit your issue on our
Issue Tracker: https://github.com/mknaranja/GMGPolar/issues
by giving:
- reproducible parameters
- computing environment (compiler, etc.)
Release Notes
GMGPolar 1.0.0
1) Working multigrid cycle 2) In-house solver and possibility to link with MUMPS for the smoothing and coarse grid solution 3) Extrapolation strategies:
a. No extrapolation (--extrapolation 0)
b. Default implicit extrapolation (--extrapolation 1)
c. Non-default implicit extrapolation with smoothing of all nodes on the finest level [experimental, use with care, convergence cannot be observed with residual] (--extrapolation 2)
6) Optimization of applyA / buildrhs / applyprolongation / buildAsc / applyAscortho
GMGPolar 2.0.0
1) Enhancements and New Class Layout: - Linear Algebra: - Introduced custom Vector and SparseMatrix classes. - Added a (cyclic) Tridiagonal Solver for improved performance and usability. - Input Functions: - Separated into distinct components: DomainGeometry, BoundaryConditions, SourceTerm, etc. - Polar Grid: - Indexing is now based on circle/radial smoother. - Residual: - Improved the residual calculation by addressing the unintuitive behavior that previously applied only to the interior part of the matrix. - Direct Solver: - Fixed a bug where boundary values were not treated correctly. - Built matrices to be symmetric, reducing factorization time. - Smoother: - Separated into extrapolated and standard smoothers. - Replaced the LU-Decomposition algorithm with the Thomas algorithm for improved efficiency.
2) New Features
- Introduced W- and F cycles for enhanced solving capabilities.
- Added FMG (Full Multigrid) to obtain improved starting solutions.
- Implemented advanced caching behavior options for the "Give" implementation strategy.
- Added a faster strategy named 'Take,' which is appropriate for cases where memory is less of a constraint, resulting in an 80% increase in memory usage.
- Comprehensive Unit Tests: Integrated Google Unit Tests for all classes, ensuring robust and reliable functionality across the codebase.
3) Performance Improvements
- Removed the task-based approach, which did not scale well with increasing parallelization.
- Reduced maximum usage by 61.5% by constructing symmetric matrices and utilizing the tridiagonal structure of smoother matrices.
4) Updated Features
- Added a new LU decomposition solver, allowing users to choose between MUMPS and the in-house solver for greater flexibility and performance.
Owner
- Name: SciCompMod
- Login: SciCompMod
- Kind: organization
- Repositories: 1
- Profile: https://github.com/SciCompMod
Citation (CITATION.cff)
title: GMGPolar
version: 2.0.0
date-released: "2023-04-14"
repository-code: "https://github.com/mknaranja/GMGPolar"
url: "https://github.com/mknaranja/GMGPolar"
doi: "10.5281/zenodo.7827802"
license: Apache-2.0
type: software
authors:
#Authors
- given-names: Philippe
family-names: Leleux
affiliation: "Inserm"
orcid: "https://orcid.org/0000-0002-3760-4698"
- given-names: Martin J.
family-names: Kühn
affiliation: "German Aerospace Center (DLR)"
orcid: "https://orcid.org/0000-0002-0906-6984"
- given-names: Schwarz
family-names: Christina
affiliation: "Universität Bayreuth"
- given-names: Carola
family-names: Kruse
affiliation: "CERFACS"
orcid: "https://orcid.org/0000-0002-4142-7356"
- given-names: Ulrich
family-names: Rüde
affiliation: "FAU Erlangen"
orcid: "https://orcid.org/0000-0001-8796-8599"
- given-names: Allan
family-names: Kuhn
affiliation: "German Aerospace Center (DLR)"
- given-names: Julian
family-names: Litz
affiliation: "German Aerospace Center (DLR)"
#Contributors
cff-version: 2.0.0
message: >-
If you use this software, please cite it using the
metadata from this file.
keywords:
- Geometric Multigrid
- Parallel-Computing
- Extrapolation
- Curvilinear coordinates
- Plasma fusion
abstract: >-
GMGPolar is a performant geometric multigrid solver using
implicit extrapolation to raise the convergence order.
It is based on meshes in tensor- or product-format.
GMGPolar's focus applications are geometries that can be
described by polar or curvilinear coordinates for which
suited smoothing procedures have been developed.
contact:
- affiliation: "German Aerospace Center (DLR)"
email: Martin.Kuehn@dlr.de
family-names: Kühn
given-names: Martin J.
- affiliation: "CERFACS"
email: Carola.Kruse@CERFACS.fr
family-names: Kruse
given-names: Carola
references:
- title: "Implicitly extrapolated geometric multigrid on disk-like domains for the gyrokinetic Poisson equation from fusion plasma applications"
authors:
- family-names: Kühn
given-names: Martin J.
- family-names: Kruse
given-names: Carola
- family-names: Rüde
given-names: Ulrich
type: article
doi: 10.1007/s10915-022-01802-1
url: "https://link.springer.com/article/10.1007/s10915-022-01802-1"
GitHub Events
Total
- Create event: 34
- Issues event: 35
- Watch event: 3
- Delete event: 36
- Member event: 2
- Issue comment event: 62
- Push event: 208
- Pull request event: 53
- Pull request review comment event: 171
- Pull request review event: 213
- Fork event: 2
Last Year
- Create event: 34
- Issues event: 35
- Watch event: 3
- Delete event: 36
- Member event: 2
- Issue comment event: 62
- Push event: 208
- Pull request event: 53
- Pull request review comment event: 171
- Pull request review event: 213
- Fork event: 2
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 28
- Total pull requests: 31
- Average time to close issues: over 1 year
- Average time to close pull requests: 2 months
- Total issue authors: 4
- Total pull request authors: 4
- Average comments per issue: 0.86
- Average comments per pull request: 0.65
- Merged pull requests: 15
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 9
- Pull requests: 26
- Average time to close issues: 17 days
- Average time to close pull requests: 4 days
- Issue authors: 2
- Pull request authors: 3
- Average comments per issue: 0.0
- Average comments per pull request: 0.35
- Merged pull requests: 12
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- mknaranja (19)
- CodingAllan (7)
- julianlitz (1)
- EmilyBourne (1)
Pull Request Authors
- julianlitz (18)
- mknaranja (9)
- CodingAllan (3)
- EmilyBourne (1)