aurora-multiphysics / aurora

Aurora is A Unified Resource for OpenMC (fusion) Reactor Applications.
https://aurora-multiphysics.github.io/aurora/
GNU Lesser General Public License v2.1
36 stars 11 forks source link

Add DAGMC surface BCs #28

Open helen-brooks opened 2 years ago

helen-brooks commented 2 years ago

When DAGMC surfaces are set up on the fly, the functionality to add non-void surface boundary conditions (e.g. reflecting surfaces) is missing. This should be added.

helen-brooks commented 2 years ago

Proposed algorithm modifies:

  1. User provide surfaces sets initial Exodus Geometry which should be indentified with BCs
  2. Those surfaces upon which boundary conditions should be applied are specified in the MOOSE input card via DagSurfaceUserObject blocks,
  3. Prior to mesh initialisation, map libmesh surfaces boundaries to DAG surfaces, and for each DAG surface create a meshset
  4. During meshing initialisation: a. For each element in each material "block": i. Test if the element participates in a dagmc surface boundary: check each face in turn and query libmesh boundary info, then compare to known DAGMC boundary IDs. b. For those elements with a face in a DAGMC boundary: i. First "skin" the tet to obtain their faces (not created by default in MOAB). ii. Find which tet aligns with the correct libmesh face in the boundary iii. Having created and obtained the face's MOAB EntityHandle add to the corresponding MOAB Meshset c. For each material block, having already created all elements, find and save the surface skin. i. Partition faces into those which do and do not participate in a boundary ii. Create a surface for each partition. If the partition has a boundary condition, add this to the DAGMC metadata.
helen-brooks commented 2 years ago