UO2IsotropicDamageElasticityTensor

Computes the isotropic elastic constants for UO2 fuel as a scaled function of the number of cracks in the fuel.

Description

This class, UO2IsotropicDamageElasticityTensor, updates the isotropic elastic Young's Modulus and Poisson's ratio for UO fuel as a function of the number of cracks within the fuel at a material point. Both elastic constants are reduced by a scaling factor that depends on the number of cracks in the fuel, and the scaling model is developed in the forthcoming article from Barani et.al. (2017). The quantity of cracks is calculated as a function of average linear power; this function is based on data from Walton and Husser (1983) and Oguma (1983).

Number of Cracks in Fuel

Fuel pellets crack when thermally-induced tensile stresses exceed the fracture strength of the material as ceramic nuclear fuel is brought up to power; therefore, this model assumes that the cracking occurs while the material is loading in the elastic deformation regime. The crack patterns are oriented either along the radial or the axial direction of the fuel rod. Three options exist for computing the total number of cracks within the fuel: Barani et al., Coindreau et al., and Walton and Matheson.

Barani et. al Model

Barani et al. (2019), forthcoming, developed a model for the number of cracks, , as a function of the linear heat rate, LHR, which does not include the specific crack pattern. where LHR = 5 is the linear heat rate required to trigger the first, = 1, crack, = 12, and = 21 kW/m. The later two parameters were determined by fitting the model to experimental data from Oguma (1983) and Walton and Husser (1983). The effects of burnup and power history on the number of cracks in the fuel are not included in the model at present.

This model does allow for multiple cracks to occur in an asynchronous manner as opposed to other models which allow fuel pellet cracking in only the first time step.

Coindreau et. al Model

The Coindreau et al. (2013) model is a function of the maximum linear heat rate and the rod average burnup: where is the number of radial cracks formed in fresh fuel subjected to a power at beginning of life, is the maximum linear heat generation rate experienced by the fuel in kW/m. Using the initial number of radial cracks calculated above, the number of radial cracks in irradiated fuel is determined by: where is the fuel pellet average burnup in MWd/kgHM. Notice that the above equations limit the maximum number of radial cracks to 16.

Walton and Matheson Model

The Walton and Matheson (1984) model computes the the number of radial cracks formed as a function of maximum linear heat rate and the ord average burnup. The number of cracks formed is computed by: where is the fuel pellet average burnup in MWd/kgHM. The term in the preceding equation is known as the Macaulay brackets defined by: where is the maximum linear heat generation rate experienced by the fuel in kW/m.

Elastic Constant Scaling

This model treats the cracked fuel pellet material as isotropic and assumes that the principle strains are conserved. (1) The relationship for the scaled isotropic elastic constants was determined by defining the squared deviation of the scaled and original stresses in the material and then averaging over the symmetric range of strain while minimizing the squared stress deviation value by Barani et al. (2019). For number of cracks, the isotropic elastic constants are (2)

(3)

If the number of cracks has changed from the previous time step, the updated scaled values of the Young's modulus and the Poisson's ratio are passed to the UO2ElasticityTensor class.

Example Input Syntax

[Materials<<<{"href": "../../../syntax/Materials/index.html"}>>>]
  [elasticity_tensor]
    type = UO2IsotropicDamageElasticityTensor<<<{"description": "Computes the isotropic elastic constants for UO2 fuel as a scaled function of the number of cracks in the fuel.", "href": "UO2IsotropicDamageElasticityTensor.html"}>>>
    matpro_youngs_modulus<<<{"description": "Flag for using MATPRO to compute Young's modulus"}>>> = false
    matpro_poissons_ratio<<<{"description": "Flag for using MATPRO to compute Poisson's ratio"}>>> = false
    temperature<<<{"description": "Coupled temperature"}>>> = temperature
    fragmentation_model<<<{"description": "The model used to calculate the number of cracks in the fuel."}>>> = BARANI
    rod_ave_lin_pow<<<{"description": "Average linear power function"}>>> = power_history
  []
[]
(test/tests/solid_mechanics/uo2_mechanics/uo2_elastic_isotropic_cracking_barani.i)

Input Parameters

  • fragmentation_modelCOINDREAUThe model used to calculate the number of cracks in the fuel.

    Default:COINDREAU

    C++ Type:MooseEnum

    Options:COINDREAU, WALTON, BARANI

    Controllable:No

    Description:The model used to calculate the number of cracks in the fuel.

  • rod_ave_lin_powAverage linear power function

    C++ Type:FunctionName

    Unit:(no unit assumed)

    Controllable:No

    Description:Average linear power function

Required Parameters

  • axial_relocation_objectName of the AxialRelocationUserObject that determines whether the fuel has crumbled.

    C++ Type:UserObjectName

    Controllable:No

    Description:Name of the AxialRelocationUserObject that determines whether the fuel has crumbled.

  • base_nameOptional parameter that allows the user to define multiple mechanics material systems on the same block, i.e. for multiple phases

    C++ Type:std::string

    Controllable:No

    Description:Optional parameter that allows the user to define multiple mechanics material systems on the same block, i.e. for multiple phases

  • blockThe list of blocks (ids or names) that this object will be applied

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

    Controllable:No

    Description:The list of blocks (ids or names) that this object will be applied

  • boundaryThe list of boundaries (ids or names) from the mesh where this object applies

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

    Controllable:No

    Description:The list of boundaries (ids or names) from the mesh where this object applies

  • computeTrueWhen false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies.

    Default:True

    C++ Type:bool

    Controllable:No

    Description:When false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies.

  • constant_onNONEWhen ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped

    Default:NONE

    C++ Type:MooseEnum

    Options:NONE, ELEMENT, SUBDOMAIN

    Controllable:No

    Description:When ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped

  • crumbling_scale_factor0.0001Scaling factor to apply to the Young's modulus in layers that have crumbled during axial relocation.

    Default:0.0001

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Scaling factor to apply to the Young's modulus in layers that have crumbled during axial relocation.

  • declare_suffixAn optional suffix parameter that can be appended to any declared 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 declared properties. The suffix will be prepended with a '_' character.

  • densityInitial fuel density

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Initial fuel density

  • elasticity_tensor_prefactorOptional function to use as a scalar prefactor on the elasticity tensor.

    C++ Type:FunctionName

    Unit:(no unit assumed)

    Controllable:No

    Description:Optional function to use as a scalar prefactor on the elasticity tensor.

  • matpro_poissons_ratioFalseFlag for using MATPRO to compute Poisson's ratio

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Flag for using MATPRO to compute Poisson's ratio

  • matpro_youngs_modulusFalseFlag for using MATPRO to compute Young's modulus

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Flag for using MATPRO to compute Young's modulus

  • oxygen_to_metal_ratio2Oxygen to metal ratio

    Default:2

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Oxygen to metal ratio

  • po2_fraction0Weight fraction of PO2

    Default:0

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Weight fraction of PO2

  • rod_average_burnupName of the Postprocessor that holds the max linear heat generation rate over time in W/m

    C++ Type:PostprocessorName

    Unit:(no unit assumed)

    Controllable:No

    Description:Name of the Postprocessor that holds the max linear heat generation rate over time in W/m

  • temperatureCoupled temperature

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Coupled temperature

  • youngs_modulus_scale_factor1Scaling factor to apply to the Young's modulus.

    Default:1

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Scaling factor to apply to the Young's modulus.

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

  • implicitTrueDetermines whether this object is calculated using an implicit or explicit form

    Default:True

    C++ Type:bool

    Controllable:No

    Description:Determines whether this object is calculated using an implicit or explicit form

  • seed0The seed for the master random number generator

    Default:0

    C++ Type:unsigned int

    Controllable:No

    Description:The seed for the master random number generator

  • 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

  • output_propertiesList of material properties, from this material, to output (outputs must also be defined to an output type)

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

    Controllable:No

    Description:List of material properties, from this material, to output (outputs must also be defined to an output type)

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

    Default:none

    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

Outputs 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. T. Barani, D. Pizzocri, G. Pastore, L. Luzzi, and J.D. Hales. Isotropic softening model for fuel cracking in BISON. Nuclear Engineering and Design, 342:257–263, 2019. doi:10.1016/j.nucengdes.2018.12.005.[BibTeX]
  2. O. Coindreau, F. Fichot, and J. Fleurot. Nuclear fuel rod fragmentation under accidental conditions. Nuclear Engineering and Design, 255:68–76, 2013.[BibTeX]
  3. M. Oguma. Cracking and relocation behavior of nuclear-fuel pellets during rise to power. Nuclear Engineering and Design, 76(1):35–45, 1983. doi:10.1016/0029-5493(83)90045-6.[BibTeX]
  4. L. A. Walton and J. E. Matheson. FUMAC - a new model for light water reactor fuel relocation and pellet-cladding interaction. Nuclear Technology, 64:127–138, 1984.[BibTeX]
  5. L.A. Walton and D.L. Husser. Fuel pellet fracture and relocation. 1983. IAEA Specialists Meeting on Water Reactor Fuel Element Performance Computer Modelling, Preston, UK.[BibTeX]