MFEMMixedSesquilinearFormKernel

Summary

Base class for complex mixed MFEM kernels applied to the weak form being solved.

Overview

Complex MFEM kernels are responsible for providing complex-valued domain integrators to add to the weak form of the FE problem accumulated in EquationSystem, along with any required marker arrays to restrict the integrator(s) to subdomains. The MFEMMixedSesquilinearFormKernel is a container for two rectangular objects of MFEMKernel type, one representing a real contribution to the equation system, and the other representing an imaginary contribution. Both kernels must be mixed kernels. The real and imaginary kernels need not be the same, but they do need to be applied to the same pair of variables, which must be of MFEMComplexVariable type.

The integrators are applied to the weak form equation that is labeled according to the test variable name of the kernel returned from getTestVariableName(). In the case of bilinear (or nonlinear) forms, the trial variable that the integrator acts on is the variable returned from getTrialVariableName().

Example Input File Syntax

The real and imaginary contributions to the MFEMMixedSesquilinearFormKernel can be set up by using the sub-blocks RealComponent and ImagComponent on the script.

[Kernels<<<{"href": "../../../syntax/Kernels/index.html"}>>>]
  [curlcurl_A]
    type = MFEMComplexKernel<<<{"description": "Holds MFEMKernel objects for the real and imaginary parts of a complex kernel.", "href": "MFEMComplexKernel.html"}>>>
    variable<<<{"description": "Variable labelling the weak form this kernel is added to"}>>> = A
    [RealComponent]
      type = MFEMCurlCurlKernel
      coefficient = 1.0
    []
  []
  [mixed_grad_V]
    type = MFEMMixedSesquilinearFormKernel<<<{"description": "Base class for mixed sesquilinear form kernels, allowing different trial and test variables. Transposition of each component is controlled individually via the `transpose` parameter on each `RealComponent`/`ImagComponent` sub-block.", "href": "MFEMMixedSesquilinearFormKernel.html"}>>>
    trial_variable<<<{"description": "The trial variable this kernel is acting on and which will be solved for. If empty (default), it will be the same as the test variable."}>>> = V
    variable<<<{"description": "Variable labelling the weak form this kernel is added to"}>>> = A
    [RealComponent]
      type = MFEMMixedVectorGradientKernel
      coefficient = 1.0
    []
  []
  [mass_A]
    type = MFEMComplexKernel<<<{"description": "Holds MFEMKernel objects for the real and imaginary parts of a complex kernel.", "href": "MFEMComplexKernel.html"}>>>
    variable<<<{"description": "Variable labelling the weak form this kernel is added to"}>>> = A
    [ImagComponent]
      type = MFEMVectorFEMassKernel
      coefficient = ${omega}
    []
  []
  [diff_V]
    type = MFEMComplexKernel<<<{"description": "Holds MFEMKernel objects for the real and imaginary parts of a complex kernel.", "href": "MFEMComplexKernel.html"}>>>
    variable<<<{"description": "Variable labelling the weak form this kernel is added to"}>>> = V
    [RealComponent]
      type = MFEMDiffusionKernel
      coefficient = 1.0
    []
  []
  [mixed_mass_A]
    type = MFEMMixedSesquilinearFormKernel<<<{"description": "Base class for mixed sesquilinear form kernels, allowing different trial and test variables. Transposition of each component is controlled individually via the `transpose` parameter on each `RealComponent`/`ImagComponent` sub-block.", "href": "MFEMMixedSesquilinearFormKernel.html"}>>>
    trial_variable<<<{"description": "The trial variable this kernel is acting on and which will be solved for. If empty (default), it will be the same as the test variable."}>>> = A
    variable<<<{"description": "Variable labelling the weak form this kernel is added to"}>>> = V
    [ImagComponent]
      type = MFEMMixedVectorWeakDivergenceKernel
      coefficient = -${omega}
    []
  []
[]
(test/tests/mfem/complex/mixed_sesquilinear.i)

Note that both variables to which the kernel is applied must be complex-valued:

[Variables<<<{"href": "../../../syntax/Variables/index.html"}>>>]
  [V]
    type = MFEMComplexVariable<<<{"description": "Class for adding complex MFEM variables to the problem (`mfem::ParComplexGridFunction`s).", "href": "../variables/MFEMComplexVariable.html"}>>>
    fespace<<<{"description": "The finite element space this variable is defined on."}>>> = H1FESpace
  []
  [A]
    type = MFEMComplexVariable<<<{"description": "Class for adding complex MFEM variables to the problem (`mfem::ParComplexGridFunction`s).", "href": "../variables/MFEMComplexVariable.html"}>>>
    fespace<<<{"description": "The finite element space this variable is defined on."}>>> = HCurlFESpace
  []
[]
(test/tests/mfem/complex/mixed_sesquilinear.i)

Input Parameters

  • blockThe list of subdomains (names or ids) that this object will be restricted to. Leave empty to apply to all subdomains.

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

    Controllable:No

    Description:The list of subdomains (names or ids) that this object will be restricted to. Leave empty to apply to all subdomains.

  • trial_variableThe trial variable this kernel is acting on and which will be solved for. If empty (default), it will be the same as the test variable.

    C++ Type:VariableName

    Unit:(no unit assumed)

    Controllable:No

    Description:The trial variable this kernel is acting on and which will be solved for. If empty (default), it will be the same as the test variable.

  • variableVariable labelling the weak form this kernel is added to

    C++ Type:VariableName

    Unit:(no unit assumed)

    Controllable:No

    Description:Variable labelling the weak form this kernel is added to

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