Multigrid Configuration
FerriteMultigrid.PMultigridConfiguration
— TypePMultigridConfiguration{TC<:AbstractCoarseningStrategy, TP<:AbstractProjectionStrategy}
This struct represents the configuration for the polynomial multigrid method.
FerriteMultigrid.pmultigrid_config
— Functionpmultigrid_config(;coarse_strategy = Galerkin(), proj_strategy = DirectProjection())
This function is the main api to instantiate PMultigridConfiguration
.
Coarsening Strategy
FerriteMultigrid.Galerkin
— TypeGalerkin <: AbstractCoarseningStrategy
Galerkin coarsening operator can be defined as follows:
\[A_{h,p-1} = \mathcal{I}_{p}^{p-1} A_{h,p} \mathcal{I}_{p-1}^p\]
and according to Tielen et al. [2] $\mathcal{I}_{p-1}^p$ is the interpolation operator from the coarse space to the fine space and is defined as follows:
\[\mathcal{I}_{p-1}^p (\mathbf{v}_{p-1}) = (\mathbf{M}_p)^{-1} \mathbf{P}_{p-1}^p \, \mathbf{v}_{p-1}\]
FerriteMultigrid.Rediscretization
— TypeRediscretization{TP <: AbstractPMultigrid} <: AbstractCoarseningStrategy
This struct represents a coarsening strategy that uses the assemble
function to obtain the coarse grid operator. It is used when the Rediscretization
strategy is specified in the pmultigrid_config
. It requires the problem type TP
to be a subtype of AbstractPMultigrid
.
Projection Strategy
FerriteMultigrid.DirectProjection
— TypeDirectProjection <: AbstractProjectionStrategy
This struct represents a direct projection from $\mathcal{V}_{h,p}$ to $\mathcal{V}_{h,p=1}$.
FerriteMultigrid.StepProjection
— TypeStepProjection <: AbstractProjectionStrategy
This struct represents a projection from $\mathcal{V}_{h,p}$ to $\mathcal{V}_{h,p-step}$, where step
is a positive integer. It is used to reduce the polynomial order by a fixed step size until p = 1
.