MFEMProblemSolve

Summary

Virtual base class for executioners used to solve MFEM FE problems.

Overview

MFEMProblemSolve is a SolveObject used to control the execution of MFEM FE problems. Importantly, MFEMProblemSolve is used in Executioner classes intended for the solution of problems using the MFEM FE backend, such as MFEMTransient and MFEMSteady, by executing their corresponding ProblemOperators. MFEMProblemSolve also allows for selection of the desired device and assembly strategy to use for the FE problem.

Provided MFEM and its dependencies have been built with support for GPU backends (e.g. cuda or hip), they may be selected here to enable use of GPUs for solvers and during assembly.

Selection of partial assembly levels is also supported to improve performance on GPUs; full description of the various assembly levels supported is available here.

By default, legacy assembly of the FE problem on CPUs will be selected for robustness.

Example Input File Syntax

[Executioner<<<{"href": "../../../syntax/Executioner/index.html"}>>>]
  type = MFEMSteady
  device = cpu
[]
(test/tests/mfem/kernels/diffusion.i)
[Executioner<<<{"href": "../../../syntax/Executioner/index.html"}>>>]
  type = MFEMTransient
  device = cpu
  assembly_level = legacy
  dt = 2.0
  start_time = 0.0
  end_time = 6.0
[]
(test/tests/mfem/kernels/heattransfer.i)