CartesianConcentricCircleAdaptiveBoundaryMeshGenerator

This CartesianConcentricCircleAdaptiveBoundaryMeshGenerator object is designed to generate square meshes with adaptive boundary to facilitate stitching.

Overview

The CartesianConcentricCircleAdaptiveBoundaryMeshGenerator object generates a 2D mesh for concentric circles with a square enclosure with or without external ducts. It is similar to PolygonConcentricCircleMeshGenerator and the majority of the parameters and functionalities of this object are described in the documentation of PolygonConcentricCircleMeshGenerator. The major unique feature of this object is that the "num_sectors_per_side" parameter will be overridden to enable stitching to another square mesh (provided via "meshes_to_adapt_to" to this object). This object therefore creates square meshes that can be directly stitched with square meshes generated by PolygonConcentricCircleMeshGenerator and PatternedCartesianMeshGenerator. This object only works for squares instead of general polygons.

More Information

In order to adapt the external boundary to match input meshes (typically generated by PatternedCartesianMeshGenerator), two extra input parameters must be provided:

  • "sides_to_adapt": a vector parameter that can include up to four elements which lists the reference square side numbers to adaptively mesh. These entries must be non-repeating integers from 0 to 3 (see Figure 1). The square sides are indexed counterclockwise starting from the top side.

  • "meshes_to_adapt_to": a vector parameter that includes the same number of elements as "sides_to_adapt". These elements are input square meshes whose boundary nodes will be queried and used to adaptively mesh a side of the square mesh being created. The input square meshes are generated by PatternedCartesianMeshGenerator or PolygonConcentricCircleMeshGenerator. Multiple meshes may be input, each one corresponding to the side index value specified in "sides_to_adapt". The same input mesh may be repeated multiple times.

Figure 1: A schematic drawing showing the square side indices in CartesianConcentricCircleAdaptiveBoundaryMeshGenerator object.

The "square_size" provided here must be consistent with the "square_size" values of all the "meshes_to_adapt_to" generators.

The mesh generator can generate meshes with either linear or quadratic elements, which is controlled by the "tri_element_type" and "quad_element_type" parameters. The "meshes_to_adapt_to" must have the consistent element types for compatibility.

One major application of this object is to generate meshes for control drums. In that case, "is_control_drum" can be set as true so that corresponding MeshMetaData can be generated for future use with control drum related objects.

Example Syntax

[Mesh]
  [fmg]
    type = FileMeshGenerator
    file = square_in.e
  []
  [gen]
    type = CartesianConcentricCircleAdaptiveBoundaryMeshGenerator
    num_sectors_per_side = '4 4 4 4'
    background_intervals = 2
    square_size = 10.0
    sides_to_adapt = 0
    meshes_to_adapt_to = 'fmg'
  []
[]
(contrib/moose/modules/reactor/test/tests/meshgenerators/cartesian_concentric_circle_adaptive_boundary_generator/square_2d.i)

Here, a simple square mesh stored in an Exodus file is used as the input of CartesianConcentricCircleAdaptiveBoundaryMeshGenerator. Only Side 0 of the generated mesh is set to adapt the input mesh (i.e., Side 2 of the input mesh), as shown in Figure 2. Note that only Side 0 of the generated mesh matches the input mesh (Side 2).

Figure 2: A schematic drawing showing the input and generated meshes of the example case.

Input Parameters

  • square_sizeSize (side length) of the square mesh to be generated.

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Size (side length) of the square mesh to be generated.

Required Parameters

  • background_inner_boundary_layer_bias1Growth factor used for mesh biasing of the background inner boundary layer.

    Default:1

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Growth factor used for mesh biasing of the background inner boundary layer.

  • background_inner_boundary_layer_intervals1Number of radial intervals of the background inner boundary layer

    Default:1

    C++ Type:unsigned int

    Unit:(no unit assumed)

    Controllable:No

    Description:Number of radial intervals of the background inner boundary layer

  • background_inner_boundary_layer_width0Width of background region that is assigned to be the inner boundary layer.

    Default:0

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Width of background region that is assigned to be the inner boundary layer.

  • background_outer_boundary_layer_bias1Growth factor used for mesh biasing of the background outer boundary layer.

    Default:1

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Growth factor used for mesh biasing of the background outer boundary layer.

  • background_outer_boundary_layer_intervals1Number of radial intervals of the background outer boundary layer

    Default:1

    C++ Type:unsigned int

    Unit:(no unit assumed)

    Controllable:No

    Description:Number of radial intervals of the background outer boundary layer

  • background_outer_boundary_layer_width0Width of background region that is assigned to be the outer boundary layer.

    Default:0

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Width of background region that is assigned to be the outer boundary layer.

  • background_radial_bias1Value used to create biasing in radial meshing for background region.

    Default:1

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Value used to create biasing in radial meshing for background region.

  • duct_inner_boundary_layer_biasesGrowth factors used for mesh biasing of the duct inner boundary layers.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Growth factors used for mesh biasing of the duct inner boundary layers.

  • duct_inner_boundary_layer_intervalsNumber of radial intervals of the duct inner boundary layers

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Number of radial intervals of the duct inner boundary layers

  • duct_inner_boundary_layer_widthsWidths of duct regions that are assigned to be the inner boundary layers.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Widths of duct regions that are assigned to be the inner boundary layers.

  • duct_outer_boundary_layer_biasesGrowth factors used for mesh biasing of the duct outer boundary layers.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Growth factors used for mesh biasing of the duct outer boundary layers.

  • duct_outer_boundary_layer_intervalsNumber of radial intervals of the duct outer boundary layers

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Number of radial intervals of the duct outer boundary layers

  • duct_outer_boundary_layer_widthsWidths of duct regions that are assigned to be the outer boundary layers.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Widths of duct regions that are assigned to be the outer boundary layers.

  • duct_radial_biasesValues used to create biasing in radial meshing for duct regions.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Values used to create biasing in radial meshing for duct regions.

  • duct_sizesDistance(s) from polygon center to duct(s) inner boundaries.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Distance(s) from polygon center to duct(s) inner boundaries.

  • duct_sizes_styleradiusStyle in which polygon center to duct inner boundary distance is given (apothem = center to face, radius = center to vertex). Options: apothem radius

    Default:radius

    C++ Type:MooseEnum

    Unit:(no unit assumed)

    Options:apothem, radius

    Controllable:No

    Description:Style in which polygon center to duct inner boundary distance is given (apothem = center to face, radius = center to vertex). Options: apothem radius

  • meshes_to_adapt_toThe name list of the input meshes to adapt to.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:The name list of the input meshes to adapt to.

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

  • quad_element_typeQUAD4Type of the quadrilateral elements to be generated.

    Default:QUAD4

    C++ Type:MooseEnum

    Unit:(no unit assumed)

    Options:QUAD4, QUAD8, QUAD9

    Controllable:No

    Description:Type of the quadrilateral elements to be generated.

  • ring_radiiRadii of major concentric circles (rings).

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Radii of major concentric circles (rings).

  • sides_to_adaptList of the square reference side indices that correspond to the sides that need adaptive meshing. The meshes to adapt these sides to are provided in 'inputs'.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:List of the square reference side indices that correspond to the sides that need adaptive meshing. The meshes to adapt these sides to are provided in 'inputs'.

  • tri_element_typeTRI3Type of the triangular elements to be generated.

    Default:TRI3

    C++ Type:MooseEnum

    Unit:(no unit assumed)

    Options:TRI3, TRI6, TRI7

    Controllable:No

    Description:Type of the triangular elements to be generated.

Optional Parameters

  • background_block_idsOptional customized block id for the background block.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Optional customized block id for the background block.

  • background_block_namesOptional customized block names for the background block.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Optional customized block names for the background block.

  • block_id_shift0Integer used to shift block IDs.

    Default:0

    C++ Type:unsigned short

    Unit:(no unit assumed)

    Controllable:No

    Description:Integer used to shift block IDs.

  • create_inward_interface_boundariesFalseWhether the inward interface boundaries are created.

    Default:False

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:Whether the inward interface boundaries are created.

  • create_outward_interface_boundariesTrueWhether the outward interface boundaries are created.

    Default:True

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:Whether the outward interface boundaries are created.

  • duct_block_idsOptional customized block ids for each duct geometry block.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Optional customized block ids for each duct geometry block.

  • duct_block_namesOptional customized block names for each duct geometry block.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Optional customized block names for each duct geometry block.

  • external_boundary_idOptional customized external boundary id.

    C++ Type:short

    Unit:(no unit assumed)

    Controllable:No

    Description:Optional customized external boundary id.

  • external_boundary_nameOptional customized external boundary name.

    C++ Type:std::string

    Unit:(no unit assumed)

    Controllable:No

    Description:Optional customized external boundary name.

  • generate_side_specific_boundariesFalsewhether the side-specific external boundaries are generated or not

    Default:False

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:whether the side-specific external boundaries are generated or not

  • interface_boundary_id_shift0Integer used to shift interface boundary IDs.

    Default:0

    C++ Type:short

    Unit:(no unit assumed)

    Controllable:No

    Description:Integer used to shift interface boundary IDs.

  • inward_interface_boundary_namesOptional customized boundary names for the internal inward interfaces between block.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Optional customized boundary names for the internal inward interfaces between block.

  • outward_interface_boundary_namesOptional customized boundary names for the internal outward interfaces between block.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Optional customized boundary names for the internal outward interfaces between block.

  • ring_block_idsOptional customized block ids for each ring geometry block.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Optional customized block ids for each ring geometry block.

  • ring_block_namesOptional customized block names for each ring geometry block.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Optional customized block names for each ring geometry block.

Customized Subdomain/Boundary Parameters

  • background_intervals1Number of radial meshing intervals in background region (area between rings and ducts) excluding the background's boundary layers.

    Default:1

    C++ Type:unsigned int

    Unit:(no unit assumed)

    Controllable:No

    Description:Number of radial meshing intervals in background region (area between rings and ducts) excluding the background's boundary layers.

  • duct_intervalsNumber of meshing intervals in each enclosing duct excluding duct boundary layers.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Number of meshing intervals in each enclosing duct excluding duct boundary layers.

  • num_sectors_per_sideNumber of azimuthal sectors per polygon side (rotating counterclockwise from top right face).

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Number of azimuthal sectors per polygon side (rotating counterclockwise from top right face).

  • ring_intervalsNumber of radial mesh intervals within each major concentric circle excluding their boundary layers.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Number of radial mesh intervals within each major concentric circle excluding their boundary layers.

General Mesh Density 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

  • is_control_drumFalseWhether this mesh is for a control drum. The value can be set as 'false' if the user wants to use this object for other components.

    Default:False

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:Whether this mesh is for a control drum. The value can be set as 'false' if the user wants to use this object for other components.

Control Drum 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

  • ring_id_assign_typeblock_wiseType of ring ID assignment: block_wise or ring_wise

    Default:block_wise

    C++ Type:MooseEnum

    Unit:(no unit assumed)

    Options:block_wise, ring_wise

    Controllable:No

    Description:Type of ring ID assignment: block_wise or ring_wise

  • ring_id_nameName of integer (reporting) ID for ring regions to use the reporting ID for annular regions of ring geometry block.

    C++ Type:std::string

    Unit:(no unit assumed)

    Controllable:No

    Description:Name of integer (reporting) ID for ring regions to use the reporting ID for annular regions of ring geometry block.

  • sector_id_nameName of integer (reporting) ID for sector regions to use the reporting ID for azimuthal sector regions of ring geometry block.

    C++ Type:std::string

    Unit:(no unit assumed)

    Controllable:No

    Description:Name of integer (reporting) ID for sector regions to use the reporting ID for azimuthal sector regions of ring geometry block.

Ring/Sector Ids Parameters

  • ring_inner_boundary_layer_biasesGrowth factors used for mesh biasing of the rings' inner boundary layers.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Growth factors used for mesh biasing of the rings' inner boundary layers.

  • ring_inner_boundary_layer_intervalsNumber of radial intervals of the rings' inner boundary layers

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Number of radial intervals of the rings' inner boundary layers

  • ring_inner_boundary_layer_widthsWidths of each ring regions that are assigned to be each ring's inner boundary layers.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Widths of each ring regions that are assigned to be each ring's inner boundary layers.

  • ring_outer_boundary_layer_biasesGrowth factors used for mesh biasing of the rings' outer boundary layers.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Growth factors used for mesh biasing of the rings' outer boundary layers.

  • ring_outer_boundary_layer_intervalsNumber of radial intervals of the rings' outer boundary layers

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Number of radial intervals of the rings' outer boundary layers

  • ring_outer_boundary_layer_widthsWidths of each ring regions that are assigned to be each ring's outer boundary layers.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Widths of each ring regions that are assigned to be each ring's outer boundary layers.

  • ring_radial_biasesValues used to create biasing in radial meshing for ring regions.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Values used to create biasing in radial meshing for ring regions.

Mesh Boundary Layers And Biasing Options Parameters