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 NameDescriptionTypePossible Applications
sodium_volumeBonding sodium volumeRealBias in plenum volume calculation
cladding_radiusOuter radius of claddingRealCoolant related simulation
cladding_thicknessWall thickness of claddingRealWastage related simulation
fuel_heightAxial length of fuel slugRealCoolant related simulation
fuel_radiusRadius of fuel slugRealFission/power density related simulation
cladding_startPosition of hollow cladding bottomRealCladding Degradation
cladding_endPosition of hollow cladding topRealCladding Degradation
wire_wrap_diameterDiameter of wrapping wireRealCoolant related simulation
cladding_bottom_gap_widthGap width between cladding end plug and fuel bottomRealCoolant related simulation

Input Parameters

  • 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.

Required 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

    Options:really_coarse, coarse, medium, fine, customize

    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

    Options:QUAD4, QUAD8, QUAD9

    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

    Options:really_coarse, coarse, medium, fine, customize

    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)

Debugging Parameters

Input Files

References

No citations exist within this document.