MFEMVectorQuadratureFunction

Overview

MFEMVectorQuadratureFunction is the vector-valued counterpart of MFEMScalarQuadratureFunction: it declares a named vector MFEM coefficient holding precomputed values of a source vector coefficient at the quadrature points of an MFEM QuadratureSpace, and can be used wherever a vector coefficient name is accepted. The source is supplied through the vector_coefficient parameter, and the vector dimension of the stored values is taken from it.

The lazy re-projection behaviour, the updates parameter, and the requirement that the consuming integration rule match the order parameter (with MOOSE erroring and suggesting a matching order otherwise) are all identical to the scalar case; see MFEMScalarQuadratureFunction for details.

Example Input File Syntax

[Functions<<<{"href": "../../../syntax/Functions/index.html"}>>>]
  [qf_gravity]
    type = MFEMVectorQuadratureFunction<<<{"description": "Declares a vector MFEM coefficient holding precomputed values of a source vector coefficient at quadrature points. Values are (re)projected lazily when the coefficient is used.", "href": "MFEMVectorQuadratureFunction.html"}>>>
    vector_coefficient<<<{"description": "Vector coefficient to project onto the quadrature points. A functor is any of the following: a variable, an MFEM material property, a function, a postprocessor or a numeric vector value (enclosed in curly braces)."}>>> = gravitational_force_density
    # the quadrature rule order matches the one used by VectorDomainLFIntegrator
    # for first-order elements (2 * fe_order = 2)
    order<<<{"description": "Order of the quadrature rule the projected values are stored on. This must match the integration rule used by the objects consuming this coefficient."}>>> = 2
    updates<<<{"description": "When the stored values are re-projected from the source coefficient: 'none' projects exactly once, 'time' re-projects when the simulation time changes, 'nonlinear' additionally re-projects whenever solution variables change (i.e. on each nonlinear iteration)."}>>> = none
  []
[]

[Kernels<<<{"href": "../../../syntax/Kernels/index.html"}>>>]
  [diff]
    type = MFEMLinearElasticityKernel<<<{"description": "The isotropic linear elasticity operator with weak form $(c_{ikjl} \\nabla u_j, \\nabla v_i)$, to be added to an MFEM problem, where $c_{ikjl}$ is the isotropic elasticity tensor, $c_{ikjl} = \\lambda \\delta_{ik} \\delta_{jl} + \\mu \\left( \\delta_{ij} \\delta_{kl} + \\delta_{il} \\delta_{jk} \\right)$, $\\lambda$ is the first Lame parameter, $\\lambda = \\frac{E\\nu}{(1-2\\nu)(1+\\nu)}$, $\\mu$ is the second Lame parameter, $\\mu = \\frac{E}{2(1+\\nu)}$, where $E$ is Young's modulus and $\\nu$ is Poisson's ratio.", "href": "../kernels/MFEMLinearElasticityKernel.html"}>>>
    variable<<<{"description": "Variable labelling the weak form this kernel is added to"}>>> = displacement
    lambda<<<{"description": "Name of MFEM Lame constant lambda to multiply the div(u)*I term by. A functor is any of the following: a variable, an MFEM material property, a function, a postprocessor or a number."}>>> = lambda
    mu<<<{"description": "Name of MFEM Lame constant mu to multiply the gradients term by. A functor is any of the following: a variable, an MFEM material property, a function, a postprocessor or a number."}>>> = mu
  []
  [gravity]
    type = MFEMVectorDomainLFKernel<<<{"description": "Adds the domain integrator to an MFEM problem for the linear form $(\\vec f, \\vec v)_\\Omega$ arising from the weak form of the forcing term $\\vec f$.", "href": "../kernels/MFEMVectorDomainLFKernel.html"}>>>
    variable<<<{"description": "Variable labelling the weak form this kernel is added to"}>>> = displacement
    vector_coefficient<<<{"description": "Name of body force density f. A functor is any of the following: a variable, an MFEM material property, a function, a postprocessor or a numeric vector value (enclosed in curly braces)."}>>> = qf_gravity
  []
[]
(test/tests/mfem/kernels/gravity_qf.i)

Input Parameters

  • orderOrder of the quadrature rule the projected values are stored on. This must match the integration rule used by the objects consuming this coefficient.

    C++ Type:int

    Range:order>=0

    Controllable:No

    Description:Order of the quadrature rule the projected values are stored on. This must match the integration rule used by the objects consuming this coefficient.

  • vector_coefficientVector coefficient to project onto the quadrature points. A functor is any of the following: a variable, an MFEM material property, a function, a postprocessor or a numeric vector value (enclosed in curly braces).

    C++ Type:MFEMVectorCoefficientName

    Controllable:No

    Description:Vector coefficient to project onto the quadrature points. A functor is any of the following: a variable, an MFEM material property, a function, a postprocessor or a numeric vector value (enclosed in curly braces).

Required Parameters

  • updatesNONLINEARWhen the stored values are re-projected from the source coefficient: 'none' projects exactly once, 'time' re-projects when the simulation time changes, 'nonlinear' additionally re-projects whenever solution variables change (i.e. on each nonlinear iteration).

    Default:NONLINEAR

    C++ Type:MooseEnum

    Options:NONE, TIME, NONLINEAR

    Controllable:No

    Description:When the stored values are re-projected from the source coefficient: 'none' projects exactly once, 'time' re-projects when the simulation time changes, 'nonlinear' additionally re-projects whenever solution variables change (i.e. on each nonlinear iteration).

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