- compressive_strengthA TensorMechanicsHardening UserObject that defines hardening of the mean-cap compressive strength. This should always be less than tensile_strength (it will typically be negative). Yield function = - (trace(stress) - compressive_strength) for trace(stress)
C++ Type:UserObjectName
Controllable:No
Description:A TensorMechanicsHardening UserObject that defines hardening of the mean-cap compressive strength. This should always be less than tensile_strength (it will typically be negative). Yield function = - (trace(stress) - compressive_strength) for trace(stress)
- internal_constraint_toleranceThe Newton-Raphson process is only deemed converged if the internal constraint is less than this.
C++ Type:double
Controllable:No
Description:The Newton-Raphson process is only deemed converged if the internal constraint is less than this.
- tensile_strengthA TensorMechanicsHardening UserObject that defines hardening of the mean-cap tensile strength (it will typically be positive). Yield function = trace(stress) - tensile_strength for trace(stress)>tensile_strength.
C++ Type:UserObjectName
Controllable:No
Description:A TensorMechanicsHardening UserObject that defines hardening of the mean-cap tensile strength (it will typically be positive). Yield function = trace(stress) - tensile_strength for trace(stress)>tensile_strength.
- yield_function_toleranceIf the yield function is less than this amount, the (stress, internal parameter) are deemed admissible.
C++ Type:double
Controllable:No
Description:If the yield function is less than this amount, the (stress, internal parameter) are deemed admissible.
TensorMechanicsPlasticMeanCapTC
The TensorMechanicsPlasticMeanCapTC has not been documented. The content listed below should be used as a starting point for documenting the class, which includes the typical automatic documentation associated with a MooseObject; however, what is contained is ultimately determined by what is necessary to make the documentation clear for users.
Associative mean-cap tensile and compressive plasticity with hardening/softening
Overview
Example Input File Syntax
Input Parameters
- execute_onTIMESTEP_ENDThe list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, ALWAYS.
Default:TIMESTEP_END
C++ Type:ExecFlagEnum
Options:NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, ALWAYS
Controllable:No
Description:The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, ALWAYS.
- max_iterations10Maximum iterations for custom MeanCapTC return map
Default:10
C++ Type:unsigned int
Controllable:No
Description:Maximum iterations for custom MeanCapTC return map
- 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
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_custom_ctoTrueWhether to use the custom consistent tangent operator computations.
Default:True
C++ Type:bool
Controllable:No
Description:Whether to use the custom consistent tangent operator computations.
- use_custom_returnMapTrueWhether to use the custom MeanCapTC returnMap algorithm.
Default:True
C++ Type:bool
Controllable:No
Description:Whether to use the custom MeanCapTC returnMap algorithm.
Optional Parameters
- allow_duplicate_execution_on_initialFalseIn the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable).
Default:False
C++ Type:bool
Controllable:No
Description:In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable).
- 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.
- force_postauxFalseForces the UserObject to be executed in POSTAUX
Default:False
C++ Type:bool
Controllable:No
Description:Forces the UserObject to be executed in POSTAUX
- force_preauxFalseForces the UserObject to be executed in PREAUX
Default:False
C++ Type:bool
Controllable:No
Description:Forces the UserObject to be executed in PREAUX
- force_preicFalseForces the UserObject to be executed in PREIC during initial setup
Default:False
C++ Type:bool
Controllable:No
Description:Forces the UserObject to be executed in PREIC during initial setup
- 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
Input Files
- (modules/tensor_mechanics/test/tests/jacobian/cto23.i)
- (modules/tensor_mechanics/test/tests/mean_cap_TC/random03.i)
- (modules/tensor_mechanics/test/tests/mean_cap_TC/small_deform1.i)
- (modules/tensor_mechanics/test/tests/mean_cap_TC/random02.i)
- (modules/tensor_mechanics/test/tests/mean_cap_TC/small_deform3.i)
- (modules/tensor_mechanics/test/tests/mean_cap_TC/random01.i)
- (modules/tensor_mechanics/test/tests/mean_cap_TC/small_deform2.i)
- (modules/tensor_mechanics/test/tests/mean_cap_TC/random04.i)
- (modules/tensor_mechanics/test/tests/mean_cap_TC/small_deform4.i)
- (modules/tensor_mechanics/test/tests/mean_cap_TC/small_deform6.i)
- (modules/tensor_mechanics/test/tests/mean_cap_TC/small_deform5.i)
- (modules/tensor_mechanics/test/tests/mean_cap_TC/small_deform7.i)
- (modules/tensor_mechanics/test/tests/jacobian/cto22.i)
(modules/tensor_mechanics/test/tests/jacobian/cto23.i)
# MeanCapTC with compressive failure
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[GlobalParams]
block = 0
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[./TensorMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[UserObjects]
[./tensile_strength]
type = TensorMechanicsHardeningCubic
value_0 = 10
value_residual = 1
internal_limit = 10
[../]
[./compressive_strength]
type = TensorMechanicsHardeningCubic
value_0 = -10
value_residual = -1
internal_limit = 9
[../]
[./cap]
type = TensorMechanicsPlasticMeanCapTC
tensile_strength = tensile_strength
compressive_strength = compressive_strength
yield_function_tolerance = 1E-11
internal_constraint_tolerance = 1E-9
use_custom_cto = true
use_custom_returnMap = true
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0.7 1'
[../]
[./strain]
type = ComputeIncrementalSmallStrain
displacements = 'disp_x disp_y disp_z'
eigenstrain_names = ini_stress
[../]
[./ini_stress]
type = ComputeEigenstrainFromInitialStress
initial_stress = '-6 5 4 5 -7 2 4 2 -2'
eigenstrain_name = ini_stress
[../]
[./mc]
type = ComputeMultiPlasticityStress
ep_plastic_tolerance = 1E-11
plastic_models = cap
tangent_operator = nonlinear
min_stepsize = 1
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_atol -snes_rtol -snes_max_it -snes_type'
petsc_options_value = 'bcgs bjacobi 1E-15 1E-10 10000 test'
[../]
[]
[Executioner]
type = Transient
solve_type = Newton
[]
(modules/tensor_mechanics/test/tests/mean_cap_TC/random03.i)
# apply many random large deformations, checking that the algorithm returns correctly to
# the yield surface each time.
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1000
ny = 125
nz = 1
xmin = 0
xmax = 1000
ymin = 0
ymax = 125
zmin = 0
zmax = 1
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[./TensorMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[ICs]
[./x]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_x
[../]
[./y]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_y
[../]
[./z]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_z
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '0'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '0'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '0'
[../]
[]
[AuxVariables]
[./yield_fcn]
order = CONSTANT
family = MONOMIAL
[../]
[./iter]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./yield_fcn_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = yield_fcn
[../]
[./iter]
type = MaterialRealAux
property = plastic_NR_iterations
variable = iter
[../]
[]
[Postprocessors]
[./max_yield_fcn]
type = ElementExtremeValue
variable = yield_fcn
outputs = 'console'
[../]
[./should_be_zero]
type = FunctionValuePostprocessor
function = should_be_zero_fcn
[../]
[./av_iter]
type = ElementAverageValue
variable = iter
outputs = 'console'
[../]
[]
[Functions]
[./should_be_zero_fcn]
type = ParsedFunction
value = 'if(a<1E-3,0,a)'
vars = 'a'
vals = 'max_yield_fcn'
[../]
[]
[UserObjects]
[./tensile_strength]
type = TensorMechanicsHardeningCubic
value_0 = 1
value_residual = 0.1
internal_limit = 0.1
[../]
[./compressive_strength]
type = TensorMechanicsHardeningCubic
value_0 = -1.5
value_residual = 0
internal_limit = 0.1
[../]
[./cap]
type = TensorMechanicsPlasticMeanCapTC
tensile_strength = tensile_strength
compressive_strength = compressive_strength
yield_function_tolerance = 1E-5
internal_constraint_tolerance = 1E-11
use_custom_returnMap = false
use_custom_cto = false
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0.7E7 1E7'
[../]
[./strain]
type = ComputeIncrementalSmallStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 0
max_NR_iterations = 2
ep_plastic_tolerance = 1E-8
plastic_models = cap
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = random03
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/tensor_mechanics/test/tests/mean_cap_TC/small_deform1.i)
# apply uniform stretch in x, y and z directions.
# trial_stress(0, 0) = -2
# trial_stress(1, 1) = 6
# trial_stress(2, 2) = 10
# With tensile_strength = 2, the algorithm should return to trace(stress) = 2, or
# stress(0, 0) = -6
# stress(1, 1) = 2
# stress(2, 2) = 6
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[./TensorMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '-1E-7*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '3E-7*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '5E-7*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
[../]
[./stress_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = f
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = f
[../]
[]
[UserObjects]
[./tensile_strength]
type = TensorMechanicsHardeningConstant
value = 2
[../]
[./compressive_strength]
type = TensorMechanicsHardeningConstant
value = -1
[../]
[./cap]
type = TensorMechanicsPlasticMeanCapTC
tensile_strength = tensile_strength
compressive_strength = compressive_strength
yield_function_tolerance = 1E-3
internal_constraint_tolerance = 1E-9
use_custom_returnMap = false
use_custom_cto = false
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 1E7'
[../]
[./strain]
type = ComputeIncrementalSmallStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mean_cap]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = cap
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = small_deform1
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/tensor_mechanics/test/tests/mean_cap_TC/random02.i)
# apply many random large deformations, checking that the algorithm returns correctly to
# the yield surface each time.
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1000
ny = 125
nz = 1
xmin = 0
xmax = 1000
ymin = 0
ymax = 125
zmin = 0
zmax = 1
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[./TensorMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[ICs]
[./x]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_x
[../]
[./y]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_y
[../]
[./z]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_z
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '0'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '0'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '0'
[../]
[]
[AuxVariables]
[./yield_fcn]
order = CONSTANT
family = MONOMIAL
[../]
[./iter]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./yield_fcn_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = yield_fcn
[../]
[./iter]
type = MaterialRealAux
property = plastic_NR_iterations
variable = iter
[../]
[]
[Postprocessors]
[./max_yield_fcn]
type = ElementExtremeValue
variable = yield_fcn
outputs = 'console'
[../]
[./should_be_zero]
type = FunctionValuePostprocessor
function = should_be_zero_fcn
[../]
[./av_iter]
type = ElementAverageValue
variable = iter
outputs = 'console'
[../]
[]
[Functions]
[./should_be_zero_fcn]
type = ParsedFunction
value = 'if(a<1E-3,0,a)'
vars = 'a'
vals = 'max_yield_fcn'
[../]
[]
[UserObjects]
[./tensile_strength]
type = TensorMechanicsHardeningConstant
value = 1
[../]
[./compressive_strength]
type = TensorMechanicsHardeningConstant
value = -1.5
[../]
[./cap]
type = TensorMechanicsPlasticMeanCapTC
tensile_strength = tensile_strength
compressive_strength = compressive_strength
yield_function_tolerance = 1E-3
internal_constraint_tolerance = 1E-9
use_custom_returnMap = true
use_custom_cto = true
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0.7E7 1E7'
[../]
[./strain]
type = ComputeIncrementalSmallStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 0
max_NR_iterations = 2
ep_plastic_tolerance = 1E-6
plastic_models = cap
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = random02
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/tensor_mechanics/test/tests/mean_cap_TC/small_deform3.i)
# apply nonuniform compression in x, y and z directions such that
# trial_stress(0, 0) = 2
# trial_stress(1, 1) = -8
# trial_stress(2, 2) = -10
# With compressive_strength = -1, the algorithm should return to trace(stress) = -1, or
# stress(0, 0) = 7
# stress(1, 1) = -3
# stress(2, 2) = -5
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[./TensorMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '1E-7*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '-4E-7*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '-5E-7*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
[../]
[./stress_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = f
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = f
[../]
[]
[UserObjects]
[./tensile_strength]
type = TensorMechanicsHardeningConstant
value = 2
[../]
[./compressive_strength]
type = TensorMechanicsHardeningConstant
value = -1
[../]
[./cap]
type = TensorMechanicsPlasticMeanCapTC
tensile_strength = tensile_strength
compressive_strength = compressive_strength
yield_function_tolerance = 1E-3
internal_constraint_tolerance = 1E-9
use_custom_returnMap = false
use_custom_cto = false
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 1E7'
[../]
[./strain]
type = ComputeIncrementalSmallStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mean_cap]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = cap
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = small_deform3
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/tensor_mechanics/test/tests/mean_cap_TC/random01.i)
# apply many random large deformations, checking that the algorithm returns correctly to
# the yield surface each time.
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1000
ny = 125
nz = 1
xmin = 0
xmax = 1000
ymin = 0
ymax = 125
zmin = 0
zmax = 1
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[./TensorMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[ICs]
[./x]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_x
[../]
[./y]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_y
[../]
[./z]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_z
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '0'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '0'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '0'
[../]
[]
[AuxVariables]
[./yield_fcn]
order = CONSTANT
family = MONOMIAL
[../]
[./iter]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./yield_fcn_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = yield_fcn
[../]
[./iter]
type = MaterialRealAux
property = plastic_NR_iterations
variable = iter
[../]
[]
[Postprocessors]
[./max_yield_fcn]
type = ElementExtremeValue
variable = yield_fcn
outputs = 'console'
[../]
[./should_be_zero]
type = FunctionValuePostprocessor
function = should_be_zero_fcn
[../]
[./av_iter]
type = ElementAverageValue
variable = iter
outputs = 'console'
[../]
[]
[Functions]
[./should_be_zero_fcn]
type = ParsedFunction
value = 'if(a<1E-3,0,a)'
vars = 'a'
vals = 'max_yield_fcn'
[../]
[]
[UserObjects]
[./tensile_strength]
type = TensorMechanicsHardeningConstant
value = 1
[../]
[./compressive_strength]
type = TensorMechanicsHardeningConstant
value = -1.5
[../]
[./cap]
type = TensorMechanicsPlasticMeanCapTC
tensile_strength = tensile_strength
compressive_strength = compressive_strength
yield_function_tolerance = 1E-3
internal_constraint_tolerance = 1E-9
use_custom_returnMap = false
use_custom_cto = false
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0.7E7 1E7'
[../]
[./strain]
type = ComputeIncrementalSmallStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 0
max_NR_iterations = 2
ep_plastic_tolerance = 1E-6
plastic_models = cap
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = random01
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/tensor_mechanics/test/tests/mean_cap_TC/small_deform2.i)
# apply uniform stretch in x, y and z directions.
# trial_stress(0, 0) = -2
# trial_stress(1, 1) = 6
# trial_stress(2, 2) = 10
# With tensile_strength = 2, the algorithm should return to trace(stress) = 2, or
# stress(0, 0) = -6
# stress(1, 1) = 2
# stress(2, 2) = 6
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[./TensorMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '-1E-7*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '3E-7*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '5E-7*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
[../]
[./stress_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = f
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = f
[../]
[]
[UserObjects]
[./tensile_strength]
type = TensorMechanicsHardeningConstant
value = 2
[../]
[./compressive_strength]
type = TensorMechanicsHardeningConstant
value = -1
[../]
[./cap]
type = TensorMechanicsPlasticMeanCapTC
tensile_strength = tensile_strength
compressive_strength = compressive_strength
yield_function_tolerance = 1E-3
internal_constraint_tolerance = 1E-9
use_custom_returnMap = true
use_custom_cto = true
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 1E7'
[../]
[./strain]
type = ComputeIncrementalSmallStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mean_cap]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = cap
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = small_deform2
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/tensor_mechanics/test/tests/mean_cap_TC/random04.i)
# apply many random large deformations, checking that the algorithm returns correctly to
# the yield surface each time.
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1000
ny = 125
nz = 1
xmin = 0
xmax = 1000
ymin = 0
ymax = 125
zmin = 0
zmax = 1
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[./TensorMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[ICs]
[./x]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_x
[../]
[./y]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_y
[../]
[./z]
type = RandomIC
min = -0.1
max = 0.1
variable = disp_z
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '0'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '0'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '0'
[../]
[]
[AuxVariables]
[./yield_fcn]
order = CONSTANT
family = MONOMIAL
[../]
[./iter]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./yield_fcn_auxk]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = yield_fcn
[../]
[./iter]
type = MaterialRealAux
property = plastic_NR_iterations
variable = iter
[../]
[]
[Postprocessors]
[./max_yield_fcn]
type = ElementExtremeValue
variable = yield_fcn
outputs = 'console'
[../]
[./should_be_zero]
type = FunctionValuePostprocessor
function = should_be_zero_fcn
[../]
[./av_iter]
type = ElementAverageValue
variable = iter
outputs = 'console'
[../]
[]
[Functions]
[./should_be_zero_fcn]
type = ParsedFunction
value = 'if(a<1E-3,0,a)'
vars = 'a'
vals = 'max_yield_fcn'
[../]
[]
[UserObjects]
[./tensile_strength]
type = TensorMechanicsHardeningCubic
value_0 = 1
value_residual = 0.1
internal_limit = 0.1
[../]
[./compressive_strength]
type = TensorMechanicsHardeningCubic
value_0 = -1.5
value_residual = 0
internal_limit = 0.1
[../]
[./cap]
type = TensorMechanicsPlasticMeanCapTC
tensile_strength = tensile_strength
compressive_strength = compressive_strength
yield_function_tolerance = 1E-3
internal_constraint_tolerance = 1E-9
use_custom_returnMap = true
use_custom_cto = true
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0.7E7 1E7'
[../]
[./strain]
type = ComputeIncrementalSmallStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mc]
type = ComputeMultiPlasticityStress
block = 0
max_NR_iterations = 2
ep_plastic_tolerance = 1E-6
plastic_models = cap
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = random04
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/tensor_mechanics/test/tests/mean_cap_TC/small_deform4.i)
# apply nonuniform compression in x, y and z directions such that
# trial_stress(0, 0) = 2
# trial_stress(1, 1) = -8
# trial_stress(2, 2) = -10
# With compressive_strength = -1, the algorithm should return to trace(stress) = -1, or
# stress(0, 0) = 7
# stress(1, 1) = -3
# stress(2, 2) = -5
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[./TensorMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '1E-7*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '-4E-7*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '-5E-7*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
[../]
[./stress_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = f
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = f
[../]
[]
[UserObjects]
[./tensile_strength]
type = TensorMechanicsHardeningConstant
value = 2
[../]
[./compressive_strength]
type = TensorMechanicsHardeningConstant
value = -1
[../]
[./cap]
type = TensorMechanicsPlasticMeanCapTC
tensile_strength = tensile_strength
compressive_strength = compressive_strength
yield_function_tolerance = 1E-3
internal_constraint_tolerance = 1E-9
use_custom_returnMap = true
use_custom_cto = true
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0 1E7'
[../]
[./strain]
type = ComputeIncrementalSmallStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mean_cap]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = cap
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = small_deform4
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/tensor_mechanics/test/tests/mean_cap_TC/small_deform6.i)
# apply nonuniform stretch in x, y and z directions using
# Lame lambda = 0.7E7, Lame mu = 1.0E7,
# trial_stress(0, 0) = 2.9
# trial_stress(1, 1) = 10.9
# trial_stress(2, 2) = 14.9
# With tensile_strength = 2, decaying to zero at internal parameter = 4E-7
# via a Cubic, the algorithm should return to:
# internal parameter = 2.26829E-7
# trace(stress) = 0.799989 = tensile_strength
# stress(0, 0) = -6.4
# stress(1, 1) = 1.6
# stress(2, 2) = 5.6
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[./TensorMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '-1E-7*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '3E-7*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '5E-7*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
[../]
[./stress_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = f
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = f
[../]
[]
[UserObjects]
[./tensile_strength]
type = TensorMechanicsHardeningCubic
value_0 = 2
value_residual = 0
internal_limit = 4E-7
[../]
[./compressive_strength]
type = TensorMechanicsHardeningCubic
value_0 = -1
value_residual = 0
internal_limit = 1E-8
[../]
[./cap]
type = TensorMechanicsPlasticMeanCapTC
tensile_strength = tensile_strength
compressive_strength = compressive_strength
yield_function_tolerance = 1E-5
internal_constraint_tolerance = 1E-11
use_custom_returnMap = true
use_custom_cto = true
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0.7E7 1E7'
[../]
[./strain]
type = ComputeIncrementalSmallStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mean_cap]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-11
plastic_models = cap
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = small_deform6
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/tensor_mechanics/test/tests/mean_cap_TC/small_deform5.i)
# apply nonuniform stretch in x, y and z directions using
# Lame lambda = 0.7E7, Lame mu = 1.0E7,
# trial_stress(0, 0) = 2.9
# trial_stress(1, 1) = 10.9
# trial_stress(2, 2) = 14.9
# With tensile_strength = 2, decaying to zero at internal parameter = 4E-7
# via a Cubic, the algorithm should return to:
# internal parameter = 2.26829E-7
# trace(stress) = 0.799989 = tensile_strength
# stress(0, 0) = -6.4
# stress(1, 1) = 1.6
# stress(2, 2) = 5.6
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[./TensorMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = '-1E-7*x'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = '3E-7*y'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = '5E-7*z'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
[../]
[./stress_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = f
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = f
[../]
[]
[UserObjects]
[./tensile_strength]
type = TensorMechanicsHardeningCubic
value_0 = 2
value_residual = 0
internal_limit = 4E-7
[../]
[./compressive_strength]
type = TensorMechanicsHardeningCubic
value_0 = -1
value_residual = 0
internal_limit = 1E-8
[../]
[./cap]
type = TensorMechanicsPlasticMeanCapTC
tensile_strength = tensile_strength
compressive_strength = compressive_strength
yield_function_tolerance = 1E-5
internal_constraint_tolerance = 1E-11
use_custom_returnMap = false
use_custom_cto = false
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0.7E7 1E7'
[../]
[./strain]
type = ComputeIncrementalSmallStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mean_cap]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-11
plastic_models = cap
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = small_deform5
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/tensor_mechanics/test/tests/mean_cap_TC/small_deform7.i)
# apply nonuniform stretch in x, y and z directions using
# Lame lambda = 0.7E7, Lame mu = 1.0E7,
# trial_stress(0, 0) = 2.9
# trial_stress(1, 1) = 10.9
# trial_stress(2, 2) = 14.9
# With tensile_strength = 2, decaying to zero at internal parameter = 4E-7
# via a Cubic, the algorithm should return to:
# internal parameter = 2.26829E-7
# trace(stress) = 0.799989 = tensile_strength
# stress(0, 0) = -6.4
# stress(1, 1) = 1.6
# stress(2, 2) = 5.6
# THEN apply a nonuniform compression in x, y, and z so that
# trial_stress(0, 0)
# With compressive_strength = -1, decaying to -0.5 at internal parameter 1E-8
# via a Cubic, the algorithm should return to
# trial_stress(0, 0) = -3.1
# trial_stress(1, 1) = -3.1
# trial_stress(2, 2) = 2.9
# the algorithm should return to trace(stress) = -0.5 = compressive_strength
# stress(0, 0) = -2.1667
# stress(1, 1) = -2.1667
# stress(2, 2) = 3.8333
# and internal parameter = 2.0406E-7
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[./TensorMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[BCs]
[./x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'front back'
function = 'if(t<1.5,-1E-7*x,1E-7*x)'
[../]
[./y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'front back'
function = 'if(t<1.5,3E-7*y,1E-7*y)'
[../]
[./z]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front back'
function = 'if(t<1.5,5E-7*z,4E-7*z)'
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./f]
order = CONSTANT
family = MONOMIAL
[../]
[./intnl]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
[../]
[./stress_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./f]
type = MaterialStdVectorAux
index = 0
property = plastic_yield_function
variable = f
[../]
[./intnl]
type = MaterialStdVectorAux
index = 0
property = plastic_internal_parameter
variable = intnl
[../]
[]
[Postprocessors]
[./s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[../]
[./s_xy]
type = PointValue
point = '0 0 0'
variable = stress_xy
[../]
[./s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[../]
[./s_yy]
type = PointValue
point = '0 0 0'
variable = stress_yy
[../]
[./s_yz]
type = PointValue
point = '0 0 0'
variable = stress_yz
[../]
[./s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[../]
[./f]
type = PointValue
point = '0 0 0'
variable = f
[../]
[./intnl]
type = PointValue
point = '0 0 0'
variable = intnl
[../]
[]
[UserObjects]
[./tensile_strength]
type = TensorMechanicsHardeningCubic
value_0 = 2
value_residual = 0
internal_limit = 4E-7
[../]
[./compressive_strength]
type = TensorMechanicsHardeningCubic
value_0 = -1
value_residual = -0.5
internal_limit = 1E-8
[../]
[./cap]
type = TensorMechanicsPlasticMeanCapTC
tensile_strength = tensile_strength
compressive_strength = compressive_strength
yield_function_tolerance = 1E-5
internal_constraint_tolerance = 1E-11
use_custom_returnMap = true
use_custom_cto = true
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0.7E7 1E7'
[../]
[./strain]
type = ComputeIncrementalSmallStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./mean_cap]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-11
plastic_models = cap
[../]
[]
[Executioner]
end_time = 2
dt = 1
type = Transient
[]
[Outputs]
file_base = small_deform7
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/tensor_mechanics/test/tests/jacobian/cto22.i)
# MeanCapTC with tensile failure
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[GlobalParams]
block = 0
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[./TensorMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[UserObjects]
[./tensile_strength]
type = TensorMechanicsHardeningCubic
value_0 = 10
value_residual = 1
internal_limit = 10
[../]
[./compressive_strength]
type = TensorMechanicsHardeningCubic
value_0 = -10
value_residual = -1
internal_limit = 9
[../]
[./cap]
type = TensorMechanicsPlasticMeanCapTC
tensile_strength = tensile_strength
compressive_strength = compressive_strength
yield_function_tolerance = 1E-11
internal_constraint_tolerance = 1E-9
use_custom_cto = true
use_custom_returnMap = true
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '0.7 1'
[../]
[./strain]
type = ComputeIncrementalSmallStrain
displacements = 'disp_x disp_y disp_z'
eigenstrain_names = ini_stress
[../]
[./ini_stress]
type = ComputeEigenstrainFromInitialStress
initial_stress = '6 5 4 5 7 2 4 2 2'
eigenstrain_name = ini_stress
[../]
[./mc]
type = ComputeMultiPlasticityStress
ep_plastic_tolerance = 1E-11
plastic_models = cap
tangent_operator = nonlinear
min_stepsize = 1
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_atol -snes_rtol -snes_max_it -snes_type'
petsc_options_value = 'bcgs bjacobi 1E-15 1E-10 10000 test'
[../]
[]
[Executioner]
type = Transient
solve_type = Newton
[]