Multigrid Configuration
FerriteMultigrid.PMultigridConfiguration — Type
PMultigridConfiguration{TC<:AbstractCoarseningStrategy, TP<:AbstractProjectionStrategy}This struct represents the configuration for the polynomial multigrid method.
FerriteMultigrid.pmultigrid_config — Function
pmultigrid_config(;coarse_strategy = Galerkin(), proj_strategy = DirectProjection())This function is the main api to instantiate PMultigridConfiguration.
Coarsening Strategy
FerriteMultigrid.Galerkin — Type
Galerkin <: AbstractCoarseningStrategyGalerkin 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 — Type
Rediscretization{TP <: AbstractPMultigrid} <: AbstractCoarseningStrategyThis 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 — Type
DirectProjection <: AbstractProjectionStrategyThis struct represents a direct projection from $\mathcal{V}_{h,p}$ to $\mathcal{V}_{h,p=1}$.
FerriteMultigrid.StepProjection — Type
StepProjection <: AbstractProjectionStrategyThis 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.