AzimuthalBlockSplitGenerator

This AzimuthalBlockSplitGenerator object takes in a polygon/hexagon concentric circle mesh and renames blocks on a user-defined azimuthal segment / wedge of the mesh.

Overview

The AzimuthalBlockSplitGenerator object is used to modify a mesh generated by either PolygonConcentricCircleMeshGenerator or HexagonConcentricCircleAdaptiveBoundaryMeshGenerator. The input mesh can consist of either linear elements or quadratic elements. This object divides each selected radial block in the original mesh into two azimuthal sections and moves the nodes to the exact azimuthal positions.

Multiple radial blocks, which are defined by "old_blocks", can be modified simultaneously. The azimuthal range of the new blocks is defined by "start_angle" and "angle_range" in degrees. The algorithm finds the nodes that have azimuthal angles closest to the given azimuthal range and moves them to the exact azimuthal positions. If the external block (i.e., the block that contains the external boundary of the mesh) is not selected to be modified, the nodes on the external boundary are not altered by this object to facilitate mesh stitching. On the other hand, if the external block is selected, the nodes on the external boundary are moved as well. See Figure 1 for more details.

Figure 1: A schematic drawing showing the functionalities of this AzimuthalBlockSplitGenerator object.

As moving nodes in the azimuthal direction changes the volumes of the circular blocks, the volume preservation radius correction is made if "preserve_volumes" is set as true.

If the "input" mesh is generated by PolygonConcentricCircleMeshGenerator with "quad_center_elements" set as true, and if the block that contains these quadrilateral central elements is selected in "old_blocks", an error message is issued because no nodes in that block should be moved. The central pattern of quad elements is not designed to be arbitrarily modified to align its nodes with azimuthal sectors.

Example Syntax

[Mesh]
  [cd_azi_define]
    type = AzimuthalBlockSplitGenerator
    input = cd
    start_angle = 280
    angle_range = 100
    old_blocks = '10 15 20'
    new_block_ids = '100 150 200'
    new_block_names = 'center_tri_new center_new cd_ring_new'
    preserve_volumes = true
  []
[]
(contrib/moose/modules/reactor/test/tests/meshgenerators/azimuthal_block_split_generator/azi_block_id_mod.i)

Input Parameters

  • angle_rangeAzimuthal angle range of the new block.

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Azimuthal angle range of the new block.

  • inputThe input mesh to be modified.

    C++ Type:MeshGeneratorName

    Unit:(no unit assumed)

    Controllable:No

    Description:The input mesh to be modified.

  • new_block_idsThe block IDs to be used for the new selected azimuthal angle blocks.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:The block IDs to be used for the new selected azimuthal angle blocks.

  • old_blocksThe list of blocks in the input mesh that need to be modified.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:The list of blocks in the input mesh that need to be modified.

  • start_angleStarting azimuthal angle of the new block.

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Starting azimuthal angle of the new block.

Required Parameters

  • new_block_namesThe optional block names to be used for the new selected azimulathal angle blocks.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:The optional block names to be used for the new selected azimulathal angle blocks.

  • preserve_volumesTrueVolume of concentric circles can be preserved using this function.

    Default:True

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:Volume of concentric circles can be preserved using this function.

Optional Parameters

  • control_tagsAdds user-defined labels for accessing object parameters via control logic.

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

    Unit:(no unit assumed)

    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

    Unit:(no unit assumed)

    Controllable:No

    Description:Set the enabled status of the MooseObject.

  • save_with_nameKeep the mesh from this mesh generator in memory with the name specified

    C++ Type:std::string

    Unit:(no unit assumed)

    Controllable:No

    Description:Keep the mesh from this mesh generator in memory with the name specified

Advanced Parameters

  • nemesisFalseWhether or not to output the mesh file in the nemesisformat (only if output = true)

    Default:False

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:Whether or not to output the mesh file in the nemesisformat (only if output = true)

  • outputFalseWhether or not to output the mesh file after generating the mesh

    Default:False

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:Whether or not to output the mesh file after generating the mesh

  • 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

    Unit:(no unit assumed)

    Controllable:No

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

Debugging Parameters