ADUPuZrElasticityTensor

Computes the Young's modulus and Poisson's ratio for UPuZr fuel based on supplied fractions of Pu and Zr.

Description

Due to the redistribution of zirconium in the fuel, and the need to model both U-Zr and U-Pu-Zr fuel, correlations included in ADUPuZrElasticityTensor must be applicable to any concentration of plutonium or zirconium. To that end, two models for Young's Modulus are provided by this model, the historical model from the Hofman et al. (2019), and a new calibrated correlation dependent on temperature and constituent concentrations. Poisson's ratio is computed using the formulation from Hofman et al. (2019), which, when combined with the Young's modulus, is used to formulate the entire elasticity tensor. For both Young's modulus and Poisson's ratio, a porosity correction is applied, as described in Porosity Correction

LANL Young's Modulus Model

The LANL Young's modulus model uses the available data for U-Zr and U-Pu-Zr to provide a value for Young's modulus that is dependent on temperature and constituent concentrations:

MFH Young's Modulus Model

The correlation derived in Hofman et al. (2019) for Young's modulus can be derived using the sparse data and correlations from similar materials: where is the Young's modulus for pure U at the reference temperature of 588 K, is the correction to due to the plutonium and zirconium weight fractions, and respectively, and is the correction to due to temperature using melting temperature of uranium , a mixing factor based on the start and end transition times for to phases, and respectively. is the MathUtils::smootherStep function described in MathUtils, and provides a smooth transition from the to phase values for Young's modulus.

MFH Poissons's Ratio Model

The correlation for Poisson's ratio can be derived from the U-Zr correlation as: (1) where is the Poissons' ratio for pure U at the reference temperature of 588 K, is the correction to due to the zirconium weight fractions, , and is the correction to due to temperature using melting temperature of uranium .

Due to a lack of data for for U-Pu-Zr fuel, the U-Zr correlation will be utilized. Also, no phase dependence is captured in Eq. (1) due to lack of data.

Porosity Correction

A porosity correction is applied to both Young's modulus, , and Poisson's ratio, , as defined by Hofman et al. (2019)

where is porosity, and and are the Young's modulus and Poisson's ratio for fully dense material.

If using ADUPuZrElasticityTensor with a material model that updates porosity and requires elastic constants, e.g. ADCoupledFissionGasViscoplasticityStressUpdate, then a cyclic dependency will occur. In this case, set the input parameter use_current_porosity = false in ADUPuZrElasticityTensor, which will use the porosity calculated in the previous time step.

Example Input Syntax

[Materials<<<{"href": "../../../syntax/Materials/index.html"}>>>]
  [elasticity_tensor]
    type = ADUPuZrElasticityTensor<<<{"description": "Computes the Young's modulus and Poisson's ratio for UPuZr fuel based on supplied fractions of Pu and Zr.", "href": "UPuZrElasticityTensor.html"}>>>
    temperature<<<{"description": "Coupled temperature"}>>> = temp
    X_Pu<<<{"description": "Coupled plutonium atom fraction"}>>> = X_Pu
    X_Zr<<<{"description": "Coupled zirconium atom fraction"}>>> = X_Zr
    output_properties<<<{"description": "List of material properties, from this material, to output (outputs must also be defined to an output type)"}>>> = 'youngs_modulus poissons_ratio'
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = all
  []
[]
(test/tests/solid_mechanics/upuzr_elasticity_tensor/ad.i)

Input Parameters

  • temperatureCoupled temperature

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Coupled temperature

Required Parameters

  • A_Pu0.244Atomic weight of plutonium [kg/mol].

    Default:0.244

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Atomic weight of plutonium [kg/mol].

  • A_U0.238029Atomic weight of uranium [kg/mol].

    Default:0.238029

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Atomic weight of uranium [kg/mol].

  • A_Zr0.091224Atomic weight of zirconium [kg/mol].

    Default:0.091224

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Atomic weight of zirconium [kg/mol].

  • X_Pu-1.0Coupled plutonium atom fraction

    Default:-1.0

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Coupled plutonium atom fraction

  • X_Zr-1.0Coupled zirconium atom fraction

    Default:-1.0

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Coupled zirconium atom fraction

  • alpha_transition_end973Temperature at which the alpha phase finishes transitioning out. The further away from alpha_transition_start this parameter is, the better smoother the transition between creep regimes

    Default:973

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Temperature at which the alpha phase finishes transitioning out. The further away from alpha_transition_start this parameter is, the better smoother the transition between creep regimes

  • alpha_transition_start923Temperature at which the alpha phase starts to transition out.

    Default:923

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Temperature at which the alpha phase starts to transition out.

  • 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

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

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

  • poissons_degradation_factor0.8Degradation factor for Poisson's ratio due to porosity. Degradation is calculated by (1 - factor * porosity) * nu

    Default:0.8

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Degradation factor for Poisson's ratio due to porosity. Degradation is calculated by (1 - factor * porosity) * nu

  • porosityporosityPorosity material property name

    Default:porosity

    C++ Type:MaterialPropertyName

    Unit:(no unit assumed)

    Controllable:No

    Description:Porosity material property name

  • use_old_porosityFalseFlag to use old porosity.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Flag to use old porosity.

  • youngs_degradation_factor1.2Degradation factor for Young's Modulus due to porosity. Degradation is calculated by (1 - factor * porosity) * E

    Default:1.2

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Degradation factor for Young's Modulus due to porosity. Degradation is calculated by (1 - factor * porosity) * E

  • youngs_modelMFHYoung's modulus model. Choices are: LANL MFH

    Default:MFH

    C++ Type:MooseEnum

    Options:LANL, MFH

    Controllable:No

    Description:Young's modulus model. Choices are: LANL MFH

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

Reference

References

  1. G. L. Hofman, M. C. Billone, J. F. Koenig, J. M. Kramer, J. D. B. Lambert, L. Leibowitz, Y. Orechwa, D. R. Pedersen, D. L. Porter, H. Tsai, and A. E. Wright. Metallic fuels handbook. Technical Report ANL-NSE-3, Argonne National Laboratory, 2019.[BibTeX]