MFEMGeometricMultigridSolver

Overview

MFEMGeometricMultigridSolver defines a geometric multigrid preconditioner backed by mfem::GeometricMultigrid. It uses an MFEMFESpaceHierarchy to define the multigrid levels, a coarse-level solver, and one or more linear solvers as smoothers for the remaining levels.

The finest-level operator is supplied by the outer solver. Coarser level operators are rediscretized from the equation system on each hierarchy level using the requested "assembly_levels".

This solver is intended for linear, single-variable equation systems. Nonlinear equation systems and mixed bilinear form contributions are not supported.

Input Parameters

  • assembly_levelsAssembly level for each level in the hierarchy. Valid values: 'legacy', 'full', 'element', 'partial', 'none'. May have length 1 (used on all N levels) or N.

    C++ Type:std::vector<std::string>

    Controllable:No

    Description:Assembly level for each level in the hierarchy. Valid values: 'legacy', 'full', 'element', 'partial', 'none'. May have length 1 (used on all N levels) or N.

  • coarse_solverName of the LinearSolverBase used on the coarsest level.

    C++ Type:MFEMSolverName

    Controllable:No

    Description:Name of the LinearSolverBase used on the coarsest level.

  • fespace_hierarchyName of the MFEMFESpaceHierarchy that defines the level structure.

    C++ Type:std::string

    Controllable:No

    Description:Name of the MFEMFESpaceHierarchy that defines the level structure.

  • smoothersNames of LinearSolverBase objects used as smoothers on the interior levels (levels 1 to N-1). May have length 1 (used on all interior levels) or N-1 (one per interior level, ordered coarse-to-fine).

    C++ Type:std::vector<MFEMSolverName>

    Controllable:No

    Description:Names of LinearSolverBase objects used as smoothers on the interior levels (levels 1 to N-1). May have length 1 (used on all interior levels) or N-1 (one per interior level, ordered coarse-to-fine).

  • variableName of the trial variable this preconditioner acts on.

    C++ Type:std::string

    Controllable:No

    Description:Name of the trial variable this preconditioner acts on.

Required Parameters

  • low_order_refinedFalseSet usage of Low-Order Refined solver.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Set usage of Low-Order Refined solver.

  • use_initial_guessFalseWhether to preserve the current MFEM solution vector as the initial guess for an iterative solver.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether to preserve the current MFEM solution vector as the initial guess for an iterative solver.

Optional Parameters

  • control_tagsAdds user-defined labels for accessing object parameters via control logic.

    C++ Type:std::vector<std::string>

    Controllable:No

    Description:Adds user-defined labels for accessing object parameters via control logic.

  • enableTrueSet the enabled status of the MooseObject.

    Default:True

    C++ Type:bool

    Controllable:No

    Description:Set the enabled status of the MooseObject.

Advanced Parameters

Input Files