Skip to content

Conversation

alexanderianblair
Copy link
Collaborator

Adds an MFEM example enforcing a global (topological) constraint on the loop voltage of a closed toroidal conductor to drive a non-trivial current flow. Closes #31404.

Solution originally based on the method detailed here, as implemented in the MFEM-based library hephaestus, but with a number of fixes to the hephaestus implementation for adding transition regions in parallel and from multiple domains.

Adds a new SubMesh class to specify the set of elements adjacent to a planar cut surface, used to define the (constrained) source field.

Also adds a number of auxiliary AuxKernels and ICs as required to impose the constraint and for testing:

  • MFEMSumAux for storing the sum of two MFEMVariables, used to combine the external and internal fields here
  • MFEMScalarBoundaryIC, for specifying an initial condition on a scalar variable on a boundary, used here set the constrained values of an auxiliary source potential on the cut plane
  • MFEMMixedGradGradKernel and MFEMMixedVectorMassKernel, to add MixedBilinearFormIntegrators similar to the diffusion and vector mass integrators, but for cases where the test and trial variable may differ - used here for adding source terms to the weak form
  • MFEMVectorFEInnerProductIntegralPostprocessor, to report the integral of the dot product of two vector MFEM variables, used here to report the power dissipated by the coil as a test metric.

Additional documentation has also been added to the MFEM examples index detailing the method implemented in the new test.

image

…ribute labelling topologically closed subdomain divided by cut
…MFEMCutTransitionSubMesh, since this is now handled within MFEM's submesh creation
…ributes of domains split by transition region
@moosebuild
Copy link
Contributor

moosebuild commented Aug 29, 2025

Job Coverage, step Generate coverage on 292dcef wanted to post the following:

Framework coverage

fef103 #31405 292dce
Total Total +/- New
Rate 85.66% 85.68% +0.02% 96.38%
Hits 118023 118279 +256 266
Misses 19760 19770 +10 10

Diff coverage report

Full coverage report

Modules coverage

Coverage did not change

Full coverage reports

Reports

This comment will be updated on new commits.

@alexanderianblair alexanderianblair marked this pull request as ready for review August 29, 2025 21:59
Co-authored-by: Alex Lindsay <alexander.lindsay@inl.gov>
@moosebuild
Copy link
Contributor

Job Precheck, step Clang format on 1ba016a wanted to post the following:

Your code requires style changes.

A patch was auto generated and copied here
You can directly apply the patch by running, in the top level of your repository:

curl -s https://mooseframework.inl.gov/docs/PRs/31405/clang_format/style.patch | git apply -v

Alternatively, with your repository up to date and in the top level of your repository:

git clang-format 1f9d319c30b1f731e4e7890484c3a82114b17427

@lindsayad lindsayad merged commit f4f0aeb into idaholab:next Sep 8, 2025
66 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add MFEM example enforcing a global constraint on a domain of non-trivial topology
4 participants