A multigrid package in Julia. Uses shared memory parallelism using OMP and [ParSpMatVec
] (https://github.com/JuliaInv/ParSpMatVec.jl) .
Includes:
-
Geometric multigrid on a regular mesh.
-
Smoothed Aggregation AMG Multigrid, based on the following paper (please cite if you use this code):
Eran Treister and Irad Yavneh, Non-Galerkin Multigrid based on Sparsified Smoothed Aggregation. SIAM Journal on Scientific Computing, 37 (1), A30-A54, 2015.
Options for V,F,W and K cycles.
Includes a block version of multigrid. Most effective for using as a preconditioner for Block Krylov methods (see KrylovMethods.jl).
Coarsest Grid can be solved using [MUMPS
] (https://github.com/JuliaSparse/MUMPS.jl) or using Julia's backslash.
This package is intended to use with julia versions 0.7-1.0.
This package is an add-on for jInv
, which needs to be installed (mostly for regular mesh module).
Pkg.clone("https://github.com/JuliaInv/jInv.jl","jInv")
Pkg.clone("https://github.com/JuliaInv/Multigrid.jl","Multigrid")
Pkg.clone("https://github.com/JuliaInv/ParSpMatVec.jl","ParSpMatVec")
Pkg.build("ParSpMatVec");
Pkg.test("Multigrid")