SimpleFissionGasViscoplasticityStressUpdate

Computes the change in fuel pellet volume due to gaseous fission product buildup using viscoplasticity methods by assuming all gas is born into uniformly sized bubbles.

Description

SimpleFissionGasViscoplasticityStressUpdate computes a volumetric strain to account for gaseous swelling in U-Pu-Zr metal fuel systems. This material is similar to UPuZrGaseousEigenstrain for which a bubble size is computed assuming infinite diffusivity of fission gas, an un-stressed bulk, and an ideal gas equation of state. However, SimpleFissionGasViscoplasticityStressUpdate utilizes the viscoplasticity methods inherited by FissionGasViscoplasticityStressUpdateBase. This is different than the historical approach for fission gas swelling that utilized the eigenstrain system. By using the viscoplasticity methods, this model can be coupled to other inelastic strains such as creep, which are accumulated by ADComputeMultipleInelasticStress. The porosity rate of change is then computed from the trace of the inelastic strain rate by ADPorosityFromStrain: In this way, the effects of multiple sources of inelastic strain can be accumulated into a single porosity value.

SimpleFissionGasViscoplasticityStressUpdate inherits from the base class FissionGasViscoplasticityStressUpdateBase, which contains several common models for fission gas swelling using viscoplasticity methods. SimpleFissionGasViscoplasticityStressUpdate only provides the model to calculate the inelastic strain and the absorption of gas in the bubbles. Consequently, the Theory section only focuses on the inelastic strain calculation and gas absorption model, while FissionGasViscoplasticityStressUpdateBase contains the remaining underlying fission gas inventory and interconnectivity models.

Theory

The derivation for the fuel swelling model for U-Pu-Zr used here is based on formulations presented in Olander (1976). The model is able to simplify the gaseous swelling porosity into an analytical solution by making the following assumptions:

  • A constant fraction of gas remains dissolved in the fuel at all times;

  • Of the remaining produced fission gas that does not remain dissolved, gas atom diffusivity is infinite such that all non-dissolved fission gas is born in the bubbles;

  • The concentration of bubbles is constant and their shape is perfectly spherical;

  • The gas within the bubbles can be treated as an ideal gas;

  • The gas/vacancy ratio in the bubbles is in equilibrium, i.e. the bubbles are not over- or under-pressurized;

  • Re-solution of fission gas atoms from the bubbles is neglected;

  • The force balance on the surface of the bubble does not account for the stress state of the surrounding solid.

Using methods in FissionGasViscoplasticityStressUpdateBase,the produced fission gas density is calculated at a rate proportional to the fission rate density. Given that a infinite diffusivity is assumed here, the newly produced fission gas is instantly partitioned into the dissolved fission gas density , (1) where is the constant fraction of fission gas that is assumed to be present in the solid. is calculated using interconnection independent and dependent terms, where is the fraction of bubbles interconnected. See FissionGasViscoplasticityStressUpdateBase for more details on the interconnectivity model. The remainder of the produced fission gas is then assumed to be instantly deposited in the bubbles, leading to a simple expression for the number of moles of fission gas in each bubble , (2) where is the concentration of bubbles. Given the amount of gas in each bubble, the bubble radius can be computed by assuming an ideal gas equation of state, (3) where is the ideal gas constant, is the temperature, and is the surface tension of the fuel.

The effective volumetric strain increment is essentially the change in the volume of the bubble multiplied by the bubble concentration, (4) where is a user defined scalar that can be used to artificially increase the strain increment. Here, the is included to account for bubble interconnection during which their gas contents are vented to the plenum, and their growth is terminated.

Given the effective strain increment, the applied inelastic strain is calculated as, (5) where is the anisotropic strain tensor, given as, (6) where is the anisotropic_factor input parameter.

Example Input Syntax

[Materials<<<{"href": "../../../syntax/Materials/index.html"}>>>]
  [gas_swelling]
    type = ADSimpleFissionGasViscoplasticityStressUpdate<<<{"description": "Computes the change in fuel pellet volume due to gaseous fission product buildup using viscoplasticity methods by assuming all gas is born into uniformly sized bubbles.", "href": "SimpleFissionGasViscoplasticityStressUpdate.html"}>>>
    fission_rate<<<{"description": "Name of material property for gas source rate"}>>> = fission_rate
    temperature<<<{"description": "Coupled temperature variable"}>>> = temp
    bubble_concentration<<<{"description": "Name of material property for bubble number density"}>>> = 3e14
    initial_bubble_concentration<<<{"description": "Function describing the initial bubble concentration"}>>> = 3e14
    interconnection_initiating_porosity<<<{"description": "Porosity value for which interconnectivity begins"}>>> = 0.25
    interconnection_terminating_porosity<<<{"description": "Porosity value for which interconnectivity finishes"}>>> = 0.3
    compute_interconnectivity<<<{"description": "Flag to calculate interconnectivity interconnectivity"}>>> = true
    scalar<<<{"description": "Scale factor to be applied to the gaseous swelling strain. Used for calibration and sensitivity studies"}>>> = 1
    initial_fgm_dissolved<<<{"description": "Initial concentration of dissolved fission gas in mols"}>>> = 0
    surface_energy<<<{"description": "Surface energy of material (J/m^2)"}>>> = 1.2
    fission_gas_yield<<<{"description": "Yield of fission gas atoms per fission"}>>> = 0.3
    retained_gas_fraction<<<{"description": "Retained gas fraction that does not contribute to gaseous swelling"}>>> = 0.2
    interconnection_dependent_retained_gas_fraction<<<{"description": "Additional retained gas fraction before interconnection."}>>> = 0.2
    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/simple_fission_gas_viscoplasticity/rodlet.i)

SimpleFissionGasViscoplasticityStressUpdate must be used in with ADComputeMultipleInelasticStress

[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."}>>> = 'gas_swelling'
  []
[]
(test/tests/solid_mechanics/simple_fission_gas_viscoplasticity/rodlet.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

  • fission_rateName of material property for gas source rate

    C++ Type:MaterialPropertyName

    Unit:(no unit assumed)

    Controllable:No

    Description:Name of material property for gas source rate

  • temperatureCoupled temperature variable

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Coupled temperature variable

Required Parameters

  • allow_interconnectivity_decreaseFalseFlag to allow interconnectiviy to decrease.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Flag to allow interconnectiviy to decrease.

  • anisotropic_factor0Factor applied to radial and axial strains to estimate macroscopic anisotropic swelling

    Default:0

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Factor applied to radial and axial strains to estimate macroscopic anisotropic swelling

  • 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

  • compute_interconnectivityFalseFlag to calculate interconnectivity interconnectivity

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Flag to calculate interconnectivity interconnectivity

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

  • fission_gas_yield0.3Yield of fission gas atoms per fission

    Default:0.3

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Yield of fission gas atoms per fission

  • fuel_melting_functionThe optional fuel melting function that is used for transient simulations (1.0 fully solid; 0.0 fully melting).

    C++ Type:FunctionName

    Unit:(no unit assumed)

    Controllable:No

    Description:The optional fuel melting function that is used for transient simulations (1.0 fully solid; 0.0 fully melting).

  • initial_atoms_per_bubble1e-05Initial amount of gas in bubbles in atoms

    Default:1e-05

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Initial amount of gas in bubbles in atoms

  • initial_bubble_concentration0Function describing the initial bubble concentration

    Default:0

    C++ Type:FunctionName

    Unit:(no unit assumed)

    Controllable:No

    Description:Function describing the initial bubble concentration

  • initial_bubble_radius1e-15Initial radius of the bubble

    Default:1e-15

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Initial radius of the bubble

  • initial_fgm_dissolved1e-10Initial concentration of dissolved fission gas in mols

    Default:1e-10

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Initial concentration of dissolved fission gas in mols

  • initial_porosity0Initial porosity

    Default:0

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Initial porosity

  • interconnection_cutoff0.999Porosity value for which interconnectivity finishes

    Default:0.999

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Porosity value for which interconnectivity finishes

  • interconnection_dependent_retained_gas_fraction0Additional retained gas fraction before interconnection.

    Default:0

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Additional retained gas fraction before interconnection.

  • interconnection_initiating_porosity0.203Porosity value for which interconnectivity begins

    Default:0.203

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Porosity value for which interconnectivity begins

  • interconnection_terminating_porosity0.322Porosity value for which interconnectivity finishes

    Default:0.322

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Porosity value for which interconnectivity finishes

  • 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

  • max_interconnectivity_increment0.1The maximum interconnectivity increment allowed in a time step

    Default:0.1

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:The maximum interconnectivity increment allowed in a time step

  • maximum_porosity_change0.5Value for which porosity is allowed to change in a given timestep

    Default:0.5

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Value for which porosity is allowed to change in a given timestep

  • 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

  • porosity_nameporosityName of porosity material property

    Default:porosity

    C++ Type:MaterialPropertyName

    Unit:(no unit assumed)

    Controllable:No

    Description:Name of porosity material property

  • retained_gas_fraction0Retained gas fraction that does not contribute to gaseous swelling

    Default:0

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Retained gas fraction that does not contribute to gaseous swelling

  • scalar1Scale factor to be applied to the gaseous swelling strain. Used for calibration and sensitivity studies

    Default:1

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Scale factor to be applied to the gaseous swelling strain. Used for calibration and sensitivity studies

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

    Default:1

    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

  • apply_strainTrueFlag to apply strain. Used for testing.

    Default:True

    C++ Type:bool

    Controllable:No

    Description:Flag to apply strain. Used for testing.

  • 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_namefission_gas_strainName of the material property that stores the effective inelastic strain

    Default:fission_gas_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

  • 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. D. R. Olander. Fundamental aspects of nuclear reactor fuel elements. Technical Information Center, Energy Research and Development Administration, 1976.[BibTeX]