MFEMCutTransitionSubMesh

Overview

An MFEMCutTransitionSubMesh specifies and builds an mfem::ParSubMesh object from a user-specified (interior or exterior) planar cut boundary in a specified closed volumetric subdomain, consisting of all elements that:

  • Have at least one vertex that lies on the boundary,

  • Lie on one side of the boundary, and

  • Are members of the user-specified volumetric subdomain.

These elements are collectively referred to as a 'transition' subdomain of the parent mesh, due to their role in defining minimal domains of support for scalar 'transition' variables used in some methods to enforce global topological constraints on domains with non-trivial topologies.

In addition, MFEMCutTransitionSubMesh modifies attributes on the parent mfem::ParMesh to allow the new transition region and its boundary to be referenced by other kernels and boundary conditions in the problem. Specifically, new domain attribute IDs are added to the mesh, with each unique domain attribute ID belonging to elements now comprising the transition region mapped to a (unique) new domain attribute ID. A new boundary attribute ID is also added, to label the boundary of the transition domain excluding the cut boundary.

For convenience, the following new named attribute sets are added, with names given by the following user-specified parameters:

  • transition_subdomain, naming the set of all domain attribute IDs consisting the transition region

  • closed_subdomain, naming the set of all domain attribute IDs comprising entire closed domain (including the transition region)

  • transition_subdomain_boundary, naming the new boundary attribute ID for the boundary of the transition domain excluding the cut surface.

Existing attribute sets on the mesh, with one or more members labelling subdomains that are split by the new transition subdomain, are also updated to add the new subdomain IDs of the transition region member(s) that previously belonged to those sets. This is to ensure block-restricted properties, like material coefficients, apply to the sets of elements expected whether or not an MFEMCutTransitionSubMesh object is present in the problem.

Further information on the usage of such subdomains to enforce global topological constraints can be found in P. Dular. International Compumag Society Newsletter, 7, no. 2 (2000):4-7.

Example Input File Syntax

[SubMeshes<<<{"href": "../../../syntax/SubMeshes/index.html"}>>>]
  [cut]
    type = MFEMCutTransitionSubMesh<<<{"description": "Class to construct an MFEMSubMesh formed from the set of elements that have least one vertex on the specified cut plane, that lie on one side of the plane, and that are restricted to the set of user-specified subdomains.", "href": "MFEMCutTransitionSubMesh.html"}>>>
    cut_boundary<<<{"description": "The boundary associated with the mesh cut."}>>> = ${coil_cut_surface}
    block<<<{"description": "The list of subdomains (names or ids) that this object will be restricted to. Leave empty to apply to all subdomains."}>>> = ${initial_coil_domains}
    transition_subdomain<<<{"description": "The name of the subdomain to be created on the mesh comprised of the set of elements adjacent to the cut surface on one side."}>>> = transition_dom
    transition_subdomain_boundary<<<{"description": "Name to assign boundary of transition subdomain not shared with cut surface."}>>> = transition_bdr
    closed_subdomain<<<{"description": "The name of the subdomain attribute to be created comprised of the set of all elements of the closed geometry, including the new transition region."}>>> = coil_dom
  []
  [coil]
    type = MFEMDomainSubMesh<<<{"description": "Class to construct an MFEMSubMesh formed from the subspace of the parent mesh restricted to the set of user-specified subdomains.", "href": "MFEMDomainSubMesh.html"}>>>
    block<<<{"description": "The list of subdomains (names or ids) that this object will be restricted to. Leave empty to apply to all subdomains."}>>> = coil_dom
  []
[]
(test/tests/mfem/submeshes/cut_closed_coil.i)

Input Parameters

  • closed_subdomainThe name of the subdomain attribute to be created comprised of the set of all elements of the closed geometry, including the new transition region.

    C++ Type:SubdomainName

    Controllable:No

    Description:The name of the subdomain attribute to be created comprised of the set of all elements of the closed geometry, including the new transition region.

  • cut_boundaryThe boundary associated with the mesh cut.

    C++ Type:BoundaryName

    Controllable:No

    Description:The boundary associated with the mesh cut.

  • transition_subdomainThe name of the subdomain to be created on the mesh comprised of the set of elements adjacent to the cut surface on one side.

    C++ Type:SubdomainName

    Controllable:No

    Description:The name of the subdomain to be created on the mesh comprised of the set of elements adjacent to the cut surface on one side.

  • transition_subdomain_boundaryName to assign boundary of transition subdomain not shared with cut surface.

    C++ Type:BoundaryName

    Controllable:No

    Description:Name to assign boundary of transition subdomain not shared with cut surface.

Required 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.

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