RodletMeshGenerator

Creates a 2D-RZ axisymmetric mesh of a single fuel rodlet.

Description

This mesh generator generates a fuel rodlet in cladding mesh for use in simulating fuel rods with single fuel slugs. A number of named sidesets, nodesets, and blocks are automatically created. Either solid or annular fuel rods can be created. In addition, an optional stand can be created on top of which the fuel can sit; during high strain, it's possible for the bottom surface of the fuel to not be flat. This can lead to a pinch point at the bottom corner of the cladding that is difficult to converge, while not heavily impacting the behavior of the fuel. By placing the rodlet on a small stand, this behavior can be avoided. This stand effectively stitches the bottom of the fuel to the inside of the bottom cladding section.

In addition to the stand, a cap on the top of the fuel can be optionally created. These two blocks can be used to physically represent liquid sodium bonding often included in metallic fuel rods by allowing a high conductivity path out of the top and bottom of the fuel. The surfaces of the cap and stand can then be included in the thermal contact with the cladding, similar to the outside surface of the fuel. In this way, the energy - and thus the temperature - can be more smoothly transitioned from the top and bottom of the fuel.

Triangular Meshing Option

Usually, this mesh generator creates a structured mesh consisting of either first-order or second-order quadrilateral elements (i.e., QUAD4, QUAD8 and QUAD9), which can be set using "elem_type". Optionally, users can choose to generate the fuel and/or cladding block using unstructured triangular elements utilizing libMesh::TriangulatorInterface. This can be achieved by setting "use_tri_for_cladding_sidewall", "use_tri_for_cladding_plugs" and "use_tri_for_fuel". TRI3 elements are used for the regions that are set to be meshed using triangular elements if "elem_type" is set as QUAD4, while TRI6 elements are used if "elem_type" is set as QUAD8 or QUAD9. Note that the triangular meshing option is only available for the fuel and cladding blocks, and the stand and cap blocks are always meshed using structured quadrilateral elements if applicable.

Example Input Syntax

[Mesh<<<{"href": "../../syntax/Mesh/index.html"}>>>]
  [gen]
    type = RodletMeshGenerator<<<{"description": "Creates a 2D-RZ axisymmetric mesh of a single fuel rodlet.", "href": "RodletMeshGenerator.html"}>>>
    cladding_bottom_plug_length<<<{"description": "Length of bottom cladding plug"}>>> = 0.5
    gap_bottom_length<<<{"description": "Length of gap between bottom of fuel and inside bottom surface of cladding"}>>> = ${gap_bottom_length}
    fuel_length<<<{"description": "Length of fuel"}>>> = ${fuel_length}
    gap_top_length<<<{"description": "Length of gap between top of fuel and inside top surface of cladding"}>>> = ${gap_top_length}
    cladding_top_plug_length<<<{"description": "Length of top cladding plug"}>>> = 1.5
    fuel_inner_radius<<<{"description": "Optional inner radius of fuel"}>>> = 0.5
    fuel_outer_radius<<<{"description": "Outer radius of fuel."}>>> = 1.5
    gap_thickness<<<{"description": "Gap between outer radius of fuel and inside surface of cladding"}>>> = 0.25
    cladding_thickness<<<{"description": "Thickness of cladding side wall. If zero, no cladding block is created"}>>> = 0.5
    cladding_sidewall_radial_elements<<<{"description": "Number of radial elements in the cladding sidewall"}>>> = 4
    cladding_sidewall_axial_element_intervals<<<{"description": "List of relative locations of intervals in the fuel length for which to set a specific number of elements. List must start with 0 and end with 1."}>>> = '0
                                                 ${fparse gap_bottom_length / plenum_length}
                                                 ${fparse (gap_bottom_length + fuel_length) / plenum_length}
                                                 1'
    cladding_sidewall_axial_element_numbers<<<{"description": "List of number of elements within the intervals in 'cladding_sidewall_axial_element_intervals'. The length of this list must be one less than 'cladding_sidewall_axial_element_intervals'."}>>> = '3 4 3'
    cladding_top_plug_radial_elements<<<{"description": "Number of radial elements in the top cladding plug"}>>> = 3
    cladding_top_plug_axial_elements<<<{"description": "Number of radial elements in the top cladding plug"}>>> = 4
    cladding_bottom_plug_radial_elements<<<{"description": "Number of radial elements in the bottom cladding plug"}>>> = 4
    cladding_bottom_plug_axial_elements<<<{"description": "Number of radial elements in the bottom cladding plug"}>>> = 2
    fuel_radial_elements<<<{"description": "Number of radial elements in the fuel"}>>> = 4
    fuel_axial_element_intervals<<<{"description": "List of relative locations of intervals in the fuel length for which to set a specific number of elements. List must start with 0 and end with 1."}>>> = '0 0.25 1'
    fuel_axial_element_numbers<<<{"description": "List of number of elements within the intervals in 'fuel_axial_element_intervals'. The length of this list must be one less than 'fuel_axial_element_intervals'."}>>> = '4 2'
    elem_type<<<{"description": "The type of element from libMesh to generate for the regions to be meshed by quadrilateral elements. If applicable, TRI3 elements are used for the regions to be meshed by triangular elements if QUAD4 is selected here, whereas TRI6 elements are used if QUAD8/QUAD9 is selected "}>>> = QUAD4
    show_info<<<{"description": "Whether or not to show mesh info after generating the mesh (bounding box, element types, sidesets, nodesets, subdomains, etc)"}>>> = false
  []
[]
(test/tests/rodlet_mesh_generator/annulus.i)

Input Parameters

  • cladding_bottom_plug_axial_elementsNumber of radial elements in the bottom cladding plug

    C++ Type:unsigned int

    Controllable:No

    Description:Number of radial elements in the bottom cladding plug

  • cladding_bottom_plug_lengthLength of bottom cladding plug

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Length of bottom cladding plug

  • cladding_sidewall_radial_elementsNumber of radial elements in the cladding sidewall

    C++ Type:unsigned int

    Controllable:No

    Description:Number of radial elements in the cladding sidewall

  • cladding_thicknessThickness of cladding side wall. If zero, no cladding block is created

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Thickness of cladding side wall. If zero, no cladding block is created

  • cladding_top_plug_axial_elementsNumber of radial elements in the top cladding plug

    C++ Type:unsigned int

    Controllable:No

    Description:Number of radial elements in the top cladding plug

  • cladding_top_plug_lengthLength of top cladding plug

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Length of top cladding plug

  • cladding_top_plug_radial_elementsNumber of radial elements in the top cladding plug

    C++ Type:unsigned int

    Controllable:No

    Description:Number of radial elements in the top cladding plug

  • fuel_axial_element_intervalsList of relative locations of intervals in the fuel length for which to set a specific number of elements. List must start with 0 and end with 1.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:List of relative locations of intervals in the fuel length for which to set a specific number of elements. List must start with 0 and end with 1.

  • fuel_lengthLength of fuel

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Length of fuel

  • fuel_outer_radiusOuter radius of fuel.

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Outer radius of fuel.

  • fuel_radial_elementsNumber of radial elements in the fuel

    C++ Type:unsigned int

    Controllable:No

    Description:Number of radial elements in the fuel

  • gap_bottom_lengthLength of gap between bottom of fuel and inside bottom surface of cladding

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Length of gap between bottom of fuel and inside bottom surface of cladding

  • gap_thicknessGap between outer radius of fuel and inside surface of cladding

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Gap between outer radius of fuel and inside surface of cladding

Required Parameters

  • cap_axial_elements5Number of axial elements in the cap

    Default:5

    C++ Type:unsigned int

    Controllable:No

    Description:Number of axial elements in the cap

  • cap_height0Height of cap

    Default:0

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Height of cap

  • cladding_bottom_plug_radial_elementsNumber of radial elements in the bottom cladding plug

    C++ Type:unsigned int

    Controllable:No

    Description:Number of radial elements in the bottom cladding plug

  • cladding_sidewall_axial_element_intervalsList of relative locations of intervals in the fuel length for which to set a specific number of elements. List must start with 0 and end with 1.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:List of relative locations of intervals in the fuel length for which to set a specific number of elements. List must start with 0 and end with 1.

  • cladding_sidewall_axial_element_numbersList of number of elements within the intervals in 'cladding_sidewall_axial_element_intervals'. The length of this list must be one less than 'cladding_sidewall_axial_element_intervals'.

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

    Controllable:No

    Description:List of number of elements within the intervals in 'cladding_sidewall_axial_element_intervals'. The length of this list must be one less than 'cladding_sidewall_axial_element_intervals'.

  • cladding_sidewall_axial_element_sizesList of size of elements within the intervals in 'cladding_sidewall_axial_element_intervals'. The length of this list must be one less than 'cladding_sidewall_axial_element_intervals'.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:List of size of elements within the intervals in 'cladding_sidewall_axial_element_intervals'. The length of this list must be one less than 'cladding_sidewall_axial_element_intervals'.

  • elem_typeQUAD4The type of element from libMesh to generate for the regions to be meshed by quadrilateral elements. If applicable, TRI3 elements are used for the regions to be meshed by triangular elements if QUAD4 is selected here, whereas TRI6 elements are used if QUAD8/QUAD9 is selected

    Default:QUAD4

    C++ Type:MooseEnum

    Options:QUAD4, QUAD8, QUAD9

    Controllable:No

    Description:The type of element from libMesh to generate for the regions to be meshed by quadrilateral elements. If applicable, TRI3 elements are used for the regions to be meshed by triangular elements if QUAD4 is selected here, whereas TRI6 elements are used if QUAD8/QUAD9 is selected

  • fuel_axial_element_numbersList of number of elements within the intervals in 'fuel_axial_element_intervals'. The length of this list must be one less than 'fuel_axial_element_intervals'.

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

    Controllable:No

    Description:List of number of elements within the intervals in 'fuel_axial_element_intervals'. The length of this list must be one less than 'fuel_axial_element_intervals'.

  • fuel_axial_element_sizesList of size of elements within the intervals in 'fuel_axial_element_intervals'. The length of this list must be one less than 'fuel_axial_element_intervals'.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:List of size of elements within the intervals in 'fuel_axial_element_intervals'. The length of this list must be one less than 'fuel_axial_element_intervals'.

  • fuel_inner_radius0Optional inner radius of fuel

    Default:0

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Optional inner radius of fuel

  • gap_top_lengthLength of gap between top of fuel and inside top surface of cladding

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Length of gap between top of fuel and inside top surface of cladding

  • make_standFalseFlag to create stand that stitches the bottom of the fuel and inside bottom of the cladding.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Flag to create stand that stitches the bottom of the fuel and inside bottom of the cladding.

  • stand_axial_elements5Number of axial elements in the stand

    Default:5

    C++ Type:unsigned int

    Controllable:No

    Description:Number of axial elements in the stand

  • tri_block_suffixtriSuffix to append to the block name(s) for TRI elements

    Default:tri

    C++ Type:SubdomainName

    Controllable:No

    Description:Suffix to append to the block name(s) for TRI elements

  • tri_element_size_factorFactor to scale the element size for TRI elements

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Factor to scale the element size for TRI elements

  • use_default_cladding_sidewall_axial_element_intervalsFalseA Boolean parameter to decide is a a trivial set of cladding sidewall axial element intervals (i.e., hollow cladding bottom, fuel slug bottom, fuel slug top, and hollow cladding top) is used.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:A Boolean parameter to decide is a a trivial set of cladding sidewall axial element intervals (i.e., hollow cladding bottom, fuel slug bottom, fuel slug top, and hollow cladding top) is used.

  • use_tri_for_cladding_plugsFalseWhether to use TRI elements for cladding end plugs mesh generation

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether to use TRI elements for cladding end plugs mesh generation

  • use_tri_for_cladding_sidewallWhether to use TRI elements for each axial section of cladding sidewall mesh generation

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

    Controllable:No

    Description:Whether to use TRI elements for each axial section of cladding sidewall mesh generation

  • use_tri_for_fuelWhether to use TRI elements for each axial section of fuel mesh generation

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

    Controllable:No

    Description:Whether to use TRI elements for each axial section of fuel mesh generation

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)

Debugging Parameters

Input Files

References

No citations exist within this document.