MFEMHypreAMS

Overview

Defines and builds an mfem::HypreAMS solver to use as a preconditioner or solver to solve the MFEM equation system. Most effective for preconditioning and solving a curl-curl problem when using Nédélec elements, in which case the FE space should be passed to the mfem::HypreAMS solver during construction.

If the system of equations is singular - commonly arising, for example, when solving for the magnetic vector potential in magnetostatic systems in the steady state - users should set the singular parameter to true to add a small mass term to ensure solvability.

A Low-Order-Refined (LOR) version of this solver may be used instead by setting the parameter "low_order_refined" to true. Using an LOR solver improves performance for high polynomial order systems.

Example Input File Syntax

[FESpaces<<<{"href": "../../../syntax/FESpaces/index.html"}>>>]
  [HCurlFESpace]
    type = MFEMVectorFESpace<<<{"description": "Convenience class to construct vector finite element spaces, abstracting away some of the mathematical complexity of specifying the dimensions.", "href": "../fespaces/MFEMVectorFESpace.html"}>>>
    fec_type<<<{"description": "Specifies the family of FE shape functions."}>>> = ND
    fec_order<<<{"description": "Order of the FE shape function to use."}>>> = FIRST
  []
[]

[Preconditioner<<<{"href": "../../../syntax/Preconditioner/index.html"}>>>]
  [ams]
    type = MFEMHypreAMS<<<{"description": "Hypre auxiliary-space Maxwell solver and preconditioner for the iterative solution of MFEM equation systems.", "href": "MFEMHypreAMS.html"}>>>
    fespace<<<{"description": "H(curl) FESpace to use in HypreAMS setup."}>>> = HCurlFESpace
  []
[]

[Solver<<<{"href": "../../../syntax/Solver/index.html"}>>>]
  type = MFEMHypreGMRES
  preconditioner = ams
  l_tol = 1e-12
[]
(test/tests/mfem/kernels/curlcurl.i)

Input Parameters

  • fespaceH(curl) FESpace to use in HypreAMS setup.

    C++ Type:MFEMFESpaceName

    Controllable:No

    Description:H(curl) FESpace to use in HypreAMS setup.

  • low_order_refinedFalseSet usage of Low-Order Refined solver.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Set usage of Low-Order Refined solver.

  • print_level2Set the solver verbosity.

    Default:2

    C++ Type:int

    Controllable:No

    Description:Set the solver verbosity.

  • singularFalseDeclare that the system is singular; use when solving curl-curl problem if mass term is zero

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Declare that the system is singular; use when solving curl-curl problem if mass term is zero

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