ZircaloyDamage

Computes response of Zircaloy cladding subject to damage and the effect of hydrides.

Description

ZircaloyDamage is a model for the mechanical effect of hydrides in Zircaloy cladding. It is based on Rashid et al. (2009).

The model takes as inputs elastic-plastic properties for hydrides and Zircaloy, the volume fraction of radial and circumferential hydrides, and a damage strain parameter for both Zircaloy and hydride. A combined response is developed based on the behavior of each constituent subject to certain constraints. Hydrides may appear in the circumferential direction, the radial direction, or both.

The basic building block of the model is the arrangement described in Figure 1 with intact and damaged hydride platelet and matrix materials. The fraction of these materials is where is the fractional amount with subscripts , , 1, 2, 3, and 4 representing platelet, matrix, and domains 1 through 4 based on Figure 1. As damage develops, one or both of and are greater than zero.

Figure 1: Four domains in the damage model: 1, intact platelet; 2, intact matrix; 3, damaged platelet; and 4, damaged matrix. Based on Fig. 3 in Rashid et al. (2009).

Considering first the undamaged state, the two constituents are constrained to experience the same strains in the plane of the hydride and the same stresses out of the plane of the hydride. For undamaged platelet and matrix, where the prime indicates that the stress is oriented in the platelet's local coordinate frame.

More generally,

The model enforces zero stress across damaged hydride and damaged Zircaloy phases. Any load perpendicular to damaged material is carried by the undamaged material.

Damage is measured by tracking the strain normal to the platelet. Increased strain increases the damage. With increasing damage, more material (hydride and Zircaloy) is considered damaged and less considered undamaged.

The damage function used in the model depends on the maximum normal strain, , the damage parameter , a volume fraction, , and a damage fraction parameter, . Damage, , is given as where

When the volume fraction, , is one, with damage beginning at and ending at through a quadratic transition. With a smaller, more typical volume fraction, damage begins at the same point but reaches one at a larger strain.

Overall damage in the matrix is computed as the sum of the damage in the hydride squared and a separate damage calculation for the matrix. In this way, matrix damage is often lower than the hydride damage but reaches one when the hydride is fully damaged.

By considering radial hydrides alongside a matrix composed of Zircaloy with circumferential hydrides and also circumferential hydrides alongside a matrix composed of Zircaloy with radial hydrides, the interaction between all three is determined.

In this model, damage is driven purely by tensile strains in the radial and circumferential directions. With no tensile strain in these directions, no damage will be computed.

Note that this material is based on an elastic-plastic constitutive relationship and not on creep. The parameters reference_strain_hydride and reference_strain_zircaloy are expected to be greater than zero and default to 0.001. The yield stress is where is the yield stress, is the initial yield stress (initial_yield_stress_hydride or initial_yield_stress_zircaloy), is the equivalent plastic strain, is the reference strain, and is the hardening exponent.

For a complete description of the model, see Rashid et al. (2009).

Example Input Syntax

[Materials<<<{"href": "../../syntax/Materials/index.html"}>>>]
  [ZircaloyDamage]
    type = ZircaloyDamage<<<{"description": "Computes response of Zircaloy cladding subject to damage and the effect of hydrides.", "href": "ZircaloyDamage.html"}>>>

    elastic_modulus_hydride<<<{"description": "elastic modulus for hydride inclusions"}>>> = 9.67e10
    poisson_ratio_hydride<<<{"description": "poisson ratio for hydride inclusions"}>>> = 0.389
    K_hydride<<<{"description": "K parameter for hydride inclusions.  Equals initial yield stress if 'reference_strain_hydride' is greater than zero."}>>> = 411e6
    reference_strain_hydride<<<{"description": "reference strain in plasticity model for hydride inclusions"}>>> = 1e-3
    hardening_exponent_hydride<<<{"description": "hardening exponent in plasticity model for hydride inclusions"}>>> = 0
    damage_strain_hydride<<<{"description": "reference normal strain for damage in hydride"}>>> = 0.004

    K_zircaloy<<<{"description": "K parameter for zirconium matrix.  Equals initial yield stress if 'reference_strain_hydride' is greater than zero."}>>> = 4e8
    reference_strain_zircaloy<<<{"description": "reference strain in plasticity model for zirconium matrix"}>>> = 1e-3
    hardening_exponent_zircaloy<<<{"description": "hardening exponent in plasticity model for zirconium matrix"}>>> = 0.05
    damage_strain_zircaloy<<<{"description": "reference normal strain for damage in zirconium"}>>> = 0.035

    volume_fraction_radial<<<{"description": "volume fraction of hydride platelets in the radial direction"}>>> = 0.005
    volume_fraction_circumferential<<<{"description": "volume fraction of hydride platelets in the circumferential direction"}>>> = 0.067
    scale_circumferential<<<{"description": "Whether to scale the distribution of circumferential hydrides, with fewer toward the inner radius and more toward the outer radius."}>>> = true
    clad_inner_radius<<<{"description": "Inner cladding radius (m)"}>>> = 0.004125
    clad_outer_radius<<<{"description": "Outer cladding radius (m)"}>>> = 0.004535
  []
[]
(test/tests/zircaloy_damage/burst_one_elem.i)

Input Parameters

  • K_hydrideK parameter for hydride inclusions. Equals initial yield stress if 'reference_strain_hydride' is greater than zero.

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:K parameter for hydride inclusions. Equals initial yield stress if 'reference_strain_hydride' is greater than zero.

  • K_zircaloyK parameter for zirconium matrix. Equals initial yield stress if 'reference_strain_hydride' is greater than zero.

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:K parameter for zirconium matrix. Equals initial yield stress if 'reference_strain_hydride' is greater than zero.

  • damage_strain_hydridereference normal strain for damage in hydride

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:reference normal strain for damage in hydride

  • damage_strain_zircaloyreference normal strain for damage in zirconium

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:reference normal strain for damage in zirconium

  • elastic_modulus_hydrideelastic modulus for hydride inclusions

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:elastic modulus for hydride inclusions

  • hardening_exponent_hydridehardening exponent in plasticity model for hydride inclusions

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:hardening exponent in plasticity model for hydride inclusions

  • hardening_exponent_zircaloyhardening exponent in plasticity model for zirconium matrix

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:hardening exponent in plasticity model for zirconium matrix

  • poisson_ratio_hydridepoisson ratio for hydride inclusions

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:poisson ratio for hydride inclusions

Required Parameters

  • 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

  • clad_inner_radius0Inner cladding radius (m)

    Default:0

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Inner cladding radius (m)

  • clad_outer_radius0Outer cladding radius (m)

    Default:0

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Outer cladding radius (m)

  • 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

  • debug0Debugging output flag: 0 = no output (default), 1 = simple debugging output to console

    Default:0

    C++ Type:int

    Controllable:No

    Description:Debugging output flag: 0 = no output (default), 1 = simple debugging output to console

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

  • fuel_pin_geometryName of the UserObject that reads the pin geometry from the mesh.

    C++ Type:UserObjectName

    Controllable:No

    Description:Name of the UserObject that reads the pin geometry from the mesh.

  • normal_circumferential1 0 0unit normal for circumferential hydrides

    Default:1 0 0

    C++ Type:libMesh::VectorValue<double>

    Unit:(no unit assumed)

    Controllable:No

    Description:unit normal for circumferential hydrides

  • normal_radial0 0 1unit normal for radial hydrides

    Default:0 0 1

    C++ Type:libMesh::VectorValue<double>

    Unit:(no unit assumed)

    Controllable:No

    Description:unit normal for radial hydrides

  • reference_strain_hydride0.001reference strain in plasticity model for hydride inclusions

    Default:0.001

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:reference strain in plasticity model for hydride inclusions

  • reference_strain_zircaloy0.001reference strain in plasticity model for zirconium matrix

    Default:0.001

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:reference strain in plasticity model for zirconium matrix

  • scale_circumferentialFalseWhether to scale the distribution of circumferential hydrides, with fewer toward the inner radius and more toward the outer radius.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether to scale the distribution of circumferential hydrides, with fewer toward the inner radius and more toward the outer radius.

  • volume_fraction_circumferentialvolume fraction of hydride platelets in the circumferential direction

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:volume fraction of hydride platelets in the circumferential direction

  • volume_fraction_circumferential_propertymaterial property with volume fraction of hydride platelets in the circumferential direction

    C++ Type:MaterialPropertyName

    Unit:(no unit assumed)

    Controllable:No

    Description:material property with volume fraction of hydride platelets in the circumferential direction

  • volume_fraction_cross0.05reference volume fraction for cross-damage in zirconium

    Default:0.05

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:reference volume fraction for cross-damage in zirconium

  • volume_fraction_radialvolume fraction of hydride platelets in the radial direction

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:volume fraction of hydride platelets in the radial direction

  • volume_fraction_radial_propertymaterial property with volume fraction of hydride platelets in the radial direction

    C++ Type:MaterialPropertyName

    Unit:(no unit assumed)

    Controllable:No

    Description:material property with volume fraction of hydride platelets in the radial direction

  • volume_fraction_self0.05reference volume fraction for self-damage in hydride

    Default:0.05

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:reference volume fraction for self-damage in hydride

  • zircaloy_modelOptional material model to use to compute the response of the Zircaloy matrix.

    C++ Type:MaterialName

    Controllable:No

    Description:Optional material model to use to compute the response of the Zircaloy matrix.

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

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. Joe Rashid, Mark Rashid, Albert Machiels, and Robert Dunham. A new material constitutive model for predicting cladding failure. In Proceedings of Top Fuel 2009. Paris, France, September 6-10 2009.[BibTeX]