- elasticity_modelName of the elastic stress-strain constitutive model
C++ Type:MaterialName
Unit:(no unit assumed)
Controllable:No
Description:Name of the elastic stress-strain constitutive model
ComputeLargeDeformationStress
Stress calculator given an elasticity model, a plasticity model and a viscoelasticity model. Large deformation is assumed.
Overview
The input of this stress calculator are the mechanical deformation gradient and optionally its old value . An elasticity model must be provided. A plasticity model and a viscoelasticity model can be optionally provided.
The stress calculator calls the elasticity model to compute the Cauchy stress given the mechanical deformation gradient.
If a plasticity model is provided, plastic deformation will be updated to bring the stress state back onto the yield surface.
If a viscoelasticity model is provided, the stress calculator will call the viscoelasticity model to compute the viscous stress. The viscous stress will be added to the equilibrium stress returned by the elasticity model.
Example Input File Syntax
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
Unit:(no unit assumed)
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>
Unit:(no unit assumed)
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>
Unit:(no unit assumed)
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
Unit:(no unit assumed)
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
Unit:(no unit assumed)
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.
- plasticity_modelName of the plasticity model
C++ Type:MaterialName
Unit:(no unit assumed)
Controllable:No
Description:Name of the plasticity model
- 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
Unit:(no unit assumed)
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.
- viscoelasticity_modelName of the viscoelasticity model
C++ Type:MaterialName
Unit:(no unit assumed)
Controllable:No
Description:Name of the viscoelasticity model
Optional Parameters
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector<std::string>
Unit:(no unit assumed)
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
Unit:(no unit assumed)
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
Unit:(no unit assumed)
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
Unit:(no unit assumed)
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>
Unit:(no unit assumed)
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>
Unit:(no unit assumed)
Controllable:No
Description:Vector of output names where you would like to restrict the output of variables(s) associated with this object
Outputs Parameters
Input Files
- (tutorials/homogeneous_cube/Hencky_J2_JohnsonCook/elastoplasticity.i)
- (tutorials/homogeneous_cube/Hencky_J2_arrheniuslawhardening_creep_thermal/elastoplasticity.i)
- (tutorials/homogeneous_cube/Hencky_J2_linearhardening/elastoplasticity.i)
- (test/tests/hardening_models/elastoplasticity.i)
- (tutorials/large_deformation/elasticity.i)
- (test/tests/thermal_expansion/elasticity.i)
- (tutorials/three_point_bending/elastoplasticity.i)
- (tutorials/homogeneous_cube/Hencky_J2_arrheniuslawhardening/elastoplasticity.i)
- (tutorials/homogeneous_cube/CNH_J2_powerlawhardening/elastoplasticity_fracture.i)
- (tutorials/homogeneous_cube/Hencky_J2_powerlawhardening/elastoplasticity_fracture.i)
- (tutorials/large_deformation/elastoplasticity.i)
- (tutorials/homogeneous_cube/Hencky_J2_arrheniuslawhardening_creep/elastoplasticity.i)
- (test/tests/postprocessors/external_work/elasticity.i)
(tutorials/homogeneous_cube/Hencky_J2_JohnsonCook/elastoplasticity.i)
a = 1
ratio = 4
beta = 0.5
ep0 = 0.5
psic = 0.9
Gc = 23.6
l = '${fparse ratio * a}'
E = 201.8e3
nu = 0.3
K = '${fparse E/3/(1-2*nu)}'
G = '${fparse E/2/(1+nu)}'
rate = 1000
T_init = 300
rho = 7.9e-9
cv = 4.47e7
k = 44
tqf = 0.9
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[MultiApps]
[fracture]
type = TransientMultiApp
input_files = 'fracture.i'
cli_args = 'a=${a};psic=${psic};Gc=${Gc};l=${l};'
execute_on = 'TIMESTEP_END'
[]
[]
[Transfers]
[from_fracture]
type = MultiAppCopyTransfer
from_multi_app = fracture
variable = d
source_variable = d
[]
[to_fracture]
type = MultiAppCopyTransfer
to_multi_app = fracture
variable = 'psie_active psip_active'
source_variable = 'psie_active psip_active'
[]
[to_sub_coalescence]
type = MultiAppCopyTransfer
to_multi_app = fracture
source_variable = coalescence
variable = coalescence
[]
[]
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 3
xmax = ${a}
ymax = ${a}
zmax = ${a}
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[T]
initial_condition = ${T_init}
[]
[]
[AuxVariables]
[d]
[]
[stress]
order = CONSTANT
family = MONOMIAL
[]
[F]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress]
type = ADRankTwoAux
variable = stress
rank_two_tensor = stress
index_i = 1
index_j = 1
execute_on = 'INITIAL TIMESTEP_END'
[]
[F]
type = ADRankTwoAux
variable = F
rank_two_tensor = deformation_gradient
index_i = 1
index_j = 1
execute_on = 'INITIAL TIMESTEP_END'
[]
[]
[Kernels]
[solid_x]
type = ADStressDivergenceTensors
variable = disp_x
component = 0
use_displaced_mesh = true
[]
[solid_y]
type = ADStressDivergenceTensors
variable = disp_y
component = 1
use_displaced_mesh = true
[]
[solid_z]
type = ADStressDivergenceTensors
variable = disp_z
component = 2
use_displaced_mesh = true
[]
[hcond_time]
type = HeatConductionTimeDerivative
variable = T
density_name = density
specific_heat = specific_heat
[]
[hcond]
type = HeatConduction
variable = T
diffusion_coefficient = thermal_conductivity
[]
[heat_source]
type = ADCoefMatSource
variable = T
coefficient = -1
prop_names = 'plastic_heat_generation'
[]
[]
[Materials]
[thermal_properties]
type = GenericConstantMaterial
prop_names = 'density specific_heat thermal_conductivity'
prop_values = '${rho} ${cv} ${k}'
[]
[bulk_properties]
type = ADGenericConstantMaterial
prop_names = 'K G l Gc psic'
prop_values = '${K} ${G} ${l} ${Gc} ${psic}'
[]
[degradation]
type = RationalDegradationFunction
property_name = g
expression = (1-d)^p/((1-d)^p+(Gc/psic*xi/c0/l)*d*(1+a2*d+a2*a3*d^2))*(1-eta)+eta
phase_field = d
material_property_names = 'Gc psic xi c0 l '
parameter_names = 'p a2 a3 eta '
parameter_values = '2 -0.5 0 1e-6'
[]
[nodeg]
type = NoDegradation
phase_field = d
property_name = nodeg
[]
[coalescence]
type = ADParsedMaterial
property_name = coalescence
material_property_names = 'effective_plastic_strain'
constant_names = 'beta ep0'
constant_expressions = '${beta} ${ep0}'
expression = 1-(1-beta)*(1-exp(-(effective_plastic_strain/ep0)))
outputs = exodus
output_properties = 'coalescence'
[]
[crack_geometric]
type = CrackGeometricFunction
property_name = alpha
expression = 'd'
phase_field = d
[]
[defgrad]
type = ComputeDeformationGradient
[]
[hencky]
type = HenckyIsotropicElasticity
bulk_modulus = K
shear_modulus = G
phase_field = d
degradation_function = g
output_properties = 'psie_active'
outputs = exodus
[]
[JohnsonCookHardening]
type = JohnsonCookHardening
T = T
taylor_quinney_factor = 0.9
sigma_0 = 1
T0 = 293
reference_plastic_strain = 1
reference_plastic_strain_rate = 1.6e-4
phase_field = d
degradation_function = nodeg
A = 517
B = 405
C = 0.0075
n = 0.41
m = 1.1
Tm = 750
output_properties = 'psip_active'
outputs = exodus
[]
[J2]
type = LargeDeformationJ2Plasticity
hardening_model = JohnsonCookHardening
relative_tolerance = 1e-08
output_properties = 'effective_plastic_strain trial'
outputs = exodus
[]
[stress]
type = ComputeLargeDeformationStress
elasticity_model = hencky
plasticity_model = J2
[]
[]
[BCs]
[xfix]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[]
[yfix]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0
[]
[zfix]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0
[]
[ydisp]
type = FunctionDirichletBC
variable = disp_y
boundary = 'top'
function = '${rate}*t'
preset = false
[]
[]
[Postprocessors]
[F]
type = ElementAverageValue
variable = F
execute_on = 'INITIAL TIMESTEP_END'
[]
[stress]
type = ElementAverageValue
variable = stress
execute_on = 'INITIAL TIMESTEP_END'
[]
[d]
type = ElementAverageValue
variable = d
execute_on = 'INITIAL TIMESTEP_END'
[]
[ep]
type = ADElementAverageMaterialProperty
mat_prop = effective_plastic_strain
execute_on = 'INITIAL TIMESTEP_END'
[]
[heat]
type = ADElementAverageMaterialProperty
mat_prop = plastic_heat_generation
execute_on = 'TIMESTEP_END'
[]
[T]
type = ElementAverageValue
variable = T
execute_on = 'INITIAL TIMESTEP_END'
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
nl_rel_tol = 1e-08
nl_abs_tol = 1e-10
nl_max_its = 50
dt = '${fparse 0.00005 * a / rate}'
end_time = 4.8e-6
automatic_scaling = true
fixed_point_max_its = 100
fixed_point_rel_tol = 1e-08
fixed_point_abs_tol = 1e-10
accept_on_max_fixed_point_iteration = true
abort_on_solve_fail = true
[]
[Outputs]
file_base = 'stress_deformation_rate_${rate}_tqf_${tqf}'
print_linear_residuals = false
csv = true
exodus = true
[]
(tutorials/homogeneous_cube/Hencky_J2_arrheniuslawhardening_creep_thermal/elastoplasticity.i)
a = 250
ratio = 4
psic = 15
Gc = 1.38e5
l = '${fparse ratio * a}'
E = 6.88e4
nu = 0.33
K = '${fparse E/3/(1-2*nu)}'
G = '${fparse E/2/(1+nu)}'
sigma_0 = 2e-7
Q = '${fparse 1.4054e8}'
R = 8.3143e3
T = 800
eps = '${fparse E/100}'
n = 160
rate = 10000
creep_coef = 1
rho = 1
cv = 1
k = 1
tqf = 1
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[MultiApps]
[fracture]
type = TransientMultiApp
input_files = 'fracture.i'
cli_args = 'a=${a};psic=${psic};Gc=${Gc};l=${l};'
execute_on = 'TIMESTEP_END'
[]
[]
[Transfers]
[from_fracture]
type = MultiAppCopyTransfer
from_multi_app = 'fracture'
variable = d
source_variable = d
[]
[to_fracture]
type = MultiAppCopyTransfer
to_multi_app = 'fracture'
variable = 'psie_active psip_active'
source_variable = 'psie_active psip_active'
[]
[]
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 3
xmax = ${a}
ymax = ${a}
zmax = ${a}
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[T]
initial_condition = ${T}
[]
[]
[AuxVariables]
[d]
[]
[stress]
order = CONSTANT
family = MONOMIAL
[]
[F]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress]
type = ADRankTwoAux
variable = stress
rank_two_tensor = stress
index_i = 1
index_j = 1
execute_on = 'INITIAL TIMESTEP_END'
[]
[F]
type = ADRankTwoAux
variable = F
rank_two_tensor = deformation_gradient
index_i = 1
index_j = 1
execute_on = 'INITIAL TIMESTEP_END'
[]
[]
[Kernels]
[solid_x]
type = ADStressDivergenceTensors
variable = disp_x
component = 0
use_displaced_mesh = true
[]
[solid_y]
type = ADStressDivergenceTensors
variable = disp_y
component = 1
use_displaced_mesh = true
[]
[solid_z]
type = ADStressDivergenceTensors
variable = disp_z
component = 2
use_displaced_mesh = true
[]
[hcond_time]
type = HeatConductionTimeDerivative
variable = T
density_name = density
specific_heat = specific_heat
[]
[hcond]
type = HeatConduction
variable = T
diffusion_coefficient = thermal_conductivity
[]
[heat_source]
type = ADCoefMatSource
variable = T
coefficient = -1
prop_names = 'plastic_heat_generation'
[]
[]
[Materials]
[thermal_properties]
type = GenericConstantMaterial
prop_names = 'density specific_heat thermal_conductivity'
prop_values = '${rho} ${cv} ${k}'
[]
[bulk_properties]
type = ADGenericConstantMaterial
prop_names = 'K G l Gc psic sigma_0 Q'
prop_values = '${K} ${G} ${l} ${Gc} ${psic} ${sigma_0} ${Q}'
[]
[degradation]
type = RationalDegradationFunction
property_name = g
expression = (1-d)^p/((1-d)^p+(Gc/psic*xi/c0/l)*d*(1+a2*d+a2*a3*d^2))*(1-eta)+eta
phase_field = d
material_property_names = 'Gc psic xi c0 l '
parameter_names = 'p a2 a3 eta '
parameter_values = '2 -0.5 0 1e-6'
[]
[crack_geometric]
type = CrackGeometricFunction
property_name = alpha
expression = 'd'
phase_field = d
[]
[arrhenius_law]
type = ArrheniusLaw
arrhenius_coefficient = A
activation_energy = Q
ideal_gas_constant = ${R}
temperature = T
[]
[defgrad]
type = ComputeDeformationGradient
[]
[hencky]
type = HenckyIsotropicElasticity
bulk_modulus = K
shear_modulus = G
phase_field = d
degradation_function = g
output_properties = 'psie_active'
outputs = exodus
[]
[arrhenius_law_hardening]
type = ArrheniusLawHardening
reference_stress = sigma_0
arrhenius_coefficient = A
eps = ${eps}
phase_field = d
degradation_function = g
taylor_quinney_factor = ${tqf}
temperature = T
output_properties = 'psip_active'
outputs = exodus
[]
[J2]
type = LargeDeformationJ2PowerLawCreep
hardening_model = arrhenius_law_hardening
coefficient = ${creep_coef}
exponent = ${n}
[]
[stress]
type = ComputeLargeDeformationStress
elasticity_model = hencky
plasticity_model = J2
[]
[]
[BCs]
[xfix]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[]
[yfix]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0
[]
[zfix]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0
[]
[ydisp]
type = FunctionDirichletBC
variable = disp_y
boundary = 'top'
function = '${rate}*t'
preset = false
[]
[]
[Postprocessors]
[F]
type = ElementAverageValue
variable = F
execute_on = 'INITIAL TIMESTEP_END'
[]
[stress]
type = ElementAverageValue
variable = stress
execute_on = 'INITIAL TIMESTEP_END'
[]
[d]
type = ElementAverageValue
variable = d
execute_on = 'INITIAL TIMESTEP_END'
[]
[ep]
type = ADElementAverageMaterialProperty
mat_prop = effective_plastic_strain
execute_on = 'INITIAL TIMESTEP_END'
[]
[heat]
type = ADElementAverageMaterialProperty
mat_prop = plastic_heat_generation
execute_on = 'TIMESTEP_END'
[]
[T]
type = ElementAverageValue
variable = T
execute_on = 'INITIAL TIMESTEP_END'
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
nl_rel_tol = 1e-08
nl_abs_tol = 1e-10
nl_max_its = 50
dt = '${fparse 0.0005 * a / rate}'
end_time = '${fparse 0.1 * a / rate}'
automatic_scaling = true
fixed_point_max_its = 100
fixed_point_rel_tol = 1e-08
fixed_point_abs_tol = 1e-10
accept_on_max_fixed_point_iteration = true
abort_on_solve_fail = true
[]
[Outputs]
file_base = 'stress_deformation_n_${n}_rate_${rate}_tqf_${tqf}'
print_linear_residuals = false
csv = true
exodus = true
[]
(tutorials/homogeneous_cube/Hencky_J2_linearhardening/elastoplasticity.i)
a = 250
R = 4
psic = 15
Gc = 1.38e5
l = '${fparse R * a}'
E = 6.88e4
nu = 0.33
K = '${fparse E/3/(1-2*nu)}'
G = '${fparse E/2/(1+nu)}'
sigma_y = 320
H = 3.44e3
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[MultiApps]
[fracture]
type = TransientMultiApp
input_files = 'fracture.i'
cli_args = 'a=${a};psic=${psic};Gc=${Gc};l=${l};'
execute_on = 'TIMESTEP_END'
[]
[]
[Transfers]
[from_d]
type = MultiAppCopyTransfer
from_multi_app = 'fracture'
variable = d
source_variable = d
[]
[to_psie_active]
type = MultiAppCopyTransfer
to_multi_app = 'fracture'
variable = psie_active
source_variable = psie_active
[]
[to_psip_active]
type = MultiAppCopyTransfer
to_multi_app = 'fracture'
variable = psip_active
source_variable = psip_active
[]
[]
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 3
xmax = ${a}
ymax = ${a}
zmax = ${a}
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[AuxVariables]
[d]
[]
[stress]
order = CONSTANT
family = MONOMIAL
[]
[F]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress]
type = ADRankTwoAux
variable = stress
rank_two_tensor = stress
index_i = 1
index_j = 1
[]
[F]
type = ADRankTwoAux
variable = F
rank_two_tensor = deformation_gradient
index_i = 1
index_j = 1
[]
[]
[Kernels]
[solid_x]
type = ADStressDivergenceTensors
variable = disp_x
component = 0
use_displaced_mesh = true
[]
[solid_y]
type = ADStressDivergenceTensors
variable = disp_y
component = 1
use_displaced_mesh = true
[]
[solid_z]
type = ADStressDivergenceTensors
variable = disp_z
component = 2
use_displaced_mesh = true
[]
[]
[Materials]
[bulk_properties]
type = ADGenericConstantMaterial
prop_names = 'K G l Gc psic sigma_y H'
prop_values = '${K} ${G} ${l} ${Gc} ${psic} ${sigma_y} ${H}'
[]
[degradation]
type = RationalDegradationFunction
property_name = g
expression = (1-d)^p/((1-d)^p+(Gc/psic*xi/c0/l)*d*(1+a2*d+a2*a3*d^2))*(1-eta)+eta
phase_field = d
material_property_names = 'Gc psic xi c0 l '
parameter_names = 'p a2 a3 eta '
parameter_values = '2 -0.5 0 1e-6'
[]
[crack_geometric]
type = CrackGeometricFunction
property_name = alpha
expression = 'd'
phase_field = d
[]
[defgrad]
type = ComputeDeformationGradient
[]
[hencky]
type = HenckyIsotropicElasticity
bulk_modulus = K
shear_modulus = G
phase_field = d
degradation_function = g
output_properties = 'psie_active'
outputs = exodus
[]
[linear_hardening]
type = LinearHardening
phase_field = d
yield_stress = sigma_y
hardening_modulus = H
degradation_function = g
output_properties = 'psip_active'
outputs = exodus
[]
[J2]
type = LargeDeformationJ2Plasticity
hardening_model = linear_hardening
[]
[stress]
type = ComputeLargeDeformationStress
elasticity_model = hencky
plasticity_model = J2
[]
[]
[BCs]
[xfix]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[]
[yfix]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0
[]
[zfix]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0
[]
[ydisp]
type = FunctionDirichletBC
variable = disp_y
boundary = 'top'
function = 't'
preset = false
[]
[]
[Postprocessors]
[F]
type = ElementAverageValue
variable = F
[]
[stress]
type = ElementAverageValue
variable = stress
[]
[d]
type = ElementAverageValue
variable = d
[]
[ep]
type = ADElementAverageMaterialProperty
mat_prop = effective_plastic_strain
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
nl_rel_tol = 1e-08
nl_abs_tol = 1e-10
nl_max_its = 50
dt = '${fparse 0.0005 * a}'
end_time = '${fparse 0.1 * a}'
automatic_scaling = true
fixed_point_max_its = 100
fixed_point_rel_tol = 1e-08
fixed_point_abs_tol = 1e-10
accept_on_max_fixed_point_iteration = true
abort_on_solve_fail = true
[]
[Outputs]
file_base = 'stress_deformation'
print_linear_residuals = false
csv = true
exodus = true
[]
(test/tests/hardening_models/elastoplasticity.i)
a = 250
ratio = 4
psic = 15
Gc = 1.38e5
l = '${fparse ratio * a}'
E = 6.88e4
nu = 0.33
K = '${fparse E/3/(1-2*nu)}'
G = '${fparse E/2/(1+nu)}'
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[MultiApps]
[fracture]
type = TransientMultiApp
input_files = 'fracture.i'
cli_args = 'a=${a};psic=${psic};Gc=${Gc};l=${l};'
execute_on = 'TIMESTEP_END'
[]
[]
[Transfers]
[from_fracture]
type = MultiAppCopyTransfer
from_multi_app = 'fracture'
variable = 'd'
source_variable = 'd'
[]
[to_fracture]
type = MultiAppCopyTransfer
to_multi_app = 'fracture'
variable = 'psie_active psip_active'
source_variable = 'psie_active psip_active'
[]
[]
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 3
xmax = ${a}
ymax = ${a}
zmax = ${a}
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[AuxVariables]
[d]
[]
[stress]
order = CONSTANT
family = MONOMIAL
[]
[F]
order = CONSTANT
family = MONOMIAL
[]
[psip_active]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress]
type = ADRankTwoAux
variable = stress
rank_two_tensor = stress
index_i = 1
index_j = 1
[]
[F]
type = ADRankTwoAux
variable = F
rank_two_tensor = deformation_gradient
index_i = 1
index_j = 1
[]
[psip_active]
type = ADMaterialRealAux
variable = psip_active
property = psip_active
[]
[]
[Kernels]
[solid_x]
type = ADStressDivergenceTensors
variable = disp_x
component = 0
use_displaced_mesh = true
[]
[solid_y]
type = ADStressDivergenceTensors
variable = disp_y
component = 1
use_displaced_mesh = true
[]
[solid_z]
type = ADStressDivergenceTensors
variable = disp_z
component = 2
use_displaced_mesh = true
[]
[]
[Materials]
[bulk_properties]
type = ADGenericConstantMaterial
prop_names = 'K G l Gc psic'
prop_values = '${K} ${G} ${l} ${Gc} ${psic}'
[]
[degradation]
type = RationalDegradationFunction
property_name = g
expression = (1-d)^p/((1-d)^p+(Gc/psic*xi/c0/l)*d*(1+a2*d+a2*a3*d^2))*(1-eta)+eta
phase_field = d
material_property_names = 'Gc psic xi c0 l '
parameter_names = 'p a2 a3 eta '
parameter_values = '2 -0.5 0 1e-6'
[]
[crack_geometric]
type = CrackGeometricFunction
property_name = alpha
expression = 'd'
phase_field = d
[]
[defgrad]
type = ComputeDeformationGradient
[]
[hencky]
type = HenckyIsotropicElasticity
bulk_modulus = K
shear_modulus = G
phase_field = d
degradation_function = g
output_properties = 'psie_active'
outputs = exodus
[]
[J2]
type = LargeDeformationJ2Plasticity
hardening_model = ${hardening_model_name}
[]
[stress]
type = ComputeLargeDeformationStress
elasticity_model = hencky
plasticity_model = J2
[]
[]
[BCs]
[xfix]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[]
[yfix]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0
[]
[zfix]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0
[]
[ydisp]
type = FunctionDirichletBC
variable = disp_y
boundary = 'top'
function = 't'
preset = false
[]
[]
[Postprocessors]
[F]
type = ElementAverageValue
variable = F
[]
[stress]
type = ElementAverageValue
variable = stress
[]
[d]
type = ElementAverageValue
variable = d
[]
[ep]
type = ADElementAverageMaterialProperty
mat_prop = effective_plastic_strain
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
nl_rel_tol = 1e-08
nl_abs_tol = 1e-10
nl_max_its = 50
dt = '${fparse 0.0005 * a}'
end_time = '${fparse 0.1 * a}'
automatic_scaling = true
fixed_point_max_its = 100
fixed_point_rel_tol = 1e-08
fixed_point_abs_tol = 1e-10
accept_on_max_fixed_point_iteration = true
abort_on_solve_fail = true
[]
[Outputs]
file_base = '${hardening_model_name}'
print_linear_residuals = false
exodus = true
[]
(tutorials/large_deformation/elasticity.i)
E = 2.1e5
nu = 0.3
K = '${fparse E/3/(1-2*nu)}'
G = '${fparse E/2/(1+nu)}'
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 2
nx = 30
ny = 15
ymax = 0.5
[]
[noncrack]
type = BoundingBoxNodeSetGenerator
input = gen
new_boundary = noncrack
bottom_left = '0.5 0 0'
top_right = '1 0 0'
[]
construct_side_list_from_node_list = true
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[]
[AuxVariables]
[fy]
[]
[d]
[]
[]
[Kernels]
[solid_x]
type = ADStressDivergenceTensors
variable = disp_x
component = 0
use_displaced_mesh = true
[]
[solid_y]
type = ADStressDivergenceTensors
variable = disp_y
component = 1
save_in = fy
use_displaced_mesh = true
[]
[]
[BCs]
[ydisp]
type = FunctionDirichletBC
variable = disp_y
boundary = top
function = 't'
[]
[yfix]
type = DirichletBC
variable = disp_y
boundary = noncrack
value = 0
[]
[xfix]
type = DirichletBC
variable = disp_x
boundary = top
value = 0
[]
[]
[Materials]
[bulk]
type = ADGenericConstantMaterial
prop_names = 'K G'
prop_values = '${K} ${G}'
[]
[no_degradation]
type = NoDegradation
property_name = g
expression = 1
phase_field = d
[]
[defgrad]
type = ComputeDeformationGradient
[]
[hencky]
type = HenckyIsotropicElasticity
bulk_modulus = K
shear_modulus = G
phase_field = d
degradation_function = g
[]
[stress]
type = ComputeLargeDeformationStress
elasticity_model = hencky
output_properties = 'stress'
outputs = exodus
[]
[]
[Postprocessors]
[Fy]
type = NodalSum
variable = fy
boundary = top
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist '
automatic_scaling = true
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
dt = 1e-5
end_time = 1e-4
[]
[Outputs]
exodus = true
print_linear_residuals = false
[]
(test/tests/thermal_expansion/elasticity.i)
a = 1
E = 201.8e3
nu = 0.3
K = '${fparse E/3/(1-2*nu)}'
G = '${fparse E/2/(1+nu)}'
T_init = 300
rho = 7.9e-9
cv = 4.47e7
k = 44
alpha = 1
rate = 100
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 3
xmax = ${a}
ymax = ${a}
zmax = ${a}
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[T]
initial_condition = ${T_init}
[]
[]
[AuxVariables]
[d]
[]
[stress]
order = CONSTANT
family = MONOMIAL
[]
[F]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress]
type = ADRankTwoAux
variable = stress
rank_two_tensor = stress
index_i = 1
index_j = 1
execute_on = 'INITIAL TIMESTEP_END'
[]
[F]
type = ADRankTwoAux
variable = F
rank_two_tensor = deformation_gradient
index_i = 1
index_j = 1
execute_on = 'INITIAL TIMESTEP_END'
[]
[]
[Kernels]
[solid_x]
type = ADStressDivergenceTensors
variable = disp_x
component = 0
use_displaced_mesh = true
[]
[solid_y]
type = ADStressDivergenceTensors
variable = disp_y
component = 1
use_displaced_mesh = true
[]
[solid_z]
type = ADStressDivergenceTensors
variable = disp_z
component = 2
use_displaced_mesh = true
[]
[hcond_time]
type = HeatConductionTimeDerivative
variable = T
density_name = density
specific_heat = specific_heat
[]
[hcond]
type = HeatConduction
variable = T
diffusion_coefficient = thermal_conductivity
[]
[]
[Materials]
[thermal_properties]
type = GenericConstantMaterial
prop_names = 'density specific_heat thermal_conductivity'
prop_values = '${rho} ${cv} ${k}'
[]
[bulk]
type = ADGenericConstantMaterial
prop_names = 'K G'
prop_values = '${K} ${G}'
[]
[no_degradation]
type = NoDegradation
property_name = g
phase_field = d
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenDeformationGradient
eigen_deformation_gradient_name = eig_strain
reference_temperature = 300
temperature = T
thermal_expansion_function = '${alpha}'
[]
[defgrad]
type = ComputeDeformationGradient
eigen_deformation_gradient_names = eig_strain
[]
[elasticity]
type = HenckyIsotropicElasticity
bulk_modulus = K
shear_modulus = G
phase_field = d
degradation_function = g
output_properties = 'elastic_strain'
outputs = exodus
[]
[stress]
type = ComputeLargeDeformationStress
elasticity_model = elasticity
output_properties = 'stress'
outputs = exodus
[]
[]
[BCs]
[xfix]
type = DirichletBC
variable = disp_x
boundary = 'left right'
value = 0
[]
[yfix]
type = DirichletBC
variable = disp_y
boundary = 'bottom top'
value = 0
[]
[zfix]
type = DirichletBC
variable = disp_z
boundary = 'back front'
value = 0
[]
[heat]
type = FunctionDirichletBC
variable = T
boundary = 'top'
function = '300+${rate}*t'
preset = false
[]
[]
[Postprocessors]
[F]
type = ElementAverageValue
variable = F
execute_on = 'INITIAL TIMESTEP_END'
[]
[stress]
type = ElementAverageValue
variable = stress
execute_on = 'INITIAL TIMESTEP_END'
[]
[d]
type = ElementAverageValue
variable = d
execute_on = 'INITIAL TIMESTEP_END'
[]
[T]
type = ElementAverageValue
variable = T
execute_on = 'INITIAL TIMESTEP_END'
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
nl_rel_tol = 1e-08
nl_abs_tol = 1e-10
nl_max_its = 50
dt = '${fparse 0.1/rate}'
end_time = '${fparse 1/rate}'
automatic_scaling = true
abort_on_solve_fail = true
[]
[Outputs]
file_base = 'stress_alpha_${alpha}'
print_linear_residuals = false
csv = true
exodus = true
[]
(tutorials/three_point_bending/elastoplasticity.i)
mesh_file = 'gold/beam.msh'
psic = 90
Gc = 20
l = 0.027
E = 7.25e4
nu = 0.34
K = '${fparse E/3/(1-2*nu)}'
G = '${fparse E/2/(1+nu)}'
eta = 1
sigma_y = 345
n = 1
ep0 = 0.345
[GlobalParams]
displacements = 'disp_x disp_y'
volumetric_locking_correction = true
[]
[MultiApps]
[fracture]
type = TransientMultiApp
input_files = 'fracture.i'
cli_args = 'mesh_file=${mesh_file};Gc=${Gc};psic=${psic};l=${l}'
[]
[]
[Transfers]
[from_d]
type = MultiAppCopyTransfer
from_multi_app = 'fracture'
source_variable = d
variable = d
[]
[to_psie_active]
type = MultiAppCopyTransfer
to_multi_app = 'fracture'
source_variable = psie_active
variable = psie_active
[]
[to_psip_active]
type = MultiAppCopyTransfer
to_multi_app = 'fracture'
source_variable = psip_active
variable = psip_active
[]
[]
[Problem]
kernel_coverage_check = false
material_coverage_check = false
boundary_restricted_node_integrity_check = false
[]
[Mesh]
[fmg]
type = FileMeshGenerator
file = ${mesh_file}
[]
[active]
type = SubdomainBoundingBoxGenerator
input = fmg
block_id = 0
bottom_left = '0 0 0'
top_right = '100 16 0'
[]
[inactive]
type = SubdomainBoundingBoxGenerator
input = active
block_id = 1
bottom_left = '100 0 0'
top_right = '200 16 0'
[]
[]
[MeshModifiers]
[esm]
type = CoupledVarThresholdElementSubdomainModifier
coupled_var = d
threshold = 0.925
criterion_type = ABOVE
subdomain_id = 1
complement_subdomain_id = 0
execute_on = 'INITIAL TIMESTEP_END'
reinitialize_subdomains = ''
[]
[]
[Variables]
[disp_x]
block = 0
[]
[disp_y]
block = 0
[]
[]
[AuxVariables]
[d]
[]
[fy]
[]
[]
[Kernels]
[solid_x]
type = ADStressDivergenceTensors
variable = 'disp_x'
component = 0
use_displaced_mesh = true
block = 0
[]
[solid_y]
type = ADStressDivergenceTensors
variable = 'disp_y'
component = 1
use_displaced_mesh = true
save_in = fy
block = 0
[]
[]
[Materials]
[fracture_properties]
type = ADGenericConstantMaterial
prop_names = 'K G l Gc psic viscosity'
prop_values = '${K} ${G} ${l} ${Gc} ${psic} ${eta}'
block = 0
[]
[degradation]
type = ADDerivativeParsedMaterial
property_name = g
coupled_variables = d
expression = '(1-d)^2/(1+(0.5*Gc/c0/l/psic-1)*d)^2*(1-eta)+eta'
material_property_names = 'Gc c0 l psic'
constant_names = 'eta '
constant_expressions = '5e-3'
derivative_order = 1
block = 0
[]
[crack_geometric]
type = CrackGeometricFunction
property_name = alpha
expression = 'd'
phase_field = d
block = 0
[]
[defgrad]
type = ComputeDeformationGradient
block = 0
[]
[hencky]
type = HenckyIsotropicElasticity
bulk_modulus = K
shear_modulus = G
phase_field = d
degradation_function = g
output_properties = 'psie_active'
outputs = exodus
block = 0
[]
[power_law_hardening]
type = PowerLawHardening
yield_stress = ${sigma_y}
exponent = ${n}
reference_plastic_strain = ${ep0}
phase_field = d
degradation_function = g
output_properties = 'psip_active'
outputs = exodus
block = 0
[]
[J2]
type = LargeDeformationJ2Plasticity
hardening_model = power_law_hardening
output_properties = 'effective_plastic_strain'
outputs = exodus
block = 0
[]
[newtonian_viscosity]
type = LargeDeformationNewtonianViscosity
block = 0
[]
[stress]
type = ComputeLargeDeformationStress
elasticity_model = hencky
plasticity_model = J2
viscoelasticity_model = newtonian_viscosity
block = 0
[]
[]
[BCs]
[ydisp]
type = FunctionDirichletBC
variable = 'disp_y'
boundary = 'left right'
function = 't'
preset = false
[]
[top_xfix]
type = DirichletBC
variable = 'disp_x'
boundary = 'top'
value = 0
[]
[top_yfix]
type = DirichletBC
variable = 'disp_y'
boundary = 'top'
value = 0
[]
[]
[Postprocessors]
[force]
type = NodalSum
variable = fy
boundary = top
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist '
nl_rel_tol = 1e-06
nl_abs_tol = 1e-06
nl_max_its = 50
automatic_scaling = true
[TimeStepper]
type = FunctionDT
function = '0.05'
growth_factor = 1.5
cutback_factor_at_failure = 0.5
[]
end_time = 6.4
[]
[Outputs]
print_linear_residuals = false
csv = true
exodus = true
[]
(tutorials/homogeneous_cube/Hencky_J2_arrheniuslawhardening/elastoplasticity.i)
a = 250
ratio = 4
psic = 15
Gc = 1.38e5
l = '${fparse ratio * a}'
E = 6.88e4
nu = 0.33
K = '${fparse E/3/(1-2*nu)}'
G = '${fparse E/2/(1+nu)}'
sigma_0 = 2e-7
Q = '${fparse 1.4054e8}'
R = 8.3143e3
T = 800
eps = '${fparse E/100}'
tqf = 0
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[MultiApps]
[fracture]
type = TransientMultiApp
input_files = 'fracture.i'
cli_args = 'a=${a};psic=${psic};Gc=${Gc};l=${l};'
execute_on = 'TIMESTEP_END'
[]
[]
[Transfers]
[from_fracture]
type = MultiAppCopyTransfer
from_multi_app = 'fracture'
variable = d
source_variable = d
[]
[to_fracture]
type = MultiAppCopyTransfer
to_multi_app = 'fracture'
variable = 'psie_active psip_active'
source_variable = 'psie_active psip_active'
[]
[]
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 3
xmax = ${a}
ymax = ${a}
zmax = ${a}
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[AuxVariables]
[d]
[]
[T]
initial_condition = ${T}
[]
[stress]
order = CONSTANT
family = MONOMIAL
[]
[F]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress]
type = ADRankTwoAux
variable = stress
rank_two_tensor = stress
index_i = 1
index_j = 1
[]
[F]
type = ADRankTwoAux
variable = F
rank_two_tensor = deformation_gradient
index_i = 1
index_j = 1
[]
[]
[Kernels]
[solid_x]
type = ADStressDivergenceTensors
variable = disp_x
component = 0
use_displaced_mesh = true
[]
[solid_y]
type = ADStressDivergenceTensors
variable = disp_y
component = 1
use_displaced_mesh = true
[]
[solid_z]
type = ADStressDivergenceTensors
variable = disp_z
component = 2
use_displaced_mesh = true
[]
[]
[Materials]
[bulk_properties]
type = ADGenericConstantMaterial
prop_names = 'K G l Gc psic sigma_0 Q'
prop_values = '${K} ${G} ${l} ${Gc} ${psic} ${sigma_0} ${Q}'
[]
[degradation]
type = RationalDegradationFunction
property_name = g
expression = (1-d)^p/((1-d)^p+(Gc/psic*xi/c0/l)*d*(1+a2*d+a2*a3*d^2))*(1-eta)+eta
phase_field = d
material_property_names = 'Gc psic xi c0 l '
parameter_names = 'p a2 a3 eta '
parameter_values = '2 -0.5 0 1e-6'
[]
[crack_geometric]
type = CrackGeometricFunction
property_name = alpha
expression = 'd'
phase_field = d
[]
[arrhenius_law]
type = ArrheniusLaw
arrhenius_coefficient = A
activation_energy = Q
ideal_gas_constant = ${R}
temperature = T
[]
[defgrad]
type = ComputeDeformationGradient
[]
[hencky]
type = HenckyIsotropicElasticity
bulk_modulus = K
shear_modulus = G
phase_field = d
degradation_function = g
output_properties = 'psie_active'
outputs = exodus
[]
[arrhenius_law_hardening]
type = ArrheniusLawHardening
reference_stress = sigma_0
arrhenius_coefficient = A
eps = ${eps}
phase_field = d
degradation_function = g
taylor_quinney_factor = ${tqf}
temperature = T
output_properties = 'psip_active'
outputs = exodus
[]
[J2]
type = LargeDeformationJ2Plasticity
hardening_model = arrhenius_law_hardening
[]
[stress]
type = ComputeLargeDeformationStress
elasticity_model = hencky
plasticity_model = J2
[]
[]
[BCs]
[xfix]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[]
[yfix]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0
[]
[zfix]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0
[]
[ydisp]
type = FunctionDirichletBC
variable = disp_y
boundary = 'top'
function = 't'
preset = false
[]
[]
[Postprocessors]
[F]
type = ElementAverageValue
variable = F
[]
[stress]
type = ElementAverageValue
variable = stress
[]
[d]
type = ElementAverageValue
variable = d
[]
[ep]
type = ADElementAverageMaterialProperty
mat_prop = effective_plastic_strain
[]
# [heat]
# type = ADElementAverageMaterialProperty
# mat_prop = plastic_heat_generation
# []
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
nl_rel_tol = 1e-08
nl_abs_tol = 1e-10
nl_max_its = 50
dt = '${fparse 0.0005 * a}'
end_time = '${fparse 0.1 * a}'
automatic_scaling = true
fixed_point_max_its = 100
fixed_point_rel_tol = 1e-08
fixed_point_abs_tol = 1e-10
accept_on_max_fixed_point_iteration = true
abort_on_solve_fail = true
[]
[Outputs]
file_base = 'stress_deformation'
print_linear_residuals = false
csv = true
exodus = true
[]
(tutorials/homogeneous_cube/CNH_J2_powerlawhardening/elastoplasticity_fracture.i)
a = 250
R = 4
psic = 15
Gc = 1.38e5
l = '${fparse R * a}'
E = 6.88e4
nu = 0.33
K = '${fparse E/3/(1-2*nu)}'
G = '${fparse E/2/(1+nu)}'
sigma_y = 320
n = 5
ep0 = 0.01
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 3
xmax = ${a}
ymax = ${a}
zmax = ${a}
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[d]
[]
[]
[AuxVariables]
[bounds_dummy]
[]
[stress]
order = CONSTANT
family = MONOMIAL
[]
[F]
order = CONSTANT
family = MONOMIAL
[]
[]
[Bounds]
[irreversibility]
type = VariableOldValueBounds
variable = bounds_dummy
bounded_variable = d
bound_type = lower
[]
[upper]
type = ConstantBounds
variable = bounds_dummy
bounded_variable = d
bound_type = upper
bound_value = 1
[]
[]
[AuxKernels]
[stress]
type = ADRankTwoAux
variable = stress
rank_two_tensor = stress
index_i = 1
index_j = 1
[]
[F]
type = ADRankTwoAux
variable = F
rank_two_tensor = deformation_gradient
index_i = 1
index_j = 1
[]
[]
[Kernels]
[solid_x]
type = ADStressDivergenceTensors
variable = disp_x
component = 0
use_displaced_mesh = true
[]
[solid_y]
type = ADStressDivergenceTensors
variable = disp_y
component = 1
use_displaced_mesh = true
[]
[solid_z]
type = ADStressDivergenceTensors
variable = disp_z
component = 2
use_displaced_mesh = true
[]
[pff_diff]
type = ADPFFDiffusion
variable = d
[]
[pff_source]
type = ADPFFSource
variable = d
free_energy = psi
[]
[]
[Materials]
[bulk_properties]
type = ADGenericConstantMaterial
prop_names = 'K G l Gc psic'
prop_values = '${K} ${G} ${l} ${Gc} ${psic}'
[]
[degradation]
type = RationalDegradationFunction
property_name = g
expression = (1-d)^p/((1-d)^p+(Gc/psic*xi/c0/l)*d*(1+a2*d+a2*a3*d^2))*(1-eta)+eta
phase_field = d
material_property_names = 'Gc psic xi c0 l '
parameter_names = 'p a2 a3 eta '
parameter_values = '2 -0.5 0 1e-6'
[]
[crack_geometric]
type = CrackGeometricFunction
property_name = alpha
expression = 'd'
phase_field = d
[]
[defgrad]
type = ComputeDeformationGradient
[]
[cnh]
type = CNHIsotropicElasticity
bulk_modulus = K
shear_modulus = G
phase_field = d
degradation_function = g
[]
[power_law_hardening]
type = PowerLawHardening
yield_stress = ${sigma_y}
exponent = ${n}
reference_plastic_strain = ${ep0}
phase_field = d
degradation_function = g
[]
[J2]
type = LargeDeformationJ2Plasticity
hardening_model = power_law_hardening
[]
[stress]
type = ComputeLargeDeformationStress
elasticity_model = cnh
plasticity_model = J2
[]
[psi]
type = ADDerivativeParsedMaterial
property_name = psi
expression = 'alpha*Gc/c0/l+psie+psip'
coupled_variables = d
material_property_names = 'alpha(d) g(d) Gc c0 l psie(d) psip(d)'
derivative_order = 1
[]
[]
[BCs]
[xfix]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[]
[yfix]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0
[]
[zfix]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0
[]
[ydisp]
type = FunctionDirichletBC
variable = disp_y
boundary = 'top'
function = 't'
preset = false
[]
[]
[Postprocessors]
[F]
type = ElementAverageValue
variable = F
[]
[stress]
type = ElementAverageValue
variable = stress
[]
[d]
type = ElementAverageValue
variable = d
[]
[ep]
type = ADElementAverageMaterialProperty
mat_prop = effective_plastic_strain
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -snes_type -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu vinewtonrsls NONZERO 1e-10'
line_search = none
nl_rel_tol = 1e-08
nl_abs_tol = 1e-10
nl_max_its = 50
dt = '${fparse 0.0001 * a}'
end_time = '${fparse 0.1 * a}'
automatic_scaling = true
abort_on_solve_fail = true
[]
[Outputs]
file_base = stress_deformation
print_linear_residuals = false
csv = true
exodus = true
[]
(tutorials/homogeneous_cube/Hencky_J2_powerlawhardening/elastoplasticity_fracture.i)
a = 250
R = 4
psic = 15
Gc = 1.38e5
l = '${fparse R * a}'
E = 6.88e4
nu = 0.33
K = '${fparse E/3/(1-2*nu)}'
G = '${fparse E/2/(1+nu)}'
sigma_y = 320
n = 5
ep0 = 0.01
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 3
xmax = ${a}
ymax = ${a}
zmax = ${a}
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[d]
[]
[]
[AuxVariables]
[bounds_dummy]
[]
[stress]
order = CONSTANT
family = MONOMIAL
[]
[F]
order = CONSTANT
family = MONOMIAL
[]
[]
[Bounds]
[irreversibility]
type = VariableOldValueBounds
variable = bounds_dummy
bounded_variable = d
bound_type = lower
[]
[upper]
type = ConstantBounds
variable = bounds_dummy
bounded_variable = d
bound_type = upper
bound_value = 1
[]
[]
[AuxKernels]
[stress]
type = ADRankTwoAux
variable = stress
rank_two_tensor = stress
index_i = 1
index_j = 1
[]
[F]
type = ADRankTwoAux
variable = F
rank_two_tensor = deformation_gradient
index_i = 1
index_j = 1
[]
[]
[Kernels]
[solid_x]
type = ADStressDivergenceTensors
variable = disp_x
component = 0
use_displaced_mesh = true
[]
[solid_y]
type = ADStressDivergenceTensors
variable = disp_y
component = 1
use_displaced_mesh = true
[]
[solid_z]
type = ADStressDivergenceTensors
variable = disp_z
component = 2
use_displaced_mesh = true
[]
[pff_diff]
type = ADPFFDiffusion
variable = d
[]
[pff_source]
type = ADPFFSource
variable = d
free_energy = psi
[]
[]
[Materials]
[bulk_properties]
type = ADGenericConstantMaterial
prop_names = 'K G l Gc psic'
prop_values = '${K} ${G} ${l} ${Gc} ${psic}'
[]
[degradation]
type = RationalDegradationFunction
property_name = g
expression = (1-d)^p/((1-d)^p+(Gc/psic*xi/c0/l)*d*(1+a2*d+a2*a3*d^2))*(1-eta)+eta
phase_field = d
material_property_names = 'Gc psic xi c0 l '
parameter_names = 'p a2 a3 eta '
parameter_values = '2 -0.5 0 1e-6'
[]
[crack_geometric]
type = CrackGeometricFunction
property_name = alpha
expression = 'd'
phase_field = d
[]
[defgrad]
type = ComputeDeformationGradient
[]
[hencky]
type = HenckyIsotropicElasticity
bulk_modulus = K
shear_modulus = G
phase_field = d
degradation_function = g
[]
[power_law_hardening]
type = PowerLawHardening
yield_stress = ${sigma_y}
exponent = ${n}
reference_plastic_strain = ${ep0}
phase_field = d
degradation_function = g
[]
[J2]
type = LargeDeformationJ2Plasticity
hardening_model = power_law_hardening
[]
[stress]
type = ComputeLargeDeformationStress
elasticity_model = hencky
plasticity_model = J2
[]
[psi]
type = ADDerivativeParsedMaterial
property_name = psi
expression = 'alpha*Gc/c0/l+psie+psip'
coupled_variables = d
material_property_names = 'alpha(d) g(d) Gc c0 l psie(d) psip(d)'
derivative_order = 1
[]
[]
[BCs]
[xfix]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[]
[yfix]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0
[]
[zfix]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0
[]
[ydisp]
type = FunctionDirichletBC
variable = disp_y
boundary = 'top'
function = 't'
preset = false
[]
[]
[Postprocessors]
[F]
type = ElementAverageValue
variable = F
[]
[stress]
type = ElementAverageValue
variable = stress
[]
[d]
type = ElementAverageValue
variable = d
[]
[ep]
type = ADElementAverageMaterialProperty
mat_prop = effective_plastic_strain
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -snes_type -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu vinewtonrsls NONZERO 1e-10'
line_search = none
nl_rel_tol = 1e-08
nl_abs_tol = 1e-10
nl_max_its = 50
dt = '${fparse 0.0001 * a}'
end_time = '${fparse 0.1 * a}'
automatic_scaling = true
abort_on_solve_fail = true
[]
[Outputs]
file_base = stress_deformation
print_linear_residuals = false
csv = true
exodus = true
[]
(tutorials/large_deformation/elastoplasticity.i)
E = 2.1e5
nu = 0.3
K = '${fparse E/3/(1-2*nu)}'
G = '${fparse E/2/(1+nu)}'
sigma_y = 50
n = 5
ep0 = 0.001
[GlobalParams]
displacements = 'disp_x disp_y'
volumetric_locking_correction = true
[]
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 2
nx = 30
ny = 15
ymax = 0.5
[]
[noncrack]
type = BoundingBoxNodeSetGenerator
input = gen
new_boundary = noncrack
bottom_left = '0.5 0 0'
top_right = '1 0 0'
[]
construct_side_list_from_node_list = true
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[]
[AuxVariables]
[fy]
[]
[d]
[]
[]
[Kernels]
[solid_x]
type = ADStressDivergenceTensors
variable = disp_x
component = 0
use_displaced_mesh = true
[]
[solid_y]
type = ADStressDivergenceTensors
variable = disp_y
component = 1
save_in = fy
use_displaced_mesh = true
[]
[]
[BCs]
[ydisp]
type = FunctionDirichletBC
variable = disp_y
boundary = top
function = 't'
[]
[yfix]
type = DirichletBC
variable = disp_y
boundary = noncrack
value = 0
[]
[xfix]
type = DirichletBC
variable = disp_x
boundary = top
value = 0
[]
[]
[Materials]
[bulk]
type = ADGenericConstantMaterial
prop_names = 'K G'
prop_values = '${K} ${G}'
[]
[no_degradation]
type = NoDegradation
property_name = g
expression = 1
phase_field = d
[]
[defgrad]
type = ComputeDeformationGradient
[]
[hencky]
type = HenckyIsotropicElasticity
bulk_modulus = K
shear_modulus = G
phase_field = d
degradation_function = g
[]
[power_law_hardening]
type = PowerLawHardening
yield_stress = ${sigma_y}
exponent = ${n}
reference_plastic_strain = ${ep0}
phase_field = d
degradation_function = g
[]
[J2]
type = LargeDeformationJ2Plasticity
hardening_model = power_law_hardening
output_properties = 'effective_plastic_strain'
outputs = exodus
[]
[stress]
type = ComputeLargeDeformationStress
elasticity_model = hencky
plasticity_model = J2
output_properties = 'stress'
outputs = exodus
[]
[]
[Postprocessors]
[Fy]
type = NodalSum
variable = fy
boundary = top
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist '
automatic_scaling = true
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
dt = 1e-5
end_time = 1e-3
[]
[Outputs]
exodus = true
print_linear_residuals = false
[]
(tutorials/homogeneous_cube/Hencky_J2_arrheniuslawhardening_creep/elastoplasticity.i)
a = 250
ratio = 4
psic = 15
Gc = 1.38e5
l = '${fparse ratio * a}'
E = 6.88e4
nu = 0.33
K = '${fparse E/3/(1-2*nu)}'
G = '${fparse E/2/(1+nu)}'
sigma_0 = 2e-7
Q = '${fparse 1.4054e8}'
R = 8.3143e3
T = 800
eps = '${fparse E/100}'
n = 160
rate = 10000
creep_coef = 1
tqf = 0
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[MultiApps]
[fracture]
type = TransientMultiApp
input_files = 'fracture.i'
cli_args = 'a=${a};psic=${psic};Gc=${Gc};l=${l};'
execute_on = 'TIMESTEP_END'
[]
[]
[Transfers]
[from_fracture]
type = MultiAppCopyTransfer
from_multi_app = 'fracture'
variable = d
source_variable = d
[]
[to_fracture]
type = MultiAppCopyTransfer
to_multi_app = 'fracture'
variable = 'psie_active psip_active'
source_variable = 'psie_active psip_active'
[]
[]
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 3
xmax = ${a}
ymax = ${a}
zmax = ${a}
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[AuxVariables]
[T]
initial_condition = ${T}
[]
[d]
[]
[stress]
order = CONSTANT
family = MONOMIAL
[]
[F]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress]
type = ADRankTwoAux
variable = stress
rank_two_tensor = stress
index_i = 1
index_j = 1
execute_on = 'INITIAL TIMESTEP_END'
[]
[F]
type = ADRankTwoAux
variable = F
rank_two_tensor = deformation_gradient
index_i = 1
index_j = 1
execute_on = 'INITIAL TIMESTEP_END'
[]
[]
[Kernels]
[solid_x]
type = ADStressDivergenceTensors
variable = disp_x
component = 0
use_displaced_mesh = true
[]
[solid_y]
type = ADStressDivergenceTensors
variable = disp_y
component = 1
use_displaced_mesh = true
[]
[solid_z]
type = ADStressDivergenceTensors
variable = disp_z
component = 2
use_displaced_mesh = true
[]
[]
[Materials]
[bulk_properties]
type = ADGenericConstantMaterial
prop_names = 'K G l Gc psic sigma_0 Q'
prop_values = '${K} ${G} ${l} ${Gc} ${psic} ${sigma_0} ${Q}'
[]
[degradation]
type = RationalDegradationFunction
property_name = g
expression = (1-d)^p/((1-d)^p+(Gc/psic*xi/c0/l)*d*(1+a2*d+a2*a3*d^2))*(1-eta)+eta
phase_field = d
material_property_names = 'Gc psic xi c0 l '
parameter_names = 'p a2 a3 eta '
parameter_values = '2 -0.5 0 1e-6'
[]
[crack_geometric]
type = CrackGeometricFunction
property_name = alpha
expression = 'd'
phase_field = d
[]
[arrhenius_law]
type = ArrheniusLaw
arrhenius_coefficient = A
activation_energy = Q
ideal_gas_constant = ${R}
temperature = T
[]
[defgrad]
type = ComputeDeformationGradient
[]
[hencky]
type = HenckyIsotropicElasticity
bulk_modulus = K
shear_modulus = G
phase_field = d
degradation_function = g
output_properties = 'psie_active'
outputs = exodus
[]
[arrhenius_law_hardening]
type = ArrheniusLawHardening
reference_stress = sigma_0
arrhenius_coefficient = A
eps = ${eps}
phase_field = d
degradation_function = g
taylor_quinney_factor = ${tqf}
temperature = T
output_properties = 'psip_active'
outputs = exodus
[]
[J2]
type = LargeDeformationJ2PowerLawCreep
hardening_model = arrhenius_law_hardening
coefficient = ${creep_coef}
exponent = ${n}
[]
[stress]
type = ComputeLargeDeformationStress
elasticity_model = hencky
plasticity_model = J2
[]
[]
[BCs]
[xfix]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[]
[yfix]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0
[]
[zfix]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0
[]
[ydisp]
type = FunctionDirichletBC
variable = disp_y
boundary = 'top'
function = '${rate}*t'
preset = false
[]
[]
[Postprocessors]
[F]
type = ElementAverageValue
variable = F
execute_on = 'INITIAL TIMESTEP_END'
[]
[stress]
type = ElementAverageValue
variable = stress
execute_on = 'INITIAL TIMESTEP_END'
[]
[d]
type = ElementAverageValue
variable = d
execute_on = 'INITIAL TIMESTEP_END'
[]
[ep]
type = ADElementAverageMaterialProperty
mat_prop = effective_plastic_strain
execute_on = 'INITIAL TIMESTEP_END'
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
nl_rel_tol = 1e-08
nl_abs_tol = 1e-10
nl_max_its = 50
dt = '${fparse 0.0005 * a / rate}'
end_time = '${fparse 0.1 * a / rate}'
automatic_scaling = true
fixed_point_max_its = 100
fixed_point_rel_tol = 1e-08
fixed_point_abs_tol = 1e-10
accept_on_max_fixed_point_iteration = true
abort_on_solve_fail = true
[]
[Outputs]
file_base = 'stress_deformation_n_${n}_rate_${rate}'
print_linear_residuals = false
csv = true
exodus = true
[]
(test/tests/postprocessors/external_work/elasticity.i)
a = 250
E = 1
nu = 0.33
K = '${fparse E/3/(1-2*nu)}'
G = '${fparse E/2/(1+nu)}'
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 3
xmax = ${a}
ymax = ${a}
zmax = ${a}
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[AuxVariables]
[d]
[]
[fx]
[]
[fy]
[]
[fz]
[]
[]
[Kernels]
[solid_x]
type = ADStressDivergenceTensors
variable = disp_x
component = 0
use_displaced_mesh = true
[]
[solid_y]
type = ADStressDivergenceTensors
variable = disp_y
component = 1
use_displaced_mesh = true
save_in = fy
[]
[solid_z]
type = ADStressDivergenceTensors
variable = disp_z
component = 2
use_displaced_mesh = true
[]
[]
[Materials]
[bulk_properties]
type = ADGenericConstantMaterial
prop_names = 'K G'
prop_values = '${K} ${G}'
[]
[degradation]
type = NoDegradation
property_name = g
phase_field = d
[]
[defgrad]
type = ComputeDeformationGradient
[]
[hencky]
type = HenckyIsotropicElasticity
bulk_modulus = K
shear_modulus = G
phase_field = d
degradation_function = g
[]
[stress]
type = ComputeLargeDeformationStress
elasticity_model = hencky
[]
[]
[BCs]
[xfix]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[]
[yfix]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0
[]
[zfix]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0
[]
[ydisp]
type = FunctionDirichletBC
variable = disp_y
boundary = 'top'
function = 't'
preset = false
[]
[]
[Postprocessors]
[external_work]
type = ExternalWork
boundary = 'top'
forces = 'fx fy fz'
[]
[strain_energy]
type = ADElementIntegralMaterialProperty
mat_prop = psie
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
nl_rel_tol = 1e-10
nl_abs_tol = 1e-12
dt = '${fparse 0.0005 * a}'
end_time = '${fparse 0.1 * a}'
automatic_scaling = true
[]
[Outputs]
print_linear_residuals = false
exodus = true
[]