Layered1DMeshGenerator

Creates an axisymmetric mesh composed of layers of 1-dimensional elements.

Description

This mesh class generates a sliced or layered 1-dimensional mesh of fuel and cladding. It allows the user to specify radii, heights, mesh density, and number of layers. A coating layer may be added to the exterior of the cladding. The fuel or cladding portion of the mesh can be disabled if desired. Details about common input parameters are as follows.

With uniform_slice_heights set to true, fuel slice heights are computed based on fuel_height. If set to false, provide slice_heights but not fuel_height. slice_heights is a list of heights for every slice in the model, including the plenum if a plenum is used.

plenum_height is the height of cladding not adjacent to fuel and above the fuel stack. lower_plenum_height is the height of cladding not adjacent to fuel and below the fuel stack.

commentnote:Proper use of plenum_height and lower_plenum_height

Note that plenum_height and lower_plenum_height are only used with uniform_slice_heights set to true. If uniform_slice_heights is false and include_plenum is true, the last entry in slice_heights is the height of the upper plenum. If uniform_slice_heights is false and include_lower_plenum is true, the first entry in slice_heights is the height of the lower plenum.

pellet_bottom_coor is the vertical coordinate of the start of the fuel column. This means that the vertical coordinate of the first mesh layer will be at pellet_bottom_coor plus one half of the first layer height.

Figure 1: Diagram of simplified fuel and cladding mesh generated by Layered1DMeshGenerator. Coordinate positions of layers are listed along the vertical axis. Model radii are given along the horizontal axis.

There is the capability to add additional radial blocks outside of the clad, which can be useful for modeling coated clads or fuel rods contained inside a capsule (as in some experiments). To add additional blocks three additional parameters need to be set: additional_block_names, additional_ring_thicknesses, and additional_elements_per_ring. The first parameter provides the user-defined names of the additional blocks. The second parameter defines the thickness of each of these blocks. The third specifies the number of finite elements to be used through the thickness of the block. If a value of zero is specified in a position of additional_elements_per_ring that is treated as a gap. The entry in these three parameters represents the block added immediately after the clad.

There is the capability to model a liner bonded to the interior surface of the cladding.

The resulting mesh will have the following sidesets.

SidesetDescription
2outer surface
5For a typical fuel and cladding mesh, this is the interior surface of the cladding.
7For a typical fuel and cladding mesh, this is the interior surface of the cladding.
8For a typical fuel and cladding mesh, this is the exterior surface of the fuel.
9For a typical fuel and cladding mesh, this is the union of sidesets 7 and 8.
10For a typical fuel and cladding mesh, this is the exterior radial surface of the fuel.
12For a typical fuel and cladding mesh, this is the centerline of the fuel.
13For a typical fuel and cladding mesh, this is the inner radial surface of the fuel.
15, 16, 17, every inner and outer radial surface of the additional mesh blocks will receive a sideset, starting with 15. If there is no gap between the blocks the interface is assigned the sideset.
10001, 10002, 10003, 10004, every inner and outer surface in the first layer will receive a sidset, starting at the fuel interior with 10001. Each subsequent layer begins indexing at where is the layer index.

Example Input Syntax

In this example, a clad with a bonded coating encapsulated inside a capsule is created.

[Mesh<<<{"href": "../../syntax/Mesh/index.html"}>>>]
  coord_type = RZ
  [gen]
    type = Layered1DMeshGenerator<<<{"description": "Creates an axisymmetric mesh composed of layers of 1-dimensional elements.", "href": "Layered1DMeshGenerator.html"}>>>
    uniform_slice_heights<<<{"description": "Whether heights of fuel/cladding slices are uniform, excluding plenum height."}>>> = false
    slices_per_block<<<{"description": "For cases with only cladding, this is a single number providing the total number of slices for the cladding.  For cases with fuel, this is the number of slices per fuel block. Multiple values are provided if multiple fuel blocks are used."}>>> = '1'
    include_fuel<<<{"description": "Whether to include the fuel block."}>>> = false
    include_clad<<<{"description": "Whether to include the clad block."}>>> = true
    include_plenum<<<{"description": "Whether to include the plenum."}>>> = false
    pellet_bottom_coor<<<{"description": "Axial location of the start of the fuel stack."}>>> = 0
    pellet_outer_radius<<<{"description": "Pellet outer radius.  If more than one given, number must match number of fuel blocks."}>>> = '1.0'
    clad_gap_width<<<{"description": "Gap between maximum outer radius of pellet and inside surface of cladding."}>>> = 0.0
    clad_thickness<<<{"description": "Thickness of cladding."}>>> = 0.3
    pellet_mesh_density<<<{"description": "Sets the mesh density of the pellet (really_coarse, coarse, medium, fine, customize)."}>>> = customize
    clad_mesh_density<<<{"description": "Sets the mesh density of the cladding (really_coarse, coarse, medium, fine, customize)."}>>> = customize
    additional_block_names<<<{"description": "The names assigned to the blocks representing the additional rings."}>>> = 'coating null capsule'
    additional_elements_per_ring<<<{"description": "The number of elements through the additional rings. Must be the same length as additional_ring_thicknesses."}>>> = '30 0 20'
    additional_ring_thicknesses<<<{"description": "The thicknesses of additional rings."}>>> = '0.1142135623730951 0.2 0.1142135623730951'
    nx_c<<<{"description": "Number of cladding elements in radial direction."}>>> = 300
    elem_type<<<{"description": "The type of element from libMesh to generate."}>>> = EDGE3
  []
[]
(test/tests/layered_1D/with_coating_and_capsule.i)

An example on how to model a liner is given by:

[Mesh<<<{"href": "../../syntax/Mesh/index.html"}>>>]
  coord_type = RZ
  [layered1D_mesh]
    type = Layered1DMeshGenerator<<<{"description": "Creates an axisymmetric mesh composed of layers of 1-dimensional elements.", "href": "Layered1DMeshGenerator.html"}>>>
    uniform_slice_heights<<<{"description": "Whether heights of fuel/cladding slices are uniform, excluding plenum height."}>>> = false
    slices_per_block<<<{"description": "For cases with only cladding, this is a single number providing the total number of slices for the cladding.  For cases with fuel, this is the number of slices per fuel block. Multiple values are provided if multiple fuel blocks are used."}>>> = '1'
    include_fuel<<<{"description": "Whether to include the fuel block."}>>> = false
    include_clad<<<{"description": "Whether to include the clad block."}>>> = true
    include_plenum<<<{"description": "Whether to include the plenum."}>>> = false
    pellet_bottom_coor<<<{"description": "Axial location of the start of the fuel stack."}>>> = 0
    pellet_outer_radius<<<{"description": "Pellet outer radius.  If more than one given, number must match number of fuel blocks."}>>> = '1.0'
    clad_gap_width<<<{"description": "Gap between maximum outer radius of pellet and inside surface of cladding."}>>> = 0.0
    clad_thickness<<<{"description": "Thickness of cladding."}>>> = 0.3
    liner_thickness<<<{"description": "Thickness of liner on interior of cladding."}>>> = 0.1142135623730951
    clad_mesh_density<<<{"description": "Sets the mesh density of the cladding (really_coarse, coarse, medium, fine, customize)."}>>> = customize
    nx_liner<<<{"description": "number of liner elements in the radial direction"}>>> = 30
    elem_type<<<{"description": "The type of element from libMesh to generate."}>>> = EDGE3
  []
[]
(test/tests/layered_1D/with_liner.i)

Input Parameters

  • slices_per_blockFor cases with only cladding, this is a single number providing the total number of slices for the cladding. For cases with fuel, this is the number of slices per fuel block. Multiple values are provided if multiple fuel blocks are used.

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

    Controllable:No

    Description:For cases with only cladding, this is a single number providing the total number of slices for the cladding. For cases with fuel, this is the number of slices per fuel block. Multiple values are provided if multiple fuel blocks are used.

Required Parameters

  • additional_block_namesThe names assigned to the blocks representing the additional rings.

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

    Controllable:No

    Description:The names assigned to the blocks representing the additional rings.

  • additional_elements_per_ringThe number of elements through the additional rings. Must be the same length as additional_ring_thicknesses.

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

    Controllable:No

    Description:The number of elements through the additional rings. Must be the same length as additional_ring_thicknesses.

  • additional_ring_thicknessesThe thicknesses of additional rings.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:The thicknesses of additional rings.

  • bx_p1The amount to grow (or shrink) the fuel elements in the radial direction.

    Default:1

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:The amount to grow (or shrink) the fuel elements in the radial direction.

  • clad_gap_width2.5e-05Gap between maximum outer radius of pellet and inside surface of cladding.

    Default:2.5e-05

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Gap between maximum outer radius of pellet and inside surface of cladding.

  • clad_mesh_densitymediumSets the mesh density of the cladding (really_coarse, coarse, medium, fine, customize).

    Default:medium

    C++ Type:MooseEnum

    Options:really_coarse, coarse, medium, fine, customize

    Controllable:No

    Description:Sets the mesh density of the cladding (really_coarse, coarse, medium, fine, customize).

  • clad_thickness0.00041Thickness of cladding.

    Default:0.00041

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Thickness of cladding.

  • elem_typeEDGE3The type of element from libMesh to generate.

    Default:EDGE3

    C++ Type:MooseEnum

    Options:EDGE2, EDGE3

    Controllable:No

    Description:The type of element from libMesh to generate.

  • fuel_heightHeight of the fuel.

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Height of the fuel.

  • include_cladTrueWhether to include the clad block.

    Default:True

    C++ Type:bool

    Controllable:No

    Description:Whether to include the clad block.

  • include_fuelTrueWhether to include the fuel block.

    Default:True

    C++ Type:bool

    Controllable:No

    Description:Whether to include the fuel block.

  • include_lower_plenumFalseWhether to include a lower plenum. Can only be used with uniform_slice_heights=false

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether to include a lower plenum. Can only be used with uniform_slice_heights=false

  • include_plenumTrueWhether to include the plenum.

    Default:True

    C++ Type:bool

    Controllable:No

    Description:Whether to include the plenum.

  • liner_thickness0Thickness of liner on interior of cladding.

    Default:0

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Thickness of liner on interior of cladding.

  • lower_plenum_heightHeight of the lower plenum. Used only when uniform_slice_heights is true.

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Height of the lower plenum. Used only when uniform_slice_heights is true.

  • nx_c2Number of cladding elements in radial direction.

    Default:2

    C++ Type:unsigned int

    Controllable:No

    Description:Number of cladding elements in radial direction.

  • nx_liner0number of liner elements in the radial direction

    Default:0

    C++ Type:unsigned int

    Controllable:No

    Description:number of liner elements in the radial direction

  • nx_p8Number of fuel elements in radial direction.

    Default:8

    C++ Type:unsigned int

    Controllable:No

    Description:Number of fuel elements in radial direction.

  • pellet_bottom_coor0.00324Axial location of the start of the fuel stack.

    Default:0.00324

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Axial location of the start of the fuel stack.

  • pellet_inner_radius0 Pellet inner radius. If more than one given, number must match number of fuel blocks.

    Default:0

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Pellet inner radius. If more than one given, number must match number of fuel blocks.

  • pellet_mesh_densitymediumSets the mesh density of the pellet (really_coarse, coarse, medium, fine, customize).

    Default:medium

    C++ Type:MooseEnum

    Options:really_coarse, coarse, medium, fine, customize

    Controllable:No

    Description:Sets the mesh density of the pellet (really_coarse, coarse, medium, fine, customize).

  • pellet_outer_radius0.0041 Pellet outer radius. If more than one given, number must match number of fuel blocks.

    Default:0.0041

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Pellet outer radius. If more than one given, number must match number of fuel blocks.

  • plenum_heightHeight of the upper plenum. Used only when uniform_slice_heights is true.

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Height of the upper plenum. Used only when uniform_slice_heights is true.

  • slice_heightsNeeded if uniform_slice_heights is false. Height of each slice. The number of slices provided must be the total number of fuel slices, plus one slice for the plenum, if a plenum is used, plus one slice for the lower plenum, if a lower plenum is used. This equals the number of slices in the cladding.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Needed if uniform_slice_heights is false. Height of each slice. The number of slices provided must be the total number of fuel slices, plus one slice for the plenum, if a plenum is used, plus one slice for the lower plenum, if a lower plenum is used. This equals the number of slices in the cladding.

  • slices_within_upper_plenum1Number of slices within the upper plenum. By default, the upper plenum is treated as a single volume (#slices = 1).

    Default:1

    C++ Type:unsigned int

    Controllable:No

    Description:Number of slices within the upper plenum. By default, the upper plenum is treated as a single volume (#slices = 1).

  • uniform_slice_heightsTrueWhether heights of fuel/cladding slices are uniform, excluding plenum height.

    Default:True

    C++ Type:bool

    Controllable:No

    Description:Whether heights of fuel/cladding slices are uniform, excluding plenum height.

  • use_legacy_block_idsTrueWhether to use legacy block id convention.

    Default:True

    C++ Type:bool

    Controllable:No

    Description:Whether to use legacy block id convention.

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.