Just a heads-up announcing GeometricMultigrid.jl is now registered, for anyone who is interested.
Benchmark example for
mg! solver demonstrating
NlogN solution time scaling with the length of the solution vector.
The only clever (?) bit of the implementation is a few custom types. Geometric Multigrid methods make use of the regular spacial connectivity of the grid to define the restriction and prolongation operators. These concepts are built into the package using the
FieldMatrix types. These behave like
Matrix types, but they are actually wrappers around multi-dimensional padded arrays which efficiently capture the geometric structure of the data. These along with a recursive
SolveState type are enough to define a pretty fast implementation.
Since I only use this for discrete Poisson equations,
FieldMatrix is not very general yet. If anyone is interested in using this for other discrete PDEs, we can certainly extend the type.