- creep_law_exponentExponent of the creep power law.
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Exponent of the creep power law.
- creep_strain_namesNames of the creep strains driving the damage.
C++ Type:std::vector<std::string>
Controllable:No
Description:Names of the creep strains driving the damage.
- epsilon_fUniaxial creep fracture strain (creep ductility).
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Uniaxial creep fracture strain (creep ductility).
Steel Creep Damage (Oh et al)
Steel scalar damage model: Material 'suddenly' loses load-carrying capacity. This can model, e.g., 316H creep failure. See Oh et al (2011).
Description
The SteelCreepDamageOh
can model the mechanical failure of steel due to creep (see Oh et al. (2011) and Oh et al. (2011)).
Accumulated damage () is computed by accumulating the creep strain rate normalized with the multi-axial creep ductility. The accumulated damage is
The triaxial creep ductility can be obtained from the uniaxial creep ductility using the following expression
where is the creep power law exponent, is the stress triaxiality.
The accumulated damage , as defined in Oh et al. (2011), can be requested by the user as an auxiliary variable. In addition, the more traditional damage_index
, which represents a linear change in the stress value, can also be requested. and damage_index
carry a different meaning and differ in value: damage_index
is zero until the threshold value of is reached. This class internally casts the value of into the damage_index
.
Implementation and Usage
The effects of damage can be applied all at once or progressively. In essence, this object allows the user to select an initial value of at which the load carrying capacity of the finite element will start to get reduced linearly (reduction_damage_threshold
). In addition, the user can select the factor that will reduce the load-carrying capacity (stress) through the input parameter reduction_factor
. These two parameters should be chosen such that material damage consistently reduces material point's stresses. For example, for steel, reduction_damage_threshold
should be selected to be close to 1.0 so that the load-carrying capacity of the finite element is lost quickly.
Damaged elements may get distorted and, therefore, may generate increased values of creep strains which may, in turn, limit the maximum allowable material time step. To avoid these undesired effects, the user may combine damage models with CoupledVarThresholdElementSubdomainModifier. The CoupledVarThresholdElementSubdomainModifier
user object can eliminate or move damage elements from selected mesh blocks. In addition, it is strongly recommended to toggle the use_old_damage
flag to true for this object to yield optimal convergence properties.
Example Input Syntax
[Materials<<<{"href": "../../syntax/Materials/index.html"}>>>]
[damage]
type = SteelCreepDamageOh<<<{"description": "Steel scalar damage model: Material 'suddenly' loses load-carrying capacity. This can model, e.g., 316H creep failure. See Oh et al (2011).", "href": "SteelCreepDamageOh.html"}>>>
epsilon_f<<<{"description": "Uniaxial creep fracture strain (creep ductility)."}>>> = 0.01
creep_strain_names<<<{"description": "Names of the creep strains driving the damage."}>>> = creep_strain
reduction_factor<<<{"description": "Reduction on the load-carrying capacity (stress)."}>>> = 1.0e3
use_old_damage<<<{"description": "Whether to use the damage index from the previous step in the stress computation"}>>> = true
creep_law_exponent<<<{"description": "Exponent of the creep power law."}>>> = 10.0
[]
[]
(blackbear/test/tests/steel_creep_damage_oh/steel_creep_damage.i)SteelCreepDamage
is run in conjunction with a stress calculator that supports the use of a damage model, (ComputeMultipleInelasticStress in this case), as shown:
[Materials<<<{"href": "../../syntax/Materials/index.html"}>>>]
[damage]
type = SteelCreepDamageOh<<<{"description": "Steel scalar damage model: Material 'suddenly' loses load-carrying capacity. This can model, e.g., 316H creep failure. See Oh et al (2011).", "href": "SteelCreepDamageOh.html"}>>>
epsilon_f<<<{"description": "Uniaxial creep fracture strain (creep ductility)."}>>> = 0.01
creep_strain_names<<<{"description": "Names of the creep strains driving the damage."}>>> = creep_strain
reduction_factor<<<{"description": "Reduction on the load-carrying capacity (stress)."}>>> = 1.0e3
use_old_damage<<<{"description": "Whether to use the damage index from the previous step in the stress computation"}>>> = true
creep_law_exponent<<<{"description": "Exponent of the creep power law."}>>> = 10.0
[]
[radial_return_stress]
type = ComputeMultipleInelasticStress<<<{"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": "ComputeMultipleInelasticStress.html"}>>>
inelastic_models<<<{"description": "The material objects to use to calculate stress and inelastic strains. Note: specify creep models first and plasticity models second."}>>> = 'powerlawcrp'
damage_model<<<{"description": "Name of the damage model"}>>> = damage
[]
[powerlawcrp]
type = PowerLawCreepStressUpdate<<<{"description": "This class uses the stress update material in a radial return isotropic power law creep model. This class can be used in conjunction with other creep and plasticity materials for more complex simulations.", "href": "PowerLawCreepStressUpdate.html"}>>>
coefficient<<<{"description": "Leading coefficient in power-law equation"}>>> = 3.125e-21
n_exponent<<<{"description": "Exponent on effective stress in power-law equation"}>>> = 4.0
m_exponent<<<{"description": "Exponent on time in power-law equation"}>>> = 0.0
activation_energy<<<{"description": "Activation energy"}>>> = 0.0
[]
[elasticity]
type = ComputeIsotropicElasticityTensor<<<{"description": "Compute a constant isotropic elasticity tensor.", "href": "ComputeIsotropicElasticityTensor.html"}>>>
poissons_ratio<<<{"description": "Poisson's ratio for the material."}>>> = 0.2
youngs_modulus<<<{"description": "Young's modulus of the material."}>>> = 10e9
[]
[]
(blackbear/test/tests/steel_creep_damage_oh/steel_creep_damage.i)Input 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
- 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
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
- damage_index_namedamage_indexname of the material property where the damage index is stored
Default:damage_index
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:name of the material property where the damage index is stored
- 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.
- maximum_damage1Maximum value allowed for damage index
Default:1
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Maximum value allowed for damage index
- maximum_damage_increment0.1maximum damage increment allowed for simulations with adaptive time step
Default:0.1
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:maximum damage increment allowed for simulations with adaptive time step
- reduction_damage_threshold0.9Starting value of damage that will trigger linear reduction of quadrature point's load-carrying capacity.
Default:0.9
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Starting value of damage that will trigger linear reduction of quadrature point's load-carrying capacity.
- reduction_factor1000Reduction on the load-carrying capacity (stress).
Default:1000
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Reduction on the load-carrying capacity (stress).
- residual_stiffness_fraction1e-08Minimum fraction of original material stiffness retained for fully damaged material (when damage_index=1)
Default:1e-08
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Minimum fraction of original material stiffness retained for fully damaged material (when damage_index=1)
- use_old_damageFalseWhether to use the damage index from the previous step in the stress computation
Default:False
C++ Type:bool
Controllable:No
Description:Whether to use the damage index from the previous step in the stress computation
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
References
- Chang-Sik Oh, Nak-Hyun Kim, Yun-Jae Kim, Jong-Hyun Baek, Young-Pyo Kim, and Woo-Sik Kim.
A finite element ductile failure simulation method using stress-modified fracture strain model.
Engineering Fracture Mechanics, 78(1):124–137, 2011.
URL: https://www.sciencedirect.com/science/article/pii/S0013794410004443, doi:https://doi.org/10.1016/j.engfracmech.2010.10.004.[BibTeX]
- Chang-Sik Oh, Nak-Hyun Kim, Yun-Jae Kim, Catrin Davies, Kamran Nikbin, and David Dean.
Creep failure simulations of 316h at 550 c: part i–a method and validation.
Engineering fracture mechanics, 78(17):2966–2977, 2011.[BibTeX]