- fipd_geom_fileFile containing geometry data of fuel pin from FIPD.
C++ Type:FileName
Controllable:No
Description:File containing geometry data of fuel pin from FIPD.
FuelPinMeshGeneratorFIPD
Creates a 2D-RZ axisymmetric mesh of a fuel rod using an FIPD geometry file.
Description
The FuelPinMeshGeneratorFIPD generates a smeared pellet mesh of a fuel pin (fuel slug + cladding) irradiated in EBR-II as part of the Integral Faster Reactor (IFR) program, based on the fuel pin design geometry file available at the EBR-II Fuels Irradiation & Physics Database (FIPD).

Figure 1: A schematic drawing showing the pin geometry parameters in FuelPinMeshGenerator that are important for metallic fuel pins.
In order to get the necessary fuel pin geometry parameters needed for mesh generation (see Figure 1), pin design data available in FIPD can be used by downloading the geometry csv file. A pin design geometry csv file from FIPD contains two columns. The first column lists the names of design geometry parameters, while the second column lists the corresponding values. If a parameter is missing, the second column for that parameter is empty. There are three sources for these pin design geometry parameters: nominal design parameters (the n_xyz parameters), as-built design parameters (the ab_xyz parameters), and measured design parameters (the m_xyz parameters). When a design parameter is available from multiple sources, a priority list is needed to determine which source is used for mesh generation, which is discussed as follows:
From an FIPD pin design csv file, six parameters need to be collected to form a complete set of geometry data for mesh generation: (1) cladding outer diameter (OD); (2) cladding thickness; (3) fuel slug length; (4) fuel slug OD; (5) sodium level above slug top; and (6) plenum volume.
Parameters (1), (2), and (5) are only available in as-built(1) and nominal(0) sources. The parameters from two sources are quite consistent with each other. Therefore, the following priority is used for mesh generation: as-built(1)>nominal(0). Optionally, users can use vector parameters clad_outer_diameter_priority, clad_thickness_priority, and sodium_level_priority to define custom priorities. For example, the default values for these vector parameters are all '1 0'.
Parameter (3) is available in all three sources. Parameter from these sources are reasonably consistent with each other except for some outliers from measured source, which will need to be investigated in the ongoing FIPD quality assurance (QA) effort. At this moment, the following priority is used for mesh generation: as-built(1)>nominal(0)>measured(2). This priority is subject to change once the QA is completed. Optionally, users can use the vector parameter fuel_length_priority to define a custom priority. For example, the default value for this vector parameter is '1 0 2'.
Parameter (4) is available in all three sources. The current version of measured parameters only have two-decimal precision, while the as-built and nominal parameters have three-decimal precision. Thus, the following priority is used for mesh generation: as-built(1)>nominal(0)>measured(2). Optionally, users can use the vector parameter fuel_diameter_priority to define a custom priority. For example, the default value for this vector parameter is '1 0 2'.
Parameter (6) can either be directly adopted from ab_spec_plenum_volume_25C_cm3, or deduced from fuel slug volume (fuel slug OD and length) and plenum-to-fuel ratio. The plenum-to-fuel ratio is available in both as-built and nominal sources. For the majority of the fuel pins in FIPD, parameters (6) from three aforementioned sources are consistent. For X441, the ab_spec_plenum_volume_25C_cm3 may have some outlier values. As a result, the following priority is used for mesh generation: as-built plenum-to-fuel(1)>nominal plenum-to-fuel(0)>ab_spec_plenum_volume_25C_cm3(2). Optionally, users can use the vector parameter plenum_volume_priority to define a custom priority. For example, the default value for this vector parameter is '1 0 2'.
The FuelPinMeshGeneratorFIPD also creates a series of metadata, which can be accessed by other objects through MeshMetaDataInterface to ensure the consistency of pin design geometry parameters throughout the simulation. The current available metadata are listed as follows:
| Metadata Name | Description | Type | Possible Applications |
|---|---|---|---|
| sodium_volume | Bonding sodium volume | Real | Bias in plenum volume calculation |
| cladding_radius | Outer radius of cladding | Real | Coolant related simulation |
| cladding_thickness | Wall thickness of cladding | Real | Wastage related simulation |
| fuel_height | Axial length of fuel slug | Real | Coolant related simulation |
| fuel_radius | Radius of fuel slug | Real | Fission/power density related simulation |
| cladding_start | Position of hollow cladding bottom | Real | Cladding Degradation |
| cladding_end | Position of hollow cladding top | Real | Cladding Degradation |
| wire_wrap_diameter | Diameter of wrapping wire | Real | Coolant related simulation |
| cladding_bottom_gap_width | Gap width between cladding end plug and fuel bottom | Real | Coolant related simulation |
Input Parameters
- bottom_clad_height0.00224Height of bottom cladding wall.
Default:0.00224
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Height of bottom cladding wall.
- bottom_coordinate0Y coordinate of lowest part of the mesh.
Default:0
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Y coordinate of lowest part of the mesh.
- 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.
- chamfer_height0 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.
Default:0
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.
- chamfer_width0 Width of the chamfer for each pellet block. Must be non-negative. Assumed to be zero if not given.
Default:0
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.
- clad_bot_gap_height0.00127Gap between bottom of pellet and inside bottom surface of cladding
Default:0.00127
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Gap between bottom of pellet and inside bottom surface of cladding
- clad_mesh_densitymediumSets the mesh density of the cladding (coarse, medium, fine)
Default:medium
C++ Type:MooseEnum
Controllable:No
Description:Sets the mesh density of the cladding (coarse, medium, fine)
- clad_outer_diameter_priority1 0 Priority list for the cladding outer diameter parameters: nominal(0) and as-built(1).
Default:1 0
C++ Type:std::vector<unsigned int>
Controllable:No
Description:Priority list for the cladding outer diameter parameters: nominal(0) and as-built(1).
- clad_thickness_priority1 0 Priority list for the cladding thickness parameters: nominal(0) and as-built(1).
Default:1 0
C++ Type:std::vector<unsigned int>
Controllable:No
Description:Priority list for the cladding thickness parameters: nominal(0) and as-built(1).
- coating_thickness0Thickness of coating on exterior of cladding.
Default:0
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Thickness of coating on exterior of cladding.
- dish_depth0 Depth of the dish for each pellet block. Must be non-negative. Assumed to be zero if not given.
Default:0
C++ Type:std::vector<double>
Unit:(no unit assumed)
Controllable:No
Description:Depth of the dish for each pellet block. Must be non-negative. Assumed to be zero if not given.
- dish_radius0 Radius of dished region for each pellet block. Region between this radius and the chamfer will be a flat surface.
Default:0
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.
- elem_typeQUAD4The type of element to generate (QUAD4 QUAD8 QUAD9).
Default:QUAD4
C++ Type:MooseEnum
Controllable:No
Description:The type of element to generate (QUAD4 QUAD8 QUAD9).
- fuel_base_namepelletThe base block name for fuel blocks.
Default:pellet
C++ Type:std::string
Controllable:No
Description:The base block name for fuel blocks.
- fuel_diameter_priority1 0 2 Priority list for the fuel diameter parameters: nominal(0), as-built(1), and measured(2).
Default:1 0 2
C++ Type:std::vector<unsigned int>
Controllable:No
Description:Priority list for the fuel diameter parameters: nominal(0), as-built(1), and measured(2).
- fuel_length_priority1 0 2 Priority list for the fuel length parameters: nominal(0), as-built(1), and measured(2).
Default:1 0 2
C++ Type:std::vector<unsigned int>
Controllable:No
Description:Priority list for the fuel length parameters: nominal(0), as-built(1), and measured(2).
- include_cladTrueWhether to include clad block
Default:True
C++ Type:bool
Controllable:No
Description:Whether to include clad block
- include_fuelTrueWhether to include fuel block
Default:True
C++ Type:bool
Controllable:No
Description:Whether to include fuel block
- intervalsIf specified, this forces element boundaries on the fuel pin region. This specifies a list of interval sizes for each block that taken together must add up to the length of the fuel pin region For example, if set to "intervals='0.2 0.3'" then the fuel pin element block will have an element boundary at 0.2 meters, with the total height being 0.5 meters. Note that this total height must be equal to the sum of pellet_quantity * pellet_height for all quantities/heights.
C++ Type:std::vector<std::vector<double>>
Unit:(no unit assumed)
Controllable:No
Description:If specified, this forces element boundaries on the fuel pin region. This specifies a list of interval sizes for each block that taken together must add up to the length of the fuel pin region For example, if set to "intervals='0.2 0.3'" then the fuel pin element block will have an element boundary at 0.2 meters, with the total height being 0.5 meters. Note that this total height must be equal to the sum of pellet_quantity * pellet_height for all quantities/heights.
- intervals_nyThe number of axial elements in each of the intervals for the fuel pin and the side clad regions, optionally used if the "intervals" are specified.
C++ Type:std::vector<std::vector<unsigned int>>
Controllable:No
Description:The number of axial elements in each of the intervals for the fuel pin and the side clad regions, optionally used if the "intervals" are specified.
- 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.
- 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_chamfer0 Number of radial elements across the chamfer for each pellet block.
Default:0
C++ Type:std::vector<unsigned int>
Controllable:No
Description:Number of radial elements across the chamfer for each pellet block.
- nx_coating0Number of coating elements in the radial direction.
Default:0
C++ Type:unsigned int
Controllable:No
Description:Number of coating elements in the radial direction.
- nx_dish0 Number of radial elements across the dish for each pellet block.
Default:0
C++ Type:std::vector<unsigned int>
Controllable:No
Description:Number of radial elements across the dish for each pellet block.
- nx_flat0 Number of radial elements across the flat portion for each pellet block.
Default:0
C++ Type:std::vector<unsigned int>
Controllable:No
Description:Number of radial elements across the flat portion for each pellet block.
- 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_p8 number of fuel elements in radial direction
Default:8
C++ Type:std::vector<unsigned int>
Controllable:No
Description:number of fuel elements in radial direction
- ny_c24Number of cladding elements in axial direction.
Default:24
C++ Type:unsigned int
Controllable:No
Description:Number of cladding elements in axial direction.
- ny_c_bot_gapIf "intervals" are specified, this is the number of axial elements in the clad area between the bottom top surface of bottom clad plug and the bottom of the pellet. If not specified, the number will be computed to be roughly equivalent to the size of elements in the active fuel region.
C++ Type:unsigned int
Controllable:No
Description:If "intervals" are specified, this is the number of axial elements in the clad area between the bottom top surface of bottom clad plug and the bottom of the pellet. If not specified, the number will be computed to be roughly equivalent to the size of elements in the active fuel region.
- ny_c_plenumIf "intervals" are specified, this is the number of axial elements in the plenum (gap between top of pellet and bottom surface of top clad plug). If not specified, the number will be computed to be roughly equivalent to the size of elements in the active fuel region.
C++ Type:unsigned int
Controllable:No
Description:If "intervals" are specified, this is the number of axial elements in the plenum (gap between top of pellet and bottom surface of top clad plug). If not specified, the number will be computed to be roughly equivalent to the size of elements in the active fuel region.
- ny_cl1Number of cladding elements in lower plug in axial direction.
Default:1
C++ Type:unsigned int
Controllable:No
Description:Number of cladding elements in lower plug in axial direction.
- ny_cu1Number of cladding elements in upper plug in axial direction.
Default:1
C++ Type:unsigned int
Controllable:No
Description:Number of cladding elements in upper plug in axial direction.
- ny_p24 Number of fuel elements in axial direction
Default:24
C++ Type:std::vector<unsigned int>
Controllable:No
Description:Number of fuel elements in axial direction
- pellet_inner_radius0 Pellet inner radius. If more than one value, the number of values must match the number of values in pellet_quantity.
Default:0
C++ Type:std::vector<double>
Unit:(no unit assumed)
Controllable:No
Description:Pellet inner radius. If more than one value, the number of values must match the number of values in pellet_quantity.
- pellet_mesh_densitymediumSets the mesh density of the pellet (really_coarse coarse medium fine customize).
Default:medium
C++ Type:MooseEnum
Controllable:No
Description:Sets the mesh density of the pellet (really_coarse coarse medium fine customize).
- plenum_fuel_ratio1Ratio of the axial gas height to the fuel height inside the cladding
Default:1
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Ratio of the axial gas height to the fuel height inside the cladding
- plenum_volume_priority1 0 2 Priority list for the plenum volume parameters: nominal-fuel-to-plenum-ratio(0), as-built-plenum-to-fuel-ratio(1) and as-built-plenum-volume(2).
Default:1 0 2
C++ Type:std::vector<unsigned int>
Controllable:No
Description:Priority list for the plenum volume parameters: nominal-fuel-to-plenum-ratio(0), as-built-plenum-to-fuel-ratio(1) and as-built-plenum-volume(2).
- sodium_level_priority1 0 Priority list for the sodium level above fuel parameters: nominal(0) and as-built(1).
Default:1 0
C++ Type:std::vector<unsigned int>
Controllable:No
Description:Priority list for the sodium level above fuel parameters: nominal(0) and as-built(1).
- top_clad_height0.00224Height of top cladding wall.
Default:0.00224
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Height of top cladding wall.
- use_legacy_block_idsTrueWhether to use legacy block id convention. Must be false if creating multiple fuel blocks.
Default:True
C++ Type:bool
Controllable:No
Description:Whether to use legacy block id convention. Must be false if creating multiple fuel blocks.
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)