MFEMMatrixFreeAMS

Overview

Defines and builds an mfem::MatrixFreeAMS low-order refined (LOR) solver to use as a matrix-free preconditioner for a curl-curl problem of the form

where and and are scalar coefficients.

The number of CG iterations to use for inner solves on the auxiliary spaces associated with the Nédélec interpolation operator and the gradient operator can be controlled by the inner_pi_iterations and inner_g_iterations parameters, which default to 0 and 1, respectively. Increasing these may aid convergence when and/or are highly discontinuous.

The method used corresponds to a matrix-free version of Hypre's AMS preconditioner (with default cycle 1), as described in Hypre's AMS documentation.

Implementation details for the mfem::MatrixFreeAMS preconditioner, along with some performance comparisons against Hypre's AMS preconditioner for 2D problems, can be found in this paper.

Example Input File Syntax

[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
  []
  [matrix_free_ams]
    type = MFEMMatrixFreeAMS<<<{"description": "MFEM matrix-free auxiliary-space Maxwell preconditioner for the iterative solution of MFEM equation systems.", "href": "MFEMMatrixFreeAMS.html"}>>>
  []
[]

[Solvers<<<{"href": "../../../syntax/Solvers/index.html"}>>>]
  active<<<{"description": "If specified only the blocks named will be visited and made active"}>>> = gmres
  [gmres]
    type = MFEMHypreGMRES<<<{"description": "Hypre solver for the iterative solution of MFEM equation systems using the generalized minimal residual method.", "href": "MFEMHypreGMRES.html"}>>>
    preconditioner<<<{"description": "Optional choice of preconditioner to use."}>>> = ams
    l_tol<<<{"description": "Set the relative tolerance."}>>> = 1e-12
  []
  [cg]
    type = MFEMCGSolver<<<{"description": "MFEM native solver for the iterative solution of MFEM equation systems using the conjugate gradient method.", "href": "MFEMCGSolver.html"}>>>
    preconditioner<<<{"description": "Optional choice of preconditioner to use."}>>> = matrix_free_ams
    l_tol<<<{"description": "Set the relative tolerance."}>>> = 1e-12
  []
[]
(test/tests/mfem/kernels/curlcurl.i)

Input Parameters

  • alpha_coefficient1.Name of scalar coefficient used in curl-curl component of target equation system. A functor is any of the following: a variable, an MFEM material property, a function, a postprocessor or a number.

    Default:1.

    C++ Type:MFEMScalarCoefficientName

    Controllable:No

    Description:Name of scalar coefficient used in curl-curl component of target equation system. A functor is any of the following: a variable, an MFEM material property, a function, a postprocessor or a number.

  • beta_coefficient1.Name of scalar coefficient used in mass component of target equation system. A functor is any of the following: a variable, an MFEM material property, a function, a postprocessor or a number.

    Default:1.

    C++ Type:MFEMScalarCoefficientName

    Controllable:No

    Description:Name of scalar coefficient used in mass component of target equation system. A functor is any of the following: a variable, an MFEM material property, a function, a postprocessor or a number.

  • inner_g_iterations1Number of CG iterations on auxiliary G space.

    Default:1

    C++ Type:unsigned int

    Controllable:No

    Description:Number of CG iterations on auxiliary G space.

  • inner_pi_iterations0Number of CG iterations on auxiliary Pi space.

    Default:0

    C++ Type:unsigned int

    Controllable:No

    Description:Number of CG iterations on auxiliary Pi space.

  • 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