UPuZrHotPressingStressUpdate

Computes the inelastic strain due to hot pressing of UPuZr fuel as a function of temperature, stress, and the plenum pressure.

Description

UPuZrHotPressingStressUpdate is used to model the pore collapse of fission gas bubbles due to compressive hydrostatic stress. The model is based on the experimental and theoretical work from McDeavitt and Solomon (1996). While the formulation used here can only be used for approximate strain rates, it is allows for implementation of a temperature and stress-dependent hot pressing strain rate in the absence of a fully viscoplastic mechanistic model.

The hot pressing plastic strain rate defined by McDeavitt and Solomon (1996) is a combined diffusion-controlled cavitation, established by Speight and Beere (1975) and Beere and Speight (1978), combined with a creep-flow model established by Needleman and Rice (1980), and further refined by Chen and Argon (1981). McDeavitt and Solomon (1996) define the linear hot pressing strain rate as, where , , and are the temperature dependent pre-factor, shape function, and driving force respectively, is the bubble concentration, [] is the atomic volume, [J/K], is temperature in [K], is the compressive hydrostatic stress (i.e., ), is the internal pressure in the porosity (i.e., the pressure of the plenum assuming interconnected bubbles), is the surface energy, and is the estimated radius of the pores, computed from the porosity, . is given in units of [].

The shape function is defined by Beere and Speight (1978) as, where is defined by Chen and Argon (1981) as, Here and are the far-field creep stress and creep rate, where is described by McDeavitt and Solomon (1996) as, where is half the distance between pores. can be defined either by the value used by McDeavitt and Solomon (1996): or by the formulation defined in ADUPuZrCreepUpdate.

is computed using a similar method to the RadialReturnStressUpdate used for deviatoric creep. Given the linear scalar inelastic strain rate, the total inelastic strain due to hot pressing is , where is a rank two identity tensor. This strain is computed via ADComputeMultipleInelasticStress, along with all other strains (e.g., creep and fission gas swelling). The total porosity is computed given the change in the volumetric strain rate via ADPorosityFromStrain.

Due to the high pressure of gas in non-interconnected fission gas pores, hot pressing is only allowed to occur when all porosity becomes locally interconnected. In this way, fission gas pores will only monotonically increase due to fission gas swelling, and then change size due to the hot pressing only after full interconnection. In addition, the hot pressing rate can be limited via the 'porosity_start' and 'porosity_end' parameters, which are utilized through the MathUtils::smootherStep function from MathUtils.h, where is the porosity limited hot pressing strain, is the porosity, is the porosity value at which hot pressing starts to be limited, and is the porosity value at which hot pressing is terminated. Typical values of these are and .

While, in general, the implementation of the hot pressing strain here may be applicable to tensile stress (e.g., porosity growth), it is typically limited to activate when pores are subjected to compressive stress (e.g., pore collapse). With the addition of the surface energy term, there is a possibility to have a tensile bulk stress with a net compressive stress on the pores, especially with little or no . To combat this, the restriction is enforced, which is generally consistent during reactor operation as the plenum pressure is on the order of [MPa].

Example Input Syntax

[Materials<<<{"href": "../../../syntax/Materials/index.html"}>>>]
  [hot_press]
    type = ADUPuZrHotPressingStressUpdate<<<{"description": "Computes the inelastic strain due to hot pressing of UPuZr fuel as a function of temperature, stress, and the plenum pressure.", "href": "UPuZrHotPressingStressUpdate.html"}>>>
    temperature<<<{"description": "Coupled temperature variable"}>>> = temp
    surface_energy<<<{"description": "Surface energy of material (J/m^2)"}>>> = 1
    bubble_concentration<<<{"description": "Name of material property for bubble number density"}>>> = 1e15
    plenum_pressure<<<{"description": "Coupled postprocessor that provies the plenum pressure."}>>> = 2.5e5
    max_inelastic_increment<<<{"description": "The maximum inelastic strain increment allowed in a time step"}>>> = 0.001
    interconnectivity<<<{"description": "Interconnectivity material property name"}>>> = interconnectivity
    outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = all
    internal_solve_full_iteration_history<<<{"description": "Set true to output full internal Newton iteration history at times determined by `internal_solve_output_on`. If false, only a summary is output."}>>> = true
  []
[]
(test/tests/solid_mechanics/upuzr_hot_pressing/ad.i)

UPuZrHotPressingStressUpdate must be run in conjunction with the inelastic strain return mapping stress calculator as shown below:

[Materials<<<{"href": "../../../syntax/Materials/index.html"}>>>]
  [fuel_stress]
    type = ADComputeMultipleInelasticStress<<<{"description": "Compute state (stress and internal parameters such as plastic strains and internal parameters) using an iterative process.  Combinations of creep models and plastic models may be used.", "href": "../ADComputeMultipleInelasticStress.html"}>>>
    inelastic_models<<<{"description": "The material objects to use to calculate stress and inelastic strains. Note: specify creep models first and plasticity models second."}>>> = 'hot_press gas_swelling'
  []
[]
(test/tests/solid_mechanics/upuzr_hot_pressing/ad.i)

Input Parameters

  • bubble_concentrationName of material property for bubble number density

    C++ Type:MaterialPropertyName

    Unit:(no unit assumed)

    Controllable:No

    Description:Name of material property for bubble number density

  • temperatureCoupled temperature variable

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Coupled temperature variable

Required Parameters

  • absolute_tolerance1e-11Absolute convergence tolerance for Newton iteration

    Default:1e-11

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Absolute convergence tolerance for Newton iteration

  • acceptable_multiplier10Factor applied to relative and absolute tolerance for acceptable convergence if iterations are no longer making progress

    Default:10

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Factor applied to relative and absolute tolerance for acceptable convergence if iterations are no longer making progress

  • allow_pore_growthFalseFlag to optionally allow for bubble growth due to tensile hydrostatic stresses.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Flag to optionally allow for bubble growth due to tensile hydrostatic stresses.

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

  • atomic_volume2.15e-29Atomic volume of the fission gas in [m3 per atom]

    Default:2.15e-29

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Atomic volume of the fission gas in [m3 per atom]

  • automatic_differentiation_return_mappingFalseWhether to use automatic differentiation to compute the derivative.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether to use automatic differentiation to compute the derivative.

  • base_nameOptional parameter that defines a prefix for all material properties related to this stress update model. This allows for multiple models of the same type to be used without naming conflicts.

    C++ Type:std::string

    Controllable:No

    Description:Optional parameter that defines a prefix for all material properties related to this stress update model. This allows for multiple models of the same type to be used without naming conflicts.

  • 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

  • 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

  • creep_modelMCDEAVITTCreep model. Choices are: MFH MCDEAVITT

    Default:MCDEAVITT

    C++ Type:MooseEnum

    Options:MFH, MCDEAVITT

    Controllable:No

    Description:Creep model. Choices are: MFH MCDEAVITT

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

  • fission_rateFission rate material property name

    C++ Type:MaterialPropertyName

    Unit:(no unit assumed)

    Controllable:No

    Description:Fission rate material property name

  • grain_boundary_D03.24e-11Prefactor for grain boundary diffusion times grain boundary width.

    Default:3.24e-11

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Prefactor for grain boundary diffusion times grain boundary width.

  • grain_boundary_Q186600Activation energy for grain boundary diffusion times grain boundary width.

    Default:186600

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Activation energy for grain boundary diffusion times grain boundary width.

  • initial_porosity0Initial porosity

    Default:0

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Initial porosity

  • interconnectivityinterconnectivityInterconnectivity material property name

    Default:interconnectivity

    C++ Type:MaterialPropertyName

    Unit:(no unit assumed)

    Controllable:No

    Description:Interconnectivity material property name

  • interconnectivity_limit1Interconnectivity value used to turn on hot pressing when interconnectivity from the previous time step is above this limit

    Default:1

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Interconnectivity value used to turn on hot pressing when interconnectivity from the previous time step is above this limit

  • lower_interconnectivity_limitinterconnectivity_limit >= 0.0 & interconnectivity_limit <= 1.0Lower interconnectivity used to smoothly transition to hot pressing from this limit to 'interconnectivity_limit'. If no value is provided, the hot pressing rate will turned on for all interconnectivity values above 'interconnectivity_limit'

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:interconnectivity_limit >= 0.0 & interconnectivity_limit <= 1.0Lower interconnectivity used to smoothly transition to hot pressing from this limit to 'interconnectivity_limit'. If no value is provided, the hot pressing rate will turned on for all interconnectivity values above 'interconnectivity_limit'

  • max_inelastic_increment0.001The maximum inelastic strain increment allowed in a time step

    Default:0.001

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:The maximum inelastic strain increment allowed in a time step

  • negative_behaviorINITIAL_CONDITIONEnum how to handle negative porosities

    Default:INITIAL_CONDITION

    C++ Type:MooseEnum

    Options:ZERO, INITIAL_CONDITION, EXCEPTION

    Controllable:No

    Description:Enum how to handle negative porosities

  • plenum_pressureplenum_pressureCoupled postprocessor that provies the plenum pressure.

    Default:plenum_pressure

    C++ Type:PostprocessorName

    Unit:(no unit assumed)

    Controllable:No

    Description:Coupled postprocessor that provies the plenum pressure.

  • porosity_end0Material property name for the value of the porosity at which the hot pressing rate goes to zero.

    Default:0

    C++ Type:MaterialPropertyName

    Unit:(no unit assumed)

    Controllable:No

    Description:Material property name for the value of the porosity at which the hot pressing rate goes to zero.

  • porosity_nameporosityName of porosity material property

    Default:porosity

    C++ Type:MaterialPropertyName

    Unit:(no unit assumed)

    Controllable:No

    Description:Name of porosity material property

  • porosity_start0Material property name for the value of the porosity at which the hot pressing rate starts to be limited.

    Default:0

    C++ Type:MaterialPropertyName

    Unit:(no unit assumed)

    Controllable:No

    Description:Material property name for the value of the porosity at which the hot pressing rate starts to be limited.

  • relative_tolerance1e-08Relative convergence tolerance for Newton iteration

    Default:1e-08

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Relative convergence tolerance for Newton iteration

  • scalar1Scalar material mutliplied by the effective hot pressing strain

    Default:1

    C++ Type:MaterialPropertyName

    Unit:(no unit assumed)

    Controllable:No

    Description:Scalar material mutliplied by the effective hot pressing strain

  • surface_energy0Surface energy of material (J/m^2)

    Default:0

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Surface energy of material (J/m^2)

  • total_strain_base_nameBase name for the total strain

    C++ Type:std::string

    Controllable:No

    Description:Base name for the total strain

  • verboseFalseFlag to output verbose information

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Flag to output verbose information

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

  • inelastic_strain_namehot_pressing_strainName of the material property that stores the effective inelastic strain

    Default:hot_pressing_strain

    C++ Type:std::string

    Controllable:No

    Description:Name of the material property that stores the effective inelastic strain

  • 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

  • internal_solve_full_iteration_historyFalseSet true to output full internal Newton iteration history at times determined by `internal_solve_output_on`. If false, only a summary is output.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Set true to output full internal Newton iteration history at times determined by `internal_solve_output_on`. If false, only a summary is output.

  • internal_solve_output_onon_errorWhen to output internal Newton solve information

    Default:on_error

    C++ Type:MooseEnum

    Options:never, on_error, always

    Controllable:No

    Description:When to output internal Newton solve information

Debug 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. W. Beere and M. V. Speight. Creep cavitation by vacancy diffusion in plastically deforming solid. Metal Science, 12:172–176, 1978. doi:10.1179/msc.1978.12.4.172.[BibTeX]
  2. I. W. Chen and A. S. Argon. Diffusive Growth of Grain-boundary Cavities. Acta Metallurgica, 29:1759–1768, 1981. doi:10.1016/0001-6160(81)90009-2.[BibTeX]
  3. S. M. McDeavitt and A. A. Solomon. Hot-isostatic pressing of U-10Zr by a coupled grain boundary diffusion and creep cavitation mechanism. Journal of Nuclear Materials, 228:184–200, 1996. doi:10.1016/S0022-3115(95)00220-0.[BibTeX]
  4. A. Needleman and J. R. Rice. Plastic creep flow effects in the diffusive cavitation of grain boundaries. Acta Metallurgica, 28(10):1315–1332, October 1980. doi:10.1016/0001-6160(80)90001-2.[BibTeX]
  5. M. V. Speight and W. Beere. Vacancy Potential and Void Growth on Grain Boundaries. Metal Science, 9:190–191, 1975. doi:10.1179/030634575790445161.[BibTeX]