PeripheralTriangleMeshGenerator

This PeripheralTriangleMeshGenerator object is designed to generate a triangulated mesh between a generated outer circle boundary and a provided inner mesh.

Overview

The PeripheralTriangleMeshGenerator was created to connect the functionality of the poly2tri 2D triangulation library to the MOOSE mesh generation system. Since the motivation of this effort was to mesh the region between a reactor fuel core and the core periphery (typically a cylinder), it was designed to create a circular triangulation outer boundary and use the outer boundary of an existing meshgenerator to define the boundary of a single hole region which the triangulation library will exclude. The outer circle properties are specified with the "outer_circle_radius" and "outer_circle_num_segments" input parameters.

Optionally, additional circle radius/segment definitions between the core region and the outer boundary can be provided to the library to be used as Steiner points to help improve the quality of the triangles produced. These are specified similar to the primary outer boundary as a vector or radii and segments counts with the "extra_circle_radii" and "extra_circle_num_segments" input parameters.

Figure 1 shows an example triangulation around an existing core mesh.

Figure 1: An example triangulation generated by this PeripheralTriangleMeshGenerator object around an existing core mesh.

During triangulation, the library will by default use only the points given in the outer boundary polyline and any hole boundary polylines to perform the triangulation, which can result in lower quality triangles and lead to difficulty when using the triangulation in FEM calculations. The library thus also allows for the input of any number of Steiner points, which are extra triangulation points that can be used to help improve the quality of the triangulation. Figure 2 shows an example triangulation with a ring of Steiner points added to improve triangle quality.

Figure 2: An example triangulation generated by this PeripheralTriangleMeshGenerator object using optional Steiner point rings to improve triangle quality.

Example Syntax

[tmg]
  type = PeripheralTriangleMeshGenerator
  subdomain_id = 35

  # inner boundary mesh input
  inner_boundary_mesh = hex_in
  inner_boundary_name = core_out

  # outer circle boundary settings
  outer_circle_radius = 150
  outer_circle_num_segments = 50
  outer_boundary_id = 10
[]
(modules/reactor/test/tests/meshgenerators/peripheral_triangle_mesh_generator/abtr_tri.i)

Input Parameters

  • inner_boundary_meshThe mesh to use for the inner boundary of the triangulation.

    C++ Type:MeshGeneratorName

    Controllable:No

    Description:The mesh to use for the inner boundary of the triangulation.

  • outer_circle_num_segmentsNumber of radial segments to subdivide outer circle boundary.

    C++ Type:unsigned int

    Controllable:No

    Description:Number of radial segments to subdivide outer circle boundary.

  • outer_circle_radiusRadius of outer circle boundary.

    C++ Type:double

    Controllable:No

    Description:Radius of outer circle boundary.

Required Parameters

  • extra_circle_num_segmentsNumber of segments for extra Steiner point circles.

    C++ Type:std::vector<unsigned int>

    Controllable:No

    Description:Number of segments for extra Steiner point circles.

  • extra_circle_radiiRadii of extra Steiner point circles.

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

    Controllable:No

    Description:Radii of extra Steiner point circles.

  • inner_boundary_idThe boundary ID of the inner mesh outer boundary.

    C++ Type:short

    Controllable:No

    Description:The boundary ID of the inner mesh outer boundary.

  • inner_boundary_nameThe boundary name of the inner mesh outer boundary.

    C++ Type:std::string

    Controllable:No

    Description:The boundary name of the inner mesh outer boundary.

  • outer_boundary_idThe boundary id for the generated mesh outer boundary.

    C++ Type:short

    Controllable:No

    Description:The boundary id for the generated mesh outer boundary.

  • show_infoFalseWhether or not to show mesh info after generating the mesh (bounding box, element types, sidesets, nodesets, subdomains, etc)

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether or not to show mesh info after generating the mesh (bounding box, element types, sidesets, nodesets, subdomains, etc)

  • subdomain_idThe subdomain ID given to the TRI3 elements in the triangulation.

    C++ Type:unsigned short

    Controllable:No

    Description:The subdomain ID given to the TRI3 elements in the triangulation.

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