- block_namesA list giving the block names. Must be the same length as elements_per_ring. If an entry in 'elements_per_ring' is zero, the corresponding entry in block_names will be ignored.
C++ Type:std::vector<std::string>
Controllable:No
Description:A list giving the block names. Must be the same length as elements_per_ring. If an entry in 'elements_per_ring' is zero, the corresponding entry in block_names will be ignored.
- coordinatesRadial coordinates of mesh block boundaries.
C++ Type:std::vector<double>
Unit:(no unit assumed)
Controllable:No
Description:Radial coordinates of mesh block boundaries.
- elements_per_ringA list giving the number of elements in each ring (will be zero for a gap). The first entry is the number of radial elements outside the inner quadrilateral portion of the fuel mesh.
C++ Type:std::vector<unsigned int>
Controllable:No
Description:A list giving the number of elements in each ring (will be zero for a gap). The first entry is the number of radial elements outside the inner quadrilateral portion of the fuel mesh.
- num_sectorsNumber of azimuthal sectors in each quadrant. 'num_sectors' must be an even number.
C++ Type:unsigned int
Controllable:No
Description:Number of azimuthal sectors in each quadrant. 'num_sectors' must be an even number.
CircularCrossSectionMeshGenerator
Generates a circular cross section mesh of an axisymmetric fuel rod.
Description
This mesh generator class generates a sliced, circular cross section mesh of fuel and cladding. It allows the user to specify radii, mesh density, and gap sizes. A coating layer may be added to the exterior of the cladding, or multiple claddings may be defined. The fuel or cladding portion of the mesh can be disabled if desired.
The bias parameter affects mesh density moving from the inner edge to the outer edge. For example, a bias value of 2 for a given block doubles element size from the inner to the outer edge, whereas a bias value of 0.5 cuts element size in half going from inner to outer edge. The dual_bias parameter may be used to affect mesh density on both ends of the block. It is also applied from inner to outer edge. When dual_bias is given, bias affects the first half of the elements, and dual_bias affects the right half of the elements. If the two biases are the same, the result will be the same as the original, single-value bias approach.
The resulting mesh will have the following sidesets.
| Sideset | Description |
|---|---|
2 | outer surface (named outer) |
5 | For a typical fuel and cladding mesh, this is the interior surface of the cladding. |
7 | For a typical fuel and cladding mesh, this is the interior surface of the cladding. |
8 | For a typical fuel and cladding mesh, this is the exterior surface of the fuel. |
9 | For a typical fuel and cladding mesh, this is the union of 7 and 8. |
10 | For a typical fuel and cladding mesh, this is the exterior surface of the fuel. |
101 | bottom surface (named bottom) |
102 | left surface (named left) |
1001, 1002, 1003, | every outside and inside radial surface of mesh blocks will receive a sideset, starting with 1001. |
2001, 2002, 2003, | if all_bottom_left=true, every bottom surface of mesh blocks will receive a sideset, starting with 2001. |
3001, 3002, 3003, | if all_bottom_left=true, every left surface of mesh blocks will receive a sideset, starting with 3001. |
Meshes of more than one quadrant retain the bottom and left sidesets as defined for the top-right quadrant case.

Figure 1: Typical mesh from CircularCrossSectionMeshGenerator.
The resulting mesh will have the following nodesets:
| Nodeset | Description |
|---|---|
10000, 10001, 10002, 10003, | corresponds to specific nodes at two locations at the interior and exterior of every ring as well as the central node if the first ring is solid. Nodeset 10000 is reserved for the central node of the first ring if it is solid. See Figure 2 for an illustration of the nodeset locations. The nodeset id continues to increase in the same fashion if additional rings are added. |

Figure 2: Nodeset ids and locations for a typical circular cross section mesh.
[Mesh<<<{"href": "../../syntax/Mesh/index.html"}>>>]
[ccsmg]
type = CircularCrossSectionMeshGenerator<<<{"description": "Generates a circular cross section mesh of an axisymmetric fuel rod.", "href": "CircularCrossSectionMeshGenerator.html"}>>>
num_sectors<<<{"description": "Number of azimuthal sectors in each quadrant. 'num_sectors' must be an even number."}>>> = 20
elements_per_ring<<<{"description": "A list giving the number of elements in each ring (will be zero for a gap). The first entry is the number of radial elements outside the inner quadrilateral portion of the fuel mesh."}>>> = '5 0 3'
block_names<<<{"description": "A list giving the block names. Must be the same length as elements_per_ring. If an entry in 'elements_per_ring' is zero, the corresponding entry in block_names will be ignored."}>>> = 'fuel null clad'
coordinates<<<{"description": "Radial coordinates of mesh block boundaries."}>>> = '0.0041 0.00418 0.00474'
[]
[](test/tests/circular_cross_section_mesh/circular_cross_section_mesh_generator.i)Input Parameters
- all_bottom_leftFalseWhether to generate sidesets for every bottom and left surface of mesh blocks.
Default:False
C++ Type:bool
Controllable:No
Description:Whether to generate sidesets for every bottom and left surface of mesh blocks.
- axial_directionzThe direction perpendicular to the circular cross section.
Default:z
C++ Type:MooseEnum
Controllable:No
Description:The direction perpendicular to the circular cross section.
- axial_offset0The offset of the generated mesh in the axial direction of the fuel rod from the origin.
Default:0
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:The offset of the generated mesh in the axial direction of the fuel rod from the origin.
- biasMesh bias. Same length as elements_per_ring, each entry b: 0.5 <= b <= 2.0.
C++ Type:std::vector<double>
Unit:(no unit assumed)
Controllable:No
Description:Mesh bias. Same length as elements_per_ring, each entry b: 0.5 <= b <= 2.0.
- compress_boundary_idsFalseWhether to compress the boundary IDs into a consecutive list.
Default:False
C++ Type:bool
Controllable:No
Description:Whether to compress the boundary IDs into a consecutive list.
- dual_biasMesh dual bias. If given, bias must be given. Same length as bias, each entry b: 0.5 <= b <= 2.0.
C++ Type:std::vector<double>
Unit:(no unit assumed)
Controllable:No
Description:Mesh dual bias. If given, bias must be given. Same length as bias, each entry b: 0.5 <= b <= 2.0.
- elem_typequad8Whether to generate quad8 or quad4 elements.
Default:quad8
C++ Type:MooseEnum
Controllable:No
Description:Whether to generate quad8 or quad4 elements.
- name_prefixIf provided, prefix the built in boundary names with this string
C++ Type:std::string
Controllable:No
Description:If provided, prefix the built in boundary names with this string
- offset0 0 The in-plane offset of the fuel (to generate eccentric fuel.
Default:0 0
C++ Type:std::vector<double>
Unit:(no unit assumed)
Controllable:No
Description:The in-plane offset of the fuel (to generate eccentric fuel.
- portiontop_rightControl which part of the cross section is meshed.
Default:top_right
C++ Type:MooseEnum
Controllable:No
Description:Control which part of the cross section is meshed.
Optional Parameters
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
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
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
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
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
Controllable:No
Description:Whether or not to show mesh info after generating the mesh (bounding box, element types, sidesets, nodesets, subdomains, etc)