FIPDAxialPIEComparison

Description

FIPDAxialPIEComparison is a customized version of the SideValueSampler VectorPostprocessor. This object extracts a BISON calculated Variable or AuxVariable (e.g., displacement in the radial direction) on a given boundary as an axial profile. Meanwhile, it reads another version of axial profile directly from a CSV file available at the EBR-II Fuels Irradiation & Physics Database (FIPD)(Yacout et al. (2021)). The CSV file usually contains post-irradiation examination (PIE) data (e.g., diameter profile of fuel or cladding) that are related to the extracted BISON calculated variable.

After appropriate processing, the predicted axial profile originating from BISON simulation and the FIPD-based axial profile are compared with each other to help evaluate BISON's performance in predicting the fuel behavior quantified by the extracted variable. The comparison result is provide as the relative difference profile between the two sets of axial profiles.

Use of MeshMetaData

In FIPD, the legacy axial PIE data are usually provided in English units. To be specific, the axial positions are provided as distance from fuel/cladding bottom in inches; and the diameters of the fuel/cladding are provided in mils. In order to directly compare the PIE data with BISON prediction, the units need to be converted and the positions need to be scaled and/or shifted based on the specific mesh parameters used by BISON. Thus, this FIPDAxialPIEComparison VectorPostprocessor must be used along with FIPDRodletMeshGenerator so that essential mesh geometry parameters can be obtained through MeshMetaDataInterface. Considering the different geometry features between fuel and cladding, users can set involved_component as either fuel or cladding to use the corresponding MeshMetaData.

If this object is applied to a fuel component, the axial positions read from the CSV file are first converted into the relative form (), where is the distance from fuel bottom and is fuel length. The relative axial positions are then converted back to the corresponding absolute form using the MeshMetaData. On the other hand, if this object is applied to a cladding component, the axial positions directly inherit the input values (after proper unit conversion). The zero axial position of the cladding is regarded as the bottom of the fuel slug position by default. Users may also use axial_shift to align the FIPD PIE data with the BISON mesh.

Strain Comparison and Thermal Expansion Correction

A common application of this object is to compare the BISON-predicted radial displacement of metallic fuel slug or cladding of an EBR-II irradiated fuel pin with the corresponding PIE data available in FIPD to facilitate BISON metallic fuel model evaluation, verification and validation (V&V). All the PIE measurements available in FIPD were made at ambient temperature after irradiation. However, the BISON calculated displacement variable also contains the contribution from thermal expansion. Therefore, the thermal expansion contributed radial displacement can be excluded by providing a thermal strain AuxVariable (thermal_strain_variable) that contains axial layered average thermal strain profile. Thus, the results can be directly compared with the PIE data.

Special Features for Fuel Component

When the involved_component parameter is set as fuel, this FIPDAxialPIEComparison provides extra features to facilitate axial strain analyses in addition to the radial strain analyses. From the fuel's PIE data, aside from the axial dependent radial swelling information, the axial growth and volumetric growth information of the fuel can also be obtained. Thus, three Postprocessors are created by this object to report fuel axial swelling strain, fuel volumetric swelling strain, and fuel anisotropic swelling factor (see UPuZrVolumetricSwellingEigenstrainLM for definition) from the PIE data. Meanwhile, users can provide the names of some external Postprocessors including "max_fuel_elongation_pp_name", "avg_fuel_ax_thm_str_pp_name", "gas_swelling_pp_name", and "solid_swelling_pp_name", so that FIPDAxialPIEComparison can use these information to deduce another three Postprocessors based on computed data to correspond the three PIE-based Postprocessors described above. The Postprocessors generated by this object are summarized as follows:

Postprocessor NameDescription
VectorPostprocessor name + "_ax_swell_pie"axial swelling strain based on PIE
VectorPostprocessor name + "_ax_swell_bison"axial swelling strain based on computation
VectorPostprocessor name + "_vol_swell_pie"volumetric swelling strain based on PIE
VectorPostprocessor name + "_vol_swell_bison"volumetric swelling strain based on computation
VectorPostprocessor name + "_aniso_pie"Anisotropic swelling factor based on the PIE
VectorPostprocessor name + "_aniso_bison"Anisotropic swelling factor based on computation

Example Input Syntax

[VectorPostprocessors<<<{"href": "../../syntax/VectorPostprocessors/index.html"}>>>]
  [pie_comparison]
    type = FIPDAxialPIEComparison<<<{"description": "Sample variable along a line associated with a boundary.", "href": "FIPDAxialPIEComparison.html"}>>>
    involved_component<<<{"description": "Component that is involved in this PIE result comparison (default: fuel). Option: fuel cladding"}>>> = cladding
    csv_file<<<{"description": "The name of the CSV file to read. Currently, with the exception of the header row, only numeric values are supported."}>>> = 'dummy_pie/dummy_pie_clad.csv'
    mesh_generator<<<{"description": "The name of the generator to use as the prefix for mesh meta data properties."}>>> = gen
    boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = cladding_outside_right
    sort_by<<<{"description": "What to sort the samples by"}>>> = y
    thermal_strain_variable<<<{"description": "The names of the variable that contains thermal strain."}>>> = thermal_strain
    variable<<<{"description": "The name of the variable that this VectorPostprocessor operates on"}>>> = calc_var
    vpp_column_name<<<{"description": "The optional customized name of the imported data after processing."}>>> = 'csv_value'
  []
[]
(test/tests/fipd_axial_pie_comparison/fipd_pie_vpp_clad.i)

Input Parameters

  • boundaryThe list of boundary IDs from the mesh where this object applies

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

    Controllable:No

    Description:The list of boundary IDs from the mesh where this object applies

  • csv_fileThe name of the CSV file to read. Currently, with the exception of the header row, only numeric values are supported.

    C++ Type:FileName

    Controllable:No

    Description:The name of the CSV file to read. Currently, with the exception of the header row, only numeric values are supported.

  • mesh_generatorThe name of the generator to use as the prefix for mesh meta data properties.

    C++ Type:MeshGeneratorName

    Controllable:No

    Description:The name of the generator to use as the prefix for mesh meta data properties.

  • sort_byWhat to sort the samples by

    C++ Type:MooseEnum

    Options:x, y, z, id

    Controllable:No

    Description:What to sort the samples by

  • variableThe name of the variable that this VectorPostprocessor operates on

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

    Unit:(no unit assumed)

    Controllable:No

    Description:The name of the variable that this VectorPostprocessor operates on

Required Parameters

  • _auto_broadcastFalse

    Default:False

    C++ Type:bool

    Controllable:No

  • axial_shift0Optional axial shift that can be used to align PIE data position with BISON mesh.

    Default:0

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Optional axial shift that can be used to align PIE data position with BISON mesh.

  • contains_complete_historyFalseSet this flag to indicate that the values in all vectors declared by this VPP represent a time history (e.g. with each invocation, new values are added and old values are never removed). This changes the output so that only a single file is output and updated with each invocation

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Set this flag to indicate that the values in all vectors declared by this VPP represent a time history (e.g. with each invocation, new values are added and old values are never removed). This changes the output so that only a single file is output and updated with each invocation

  • extra_pp_output_nameOutput name to help organize extraneous Postprocessors created by this VectorPostprocessor.

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

    Controllable:No

    Description:Output name to help organize extraneous Postprocessors created by this VectorPostprocessor.

  • involved_componentfuelComponent that is involved in this PIE result comparison (default: fuel). Option: fuel cladding

    Default:fuel

    C++ Type:MooseEnum

    Options:fuel, cladding

    Controllable:No

    Description:Component that is involved in this PIE result comparison (default: fuel). Option: fuel cladding

  • parallel_typeREPLICATEDSet how the data is represented within the VectorPostprocessor (VPP); 'distributed' indicates that data within the VPP is distributed and no auto communication is performed, this setting will result in parallel output within the CSV output; 'replicated' indicates that the data within the VPP is correct on processor 0, the data will automatically be broadcast to all processors unless the '_auto_broadcast' param is set to false within the validParams function.

    Default:REPLICATED

    C++ Type:MooseEnum

    Options:DISTRIBUTED, REPLICATED

    Controllable:No

    Description:Set how the data is represented within the VectorPostprocessor (VPP); 'distributed' indicates that data within the VPP is distributed and no auto communication is performed, this setting will result in parallel output within the CSV output; 'replicated' indicates that the data within the VPP is correct on processor 0, the data will automatically be broadcast to all processors unless the '_auto_broadcast' param is set to false within the validParams function.

  • series_type_to_readThe optional customized series type name in the data file to be read.

    C++ Type:std::string

    Controllable:No

    Description:The optional customized series type name in the data file to be read.

  • thermal_strain_variableThe names of the variable that contains thermal strain.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:The names of the variable that contains thermal strain.

  • vpp_column_nameThe optional customized name of the imported data after processing.

    C++ Type:std::string

    Controllable:No

    Description:The optional customized name of the imported data after processing.

Optional Parameters

  • allow_duplicate_execution_on_initialFalseIn the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable).

    Default:False

    C++ Type:bool

    Controllable:No

    Description:In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable).

  • execute_onTIMESTEP_ENDThe list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html.

    Default:TIMESTEP_END

    C++ Type:ExecFlagEnum

    Options:XFEM_MARK, NONE, INITIAL, LINEAR, NONLINEAR_CONVERGENCE, NONLINEAR, POSTCHECK, TIMESTEP_END, TIMESTEP_BEGIN, MULTIAPP_FIXED_POINT_END, MULTIAPP_FIXED_POINT_BEGIN, FINAL, CUSTOM

    Controllable:No

    Description:The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html.

  • execution_order_group0Execution order groups are executed in increasing order (e.g., the lowest number is executed first). Note that negative group numbers may be used to execute groups before the default (0) group. Please refer to the user object documentation for ordering of user object execution within a group.

    Default:0

    C++ Type:int

    Controllable:No

    Description:Execution order groups are executed in increasing order (e.g., the lowest number is executed first). Note that negative group numbers may be used to execute groups before the default (0) group. Please refer to the user object documentation for ordering of user object execution within a group.

  • force_postauxFalseForces the UserObject to be executed in POSTAUX

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Forces the UserObject to be executed in POSTAUX

  • force_preauxFalseForces the UserObject to be executed in PREAUX

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Forces the UserObject to be executed in PREAUX

  • force_preicFalseForces the UserObject to be executed in PREIC during initial setup

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Forces the UserObject to be executed in PREIC during initial setup

Execution Scheduling Parameters

  • avg_fuel_ax_thm_str_pp_nameName of the postprocessor that tracks the average fuel axial thermal strain.

    C++ Type:PostprocessorName

    Unit:(no unit assumed)

    Controllable:No

    Description:Name of the postprocessor that tracks the average fuel axial thermal strain.

  • gas_swelling_pp_nameName of the postprocessor that tracks the average volumetric gaseous swelling strain of fuel.

    C++ Type:PostprocessorName

    Unit:(no unit assumed)

    Controllable:No

    Description:Name of the postprocessor that tracks the average volumetric gaseous swelling strain of fuel.

  • max_fuel_elongation_pp_nameName of the postprocessor that tracks the maximum fuel elongation.

    C++ Type:PostprocessorName

    Unit:(no unit assumed)

    Controllable:No

    Description:Name of the postprocessor that tracks the maximum fuel elongation.

  • solid_swelling_pp_nameName of the postprocessor that tracks the average volumetric solid swelling strain of fuel.

    C++ Type:PostprocessorName

    Unit:(no unit assumed)

    Controllable:No

    Description:Name of the postprocessor that tracks the average volumetric solid swelling strain of fuel.

Optional Postprocessors Parameters

  • control_tagsAdds user-defined labels for accessing object parameters via control logic.

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

    Controllable:No

    Description:Adds user-defined labels for accessing object parameters via control logic.

  • enableTrueSet the enabled status of the MooseObject.

    Default:True

    C++ Type:bool

    Controllable:Yes

    Description:Set the enabled status of the MooseObject.

  • outputsVector of output names where you would like to restrict the output of variables(s) associated with this object

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

    Controllable:No

    Description:Vector of output names where you would like to restrict the output of variables(s) associated with this object

  • use_displaced_meshFalseWhether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.

Advanced Parameters

  • prop_getter_suffixAn optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.

    C++ Type:MaterialPropertyName

    Unit:(no unit assumed)

    Controllable:No

    Description:An optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.

  • use_interpolated_stateFalseFor the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:For the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.

Material Property Retrieval Parameters

Input Files

References

  1. Abdellatif M Yacout, Kun Mo, Aaron Oaks, Yinbin Miao, Tanju Sofu, and Walid Mohamed. FIPD: the SFR metallic fuels irradiation & physics database. Nuclear Engineering and Design, 380:111225, 2021.[BibTeX]