- 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 weak-plane tensile strength
C++ Type:UserObjectName
Controllable:No
Description:A TensorMechanicsHardening UserObject that defines hardening of the weak-plane 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.
TensorMechanicsPlasticWeakPlaneTensile
The TensorMechanicsPlasticWeakPlaneTensile 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 weak-plane tensile 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.
- 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.
- stress_coefficient1The yield function is stress_coefficient * stress_zz - tensile_strength
Default:1
C++ Type:double
Controllable:No
Description:The yield function is stress_coefficient * stress_zz - tensile_strength
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/weak_plane_tensile/large_deform2.i)
- (modules/tensor_mechanics/test/tests/weak_plane_tensile/small_deform_hard3.i)
- (modules/tensor_mechanics/test/tests/weak_plane_tensile/except1.i)
- (modules/tensor_mechanics/test/tests/jacobian/cto02.i)
- (modules/tensor_mechanics/test/tests/weak_plane_tensile/small_deform_hard2.i)
- (modules/tensor_mechanics/test/tests/weak_plane_tensile/small_deform_hard_cubic.i)
- (modules/tensor_mechanics/test/tests/multi/special_joint1.i)
- (modules/tensor_mechanics/test/tests/weak_plane_tensile/large_deform1.i)
- (modules/tensor_mechanics/test/tests/multi/mc_wpt_1.i)
- (modules/tensor_mechanics/test/tests/weak_plane_tensile/small_deform2.i)
- (modules/tensor_mechanics/test/tests/jacobian/cto03.i)
- (modules/tensor_mechanics/test/tests/multi/rock1.i)
- (modules/tensor_mechanics/test/tests/weak_plane_tensile/small_deform1.i)
- (modules/tensor_mechanics/test/tests/weak_plane_tensile/small_deform_hard1.i)
- (modules/tensor_mechanics/test/tests/multi/paper3.i)
Child Objects
(modules/tensor_mechanics/test/tests/weak_plane_tensile/large_deform2.i)
# large strain with weak-plane normal rotating with mesh
# First rotate mesh 45deg about x axis
# Then apply stretch in the y=z direction.
# This should create a pure tensile load (no shear), which
# should return to the yield surface.
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Modules/TensorMechanics/Master/all]
strain = FINITE
add_variables = true
generate_output = 'stress_xx stress_yy stress_yz stress_zz'
[]
[BCs]
# rotate:
# ynew = c*y + s*z. znew = -s*y + c*z
[bottomx]
type = FunctionDirichletBC
variable = disp_x
boundary = back
function = '0'
[]
[bottomy]
type = FunctionDirichletBC
variable = disp_y
boundary = back
function = '0.70710678*y+0.70710678*z-y'
[]
[bottomz]
type = FunctionDirichletBC
variable = disp_z
boundary = back
function = '-0.70710678*y+0.70710678*z-z'
[]
[topx]
type = FunctionDirichletBC
variable = disp_x
boundary = front
function = '0'
[]
[topy]
type = FunctionDirichletBC
variable = disp_y
boundary = front
function = '0.70710678*y+0.70710678*z-y+if(t>0,1,0)'
[]
[topz]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = '-0.70710678*y+0.70710678*z-z+if(t>0,1,0)'
[]
[]
[AuxVariables]
[yield_fcn]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[yield_fcn_auxk]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = yield_fcn
[]
[]
[Postprocessors]
[s_xx]
type = PointValue
point = '0 0 0'
variable = stress_xx
[]
[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 = yield_fcn
[]
[]
[UserObjects]
[str]
type = TensorMechanicsHardeningConstant
value = 1.0E6
[]
[wpt]
type = TensorMechanicsPlasticWeakPlaneTensile
tensile_strength = str
yield_function_tolerance = 1E-7
internal_constraint_tolerance = 1E-5
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric_isotropic
C_ijkl = '0 1E7'
[]
[mc]
type = ComputeMultiPlasticityStress
plastic_models = wpt
transverse_direction = '0 0 1'
ep_plastic_tolerance = 1E-9
[]
[]
[Executioner]
start_time = -1
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
exodus = true
[]
(modules/tensor_mechanics/test/tests/weak_plane_tensile/small_deform_hard3.i)
# Checking evolution tensile strength
# A single element is stretched by 1E-6*t in z direction, and
# the yield-surface evolution is mapped out
[GlobalParams]
displacements = 'x_disp y_disp z_disp'
[]
[Mesh]
type = GeneratedMesh
dim = 3
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Modules/TensorMechanics/Master/all]
strain = FINITE
add_variables = true
generate_output = 'stress_zz'
[]
[BCs]
[bottomx]
type = DirichletBC
variable = x_disp
boundary = back
value = 0.0
[]
[bottomy]
type = DirichletBC
variable = y_disp
boundary = back
value = 0.0
[]
[bottomz]
type = DirichletBC
variable = z_disp
boundary = back
value = 0.0
[]
[topx]
type = DirichletBC
variable = x_disp
boundary = front
value = 0
[]
[topy]
type = DirichletBC
variable = y_disp
boundary = front
value = 0
[]
[topz]
type = FunctionDirichletBC
variable = z_disp
boundary = front
function = 1E-6*t
[]
[]
[AuxVariables]
[wpt_internal]
order = CONSTANT
family = MONOMIAL
[]
[yield_fcn]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[wpt_internal]
type = MaterialStdVectorAux
property = plastic_internal_parameter
index = 0
variable = wpt_internal
[]
[yield_fcn_auxk]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = yield_fcn
[]
[]
[Postprocessors]
[wpt_internal]
type = PointValue
point = '0 0 0'
variable = wpt_internal
[]
[s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[]
[f]
type = PointValue
point = '0 0 0'
variable = yield_fcn
[]
[]
[UserObjects]
[str]
type = TensorMechanicsHardeningExponential
value_0 = 10
value_residual = 4
rate = 1E6
[]
[wpt]
type = TensorMechanicsPlasticWeakPlaneTensile
tensile_strength = str
yield_function_tolerance = 1E-6
internal_constraint_tolerance = 1E-11
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric_isotropic
C_ijkl = '0 1E7'
[]
[mc]
type = ComputeMultiPlasticityStress
plastic_models = wpt
transverse_direction = '0 0 1'
ep_plastic_tolerance = 1E-11
[]
[]
[Executioner]
end_time = 4
dt = 0.5
type = Transient
[]
[Outputs]
csv = true
[]
(modules/tensor_mechanics/test/tests/weak_plane_tensile/except1.i)
# checking for small deformation
[GlobalParams]
displacements = 'x_disp y_disp z_disp'
[]
[Mesh]
type = GeneratedMesh
dim = 3
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Modules/TensorMechanics/Master/all]
strain = FINITE
add_variables = true
generate_output = 'stress_xz stress_zx stress_yz stress_zz'
[]
[BCs]
[bottomx]
type = DirichletBC
variable = x_disp
boundary = back
value = 0.0
[]
[bottomy]
type = DirichletBC
variable = y_disp
boundary = back
value = 0.0
[]
[bottomz]
type = DirichletBC
variable = z_disp
boundary = back
value = 0.0
[]
[topx]
type = DirichletBC
variable = x_disp
boundary = front
value = 1E-6
[]
[topy]
type = DirichletBC
variable = y_disp
boundary = front
value = 1E-6
[]
[topz]
type = DirichletBC
variable = z_disp
boundary = front
value = 1E-6
[]
[]
[AuxVariables]
[yield_fcn]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[yield_fcn_auxk]
type = MaterialRealAux
property = weak_plane_tensile_yield_function
variable = yield_fcn
[]
[]
[Postprocessors]
[s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[]
[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 = yield_fcn
[]
[]
[UserObjects]
[str]
type = TensorMechanicsHardeningConstant
value = -1.0
[]
[wpt]
type = TensorMechanicsPlasticWeakPlaneTensile
tensile_strength = str
yield_function_tolerance = 1E-6
internal_constraint_tolerance = 1E-5
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric_isotropic
C_ijkl = '0 1E6'
[]
[mc]
type = ComputeMultiPlasticityStress
plastic_models = wpt
transverse_direction = '0 0 1'
ep_plastic_tolerance = 1E-5
[]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
(modules/tensor_mechanics/test/tests/jacobian/cto02.i)
# checking jacobian for linear plasticity (weak_plane_tensile)
# with hardening
[Mesh]
type = GeneratedMesh
dim = 3
[]
[GlobalParams]
block = 0
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[ICs]
[./disp_x]
type = RandomIC
variable = disp_x
min = -0.1
max = 0.1
[../]
[./disp_y]
type = RandomIC
variable = disp_y
min = -0.1
max = 0.1
[../]
[./disp_z]
type = RandomIC
variable = disp_z
min = -0.1
max = 0.1
[../]
[]
[Kernels]
[./TensorMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[UserObjects]
[./str]
type = TensorMechanicsHardeningConstant
value = 0
[../]
[./wpt]
type = TensorMechanicsPlasticWeakPlaneTensile
tensile_strength = str
yield_function_tolerance = 1E-6
internal_constraint_tolerance = 1E-5
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric_isotropic
C_ijkl = '1 2'
[../]
[./strain]
type = ComputeIncrementalSmallStrain
displacements = 'disp_x disp_y disp_z'
eigenstrain_names = ini_stress
[../]
[./ini_stress]
type = ComputeEigenstrainFromInitialStress
initial_stress = '1 2 3 2 -4 -5 3 -5 2'
eigenstrain_name = ini_stress
[../]
[./mc]
type = ComputeMultiPlasticityStress
tangent_operator = linear
plastic_models = wpt
transverse_direction = '0 0 1'
ep_plastic_tolerance = 1E-5
[../]
[]
[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/weak_plane_tensile/small_deform_hard2.i)
# Checking solution of hardening
# A single element is stretched by 1E-6 in z direction.
#
# Young's modulus = 20 MPa. Tensile strength = 10 Exp(-1E6*q) Pa
#
# The trial stress is
# trial_stress_zz = Youngs Modulus*Strain = 2E7*1E-6 = 20 Pa
#
# Therefore the equations we have to solve are
# 0 = f = stress_zz - 10 Exp(-1E6*q)
# 0 = epp = ga - (20 - stress_zz)/2E7
# 0 = intnl = q - ga
#
# The result is
# q = 0.76803905E-6
# stress_zz = 4.6392191 Pa
[GlobalParams]
displacements = 'x_disp y_disp z_disp'
[]
[Mesh]
type = GeneratedMesh
dim = 3
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Modules/TensorMechanics/Master/all]
strain = FINITE
add_variables = true
generate_output = 'stress_zz'
[]
[BCs]
[bottomx]
type = DirichletBC
variable = x_disp
boundary = back
value = 0.0
[]
[bottomy]
type = DirichletBC
variable = y_disp
boundary = back
value = 0.0
[]
[bottomz]
type = DirichletBC
variable = z_disp
boundary = back
value = 0.0
[]
[topx]
type = DirichletBC
variable = x_disp
boundary = front
value = 0
[]
[topy]
type = DirichletBC
variable = y_disp
boundary = front
value = 0
[]
[topz]
type = FunctionDirichletBC
variable = z_disp
boundary = front
function = 1E-6*t
[]
[]
[AuxVariables]
[wpt_internal]
order = CONSTANT
family = MONOMIAL
[]
[yield_fcn]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[wpt_internal]
type = MaterialStdVectorAux
property = plastic_internal_parameter
index = 0
variable = wpt_internal
[]
[yield_fcn_auxk]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = yield_fcn
[]
[]
[Postprocessors]
[wpt_internal]
type = PointValue
point = '0 0 0'
variable = wpt_internal
[]
[s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[]
[f]
type = PointValue
point = '0 0 0'
variable = yield_fcn
[]
[]
[UserObjects]
[str]
type = TensorMechanicsHardeningExponential
value_0 = 10
value_residual = 0
rate = 1E6
[]
[wpt]
type = TensorMechanicsPlasticWeakPlaneTensile
tensile_strength = str
yield_function_tolerance = 1E-6
internal_constraint_tolerance = 1E-11
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric_isotropic
C_ijkl = '0 1E7'
[]
[mc]
type = ComputeMultiPlasticityStress
plastic_models = wpt
transverse_direction = '0 0 1'
ep_plastic_tolerance = 1E-11
[]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
csv = true
[]
(modules/tensor_mechanics/test/tests/weak_plane_tensile/small_deform_hard_cubic.i)
# Checking evolution tensile strength for cubic hardening
# A single element is stretched by 1E-6*t in z direction, and
# the yield-surface evolution is mapped out
[GlobalParams]
displacements = 'x_disp y_disp z_disp'
[]
[Mesh]
type = GeneratedMesh
dim = 3
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Modules/TensorMechanics/Master/all]
strain = FINITE
add_variables = true
generate_output = 'stress_zz'
[]
[BCs]
[bottomx]
type = DirichletBC
variable = x_disp
boundary = back
value = 0.0
[]
[bottomy]
type = DirichletBC
variable = y_disp
boundary = back
value = 0.0
[]
[bottomz]
type = DirichletBC
variable = z_disp
boundary = back
value = 0.0
[]
[topx]
type = DirichletBC
variable = x_disp
boundary = front
value = 0
[]
[topy]
type = DirichletBC
variable = y_disp
boundary = front
value = 0
[]
[topz]
type = FunctionDirichletBC
variable = z_disp
boundary = front
function = 1E-6*t
[]
[]
[AuxVariables]
[wpt_internal]
order = CONSTANT
family = MONOMIAL
[]
[yield_fcn]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[wpt_internal]
type = MaterialStdVectorAux
property = plastic_internal_parameter
index = 0
variable = wpt_internal
[]
[yield_fcn_auxk]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = yield_fcn
[]
[]
[Postprocessors]
[wpt_internal]
type = PointValue
point = '0 0 0'
variable = wpt_internal
[]
[s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[]
[f]
type = PointValue
point = '0 0 0'
variable = yield_fcn
[]
[]
[UserObjects]
[str]
type = TensorMechanicsHardeningCubic
value_0 = 10
value_residual = 4
internal_limit = 0.000003
[]
[wpt]
type = TensorMechanicsPlasticWeakPlaneTensile
tensile_strength = str
yield_function_tolerance = 1E-6
internal_constraint_tolerance = 1E-11
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric_isotropic
C_ijkl = '0 1E7'
[]
[mc]
type = ComputeMultiPlasticityStress
plastic_models = wpt
transverse_direction = '0 0 1'
ep_plastic_tolerance = 1E-11
[]
[]
[Executioner]
end_time = 4
dt = 0.5
type = Transient
[]
[Outputs]
csv = true
[]
(modules/tensor_mechanics/test/tests/multi/special_joint1.i)
# Plasticity models:
# WeakPlaneTensile with strength = 1000Pa
# WeakPlaneShear with cohesion = 0.1MPa and friction angle = 25
#
# Lame lambda = 1GPa. Lame mu = 1.3GPa
#
# A line of elements is perturbed randomly, and return to the yield surface at each quadpoint is checked
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1000
ny = 125
nz = 1
xmin = 0
xmax = 1000
ymin = 0
ymax = 125
zmin = 0
zmax = 1
[]
[GlobalParams]
volumetric_locking_correction=true
[]
[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]
[./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
[../]
[./linesearch]
order = CONSTANT
family = MONOMIAL
[../]
[./ld]
order = CONSTANT
family = MONOMIAL
[../]
[./constr_added]
order = CONSTANT
family = MONOMIAL
[../]
[./iter]
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
[../]
[./linesearch]
type = MaterialRealAux
property = plastic_linesearch_needed
variable = linesearch
[../]
[./ld]
type = MaterialRealAux
property = plastic_linear_dependence_encountered
variable = ld
[../]
[./constr_added]
type = MaterialRealAux
property = plastic_constraints_added
variable = constr_added
[../]
[./iter]
type = MaterialRealAux
property = plastic_NR_iterations
variable = iter
[../]
[]
[Postprocessors]
[./max_iter]
type = ElementExtremeValue
variable = iter
outputs = console
[../]
[./av_linesearch]
type = ElementAverageValue
variable = linesearch
outputs = 'console csv'
[../]
[./av_ld]
type = ElementAverageValue
variable = ld
outputs = 'console csv'
[../]
[./av_constr_added]
type = ElementAverageValue
variable = constr_added
outputs = 'console csv'
[../]
[./av_iter]
type = ElementAverageValue
variable = iter
outputs = 'console csv'
[../]
[]
[UserObjects]
[./wpt_str]
type = TensorMechanicsHardeningConstant
value = 1000
[../]
[./wpt]
type = TensorMechanicsPlasticWeakPlaneTensile
tensile_strength = wpt_str
yield_function_tolerance = 1.0
internal_constraint_tolerance = 1.0E-7
[../]
[./wps_c]
type = TensorMechanicsHardeningConstant
value = 1.0E5
[../]
[./wps_tan_phi]
type = TensorMechanicsHardeningConstant
value = 0.466
[../]
[./wps_tan_psi]
type = TensorMechanicsHardeningConstant
value = 0.087
[../]
[./wps]
type = TensorMechanicsPlasticWeakPlaneShear
cohesion = wps_c
tan_friction_angle = wps_tan_phi
tan_dilation_angle = wps_tan_psi
smoother = 0
yield_function_tolerance = 1.0
internal_constraint_tolerance = 1.0E-7
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '1.0E9 1.3E9'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./multi]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-7
plastic_models = 'wpt wps'
max_NR_iterations = 5
specialIC = 'joint'
deactivation_scheme = 'safe'
min_stepsize = 1
max_stepsize_for_dumb = 1
debug_fspb = crash
debug_jac_at_stress = '10 0 0 0 10 0 0 0 10'
debug_jac_at_pm = '1 1 1 1'
debug_jac_at_intnl = '1 1 1 1'
debug_stress_change = 1E1
debug_pm_change = '1E-6 1E-6 1E-6 1E-6'
debug_intnl_change = '1E-6 1E-6 1E-6 1E-6'
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = special_joint1
exodus = false
csv = true
[]
(modules/tensor_mechanics/test/tests/weak_plane_tensile/large_deform1.i)
# rotate the mesh by 90degrees
# then pull in the z direction - should be no plasticity
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Modules/TensorMechanics/Master/all]
strain = FINITE
add_variables = true
decomposition_method = EigenSolution
generate_output = 'stress_xz stress_zx stress_yz stress_zz'
[]
[BCs]
# rotate:
# ynew = c*y + s*z. znew = -s*y + c*z
[bottomx]
type = FunctionDirichletBC
variable = disp_x
boundary = back
function = '0'
[]
[bottomy]
type = FunctionDirichletBC
variable = disp_y
boundary = back
function = '0*y+1*z-y'
[]
[bottomz]
type = FunctionDirichletBC
variable = disp_z
boundary = back
function = '-1*y+0*z-z+if(t>0,0.5-y,0)' # note that this uses original nodal values of (x,y,z)
[]
[topx]
type = FunctionDirichletBC
variable = disp_x
boundary = front
function = '0'
[]
[topy]
type = FunctionDirichletBC
variable = disp_y
boundary = front
function = '0*y+1*z-y'
[]
[topz]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = '-1*y+0*z-z+if(t>0,0.5-y,0)' # note that this uses original nodal values of (x,y,z)
[]
[]
[AuxVariables]
[yield_fcn]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[yield_fcn_auxk]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = yield_fcn
[]
[]
[Postprocessors]
[s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[]
[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 = yield_fcn
[]
[]
[UserObjects]
[str]
type = TensorMechanicsHardeningConstant
value = 1
[]
[wpt]
type = TensorMechanicsPlasticWeakPlaneTensile
tensile_strength = str
yield_function_tolerance = 1E-6
internal_constraint_tolerance = 1E-5
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric_isotropic
C_ijkl = '0 1E6'
[]
[mc]
type = ComputeMultiPlasticityStress
plastic_models = wpt
transverse_direction = '0 0 1'
ep_plastic_tolerance = 1E-5
[]
[]
[Executioner]
start_time = -1
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
exodus = true
[]
(modules/tensor_mechanics/test/tests/multi/mc_wpt_1.i)
# checking for small deformation
# A single element is stretched by 1E-6m in x,y and z directions.
# stress_zz = Youngs Modulus*Strain = 2E6*1E-6 = 2 Pa
# wpt_tensile_strength is set to 1Pa
# Then the final stress should return to the yeild surface and its value should be 1pa.
[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]
[./bottomx]
type = DirichletBC
variable = disp_x
boundary = back
value = 0.0
[../]
[./bottomy]
type = DirichletBC
variable = disp_y
boundary = back
value = 0.0
[../]
[./bottomz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0.0
[../]
[./topx]
type = DirichletBC
variable = disp_x
boundary = front
value = 0E-6
[../]
[./topy]
type = DirichletBC
variable = disp_y
boundary = front
value = 0E-6
[../]
[./topz]
type = DirichletBC
variable = disp_z
boundary = front
value = 1E-6
[../]
[]
[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
[../]
[]
[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
[../]
[]
[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
[../]
[]
[UserObjects]
[./mc_coh]
type = TensorMechanicsHardeningConstant
value = 100
[../]
[./mc_phi]
type = TensorMechanicsHardeningConstant
value = 60
convert_to_radians = true
[../]
[./mc_psi]
type = TensorMechanicsHardeningConstant
value = 5
convert_to_radians = true
[../]
[./mc]
type = TensorMechanicsPlasticMohrCoulomb
cohesion = mc_coh
friction_angle = mc_phi
dilation_angle = mc_psi
mc_tip_smoother = 4
mc_edge_smoother = 25
yield_function_tolerance = 1E-3
internal_constraint_tolerance = 1E-9
[../]
[./str]
type = TensorMechanicsHardeningConstant
value = 1
[../]
[./wpt]
type = TensorMechanicsPlasticWeakPlaneTensile
tensile_strength = str
yield_function_tolerance = 1E-6
internal_constraint_tolerance = 1E-5
[../]
[]
[Materials]
[./mc]
type = FiniteStrainMultiPlasticity
block = 0
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
fill_method = symmetric_isotropic
C_ijkl = '0 1E7'
ep_plastic_tolerance = 1E-9
plastic_models = 'mc wpt'
debug_fspb = crash
debug_jac_at_stress = '10 0 0 0 10 0 0 0 10'
debug_jac_at_pm = 1
debug_jac_at_intnl = 1
debug_stress_change = 1E-5
debug_pm_change = 1E-6
debug_intnl_change = 1E-6
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = mc_wpt_1
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/tensor_mechanics/test/tests/weak_plane_tensile/small_deform2.i)
# checking for small deformation
# A single element is stretched by 1E-6m in x,y and z directions.
# stress_zz = Youngs Modulus*Strain = 2E6*1E-6 = 2 Pa
# wpt_tensile_strength is set to 5Pa
# Since maximum stress which is 2Pa is less than tension cutoff, plastic yeilding shoud not be observed.
[GlobalParams]
displacements = 'x_disp y_disp z_disp'
[]
[Mesh]
type = GeneratedMesh
dim = 3
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Modules/TensorMechanics/Master/all]
strain = FINITE
add_variables = true
generate_output = 'stress_xz stress_zx stress_yz stress_zz'
[]
[BCs]
[bottomx]
type = DirichletBC
variable = x_disp
boundary = back
value = 0.0
[]
[bottomy]
type = DirichletBC
variable = y_disp
boundary = back
value = 0.0
[]
[bottomz]
type = DirichletBC
variable = z_disp
boundary = back
value = 0.0
[]
[topx]
type = DirichletBC
variable = x_disp
boundary = front
value = 1E-6
[]
[topy]
type = DirichletBC
variable = y_disp
boundary = front
value = 1E-6
[]
[topz]
type = DirichletBC
variable = z_disp
boundary = front
value = 1E-6
[]
[]
[AuxVariables]
[yield_fcn]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[yield_fcn_auxk]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = yield_fcn
[]
[]
[Postprocessors]
[s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[]
[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 = yield_fcn
[]
[]
[UserObjects]
[str]
type = TensorMechanicsHardeningConstant
value = 5
[]
[wpt]
type = TensorMechanicsPlasticWeakPlaneTensile
tensile_strength = str
yield_function_tolerance = 1E-6
internal_constraint_tolerance = 1E-5
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric_isotropic
C_ijkl = '0 1E6'
[]
[mc]
type = ComputeMultiPlasticityStress
plastic_models = wpt
transverse_direction = '0 0 1'
ep_plastic_tolerance = 1E-5
[]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
csv = true
[]
(modules/tensor_mechanics/test/tests/jacobian/cto03.i)
# checking jacobian for linear plasticity (weak_plane_tensile)
# with hardening
[Mesh]
type = GeneratedMesh
dim = 3
[]
[GlobalParams]
block = 0
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[ICs]
[./disp_x]
type = RandomIC
variable = disp_x
min = -0.1
max = 0.1
[../]
[./disp_y]
type = RandomIC
variable = disp_y
min = -0.1
max = 0.1
[../]
[./disp_z]
type = RandomIC
variable = disp_z
min = -0.1
max = 0.1
[../]
[]
[Kernels]
[./TensorMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[UserObjects]
[./str]
type = TensorMechanicsHardeningCubic
value_0 = 0
value_residual = 1
internal_limit = 1
[../]
[./wpt]
type = TensorMechanicsPlasticWeakPlaneTensile
tensile_strength = str
yield_function_tolerance = 1E-6
internal_constraint_tolerance = 1E-5
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric_isotropic
C_ijkl = '1 2'
[../]
[./strain]
type = ComputeIncrementalSmallStrain
displacements = 'disp_x disp_y disp_z'
eigenstrain_names = ini_stress
[../]
[./ini_stress]
type = ComputeEigenstrainFromInitialStress
initial_stress = '1 2 3 2 -4 -5 3 -5 2'
eigenstrain_name = ini_stress
[../]
[./mc]
type = ComputeMultiPlasticityStress
tangent_operator = linear
plastic_models = wpt
transverse_direction = '0 0 1'
ep_plastic_tolerance = 1E-5
[../]
[]
[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/multi/rock1.i)
# Plasticity models:
# Mohr-Coulomb with cohesion = 40MPa, friction angle = 35deg, dilation angle = 10deg
# Tensile with strength = 1MPa
# WeakPlaneShear with cohesion = 1MPa, friction angle = 25deg, dilation angle = 25deg
# WeakPlaneTensile with strength = 0.01MPa
#
# Lame lambda = 1GPa. Lame mu = 1.3GPa
#
# A line of elements is perturbed randomly, and return to the yield surface at each quadpoint is checked
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1000
ny = 1234
nz = 1
xmin = 0
xmax = 1000
ymin = 0
ymax = 1234
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]
[./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
[../]
[./f0]
order = CONSTANT
family = MONOMIAL
[../]
[./f1]
order = CONSTANT
family = MONOMIAL
[../]
[./f2]
order = CONSTANT
family = MONOMIAL
[../]
[./f3]
order = CONSTANT
family = MONOMIAL
[../]
[./int0]
order = CONSTANT
family = MONOMIAL
[../]
[./int1]
order = CONSTANT
family = MONOMIAL
[../]
[./int2]
order = CONSTANT
family = MONOMIAL
[../]
[./int3]
order = CONSTANT
family = MONOMIAL
[../]
[./iter]
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
[../]
[./f0]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = f0
[../]
[./f1]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 1
variable = f1
[../]
[./f2]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 2
variable = f2
[../]
[./f3]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 3
variable = f3
[../]
[./int0]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 0
variable = int0
[../]
[./int1]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 1
variable = int1
[../]
[./int2]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 2
variable = int2
[../]
[./int3]
type = MaterialStdVectorAux
property = plastic_internal_parameter
factor = 1E6
index = 3
variable = int3
[../]
[./iter]
type = MaterialRealAux
property = plastic_NR_iterations
variable = iter
[../]
[]
[Postprocessors]
[./raw_f0]
type = ElementExtremeValue
variable = f0
outputs = console
[../]
[./raw_f1]
type = ElementExtremeValue
variable = f1
outputs = console
[../]
[./raw_f2]
type = ElementExtremeValue
variable = f2
outputs = console
[../]
[./raw_f3]
type = ElementExtremeValue
variable = f3
outputs = console
[../]
[./iter]
type = ElementExtremeValue
variable = iter
outputs = console
[../]
[./f0]
type = FunctionValuePostprocessor
function = should_be_zero0_fcn
[../]
[./f1]
type = FunctionValuePostprocessor
function = should_be_zero1_fcn
[../]
[./f2]
type = FunctionValuePostprocessor
function = should_be_zero2_fcn
[../]
[./f3]
type = FunctionValuePostprocessor
function = should_be_zero3_fcn
[../]
[]
[Functions]
[./should_be_zero0_fcn]
type = ParsedFunction
value = 'if(a<1E-1,0,a)'
vars = 'a'
vals = 'raw_f0'
[../]
[./should_be_zero1_fcn]
type = ParsedFunction
value = 'if(a<1E-1,0,a)'
vars = 'a'
vals = 'raw_f1'
[../]
[./should_be_zero2_fcn]
type = ParsedFunction
value = 'if(a<1E-1,0,a)'
vars = 'a'
vals = 'raw_f2'
[../]
[./should_be_zero3_fcn]
type = ParsedFunction
value = 'if(a<1E-1,0,a)'
vars = 'a'
vals = 'raw_f3'
[../]
[]
[UserObjects]
[./mc_coh]
type = TensorMechanicsHardeningConstant
value = 4E7
[../]
[./mc_phi]
type = TensorMechanicsHardeningConstant
value = 35
convert_to_radians = true
[../]
[./mc_psi]
type = TensorMechanicsHardeningConstant
value = 10
convert_to_radians = true
[../]
[./mc]
type = TensorMechanicsPlasticMohrCoulomb
cohesion = mc_coh
friction_angle = mc_phi
dilation_angle = mc_psi
mc_tip_smoother = 4E6
yield_function_tolerance = 1.0E-1
internal_constraint_tolerance = 1.0E-7
[../]
[./ts]
type = TensorMechanicsHardeningConstant
value = 1E6
[../]
[./tensile]
type = TensorMechanicsPlasticTensile
tensile_strength = ts
tensile_tip_smoother = 1E5
yield_function_tolerance = 1.0E-1
internal_constraint_tolerance = 1.0E-7
[../]
[./coh]
type = TensorMechanicsHardeningConstant
value = 1E6
[../]
[./tanphi]
type = TensorMechanicsHardeningConstant
value = 0.46630766
[../]
[./tanpsi]
type = TensorMechanicsHardeningConstant
value = 0.46630766
[../]
[./wps]
type = TensorMechanicsPlasticWeakPlaneShear
cohesion = coh
tan_friction_angle = tanphi
tan_dilation_angle = tanpsi
smoother = 1E5
yield_function_tolerance = 1.0E-1
internal_constraint_tolerance = 1.0E-7
[../]
[./str]
type = TensorMechanicsHardeningConstant
value = 0.01E6
[../]
[./wpt]
type = TensorMechanicsPlasticWeakPlaneTensile
tensile_strength = str
yield_function_tolerance = 1.0E-1
internal_constraint_tolerance = 1.0E-7
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '1E9 1.3E9'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./multi]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-7
plastic_models = 'mc tensile wps wpt'
deactivation_scheme = 'optimized_to_safe_to_dumb'
max_NR_iterations = 20
min_stepsize = 1E-4
max_stepsize_for_dumb = 1E-3
debug_fspb = crash
debug_jac_at_stress = '10 0 0 0 10 0 0 0 10'
debug_jac_at_pm = '1 1 1 1'
debug_jac_at_intnl = '1 1 1 1'
debug_stress_change = 1E1
debug_pm_change = '1E-6 1E-6 1E-6 1E-6'
debug_intnl_change = '1E-6 1E-6 1E-6 1E-6'
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = rock1
exodus = false
[./csv]
type = CSV
[../]
[]
(modules/tensor_mechanics/test/tests/weak_plane_tensile/small_deform1.i)
# checking for small deformation
# A single element is stretched by 1E-6m in x,y and z directions.
# stress_zz = Youngs Modulus*Strain = 2E6*1E-6 = 2 Pa
# wpt_tensile_strength is set to 1Pa
# Then the final stress should return to the yeild surface and its value should be 1pa.
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Modules/TensorMechanics/Master/all]
strain = FINITE
add_variables = true
generate_output = 'stress_xz stress_zx stress_yz stress_zz'
[]
[BCs]
[bottomx]
type = DirichletBC
variable = disp_x
boundary = back
value = 0.0
[]
[bottomy]
type = DirichletBC
variable = disp_y
boundary = back
value = 0.0
[]
[bottomz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0.0
[]
[topx]
type = DirichletBC
variable = disp_x
boundary = front
value = 0E-6
[]
[topy]
type = DirichletBC
variable = disp_y
boundary = front
value = 0E-6
[]
[topz]
type = DirichletBC
variable = disp_z
boundary = front
value = 1E-6
[]
[]
[AuxVariables]
[yield_fcn]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[yield_fcn_auxk]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = yield_fcn
[]
[]
[Postprocessors]
[s_xz]
type = PointValue
point = '0 0 0'
variable = stress_xz
[]
[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 = yield_fcn
[]
[]
[UserObjects]
[str]
type = TensorMechanicsHardeningConstant
value = 1
[]
[wpt]
type = TensorMechanicsPlasticWeakPlaneTensile
tensile_strength = str
yield_function_tolerance = 1E-6
internal_constraint_tolerance = 1E-5
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric_isotropic
C_ijkl = '0 1E6'
[]
[mc]
type = ComputeMultiPlasticityStress
plastic_models = wpt
transverse_direction = '0 0 1'
ep_plastic_tolerance = 1E-5
[]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
csv = true
[]
(modules/tensor_mechanics/test/tests/weak_plane_tensile/small_deform_hard1.i)
# Checking internal-parameter evolution
# A single element is stretched by 1E-6*t in z directions.
#
# Young's modulus = 20 MPa. Tensile strength = 10 Pa
#
# There are two time steps.
# In the first
# trial stress_zz = Youngs Modulus*Strain = 2E7*1E-6 = 20 Pa
# so this returns to stress_zz = 10 Pa, and half of the deformation
# goes to plastic strain, yielding ep_zz_plastic = 0.5E-6
# In the second
# trial stress_zz = 10 + Youngs Modulus*(Strain increment) = 10 + 2E7*1E-6 = 30 Pa
# so this returns to stress_zz = 10 Pa, and all of the deformation
# goes to plastic strain, yielding ep_zz_plastic increment = 1E-6,
# so total plastic strain_zz = 1.5E-6.
[GlobalParams]
displacements = 'x_disp y_disp z_disp'
[]
[Mesh]
type = GeneratedMesh
dim = 3
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[Modules/TensorMechanics/Master/all]
strain = FINITE
add_variables = true
generate_output = 'stress_zz'
[]
[BCs]
[bottomx]
type = DirichletBC
variable = x_disp
boundary = back
value = 0.0
[]
[bottomy]
type = DirichletBC
variable = y_disp
boundary = back
value = 0.0
[]
[bottomz]
type = DirichletBC
variable = z_disp
boundary = back
value = 0.0
[]
[topx]
type = DirichletBC
variable = x_disp
boundary = front
value = 0
[]
[topy]
type = DirichletBC
variable = y_disp
boundary = front
value = 0
[]
[topz]
type = FunctionDirichletBC
variable = z_disp
boundary = front
function = 1E-6*t
[]
[]
[AuxVariables]
[wpt_internal]
order = CONSTANT
family = MONOMIAL
[]
[yield_fcn]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[wpt_internal]
type = MaterialStdVectorAux
property = plastic_internal_parameter
index = 0
variable = wpt_internal
[]
[yield_fcn_auxk]
type = MaterialStdVectorAux
property = plastic_yield_function
index = 0
variable = yield_fcn
[]
[]
[Postprocessors]
[wpt_internal]
type = PointValue
point = '0 0 0'
variable = wpt_internal
[]
[s_zz]
type = PointValue
point = '0 0 0'
variable = stress_zz
[]
[f]
type = PointValue
point = '0 0 0'
variable = yield_fcn
[]
[]
[UserObjects]
[str]
type = TensorMechanicsHardeningConstant
value = 10
[]
[wpt]
type = TensorMechanicsPlasticWeakPlaneTensile
tensile_strength = str
yield_function_tolerance = 1E-6
internal_constraint_tolerance = 1E-11
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric_isotropic
C_ijkl = '0 1E7'
[]
[mc]
type = ComputeMultiPlasticityStress
plastic_models = wpt
transverse_direction = '0 0 1'
ep_plastic_tolerance = 1E-11
[]
[]
[Executioner]
end_time = 2
dt = 1
type = Transient
[]
[Outputs]
csv = true
[]
(modules/tensor_mechanics/test/tests/multi/paper3.i)
# This runs the third example models described in the 'MultiSurface' plasticity paper
# Just change the deactivation_scheme
#
# Plasticity models:
# Mohr-Coulomb with cohesion = 40MPa, friction angle = 35deg, dilation angle = 5deg
# Tensile with strength = 1MPa
# WeakPlaneTensile with strength = 1000Pa
# WeakPlaneShear with cohesion = 0.1MPa and friction angle = 25, dilation angle = 5deg
#
# Lame lambda = 1.2GPa. Lame mu = 1.2GPa (Young = 3GPa, poisson = 0.5)
#
# A line of elements is perturbed randomly, and return to the yield surface at each quadpoint is checked
[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]
[../]
[]
[GlobalParams]
volumetric_locking_correction=true
[]
[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]
[./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
[../]
[./linesearch]
order = CONSTANT
family = MONOMIAL
[../]
[./ld]
order = CONSTANT
family = MONOMIAL
[../]
[./constr_added]
order = CONSTANT
family = MONOMIAL
[../]
[./iter]
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
[../]
[./linesearch]
type = MaterialRealAux
property = plastic_linesearch_needed
variable = linesearch
[../]
[./ld]
type = MaterialRealAux
property = plastic_linear_dependence_encountered
variable = ld
[../]
[./constr_added]
type = MaterialRealAux
property = plastic_constraints_added
variable = constr_added
[../]
[./iter]
type = MaterialRealAux
property = plastic_NR_iterations
variable = iter
[../]
[]
[Postprocessors]
[./max_iter]
type = ElementExtremeValue
variable = iter
outputs = console
[../]
[./av_iter]
type = ElementAverageValue
variable = iter
outputs = 'console csv'
[../]
[./av_linesearch]
type = ElementAverageValue
variable = linesearch
outputs = 'console csv'
[../]
[./av_ld]
type = ElementAverageValue
variable = ld
outputs = 'console csv'
[../]
[./av_constr_added]
type = ElementAverageValue
variable = constr_added
outputs = 'console csv'
[../]
[]
[UserObjects]
[./mc_coh]
type = TensorMechanicsHardeningConstant
value = 4E7
[../]
[./mc_phi]
type = TensorMechanicsHardeningConstant
value = 35
convert_to_radians = true
[../]
[./mc_psi]
type = TensorMechanicsHardeningConstant
value = 5
convert_to_radians = true
[../]
[./mc]
type = TensorMechanicsPlasticMohrCoulombMulti
cohesion = mc_coh
friction_angle = mc_phi
dilation_angle = mc_psi
yield_function_tolerance = 1.0
shift = 1.0
internal_constraint_tolerance = 1.0E-7
[../]
[./mc_smooth]
type = TensorMechanicsPlasticMohrCoulomb
cohesion = mc_coh
friction_angle = mc_phi
dilation_angle = mc_psi
mc_tip_smoother = 4E6
yield_function_tolerance = 1.0
internal_constraint_tolerance = 1.0E-7
[../]
[./ts]
type = TensorMechanicsHardeningConstant
value = 1E6
[../]
[./tensile]
type = TensorMechanicsPlasticTensileMulti
tensile_strength = ts
yield_function_tolerance = 1.0
shift = 1.0
internal_constraint_tolerance = 1.0E-7
use_custom_returnMap = false
use_custom_cto = false
[../]
[./tensile_smooth]
type = TensorMechanicsPlasticTensile
tensile_strength = ts
tensile_tip_smoother = 1E5
yield_function_tolerance = 1.0
internal_constraint_tolerance = 1.0E-7
[../]
[./wpt_str]
type = TensorMechanicsHardeningConstant
value = 1.0E3
[../]
[./wpt]
type = TensorMechanicsPlasticWeakPlaneTensile
tensile_strength = wpt_str
yield_function_tolerance = 1.0
internal_constraint_tolerance = 1.0E-7
[../]
[./wps_c]
type = TensorMechanicsHardeningConstant
value = 1.0E5
[../]
[./wps_tan_phi]
type = TensorMechanicsHardeningConstant
value = 0.466
[../]
[./wps_tan_psi]
type = TensorMechanicsHardeningConstant
value = 0.087
[../]
[./wps]
type = TensorMechanicsPlasticWeakPlaneShear
cohesion = wps_c
tan_friction_angle = wps_tan_phi
tan_dilation_angle = wps_tan_psi
smoother = 1.0E4
yield_function_tolerance = 1.0
internal_constraint_tolerance = 1.0E-7
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '1.2E9 1.2E9'
[../]
[./strain]
type = ComputeFiniteStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./multi]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-7
plastic_models = 'tensile_smooth mc_smooth wpt wps'
max_NR_iterations = 30
specialIC = 'none'
deactivation_scheme = 'optimized'
min_stepsize = 1E-6
max_stepsize_for_dumb = 1E-2
debug_fspb = crash
debug_jac_at_stress = '10 0 0 0 10 0 0 0 10'
debug_jac_at_pm = '1 1 1 1'
debug_jac_at_intnl = '1 1 1 1'
debug_stress_change = 1E1
debug_pm_change = '1E-6 1E-6 1E-6 1E-6'
debug_intnl_change = '1E-6 1E-6 1E-6 1E-6'
[../]
[]
[Executioner]
end_time = 1
dt = 1
type = Transient
[]
[Outputs]
file_base = paper3
exodus = false
csv = true
[]
(modules/tensor_mechanics/include/userobjects/TensorMechanicsPlasticWeakPlaneTensileN.h)
// This file is part of the MOOSE framework
// https://www.mooseframework.org
//
// All rights reserved, see COPYRIGHT for full restrictions
// https://github.com/idaholab/moose/blob/master/COPYRIGHT
//
// Licensed under LGPL 2.1, please see LICENSE for details
// https://www.gnu.org/licenses/lgpl-2.1.html
#pragma once
#include "TensorMechanicsPlasticWeakPlaneTensile.h"
/**
* Rate-independent associative weak-plane tensile failure
* with hardening/softening, and normal direction specified
*/
class TensorMechanicsPlasticWeakPlaneTensileN : public TensorMechanicsPlasticWeakPlaneTensile
{
public:
static InputParameters validParams();
TensorMechanicsPlasticWeakPlaneTensileN(const InputParameters & parameters);
virtual std::string modelName() const override;
protected:
Real yieldFunction(const RankTwoTensor & stress, Real intnl) const override;
RankTwoTensor dyieldFunction_dstress(const RankTwoTensor & stress, Real intnl) const override;
Real dyieldFunction_dintnl(const RankTwoTensor & stress, Real intnl) const override;
RankTwoTensor flowPotential(const RankTwoTensor & stress, Real intnl) const override;
RankFourTensor dflowPotential_dstress(const RankTwoTensor & stress, Real intnl) const override;
RankTwoTensor dflowPotential_dintnl(const RankTwoTensor & stress, Real intnl) const override;
/// Unit normal inputted by user
RealVectorValue _input_n;
/// Flow direction, which is constant in this case
RankTwoTensor _df_dsig;
/// This rotation matrix rotates _input_n to (0, 0, 1)
RealTensorValue _rot;
};