FuelPin3DMeshGenerator

Creates a 3D fuel pin mesh.

Description

The FuelPin3DMeshGenerator generates a 3D mesh for a fuel rod. The mesh may include either a smeared fuel column or individual fuel pellets. Multiple fuel blocks are supported.

For meshes with individual pellets, the pellets are connected to one another at the line between the dished region and the flat section on the tops and bottoms of the fuel pellets. If using multiple fuel blocks, it is recommended for all fuel blocks to use the same values for pellet_dish_radius and pellet_num_sectors. This will allow the pellets to be connected and avoid problems with rigid body modes.

The mesh block names may be set by the user. If not supplied by the user, the mesh will have the following blocks:

Block NameDescription
linerCladding liner (if present).
claddingCladding.
coatingCladding coating (if present).
pelletFuel (if only one fuel block).
pellet_{i}Fuel block i (if more than one fuel block).

The mesh will have the following sidesets:

Sideset NameDescription
xzeroSymmetry plane at x=0.
zzeroSymmetry plane at z=0.
cladding_exterior_bottomExterior, bottom surface of cladding.
cladding_exterior_radialExterior, radial surface of cladding.
cladding_exterior_topExterior, top surface of cladding.
cladding_exteriorExterior surfaces of cladding.
cladding_interior_bottomInterior, bottom surface of cladding.
cladding_interior_radialInterior, radial surface of cladding.
cladding_interior_topInterior, top surface of cladding.
cladding_interiorInterior surfaces of cladding.
fuel_exterior_radialExterior, radial surface of fuel.
fuel_interior_radialInterior, radial surface of fuel (for hollow fuel).
fuel_exteriorAll fuel surfaces.
interiorUnion of fuel_exterior and cladding_interior.
{block_name_i}_{j}_bottomBottom surface of pellet j of fuel block i.
{block_name_i}_{j}_topTop surface of pellet j of fuel block i.

The mesh will have the following nodesets:

Nodeset NameDescription
cladding_centerline_bottomBottom node at the cladding centerline.
cladding_centerline_topTop node at the cladding centerline.
fuel_centerline_bottomBottom node of bottom fuel block at the fuel centerline.
fuel_centerline_topTop node of top fuel block at the fuel centerline.
{block_name_i}_centerline_{j}_bottomBottom node of pellet j of fuel block i at the fuel centerline.
{block_name_i}_centerline_{j}_topTop node of pellet j of fuel block i at the fuel centerline.
{block_name_i}_x_{j}_bottomBottom node of pellet j of fuel block i in the positive x direction.
{block_name_i}_x_{j}_topTop node of pellet j of fuel block i in the positive x direction.
{block_name_i}_z_{j}_bottomBottom node of pellet j of fuel block i in the negative z direction.
{block_name_i}_z_{j}_topTop node of pellet j of fuel block i in the negative z direction.

Example Input Syntax

[Mesh<<<{"href": "../../syntax/Mesh/index.html"}>>>]
  partitioner = centroid
  centroid_partitioner_direction = y
  patch_size = 20
  patch_update_strategy = iteration
  [mesh]
    type = FuelPin3DMeshGenerator<<<{"description": "Creates a 3D fuel pin mesh.", "href": "FuelPin3DMeshGenerator.html"}>>>
    pellet_height<<<{"description": "Height of each pellet for each pellet block."}>>> = '11.86e-3 16e-3'
    pellet_inner_radius<<<{"description": "Inner radius for each pellet block.  Assumed to be zero if not given."}>>> = '0 0.001'
    pellet_outer_radius<<<{"description": "Outer radius for each pellet block.  Typically this is the same value for each pellet block."}>>> = '.0041 .0041'
    pellet_dish_depth<<<{"description": "Depth of dish for each pellet block.  Must be non-negative.  Assumed to be zero if not given."}>>> = '3e-4 3e-4'
    pellet_dish_radius<<<{"description": "Radius of dished region for each pellet block.  Region between this radius and the chamfer will be a flat surface."}>>> = '.0025 .0025'
    pellet_chamfer_width<<<{"description": "Width of the chamfer for each pellet block.  Must be non-negative.  Assumed to be zero if not given."}>>> = '5e-4 5e-4'
    pellet_chamfer_height<<<{"description": "Height of the chamfer for each pellet block.  Must be non-negative.  Ignored if 'pellet_chamfer_width' is zero.  Must be give if 'pellet_chamfer_width' is positive."}>>> = '1.6e-4 1.6e-4'
    pellet_num_sectors<<<{"description": "Number of azimuthal sectors in each quarter circle for each pellet block.  Must be an even number."}>>> = '4 4'
    pellet_dish_interval<<<{"description": "Number of radial elements across the dish for each pellet block."}>>> = '7 9'
    pellet_flat_interval<<<{"description": "Number of radial elements across the flat portion for each pellet block."}>>> = '2 2'
    pellet_chamfer_interval<<<{"description": "Number of radial elements across the chamfer for each pellet block."}>>> = '1 1'
    pellet_axial_interval<<<{"description": "Number of axial elements per pellet for each pellet block."}>>> = '8 8'
    pellet_quantity<<<{"description": "Number of pellets in each pellet block."}>>> = '2 1'
    pellet_names<<<{"description": "A list of names to be assigned to the pellet blocks."}>>> = 'first second'

    cladding_inner_height<<<{"description": "Inner height of cladding."}>>> = 44e-3
    cladding_inner_radius<<<{"description": "Inner radius of cladding."}>>> = .00418
    cladding_cap_bottom_height<<<{"description": "Height of the bottom cladding cap."}>>> = 1e-3
    cladding_cap_top_height<<<{"description": "Height of the top cladding cap."}>>> = 1e-3
    cladding_thickness<<<{"description": "Thickness of cladding wall."}>>> = 5.6e-4
    cladding_radial_interval<<<{"description": "Number of radial elements through the cladding wall."}>>> = 3
    cladding_axial_interval<<<{"description": "Number of axial elements in the cladding wall."}>>> = 10
    cladding_cap_radial_interval<<<{"description": "Number of radial elements across the inner portion of the cladding cap."}>>> = 8
    cladding_cap_axial_interval<<<{"description": "Number of axial elements through the cladding cap."}>>> = 3
    cladding_num_sectors<<<{"description": "Number of azimuthal sectors in each quarter circle for the cladding.  Must be an even number."}>>> = 4
    cladding_name<<<{"description": "Name to be assigned to the cladding block."}>>> = cladding

    bottom_gap_height<<<{"description": "Height of gap between bottom cladding cap and start of fuel stack."}>>> = 1e-3
  []
[]
(test/tests/FuelPin3DMeshGenerator/quarter.i)

Input Parameters

  • bottom_gap_heightHeight of gap between bottom cladding cap and start of fuel stack.

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Height of gap between bottom cladding cap and start of fuel stack.

  • cladding_axial_intervalNumber of axial elements in the cladding wall.

    C++ Type:unsigned int

    Controllable:No

    Description:Number of axial elements in the cladding wall.

  • cladding_cap_axial_intervalNumber of axial elements through the cladding cap.

    C++ Type:unsigned int

    Controllable:No

    Description:Number of axial elements through the cladding cap.

  • cladding_cap_bottom_heightHeight of the bottom cladding cap.

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Height of the bottom cladding cap.

  • cladding_cap_radial_intervalNumber of radial elements across the inner portion of the cladding cap.

    C++ Type:unsigned int

    Controllable:No

    Description:Number of radial elements across the inner portion of the cladding cap.

  • cladding_cap_top_heightHeight of the top cladding cap.

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Height of the top cladding cap.

  • cladding_inner_heightInner height of cladding.

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Inner height of cladding.

  • cladding_inner_radiusInner radius of cladding.

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Inner radius of cladding.

  • cladding_num_sectorsNumber of azimuthal sectors in each quarter circle for the cladding. Must be an even number.

    C++ Type:unsigned int

    Controllable:No

    Description:Number of azimuthal sectors in each quarter circle for the cladding. Must be an even number.

  • cladding_radial_intervalNumber of radial elements through the cladding wall.

    C++ Type:unsigned int

    Controllable:No

    Description:Number of radial elements through the cladding wall.

  • cladding_thicknessThickness of cladding wall.

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Thickness of cladding wall.

  • pellet_axial_intervalNumber of axial elements per pellet for each pellet block.

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

    Controllable:No

    Description:Number of axial elements per pellet for each pellet block.

  • pellet_chamfer_intervalNumber of radial elements across the chamfer for each pellet block.

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

    Controllable:No

    Description:Number of radial elements across the chamfer for each pellet block.

  • pellet_dish_intervalNumber of radial elements across the dish for each pellet block.

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

    Controllable:No

    Description:Number of radial elements across the dish for each pellet block.

  • pellet_dish_radiusRadius of dished region for each pellet block. Region between this radius and the chamfer will be a flat surface.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Radius of dished region for each pellet block. Region between this radius and the chamfer will be a flat surface.

  • pellet_flat_intervalNumber of radial elements across the flat portion for each pellet block.

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

    Controllable:No

    Description:Number of radial elements across the flat portion for each pellet block.

  • pellet_heightHeight of each pellet for each pellet block.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Height of each pellet for each pellet block.

  • pellet_num_sectorsNumber of azimuthal sectors in each quarter circle for each pellet block. Must be an even number.

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

    Controllable:No

    Description:Number of azimuthal sectors in each quarter circle for each pellet block. Must be an even number.

  • pellet_outer_radiusOuter radius for each pellet block. Typically this is the same value for each pellet block.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Outer radius for each pellet block. Typically this is the same value for each pellet block.

  • pellet_quantityNumber of pellets in each pellet block.

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

    Controllable:No

    Description:Number of pellets in each pellet block.

Required Parameters

  • cladding_coating_interval3Number of radial elements through the coating.

    Default:3

    C++ Type:unsigned int

    Controllable:No

    Description:Number of radial elements through the coating.

  • cladding_coating_nameName to be assigned to the cladding coating block.

    C++ Type:std::string

    Controllable:No

    Description:Name to be assigned to the cladding coating block.

  • cladding_coating_thickness0Coating thickness.

    Default:0

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Coating thickness.

  • cladding_liner_interval3Number of radial elements through the liner.

    Default:3

    C++ Type:unsigned int

    Controllable:No

    Description:Number of radial elements through the liner.

  • cladding_liner_nameName to be assigned to the cladding liner block.

    C++ Type:std::string

    Controllable:No

    Description:Name to be assigned to the cladding liner block.

  • cladding_liner_thickness0Liner thickness.

    Default:0

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Liner thickness.

  • cladding_nameName to be assigned to the cladding block.

    C++ Type:std::string

    Controllable:No

    Description:Name to be assigned to the cladding block.

  • elem_typeHEX8The type of element from libMesh to generate.

    Default:HEX8

    C++ Type:MooseEnum

    Options:HEX8, HEX20, HEX27

    Controllable:No

    Description:The type of element from libMesh to generate.

  • include_cladTrueWhether to create the clad part of the mesh.

    Default:True

    C++ Type:bool

    Controllable:No

    Description:Whether to create the clad part of the mesh.

  • include_fuelTrueWhether to create the fuel part of the mesh.

    Default:True

    C++ Type:bool

    Controllable:No

    Description:Whether to create the fuel part of the mesh.

  • pellet_chamfer_heightHeight of the chamfer for each pellet block. Must be non-negative. Ignored if 'pellet_chamfer_width' is zero. Must be give if 'pellet_chamfer_width' is positive.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Height of the chamfer for each pellet block. Must be non-negative. Ignored if 'pellet_chamfer_width' is zero. Must be give if 'pellet_chamfer_width' is positive.

  • pellet_chamfer_widthWidth of the chamfer for each pellet block. Must be non-negative. Assumed to be zero if not given.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Width of the chamfer for each pellet block. Must be non-negative. Assumed to be zero if not given.

  • pellet_dish_depthDepth of dish for each pellet block. Must be non-negative. Assumed to be zero if not given.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Depth of dish for each pellet block. Must be non-negative. Assumed to be zero if not given.

  • pellet_inner_radiusInner radius for each pellet block. Assumed to be zero if not given.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Inner radius for each pellet block. Assumed to be zero if not given.

  • pellet_namesA list of names to be assigned to the pellet blocks.

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

    Controllable:No

    Description:A list of names to be assigned to the pellet blocks.

  • portionquarterControl which fraction of the fuel pin is meshed.

    Default:quarter

    C++ Type:MooseEnum

    Options:quarter, half, whole

    Controllable:No

    Description:Control which fraction of the fuel pin is meshed.

  • scale_factor1Scale factor applied to mesh coordinates.

    Default:1

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Scale factor applied to mesh coordinates.

  • translate0 0 0Translation vector to be applied to the mesh.

    Default:0 0 0

    C++ Type:libMesh::Point

    Controllable:No

    Description:Translation vector to be applied to the mesh.

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.