- base_nameOptional parameter that allows the user to define multiple mechanics material systems on the same block, i.e. for multiple phases
C++ Type:std::string
Controllable:No
Description:Optional parameter that allows the user to define multiple mechanics material systems on the same block, i.e. for multiple phases
- blockThe list of blocks (ids or names) that this object will be applied
C++ Type:std::vector<SubdomainName>
Controllable:No
Description:The list of blocks (ids or names) that this object will be applied
- boundaryThe list of boundaries (ids or names) from the mesh where this object applies
C++ Type:std::vector<BoundaryName>
Controllable:No
Description:The list of boundaries (ids or names) from the mesh where this object applies
- computeTrueWhen false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies.
Default:True
C++ Type:bool
Controllable:No
Description:When false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies.
- constant_onNONEWhen ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped
Default:NONE
C++ Type:MooseEnum
Controllable:No
Description:When ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped
- declare_suffixAn optional suffix parameter that can be appended to any declared properties. The suffix will be prepended with a '_' character.
C++ Type:MaterialPropertyName
Controllable:No
Description:An optional suffix parameter that can be appended to any declared properties. The suffix will be prepended with a '_' character.
- inelastic_strain_namesNames of inelastic strain properties
C++ Type:std::vector<MaterialPropertyName>
Controllable:No
Description:Names of inelastic strain properties
- 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_interpolated_stateFalseFor the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
Default:False
C++ Type:bool
Controllable:No
Description:For the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
Compute Strain Increment Based Stress
Compute stress after subtracting inelastic strain increments
Description
This stress calculator finds the value of the stress as a function of the elastic strain increment when a series of inelastic strains are specified in the input file. The stress is calculated as (1) where is the stress and is the elasticity tensor of the material. The elastic strain increment, is found by subtracting the sum of the inelastic strains from the mechanical strain: (2) where is the mechanical strain and is the inelastic strain. In the solid mechanics module mechanical strain is defined as the sum of the elastic and inelastic (e.g. creep and/or plasticity) strains.
Example Input File
[./stress]
type = ComputeStrainIncrementBasedStress
[../]
(modules/solid_mechanics/test/tests/plane_stress/weak_plane_stress_incremental.i)Input Parameters
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector<std::string>
Controllable:No
Description:Adds user-defined labels for accessing object parameters via control logic.
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Controllable:Yes
Description:Set the enabled status of the MooseObject.
- implicitTrueDetermines whether this object is calculated using an implicit or explicit form
Default:True
C++ Type:bool
Controllable:No
Description:Determines whether this object is calculated using an implicit or explicit form
- seed0The seed for the master random number generator
Default:0
C++ Type:unsigned int
Controllable:No
Description:The seed for the master random number generator
Advanced Parameters
- output_propertiesList of material properties, from this material, to output (outputs must also be defined to an output type)
C++ Type:std::vector<std::string>
Controllable:No
Description:List of material properties, from this material, to output (outputs must also be defined to an output type)
- outputsnone Vector of output names where you would like to restrict the output of variables(s) associated with this object
Default:none
C++ Type:std::vector<OutputName>
Controllable:No
Description:Vector of output names where you would like to restrict the output of variables(s) associated with this object
Outputs Parameters
Input Files
- (modules/combined/test/tests/elastic_patch/ad_elastic_patch_rspherical.i)
- (modules/combined/test/tests/linear_elasticity/linear_anisotropic_material.i)
- (modules/solid_mechanics/test/tests/plane_stress/weak_plane_stress_incremental.i)
- (modules/combined/test/tests/DiffuseCreep/variable_base_eigen_strain.i)
- (modules/combined/test/tests/elastic_patch/elastic_patch_plane_strain.i)
- (modules/combined/test/tests/elastic_patch/elastic_patch_rspherical.i)
- (modules/solid_mechanics/test/tests/1D_axisymmetric/axisymm_gps_incremental.i)
- (modules/combined/test/tests/DiffuseCreep/stress.i)
- (modules/combined/test/tests/elastic_thermal_patch/elastic_thermal_jacobian_rz_smp.i)
- (modules/combined/test/tests/elastic_patch/elastic_patch_rz.i)
- (modules/combined/test/tests/elastic_patch/ad_elastic_patch_rz.i)
- (modules/solid_mechanics/test/tests/1D_axisymmetric/axisymmetric_gps_incremental.i)
- (modules/combined/test/tests/elastic_patch/ad_elastic_patch_plane_strain.i)
- (modules/combined/test/tests/elastic_thermal_patch/elastic_thermal_patch_rz_smp.i)
- (modules/solid_mechanics/test/tests/generalized_plane_strain/generalized_plane_strain_increment.i)
- (modules/combined/test/tests/DiffuseCreep/stress_flux_n_gb_relax.i)
- (modules/combined/test/tests/thermal_strain/thermal_strain.i)
- (modules/combined/test/tests/DiffuseCreep/stress_based_chem_pot.i)
- (modules/combined/test/tests/elastic_thermal_patch/elastic_thermal_patch_rz.i)
- (modules/solid_mechanics/test/tests/1D_axisymmetric/axisymm_plane_strain_incremental.i)
References
No citations exist within this document.(modules/solid_mechanics/test/tests/plane_stress/weak_plane_stress_incremental.i)
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y'
temperature = temp
out_of_plane_strain = strain_zz
[]
[Mesh]
[./square]
type = GeneratedMeshGenerator
dim = 2
nx = 2
ny = 2
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./strain_zz]
[../]
[]
[AuxVariables]
[./temp]
[../]
[./nl_strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Postprocessors]
[./react_z]
type = MaterialTensorIntegral
rank_two_tensor = stress
index_i = 2
index_j = 2
[../]
[./min_strain_zz]
type = NodalExtremeValue
variable = strain_zz
value_type = min
[../]
[./max_strain_zz]
type = NodalExtremeValue
variable = strain_zz
value_type = max
[../]
[]
[Physics/SolidMechanics/QuasiStatic]
[plane_stress]
planar_formulation = WEAK_PLANE_STRESS
strain = SMALL
incremental = true
generate_output = 'stress_xx stress_xy stress_yy stress_zz strain_xx strain_xy strain_yy'
eigenstrain_names = eigenstrain
[]
[]
[AuxKernels]
[./tempfuncaux]
type = FunctionAux
variable = temp
function = tempfunc
use_displaced_mesh = false
[../]
[./strain_zz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = nl_strain_zz
index_i = 2
index_j = 2
[../]
[]
[Functions]
[./pull]
type = PiecewiseLinear
x='0 1 100'
y='0 0.00 0.00'
[../]
[./tempfunc]
type = ParsedFunction
expression = '(1 - x) * t'
[../]
[]
[BCs]
[./bottomx]
type = DirichletBC
boundary = 0
variable = disp_x
value = 0.0
[../]
[./bottomy]
type = DirichletBC
boundary = 0
variable = disp_y
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.3
youngs_modulus = 1e6
[../]
[./thermal_strain]
type = ComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 0.02
stress_free_temperature = 0.5
eigenstrain_name = eigenstrain
[../]
[./stress]
type = ComputeStrainIncrementBasedStress
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
line_search = none
# controls for linear iterations
l_max_its = 100
l_tol = 1e-06
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-14
nl_abs_tol = 1e-12
# time control
start_time = 0.0
dt = 1.0
dtmin = 1.0
end_time = 2.0
[]
[Outputs]
exodus = true
[]
(modules/combined/test/tests/elastic_patch/ad_elastic_patch_rspherical.i)
#
# Patch test for 1D spherical elements
#
# The 1D mesh is pinned at x=0. The displacement at the outer node is set to
# 3e-3*X where X is the x-coordinate of that node. That gives a strain of
# 3e-3 for the x, y, and z directions.
#
# Young's modulus is 1e6, and Poisson's ratio is 0.25. This gives:
#
# Stress xx, yy, zz = E/(1+nu)/(1-2nu)*strain*((1-nu) + nu + nu) = 6000
#
[GlobalParams]
displacements = 'disp_x'
temperature = temp
[]
[Mesh]
file = elastic_patch_rspherical.e
coord_type = RSPHERICAL
[]
[Variables]
[disp_x]
[]
[temp]
initial_condition = 117.56
[]
[]
[Modules/TensorMechanics/Master/All]
strain = SMALL
incremental = true
add_variables = true
generate_output = 'stress_xx stress_yy stress_zz'
[]
[Kernels]
[heat]
type = TimeDerivative
variable = temp
[]
[]
[BCs]
[ur]
type = FunctionDirichletBC
variable = disp_x
boundary = '1 2'
function = '3e-3*x'
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.25
[]
[stress]
type = ComputeStrainIncrementBasedStress
[]
[]
[Materials]
[density]
type = ADDensity
density = 0.283
outputs = all
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
end_time = 1.0
[]
[Outputs]
exodus = true
[]
(modules/combined/test/tests/linear_elasticity/linear_anisotropic_material.i)
# This input file is designed to test the LinearGeneralAnisotropicMaterial class. This test is
# for regression testing. This just takes the material properties and puts them into
# aux variables; the diffusion kernel is just to have a simple kernel to run the test.
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
nz = 0
xmin = 0
xmax = 50
ymin = 0
ymax = 50
zmin = 0
zmax = 0
elem_type = QUAD4
[]
[Variables]
[./diffused]
[../]
[]
[Modules/TensorMechanics/Master/All]
strain = SMALL
incremental = true
add_variables = true
[]
[AuxVariables]
[./C11]
order = CONSTANT
family = MONOMIAL
[../]
[./C12]
order = CONSTANT
family = MONOMIAL
[../]
[./C13]
order = CONSTANT
family = MONOMIAL
[../]
[./C14]
order = CONSTANT
family = MONOMIAL
[../]
[./C15]
order = CONSTANT
family = MONOMIAL
[../]
[./C16]
order = CONSTANT
family = MONOMIAL
[../]
[./C22]
order = CONSTANT
family = MONOMIAL
[../]
[./C23]
order = CONSTANT
family = MONOMIAL
[../]
[./C24]
order = CONSTANT
family = MONOMIAL
[../]
[./C25]
order = CONSTANT
family = MONOMIAL
[../]
[./C26]
order = CONSTANT
family = MONOMIAL
[../]
[./C33]
order = CONSTANT
family = MONOMIAL
[../]
[./C34]
order = CONSTANT
family = MONOMIAL
[../]
[./C35]
order = CONSTANT
family = MONOMIAL
[../]
[./C36]
order = CONSTANT
family = MONOMIAL
[../]
[./C44]
order = CONSTANT
family = MONOMIAL
[../]
[./C45]
order = CONSTANT
family = MONOMIAL
[../]
[./C46]
order = CONSTANT
family = MONOMIAL
[../]
[./C55]
order = CONSTANT
family = MONOMIAL
[../]
[./C56]
order = CONSTANT
family = MONOMIAL
[../]
[./C66]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[./diff]
type = Diffusion
variable = diffused
[../]
[]
[AuxKernels]
[./matl_C11]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 0
index_j = 0
index_k = 0
index_l = 0
variable = C11
[../]
[./matl_C12]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 0
index_j = 0
index_k = 1
index_l = 1
variable = C12
[../]
[./matl_C13]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 0
index_j = 0
index_k = 2
index_l = 2
variable = C13
[../]
[./matl_C14]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 0
index_j = 0
index_k = 1
index_l = 2
variable = C14
[../]
[./matl_C15]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 0
index_j = 0
index_k = 0
index_l = 2
variable = C15
[../]
[./matl_C16]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 0
index_j = 0
index_k = 0
index_l = 1
variable = C16
[../]
[./matl_C22]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 1
index_j = 1
index_k = 1
index_l = 1
variable = C22
[../]
[./matl_C23]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 1
index_j = 1
index_k = 2
index_l = 2
variable = C23
[../]
[./matl_C24]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 1
index_j = 1
index_k = 1
index_l = 2
variable = C24
[../]
[./matl_C25]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 1
index_j = 1
index_k = 0
index_l = 2
variable = C25
[../]
[./matl_C26]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 1
index_j = 1
index_k = 0
index_l = 1
variable = C26
[../]
[./matl_C33]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 2
index_j = 2
index_k = 2
index_l = 2
variable = C33
[../]
[./matl_C34]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 2
index_j = 2
index_k = 1
index_l = 2
variable = C34
[../]
[./matl_C35]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 2
index_j = 2
index_k = 0
index_l = 2
variable = C35
[../]
[./matl_C36]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 2
index_j = 2
index_k = 0
index_l = 1
variable = C36
[../]
[./matl_C44]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 1
index_j = 2
index_k = 1
index_l = 2
variable = C44
[../]
[./matl_C45]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 1
index_j = 2
index_k = 0
index_l = 2
variable = C45
[../]
[./matl_C46]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 1
index_j = 2
index_k = 0
index_l = 1
variable = C46
[../]
[./matl_C55]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 0
index_j = 2
index_k = 0
index_l = 2
variable = C55
[../]
[./matl_C56]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 0
index_j = 2
index_k = 0
index_l = 1
variable = C56
[../]
[./matl_C66]
type = RankFourAux
rank_four_tensor = elasticity_tensor
index_i = 0
index_j = 1
index_k = 0
index_l = 1
variable = C66
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric21
C_ijkl ='1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0 17.0 18.0 19.0 20.0 21.0'
[../]
[./stress]
type = ComputeStrainIncrementBasedStress
[../]
[]
[BCs]
[./bottom]
type = DirichletBC
variable = diffused
boundary = '1'
value = 1
[../]
[./top]
type = DirichletBC
variable = diffused
boundary = '2'
value = 0
[../]
[./disp_x_BC]
type = DirichletBC
variable = disp_x
boundary = '0 1 2 3'
value = 0.0
[../]
[./disp_y_BC]
type = DirichletBC
variable = disp_y
boundary = '0 1 2 3'
value = 0.0
[../]
[]
[Executioner]
type = Steady
solve_type = PJFNK
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/plane_stress/weak_plane_stress_incremental.i)
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y'
temperature = temp
out_of_plane_strain = strain_zz
[]
[Mesh]
[./square]
type = GeneratedMeshGenerator
dim = 2
nx = 2
ny = 2
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./strain_zz]
[../]
[]
[AuxVariables]
[./temp]
[../]
[./nl_strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Postprocessors]
[./react_z]
type = MaterialTensorIntegral
rank_two_tensor = stress
index_i = 2
index_j = 2
[../]
[./min_strain_zz]
type = NodalExtremeValue
variable = strain_zz
value_type = min
[../]
[./max_strain_zz]
type = NodalExtremeValue
variable = strain_zz
value_type = max
[../]
[]
[Physics/SolidMechanics/QuasiStatic]
[plane_stress]
planar_formulation = WEAK_PLANE_STRESS
strain = SMALL
incremental = true
generate_output = 'stress_xx stress_xy stress_yy stress_zz strain_xx strain_xy strain_yy'
eigenstrain_names = eigenstrain
[]
[]
[AuxKernels]
[./tempfuncaux]
type = FunctionAux
variable = temp
function = tempfunc
use_displaced_mesh = false
[../]
[./strain_zz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = nl_strain_zz
index_i = 2
index_j = 2
[../]
[]
[Functions]
[./pull]
type = PiecewiseLinear
x='0 1 100'
y='0 0.00 0.00'
[../]
[./tempfunc]
type = ParsedFunction
expression = '(1 - x) * t'
[../]
[]
[BCs]
[./bottomx]
type = DirichletBC
boundary = 0
variable = disp_x
value = 0.0
[../]
[./bottomy]
type = DirichletBC
boundary = 0
variable = disp_y
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.3
youngs_modulus = 1e6
[../]
[./thermal_strain]
type = ComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 0.02
stress_free_temperature = 0.5
eigenstrain_name = eigenstrain
[../]
[./stress]
type = ComputeStrainIncrementBasedStress
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
line_search = none
# controls for linear iterations
l_max_its = 100
l_tol = 1e-06
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-14
nl_abs_tol = 1e-12
# time control
start_time = 0.0
dt = 1.0
dtmin = 1.0
end_time = 2.0
[]
[Outputs]
exodus = true
[]
(modules/combined/test/tests/DiffuseCreep/variable_base_eigen_strain.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 50
ny = 2
xmin = 0
xmax = 10
ymin = 0
ymax = 2
[]
[Variables]
[./c]
[./InitialCondition]
type = FunctionIC
function = 'x0:=5.0;thk:=0.5;m:=2;r:=abs(x-x0);v:=exp(-(r/thk)^m);0.1+0.01*v'
[../]
[../]
[./mu]
[../]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./gb]
family = LAGRANGE
order = FIRST
[../]
[./eigen_strain_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./eigen_strain_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yy]
family = MONOMIAL
order = CONSTANT
[../]
[]
[Kernels]
[./conc]
type = CHSplitConcentration
variable = c
mobility = mobility_prop
chemical_potential_var = mu
[../]
[./chempot]
type = CHSplitChemicalPotential
variable = mu
chemical_potential_prop = mu_prop
c = c
[../]
[./time]
type = TimeDerivative
variable = c
[../]
[./TensorMechanics]
displacements = 'disp_x disp_y'
[../]
[]
[AuxKernels]
[./gb]
type = FunctionAux
variable = gb
function = 'x0:=5.0;thk:=0.5;m:=2;r:=abs(x-x0);v:=exp(-(r/thk)^m);v'
[../]
[./eigenstrain_xx]
type = RankTwoAux
variable = eigen_strain_xx
rank_two_tensor = eigenstrain
index_i = 0
index_j = 0
[../]
[./eigenstrain_yy]
type = RankTwoAux
variable = eigen_strain_yy
rank_two_tensor = eigenstrain
index_i = 1
index_j = 1
[../]
[./stress_xx]
type = RankTwoAux
variable = stress_xx
rank_two_tensor = stress
index_i = 0
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
variable = stress_yy
rank_two_tensor = stress
index_i = 1
index_j = 1
[../]
[]
[Materials]
[./chemical_potential]
type = DerivativeParsedMaterial
block = 0
property_name = mu_prop
coupled_variables = c
expression = 'c'
derivative_order = 1
[../]
[./var_dependence]
type = DerivativeParsedMaterial
block = 0
expression = 'c*(1.0-c)'
coupled_variables = c
property_name = var_dep
derivative_order = 1
[../]
[./mobility]
type = CompositeMobilityTensor
block = 0
M_name = mobility_prop
tensors = diffusivity
weights = var_dep
args = c
[../]
[./phase_normal]
type = PhaseNormalTensor
phase = gb
normal_tensor_name = gb_normal
[../]
[./aniso_tensor]
type = GBDependentAnisotropicTensor
gb = gb
bulk_parameter = 0.1
gb_parameter = 1
gb_normal_tensor_name = gb_normal
gb_tensor_prop_name = aniso_tensor
[../]
[./diffusivity]
type = GBDependentDiffusivity
gb = gb
bulk_parameter = 0.1
gb_parameter = 1
gb_normal_tensor_name = gb_normal
gb_tensor_prop_name = diffusivity
[../]
[./eigenstrain_prefactor]
type = DerivativeParsedMaterial
block = 0
expression = 'c-0.1'
coupled_variables = c
property_name = eigenstrain_prefactor
derivative_order = 1
[../]
[./eigenstrain]
type = ComputeVariableBaseEigenStrain
base_tensor_property_name = aniso_tensor
prefactor = eigenstrain_prefactor
eigenstrain_name = eigenstrain
[../]
[./strain]
type = ComputeIncrementalSmallStrain
displacements = 'disp_x disp_y'
eigenstrain_names = eigenstrain
[../]
[./stress]
type = ComputeStrainIncrementBasedStress
[../]
[./elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '120.0 80.0'
fill_method = symmetric_isotropic
[../]
[]
[BCs]
[./Periodic]
[./cbc]
auto_direction = 'x y'
variable = c
[../]
[../]
[./fix_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./fix_y]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
petsc_options_iname = '-pc_type -ksp_grmres_restart -sub_ksp_type -sub_pc_type -pc_asm_overlap'
petsc_options_value = 'asm 31 preonly lu 1'
nl_rel_tol = 1e-10
nl_max_its = 5
l_tol = 1e-4
l_max_its = 20
dt = 1
num_steps = 5
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Outputs]
exodus = true
[]
(modules/combined/test/tests/elastic_patch/elastic_patch_plane_strain.i)
#
# This problem is taken from the Abaqus verification manual:
# "1.5.1 Membrane patch test"
# The stress solution is given as:
# xx = yy = 1600
# zz = 800
# xy = 400
# yz = zx = 0
#
# Since the strain is 1e-3 in both directions, the new density should be
# new_density = original_density * V_0 / V
# new_density = 0.283 / (1 + 1e-3 + 1e-3) = 0.282435
[GlobalParams]
displacements = 'disp_x disp_y'
temperature = temp
[]
[Mesh]
file = elastic_patch_rz.e
[]
[Variables]
[temp]
initial_condition = 117.56
[]
[]
[Modules/TensorMechanics/Master/All]
strain = SMALL
incremental = true
planar_formulation = PLANE_STRAIN
add_variables = true
generate_output = 'stress_xx stress_yy stress_zz stress_xy stress_yz stress_zx'
[]
[Kernels]
[heat]
type = TimeDerivative
variable = temp
[]
[]
[BCs]
[ur]
type = FunctionDirichletBC
variable = disp_x
boundary = 10
function = '1e-3*(x+0.5*y)'
[]
[uz]
type = FunctionDirichletBC
variable = disp_y
boundary = 10
function = '1e-3*(y+0.5*x)'
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.25
[]
[stress]
type = ComputeStrainIncrementBasedStress
[]
[density]
type = Density
density = 0.283
outputs = all
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
end_time = 1.0
[]
[Outputs]
exodus = true
[]
(modules/combined/test/tests/elastic_patch/elastic_patch_rspherical.i)
#
# Patch test for 1D spherical elements
#
# The 1D mesh is pinned at x=0. The displacement at the outer node is set to
# 3e-3*X where X is the x-coordinate of that node. That gives a strain of
# 3e-3 for the x, y, and z directions.
#
# Young's modulus is 1e6, and Poisson's ratio is 0.25. This gives:
#
# Stress xx, yy, zz = E/(1+nu)/(1-2nu)*strain*((1-nu) + nu + nu) = 6000
#
[GlobalParams]
displacements = 'disp_x'
temperature = temp
[]
[Mesh]
file = elastic_patch_rspherical.e
coord_type = RSPHERICAL
[]
[Variables]
[temp]
initial_condition = 117.56
[]
[]
[Modules/TensorMechanics/Master/All]
strain = SMALL
incremental = true
add_variables = true
generate_output = 'stress_xx stress_yy stress_zz'
[]
[Kernels]
[heat]
type = TimeDerivative
variable = temp
[]
[]
[BCs]
[ur]
type = FunctionDirichletBC
variable = disp_x
boundary = '1 2'
function = '3e-3*x'
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.25
[]
[stress]
type = ComputeStrainIncrementBasedStress
[]
[density]
type = Density
density = 0.283
outputs = all
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
end_time = 1.0
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/1D_axisymmetric/axisymm_gps_incremental.i)
# this test checks the asixymmetric 1D generalized plane strain formulation using incremental small strains
[GlobalParams]
displacements = disp_x
scalar_out_of_plane_strain = scalar_strain_yy
[]
[Problem]
coord_type = RZ
[]
[Mesh]
file = line.e
[]
[Variables]
[./disp_x]
[../]
[./scalar_strain_yy]
order = FIRST
family = SCALAR
[../]
[]
[AuxVariables]
[./strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./temp]
initial_condition = 580.0
[../]
[]
[Functions]
[./temp]
type = PiecewiseLinear
x = '0 1 2'
y = '580 580 680'
[../]
[./disp_x]
type = PiecewiseLinear
x = '0 1'
y = '0 2e-6'
[../]
[]
[Kernels]
[SolidMechanics]
[../]
[]
[Physics]
[SolidMechanics]
[./GeneralizedPlaneStrain]
[./gps]
[../]
[../]
[../]
[]
[AuxKernels]
[./strain_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xx
index_i = 0
index_j = 0
[../]
[./strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yy
index_i = 1
index_j = 1
[../]
[./strain_zz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_zz
index_i = 2
index_j = 2
[../]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./temp]
type = FunctionAux
variable = temp
function = temp
execute_on = 'timestep_begin'
[../]
[]
[BCs]
[./no_x]
type = DirichletBC
boundary = 1
value = 0
variable = disp_x
[../]
[./disp_x]
type = FunctionDirichletBC
boundary = 2
function = disp_x
variable = disp_x
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 3600
poissons_ratio = 0.2
[../]
[./strain]
type = ComputeAxisymmetric1DIncrementalStrain
eigenstrain_names = eigenstrain
scalar_out_of_plane_strain = scalar_strain_yy
[../]
[./thermal_strain]
type = ComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 1e-8
temperature = temp
stress_free_temperature = 580
eigenstrain_name = eigenstrain
[../]
[./stress]
type = ComputeStrainIncrementBasedStress
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
line_search = 'none'
l_max_its = 50
l_tol = 1e-6
nl_max_its = 15
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
start_time = 0
end_time = 2
num_steps = 2
[]
[Outputs]
exodus = true
console = true
[]
(modules/combined/test/tests/DiffuseCreep/stress.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 50
ny = 2
xmin = 0
xmax = 10
ymin = 0
ymax = 2
[]
[Variables]
[./c]
[./InitialCondition]
type = FunctionIC
function = 'x0:=5.0;thk:=0.5;m:=2;r:=abs(x-x0);v:=exp(-(r/thk)^m);0.1+0.1*v'
[../]
[../]
[./mu]
[../]
[./jx]
[../]
[./jy]
[../]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./gb]
family = LAGRANGE
order = FIRST
[../]
[./creep_strain_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./creep_strain_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./creep_strain_xy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xy]
family = MONOMIAL
order = CONSTANT
[../]
[]
[Kernels]
[./conc]
type = CHSplitConcentration
variable = c
mobility = mobility_prop
chemical_potential_var = mu
[../]
[./chempot]
type = CHSplitChemicalPotential
variable = mu
chemical_potential_prop = mu_prop
c = c
[../]
[./flux_x]
type = CHSplitFlux
variable = jx
component = 0
mobility_name = mobility_prop
mu = mu
c = c
[../]
[./flux_y]
type = CHSplitFlux
variable = jy
component = 1
mobility_name = mobility_prop
mu = mu
c = c
[../]
[./time]
type = TimeDerivative
variable = c
[../]
[./TensorMechanics]
displacements = 'disp_x disp_y'
[../]
[]
[AuxKernels]
[./gb]
type = FunctionAux
variable = gb
function = 'x0:=5.0;thk:=0.5;m:=2;r:=abs(x-x0);v:=exp(-(r/thk)^m);v'
[../]
[./creep_strain_xx]
type = RankTwoAux
variable = creep_strain_xx
rank_two_tensor = creep_strain
index_i = 0
index_j = 0
[../]
[./creep_strain_yy]
type = RankTwoAux
variable = creep_strain_yy
rank_two_tensor = creep_strain
index_i = 1
index_j = 1
[../]
[./creep_strain_xy]
type = RankTwoAux
variable = creep_strain_xy
rank_two_tensor = creep_strain
index_i = 0
index_j = 1
[../]
[./stress_xx]
type = RankTwoAux
variable = stress_xx
rank_two_tensor = stress
index_i = 0
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
variable = stress_yy
rank_two_tensor = stress
index_i = 1
index_j = 1
[../]
[./stress_xy]
type = RankTwoAux
variable = stress_xy
rank_two_tensor = stress
index_i = 0
index_j = 1
[../]
[]
[Materials]
[./chemical_potential]
type = DerivativeParsedMaterial
block = 0
property_name = mu_prop
coupled_variables = c
expression = 'c'
derivative_order = 1
[../]
[./var_dependence]
type = DerivativeParsedMaterial
block = 0
expression = 'c*(1.0-c)'
coupled_variables = c
property_name = var_dep
derivative_order = 1
[../]
[./mobility]
type = CompositeMobilityTensor
block = 0
M_name = mobility_prop
tensors = diffusivity
weights = var_dep
args = c
[../]
[./phase_normal]
type = PhaseNormalTensor
phase = gb
normal_tensor_name = gb_normal
[../]
[./aniso_tensor]
type = GBDependentAnisotropicTensor
gb = gb
bulk_parameter = 0.1
gb_parameter = 1
gb_normal_tensor_name = gb_normal
gb_tensor_prop_name = aniso_tensor
[../]
[./diffusivity]
type = GBDependentDiffusivity
gb = gb
bulk_parameter = 0.1
gb_parameter = 1
gb_normal_tensor_name = gb_normal
gb_tensor_prop_name = diffusivity
[../]
[./diffuse_strain_increment]
type = FluxBasedStrainIncrement
xflux = jx
yflux = jy
gb = gb
property_name = diffuse
[../]
[./diffuse_creep_strain]
type = SumTensorIncrements
tensor_name = creep_strain
coupled_tensor_increment_names = diffuse
[../]
[./strain]
type = ComputeIncrementalSmallStrain
displacements = 'disp_x disp_y'
[../]
[./stress]
type = ComputeStrainIncrementBasedStress
inelastic_strain_names = creep_strain
[../]
[./elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '120.0 80.0'
fill_method = symmetric_isotropic
[../]
[]
[BCs]
[./Periodic]
[./cbc]
auto_direction = 'x y'
variable = c
[../]
[../]
[./fix_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./fix_y]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
petsc_options_iname = '-pc_type -ksp_grmres_restart -sub_ksp_type -sub_pc_type -pc_asm_overlap'
petsc_options_value = 'asm 31 preonly lu 1'
nl_rel_tol = 1e-10
nl_max_its = 5
l_tol = 1e-4
l_max_its = 20
dt = 1
num_steps = 5
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Outputs]
exodus = true
[]
(modules/combined/test/tests/elastic_thermal_patch/elastic_thermal_jacobian_rz_smp.i)
# This problem is intended to exercise the Jacobian for coupled RZ
# problems. Only two iterations should be needed.
[GlobalParams]
temperature = temp
volumetric_locking_correction = true
[]
[Problem]
coord_type = RZ
[]
[Mesh]
file = elastic_thermal_patch_rz_test.e
[]
[Functions]
[./ur]
type = ParsedFunction
expression = '0'
[../]
[./uz]
type = ParsedFunction
expression = '0'
[../]
[./body]
type = ParsedFunction
expression = '-400/x'
[../]
[./temp]
type = ParsedFunction
expression = '117.56+100*t'
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./temp]
initial_condition = 117.56
[../]
[]
[Modules]
[TensorMechanics]
[Master]
displacements = 'disp_x disp_y'
[All]
displacements = 'disp_x disp_y'
add_variables = true
strain = SMALL
incremental = true
eigenstrain_names = eigenstrain
generate_output = 'stress_xx stress_yy stress_zz stress_xy stress_yz stress_zx'
[../]
[../]
[../]
[]
[Kernels]
[./heat]
type = HeatConduction
variable = temp
[../]
[]
[BCs]
[./ur]
type = FunctionDirichletBC
variable = disp_x
boundary = 1
function = ur
[../]
[./uz]
type = FunctionDirichletBC
variable = disp_y
boundary = 2
function = uz
[../]
[./temp]
type = FunctionDirichletBC
variable = temp
boundary = 10
function = temp
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.25
[../]
[./thermal_strain]
type = ComputeThermalExpansionEigenstrain
stress_free_temperature = 117.56
thermal_expansion_coeff = 1e-6
eigenstrain_name = eigenstrain
[../]
[./stress]
type = ComputeStrainIncrementBasedStress
[../]
[./heat]
type = HeatConductionMaterial
specific_heat = 0.116
thermal_conductivity = 4.85e-4
[../]
[./density]
type = Density
density = 0.283
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
nl_abs_tol = 1e-9
nl_rel_tol = 1e-12
l_max_its = 20
start_time = 0.0
dt = 1.0
num_steps = 1
end_time = 1.0
[]
[Outputs]
file_base = elastic_thermal_jacobian_rz_smp_out
[./exodus]
type = Exodus
execute_on = 'initial timestep_end nonlinear'
nonlinear_residual_dt_divisor = 100
[../]
[]
(modules/combined/test/tests/elastic_patch/elastic_patch_rz.i)
#
# This problem is taken from the Abaqus verification manual:
# "1.5.4 Patch test for axisymmetric elements"
# The stress solution is given as:
# xx = yy = zz = 2000
# xy = 400
#
# Since the strain is 1e-3 in all three directions, the new density should be
# new_density = original_density * V_0 / V
# new_density = 0.283 / (1 + 1e-3 + 1e-3 + 1e-3) = 0.282153
[GlobalParams]
displacements = 'disp_x disp_y'
temperature = temp
[]
[Mesh]
file = elastic_patch_rz.e
coord_type = RZ
[]
[Variables]
[temp]
initial_condition = 117.56
[]
[]
[Modules/TensorMechanics/Master/All]
strain = SMALL
incremental = true
add_variables = true
generate_output = 'stress_xx stress_yy stress_zz stress_xy stress_yz stress_zx'
[]
[Kernels]
[body]
type = BodyForce
variable = disp_y
value = 1
function = '-400/x'
[]
[heat]
type = TimeDerivative
variable = temp
[]
[]
[BCs]
[ur]
type = FunctionDirichletBC
variable = disp_x
boundary = 10
function = '1e-3*x'
[]
[uz]
type = FunctionDirichletBC
variable = disp_y
boundary = 10
function = '1e-3*(x+y)'
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.25
[]
[stress]
type = ComputeStrainIncrementBasedStress
[]
[density]
type = Density
density = 0.283
outputs = all
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
end_time = 1.0
[]
[Outputs]
[out]
type = Exodus
elemental_as_nodal = true
[]
[]
(modules/combined/test/tests/elastic_patch/ad_elastic_patch_rz.i)
#
# This problem is taken from the Abaqus verification manual:
# "1.5.4 Patch test for axisymmetric elements"
# The stress solution is given as:
# xx = yy = zz = 2000
# xy = 400
#
# Since the strain is 1e-3 in all three directions, the new density should be
# new_density = original_density * V_0 / V
# new_density = 0.283 / (1 + 1e-3 + 1e-3 + 1e-3) = 0.282153
[GlobalParams]
displacements = 'disp_x disp_y'
temperature = temp
[]
[Mesh]
file = elastic_patch_rz.e
coord_type = RZ
[]
[Variables]
[temp]
initial_condition = 117.56
[]
[]
[Modules/TensorMechanics/Master/All]
strain = SMALL
incremental = true
add_variables = true
generate_output = 'stress_xx stress_yy stress_zz stress_xy stress_yz stress_zx'
[]
[Kernels]
[body]
type = BodyForce
variable = disp_y
value = 1
function = '-400/x'
[]
[heat]
type = TimeDerivative
variable = temp
[]
[]
[BCs]
[ur]
type = FunctionDirichletBC
variable = disp_x
boundary = 10
function = '1e-3*x'
[]
[uz]
type = FunctionDirichletBC
variable = disp_y
boundary = 10
function = '1e-3*(x+y)'
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.25
[]
[stress]
type = ComputeStrainIncrementBasedStress
[]
[]
[Materials]
[density]
type = ADDensity
density = 0.283
outputs = all
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
end_time = 1.0
[]
[Outputs]
[out]
type = Exodus
elemental_as_nodal = true
[]
[]
(modules/solid_mechanics/test/tests/1D_axisymmetric/axisymmetric_gps_incremental.i)
#
# This test checks the generalized plane strain using incremental small strain formulation.
# The model consists of two sets of line elements. One undergoes a temperature rise of 100 with
# the other seeing a temperature rise of 300. Young's modulus is 3600, and
# Poisson's ratio is 0.2. The thermal expansion coefficient is 1e-8. All
# nodes are constrained against movement.
#
# For plane strain case, i.e., without constraining the strain_yy to be uniform,
# the stress solution would be [-6e-3, -6e-3, -6e-3] and [-18e-3, -18e-3, -18e-3] (xx, yy, zz).
# The generalized plane strain kernels work to balance the force in y direction.
#
# With out of plane strain of 3e-6, the stress solution becomes
# [-3e-3, 6e-3, -3e-3] and [-15e-3, -6e-3, -15e-3] (xx, yy, zz). This gives
# a domain integral of out-of-plane stress to be zero.
#
[GlobalParams]
displacements = disp_x
scalar_out_of_plane_strain = scalar_strain_yy
[]
[Problem]
coord_type = RZ
[]
[Mesh]
file = lines.e
[]
[Variables]
[disp_x]
[]
[temp]
initial_condition = 580.0
[]
[scalar_strain_yy]
order = FIRST
family = SCALAR
[]
[]
[Functions]
[temp100]
type = PiecewiseLinear
x = '0 1'
y = '580 680'
[]
[temp300]
type = PiecewiseLinear
x = '0 1'
y = '580 880'
[]
[]
[Kernels]
[heat]
type = Diffusion
variable = temp
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[gps]
planar_formulation = GENERALIZED_PLANE_STRAIN
scalar_out_of_plane_strain = scalar_strain_yy
strain = SMALL
incremental = true
generate_output = 'strain_xx strain_yy strain_zz stress_xx stress_yy stress_zz'
eigenstrain_names = eigenstrain
temperature = temp
[]
[]
[BCs]
[no_x]
type = DirichletBC
boundary = 1000
value = 0
variable = disp_x
[]
[temp100]
type = FunctionDirichletBC
variable = temp
function = temp100
boundary = 2
[]
[temp300]
type = FunctionDirichletBC
variable = temp
function = temp300
boundary = 3
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 3600
poissons_ratio = 0.2
[]
[thermal_strain]
type = ComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 1e-8
temperature = temp
stress_free_temperature = 580
eigenstrain_name = eigenstrain
[]
[stress]
type = ComputeStrainIncrementBasedStress
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
line_search = 'none'
l_max_its = 50
l_tol = 1e-6
nl_max_its = 15
nl_abs_tol = 1e-10
start_time = 0
end_time = 1
num_steps = 1
[]
[Outputs]
exodus = true
console = true
[]
(modules/combined/test/tests/elastic_patch/ad_elastic_patch_plane_strain.i)
#
# This problem is taken from the Abaqus verification manual:
# "1.5.1 Membrane patch test"
# The stress solution is given as:
# xx = yy = 1600
# zz = 800
# xy = 400
# yz = zx = 0
#
# Since the strain is 1e-3 in both directions, the new density should be
# new_density = original_density * V_0 / V
# new_density = 0.283 / (1 + 1e-3 + 1e-3) = 0.282435
[GlobalParams]
displacements = 'disp_x disp_y'
temperature = temp
[]
[Mesh]
file = elastic_patch_rz.e
[]
[Variables]
[temp]
initial_condition = 117.56
[]
[]
[Modules/TensorMechanics/Master/All]
strain = SMALL
incremental = true
planar_formulation = PLANE_STRAIN
add_variables = true
generate_output = 'stress_xx stress_yy stress_zz stress_xy stress_yz stress_zx'
[]
[Kernels]
[heat]
type = TimeDerivative
variable = temp
[]
[]
[BCs]
[ur]
type = FunctionDirichletBC
variable = disp_x
boundary = 10
function = '1e-3*(x+0.5*y)'
[]
[uz]
type = FunctionDirichletBC
variable = disp_y
boundary = 10
function = '1e-3*(y+0.5*x)'
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.25
[]
[stress]
type = ComputeStrainIncrementBasedStress
[]
[]
[Materials]
[density]
type = ADDensity
density = 0.283
outputs = all
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
end_time = 1.0
[]
[Outputs]
exodus = true
[]
(modules/combined/test/tests/elastic_thermal_patch/elastic_thermal_patch_rz_smp.i)
#
# This problem is modified from the Abaqus verification manual:
# "1.5.4 Patch test for axisymmetric elements"
# The original stress solution is given as:
# xx = yy = zz = 2000
# xy = 400
#
# Here, E=1e6 and nu=0.25.
# However, with a +100 degree change in temperature and a coefficient
# of thermal expansion of 1e-6, the solution becomes:
# xx = yy = zz = 1800
# xy = 400
# since
# E*(1-nu)/(1+nu)/(1-2*nu)*(1+2*nu/(1-nu))*(1e-3-1e-4) = 1800
#
# Also,
#
# dSrr dSrz Srr-Stt
# ---- + ---- + ------- + br = 0
# dr dz r
#
# and
#
# dSrz Srz dSzz
# ---- + --- + ---- + bz = 0
# dr r dz
#
# where
# Srr = stress in rr
# Szz = stress in zz
# Stt = stress in theta-theta
# Srz = stress in rz
# br = body force in r direction
# bz = body force in z direction
#
# This test is meant to exercise the Jacobian. To that end, the body
# force has been turned off. This makes the results differ slightly
# from the original values, but requires a correct Jacobian for minimal
# iterations. Iteration plotting is turned on to ensure that the
# number of iterations needed does not increase.
[GlobalParams]
temperature = temp
volumetric_locking_correction = true
[]
[Problem]
coord_type = RZ
[]
[Mesh]
file = elastic_thermal_patch_rz_test.e
[]
[Functions]
[./ur]
type = ParsedFunction
expression = '1e-3*x'
[../]
[./uz]
type = ParsedFunction
expression = '1e-3*(x+y)'
[../]
[./body]
type = ParsedFunction
expression = '-400/x'
[../]
[./temp]
type = ParsedFunction
expression = '117.56+100*t'
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./temp]
initial_condition = 117.56
[../]
[]
[Modules]
[TensorMechanics]
[Master]
displacements = 'disp_x disp_y'
[All]
displacements = 'disp_x disp_y'
add_variables = true
strain = SMALL
incremental = true
eigenstrain_names = eigenstrain
generate_output = 'stress_xx stress_yy stress_zz stress_xy stress_yz stress_zx'
[../]
[../]
[../]
[]
[Kernels]
[./heat]
type = HeatConduction
variable = temp
[../]
[]
[BCs]
[./ur]
type = FunctionDirichletBC
variable = disp_x
boundary = 10
function = ur
[../]
[./uz]
type = FunctionDirichletBC
variable = disp_y
boundary = 10
function = uz
[../]
[./temp]
type = FunctionDirichletBC
variable = temp
boundary = 10
function = temp
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
bulk_modulus = 666666.6666666667
poissons_ratio = 0.25
[../]
[./thermal_strain]
type = ComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 1e-6
stress_free_temperature = 117.56
eigenstrain_name = eigenstrain
[../]
[./stress]
type = ComputeStrainIncrementBasedStress
[../]
[./heat]
type = HeatConductionMaterial
specific_heat = 0.116
thermal_conductivity = 4.85e-4
[../]
[./density]
type = Density
block = 1
density = 0.283
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
nl_abs_tol = 1e-11
nl_rel_tol = 1e-12
l_max_its = 20
start_time = 0.0
dt = 1.0
num_steps = 1
end_time = 1.0
[]
[Outputs]
file_base = elastic_thermal_patch_rz_smp_out
[./exodus]
type = Exodus
execute_on = 'initial timestep_end nonlinear'
nonlinear_residual_dt_divisor = 100
[../]
[]
(modules/solid_mechanics/test/tests/generalized_plane_strain/generalized_plane_strain_increment.i)
[GlobalParams]
displacements = 'disp_x disp_y'
scalar_out_of_plane_strain = scalar_strain_zz
block = 0
[]
[Mesh]
[square]
type = GeneratedMeshGenerator
dim = 2
nx = 2
ny = 2
[]
[]
[Variables]
[scalar_strain_zz]
order = FIRST
family = SCALAR
[]
[]
[AuxVariables]
[temp]
[]
[saved_x]
[]
[saved_y]
[]
[]
[Postprocessors]
[react_z]
type = MaterialTensorIntegral
rank_two_tensor = stress
index_i = 2
index_j = 2
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = SMALL
incremental = true
add_variables = true
generate_output = 'stress_xx stress_xy stress_yy stress_zz strain_xx strain_xy strain_yy strain_zz'
planar_formulation = GENERALIZED_PLANE_STRAIN
eigenstrain_names = eigenstrain
scalar_out_of_plane_strain = scalar_strain_zz
temperature = temp
save_in = 'saved_x saved_y'
[]
[]
[AuxKernels]
[tempfuncaux]
type = FunctionAux
variable = temp
function = tempfunc
use_displaced_mesh = false
[]
[]
[Functions]
[tempfunc]
type = ParsedFunction
expression = '(1-x)*t'
[]
[]
[BCs]
[bottomx]
type = DirichletBC
boundary = 0
variable = disp_x
value = 0.0
[]
[bottomy]
type = DirichletBC
boundary = 0
variable = disp_y
value = 0.0
[]
[]
[Materials]
[elastic_tensor]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.3
youngs_modulus = 1e6
[]
[thermal_strain]
type = ComputeThermalExpansionEigenstrain
temperature = temp
thermal_expansion_coeff = 0.02
stress_free_temperature = 0.5
eigenstrain_name = eigenstrain
[]
[stress]
type = ComputeStrainIncrementBasedStress
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = PJFNK
line_search = none
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
# controls for linear iterations
l_max_its = 100
l_tol = 1e-4
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-12
nl_abs_tol = 1e-8
# time control
start_time = 0.0
dt = 1.0
dtmin = 1.0
end_time = 2.0
[]
[Outputs]
exodus = true
[]
(modules/combined/test/tests/DiffuseCreep/stress_flux_n_gb_relax.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 50
ny = 2
xmin = 0
xmax = 10
ymin = 0
ymax = 2
[]
[Variables]
[./c]
[./InitialCondition]
type = FunctionIC
function = 'x0:=5.0;thk:=0.5;m:=2;r:=abs(x-x0);v:=exp(-(r/thk)^m);0.1+0.1*v'
[../]
[../]
[./mu]
[../]
[./jx]
[../]
[./jy]
[../]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./gb]
family = LAGRANGE
order = FIRST
[../]
[./creep_strain_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./creep_strain_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./creep_strain_xy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xy]
family = MONOMIAL
order = CONSTANT
[../]
[]
[Kernels]
[./conc]
type = CHSplitConcentration
variable = c
mobility = mobility_prop
chemical_potential_var = mu
[../]
[./chempot]
type = CHSplitChemicalPotential
variable = mu
chemical_potential_prop = mu_prop
c = c
[../]
[./flux_x]
type = CHSplitFlux
variable = jx
component = 0
mobility_name = mobility_prop
mu = mu
c = c
[../]
[./flux_y]
type = CHSplitFlux
variable = jy
component = 1
mobility_name = mobility_prop
mu = mu
c = c
[../]
[./time]
type = TimeDerivative
variable = c
[../]
[./TensorMechanics]
displacements = 'disp_x disp_y'
[../]
[]
[AuxKernels]
[./gb]
type = FunctionAux
variable = gb
function = 'x0:=5.0;thk:=0.5;m:=2;r:=abs(x-x0);v:=exp(-(r/thk)^m);v'
[../]
[./creep_strain_xx]
type = RankTwoAux
variable = creep_strain_xx
rank_two_tensor = creep_strain
index_i = 0
index_j = 0
[../]
[./creep_strain_yy]
type = RankTwoAux
variable = creep_strain_yy
rank_two_tensor = creep_strain
index_i = 1
index_j = 1
[../]
[./creep_strain_xy]
type = RankTwoAux
variable = creep_strain_xy
rank_two_tensor = creep_strain
index_i = 0
index_j = 1
[../]
[./stress_xx]
type = RankTwoAux
variable = stress_xx
rank_two_tensor = stress
index_i = 0
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
variable = stress_yy
rank_two_tensor = stress
index_i = 1
index_j = 1
[../]
[./stress_xy]
type = RankTwoAux
variable = stress_xy
rank_two_tensor = stress
index_i = 0
index_j = 1
[../]
[]
[Materials]
[./chemical_potential]
type = DerivativeParsedMaterial
block = 0
property_name = mu_prop
coupled_variables = c
expression = 'c'
derivative_order = 1
[../]
[./var_dependence]
type = DerivativeParsedMaterial
block = 0
expression = 'c*(1.0-c)'
coupled_variables = c
property_name = var_dep
derivative_order = 1
[../]
[./mobility]
type = CompositeMobilityTensor
block = 0
M_name = mobility_prop
tensors = diffusivity
weights = var_dep
args = c
[../]
[./phase_normal]
type = PhaseNormalTensor
phase = gb
normal_tensor_name = gb_normal
[../]
[./aniso_tensor]
type = GBDependentAnisotropicTensor
gb = gb
bulk_parameter = 0.1
gb_parameter = 1
gb_normal_tensor_name = gb_normal
gb_tensor_prop_name = aniso_tensor
[../]
[./diffusivity]
type = GBDependentDiffusivity
gb = gb
bulk_parameter = 0.1
gb_parameter = 1
gb_normal_tensor_name = gb_normal
gb_tensor_prop_name = diffusivity
[../]
[./diffuse_strain_increment]
type = FluxBasedStrainIncrement
xflux = jx
yflux = jy
gb = gb
property_name = diffuse
[../]
[./gb_relax_prefactor]
type = DerivativeParsedMaterial
block = 0
expression = '0.01*(c-0.15)*gb'
coupled_variables = 'c gb'
property_name = gb_relax_prefactor
derivative_order = 1
[../]
[./gb_relax]
type = GBRelaxationStrainIncrement
property_name = gb_relax
prefactor_name = gb_relax_prefactor
gb_normal_name = gb_normal
[../]
[./creep_strain]
type = SumTensorIncrements
tensor_name = creep_strain
coupled_tensor_increment_names = 'diffuse gb_relax'
[../]
[./strain]
type = ComputeIncrementalSmallStrain
displacements = 'disp_x disp_y'
[../]
[./stress]
type = ComputeStrainIncrementBasedStress
inelastic_strain_names = creep_strain
[../]
[./elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '120.0 80.0'
fill_method = symmetric_isotropic
[../]
[]
[BCs]
[./Periodic]
[./cbc]
auto_direction = 'x y'
variable = c
[../]
[../]
[./fix_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./fix_y]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
petsc_options_iname = '-pc_type -ksp_grmres_restart -sub_ksp_type -sub_pc_type -pc_asm_overlap'
petsc_options_value = 'asm 31 preonly lu 1'
nl_rel_tol = 1e-10
nl_max_its = 5
l_tol = 1e-4
l_max_its = 20
dt = 1
num_steps = 5
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Outputs]
exodus = true
[]
(modules/combined/test/tests/thermal_strain/thermal_strain.i)
# Patch Test
# This test is designed to compute displacements from a thermal strain.
# The cube is displaced by 1e-6 units in x, 2e-6 in y, and 3e-6 in z.
# The faces are sheared as well (1e-6, 2e-6, and 3e-6 for xy, yz, and
# zx). This gives a uniform strain/stress state for all six unique
# tensor components.
# The temperature moves 100 degrees, and the coefficient of thermal
# expansion is 1e-6. Therefore, the strain (and the displacement
# since this is a unit cube) is 1e-4.
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
file = thermal_strain_test.e
[]
[Functions]
[./tempFunc]
type = PiecewiseLinear
x = '0. 1.'
y = '117.56 217.56'
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./temp]
initial_condition = 117.56
[../]
[]
[Modules/TensorMechanics/Master]
add_variables = true
strain = SMALL
incremental = true
generate_output = 'stress_xx stress_yy stress_zz stress_xy stress_yz stress_zx'
temperature = temp
[./block1]
eigenstrain_names = eigenstrain1
block = 1
[../]
[./block2]
eigenstrain_names = eigenstrain2
block = 2
[../]
[./block3]
eigenstrain_names = eigenstrain3
block = 3
[../]
[./block4]
eigenstrain_names = eigenstrain4
block = 4
[../]
[./block5]
eigenstrain_names = eigenstrain5
block = 5
[../]
[./block6]
eigenstrain_names = eigenstrain6
block = 6
[../]
[./block7]
eigenstrain_names = eigenstrain7
block = 7
[../]
[]
[Kernels]
[./heat]
type = HeatConduction
variable = temp
[../]
[]
[BCs]
[./no_x]
type = DirichletBC
variable = disp_x
boundary = 10
value = 0.0
[../]
[./no_y]
type = DirichletBC
variable = disp_y
boundary = 9
value = 0.0
[../]
[./no_z]
type = DirichletBC
variable = disp_z
boundary = 14
value = 0
[../]
[./temp]
type = FunctionDirichletBC
variable = temp
boundary = '10 12'
function = tempFunc
[../]
[]
[Materials]
[./elasticity_tensor1]
type = ComputeIsotropicElasticityTensor
block = 1
bulk_modulus = 0.333333333333e6
poissons_ratio = 0.0
[../]
[./thermal_strain1]
type = ComputeThermalExpansionEigenstrain
block = 1
temperature = temp
stress_free_temperature = 117.56
thermal_expansion_coeff = 1e-6
eigenstrain_name = eigenstrain1
[../]
[./stress1]
type = ComputeStrainIncrementBasedStress
block = 1
[../]
[./elasticity_tensor2]
type = ComputeIsotropicElasticityTensor
block = 2
bulk_modulus = 0.333333333333e6
lambda = 0.0
[../]
[./thermal_strain2]
type = ComputeThermalExpansionEigenstrain
block = 2
temperature = temp
stress_free_temperature = 117.56
thermal_expansion_coeff = 1e-6
eigenstrain_name = eigenstrain2
[../]
[./stress2]
type = ComputeStrainIncrementBasedStress
block = 2
[../]
[./elasticity_tensor3]
type = ComputeIsotropicElasticityTensor
block = 3
youngs_modulus = 1e6
poissons_ratio = 0.0
[../]
[./thermal_strain3]
type = ComputeThermalExpansionEigenstrain
block = 3
temperature = temp
stress_free_temperature = 117.56
thermal_expansion_coeff = 1e-6
eigenstrain_name = eigenstrain3
[../]
[./stress3]
type = ComputeStrainIncrementBasedStress
block = 3
[../]
[./elasticity_tensor4]
type = ComputeIsotropicElasticityTensor
block = 4
youngs_modulus = 1e6
poissons_ratio = 0.0
[../]
[./thermal_strain4]
type = ComputeThermalExpansionEigenstrain
block = 4
temperature = temp
stress_free_temperature = 117.56
thermal_expansion_coeff = 1e-6
eigenstrain_name = eigenstrain4
[../]
[./stress4]
type = ComputeStrainIncrementBasedStress
block = 4
[../]
[./elasticity_tensor5]
type = ComputeIsotropicElasticityTensor
block = 5
youngs_modulus = 1e6
lambda = 0.0
[../]
[./thermal_strain5]
type = ComputeThermalExpansionEigenstrain
block = 5
temperature = temp
stress_free_temperature = 117.56
thermal_expansion_coeff = 1e-6
eigenstrain_name = eigenstrain5
[../]
[./stress5]
type = ComputeStrainIncrementBasedStress
block = 5
[../]
[./elasticity_tensor6]
type = ComputeIsotropicElasticityTensor
block = 6
youngs_modulus = 1e6
shear_modulus = 5e5
[../]
[./thermal_strain6]
type = ComputeThermalExpansionEigenstrain
block = 6
temperature = temp
stress_free_temperature = 117.56
thermal_expansion_coeff = 1e-6
eigenstrain_name = eigenstrain6
[../]
[./stress6]
type = ComputeStrainIncrementBasedStress
block = 6
[../]
[./elasticity_tensor7]
type = ComputeIsotropicElasticityTensor
block = 7
shear_modulus = 5e5
poissons_ratio = 0.0
[../]
[./thermal_strain7]
type = ComputeThermalExpansionEigenstrain
block = 7
temperature = temp
stress_free_temperature = 117.56
thermal_expansion_coeff = 1e-6
eigenstrain_name = eigenstrain7
[../]
[./stress7]
type = ComputeStrainIncrementBasedStress
block = 7
[../]
[./heat]
type = HeatConductionMaterial
block = '1 2 3 4 5 6 7'
specific_heat = 1.0
thermal_conductivity = 1.0
[../]
[./density]
type = Density
block = '1 2 3 4 5 6 7'
density = 1.0
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
nl_abs_tol = 1e-10
l_max_its = 20
start_time = 0.0
dt = 0.5
num_steps = 2
end_time = 1.0
[]
[Outputs]
exodus = true
[]
(modules/combined/test/tests/DiffuseCreep/stress_based_chem_pot.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 50
ny = 2
xmin = 0
xmax = 10
ymin = 0
ymax = 2
[]
[Variables]
[./c]
[./InitialCondition]
type = FunctionIC
function = 'x0:=5.0;thk:=0.5;m:=2;r:=abs(x-x0);v:=exp(-(r/thk)^m);0.1+0.1*v'
[../]
[../]
[./mu]
[../]
[./jx]
[../]
[./jy]
[../]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./gb]
family = LAGRANGE
order = FIRST
[../]
[./creep_strain_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xy]
family = MONOMIAL
order = CONSTANT
[../]
[./mu_prop]
family = MONOMIAL
order = CONSTANT
[../]
[./mech_prop]
family = MONOMIAL
order = CONSTANT
[../]
[./total_potential]
family = MONOMIAL
order = CONSTANT
[../]
[]
[Kernels]
[./conc]
type = CHSplitConcentration
variable = c
mobility = mobility_prop
chemical_potential_var = mu
[../]
[./chempot]
type = CHSplitChemicalPotential
variable = mu
chemical_potential_prop = total_potential
c = c
[../]
[./flux_x]
type = CHSplitFlux
variable = jx
component = 0
mobility_name = mobility_prop
mu = mu
c = c
[../]
[./flux_y]
type = CHSplitFlux
variable = jy
component = 1
mobility_name = mobility_prop
mu = mu
c = c
[../]
[./time]
type = TimeDerivative
variable = c
[../]
[./TensorMechanics]
displacements = 'disp_x disp_y'
[../]
[]
[AuxKernels]
[./gb]
type = FunctionAux
variable = gb
function = 'x0:=5.0;thk:=0.5;m:=2;r:=abs(x-x0);v:=exp(-(r/thk)^m);v'
[../]
[./creep_strain_xx]
type = RankTwoAux
variable = creep_strain_xx
rank_two_tensor = creep_strain
index_i = 0
index_j = 0
[../]
[./stress_xx]
type = RankTwoAux
variable = stress_xx
rank_two_tensor = stress
index_i = 0
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
variable = stress_yy
rank_two_tensor = stress
index_i = 1
index_j = 1
[../]
[./stress_xy]
type = RankTwoAux
variable = stress_xy
rank_two_tensor = stress
index_i = 0
index_j = 1
[../]
[./mu_prop]
type = MaterialRealAux
property = mu_prop
variable = mu_prop
[../]
[./mech_prop]
type = MaterialRealAux
property = mech_prop
variable = mech_prop
[../]
[./total_potential]
type = MaterialRealAux
property = total_potential
variable = total_potential
[../]
[]
[Materials]
[./chemical_potential]
type = DerivativeParsedMaterial
block = 0
property_name = mu_prop
coupled_variables = c
expression = 'c'
derivative_order = 1
[../]
[./mechanical_potential]
type = StressBasedChemicalPotential
property_name = mech_prop
stress_name = stress
direction_tensor_name = aniso_tensor
prefactor_name = 1.0
[../]
[./total_potential]
type = DerivativeSumMaterial
block = 0
property_name = total_potential
sum_materials = 'mu_prop mech_prop'
coupled_variables = 'c'
derivative_order = 2
[../]
[./var_dependence]
type = DerivativeParsedMaterial
block = 0
expression = 'c*(1.0-c)'
coupled_variables = c
property_name = var_dep
derivative_order = 1
[../]
[./mobility]
type = CompositeMobilityTensor
block = 0
M_name = mobility_prop
tensors = diffusivity
weights = var_dep
args = c
[../]
[./phase_normal]
type = PhaseNormalTensor
phase = gb
normal_tensor_name = gb_normal
[../]
[./aniso_tensor]
type = GBDependentAnisotropicTensor
gb = gb
bulk_parameter = 0.1
gb_parameter = 1
gb_normal_tensor_name = gb_normal
gb_tensor_prop_name = aniso_tensor
[../]
[./diffusivity]
type = GBDependentDiffusivity
gb = gb
bulk_parameter = 0.1
gb_parameter = 1
gb_normal_tensor_name = gb_normal
gb_tensor_prop_name = diffusivity
[../]
[./diffuse_strain_increment]
type = FluxBasedStrainIncrement
xflux = jx
yflux = jy
gb = gb
property_name = diffuse
[../]
[./diffuse_creep_strain]
type = SumTensorIncrements
tensor_name = creep_strain
coupled_tensor_increment_names = diffuse
[../]
[./strain]
type = ComputeIncrementalSmallStrain
displacements = 'disp_x disp_y'
[../]
[./stress]
type = ComputeStrainIncrementBasedStress
inelastic_strain_names = creep_strain
[../]
[./elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '120.0 80.0'
fill_method = symmetric_isotropic
[../]
[]
[BCs]
[./Periodic]
[./cbc]
auto_direction = 'x y'
variable = c
[../]
[../]
[./fix_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./fix_y]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
petsc_options_iname = '-pc_type -ksp_grmres_restart -sub_ksp_type -sub_pc_type -pc_asm_overlap'
petsc_options_value = 'asm 31 preonly lu 1'
nl_rel_tol = 1e-10
nl_max_its = 5
l_tol = 1e-4
l_max_its = 20
dt = 1
num_steps = 5
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Outputs]
exodus = true
[]
(modules/combined/test/tests/elastic_thermal_patch/elastic_thermal_patch_rz.i)
#
# This problem is modified from the Abaqus verification manual:
# "1.5.4 Patch test for axisymmetric elements"
# The original stress solution is given as:
# xx = yy = zz = 2000
# xy = 400
#
# Here, E=1e6 and nu=0.25.
# However, with a +100 degree change in temperature and a coefficient
# of thermal expansion of 1e-6, the solution becomes:
# xx = yy = zz = 1800
# xy = 400
# since
# E*(1-nu)/(1+nu)/(1-2*nu)*(1+2*nu/(1-nu))*(1e-3-1e-4) = 1800
#
# Also,
#
# dSrr dSrz Srr-Stt
# ---- + ---- + ------- + br = 0
# dr dz r
#
# and
#
# dSrz Srz dSzz
# ---- + --- + ---- + bz = 0
# dr r dz
#
# where
# Srr = stress in rr
# Szz = stress in zz
# Stt = stress in theta-theta
# Srz = stress in rz
# br = body force in r direction
# bz = body force in z direction
#
[GlobalParams]
displacements = 'disp_x disp_y'
temperature = temp
volumetric_locking_correction = true
[]
[Problem]
coord_type = RZ
[]
[Mesh]
file = elastic_thermal_patch_rz_test.e
[]
[Functions]
[./ur]
type = ParsedFunction
expression = '1e-3*x'
[../]
[./uz]
type = ParsedFunction
expression = '1e-3*(x+y)'
[../]
[./body]
type = ParsedFunction
expression = '-400/x'
[../]
[./temp]
type = ParsedFunction
expression = '117.56+100*t'
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./temp]
initial_condition = 117.56
[../]
[]
[Modules/TensorMechanics/Master/All]
add_variables = true
strain = SMALL
incremental = true
eigenstrain_names = eigenstrain
generate_output = 'stress_xx stress_yy stress_zz stress_xy stress_yz stress_zx'
[]
[Kernels]
[./body]
type = BodyForce
variable = disp_y
value = 1
function = body
[../]
[./heat]
type = HeatConduction
variable = temp
[../]
[]
[BCs]
[./ur]
type = FunctionDirichletBC
variable = disp_x
boundary = 10
function = ur
[../]
[./uz]
type = FunctionDirichletBC
variable = disp_y
boundary = 10
function = uz
[../]
[./temp]
type = FunctionDirichletBC
variable = temp
boundary = 10
function = temp
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
lambda = 400000.0
poissons_ratio = 0.25
[../]
[./thermal_strain]
type = ComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 1e-6
stress_free_temperature = 117.56
eigenstrain_name = eigenstrain
[../]
[./stress]
type = ComputeStrainIncrementBasedStress
[../]
[./heat]
type = HeatConductionMaterial
specific_heat = 0.116
thermal_conductivity = 4.85e-4
[../]
[./density]
type = Density
density = 0.283
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
nl_abs_tol = 1e-11
nl_rel_tol = 1e-12
l_max_its = 20
start_time = 0.0
dt = 1.0
num_steps = 1
end_time = 1.0
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/1D_axisymmetric/axisymm_plane_strain_incremental.i)
#
# This test checks elastic stress calculations with mechanical and thermal
# strain using incremental small strain formulation. Young's modulus is 3600, and Poisson's ratio is 0.2.
# The axisymmetric, plane strain 1D mesh is pulled with 1e-6 strain. Thus,
# the strain is [1e-6, 0, 1e-6] (xx, yy, zz). This gives stress of
# [5e-3, 2e-3, 5e-3]. After a temperature increase of 100 with alpha of
# 1e-8, the stress becomes [-1e-3, -4e-3, -1e-3].
#
[GlobalParams]
displacements = disp_x
[]
[Problem]
coord_type = RZ
[]
[Mesh]
file = line.e
[]
[Variables]
[./disp_x]
[../]
[]
[AuxVariables]
[./temp]
initial_condition = 580.0
[../]
[]
[Functions]
[./temp]
type = PiecewiseLinear
x = '0 1 2'
y = '580 580 680'
[../]
[./disp_x]
type = PiecewiseLinear
x = '0 1'
y = '0 2e-6'
[../]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[./ps]
planar_formulation = PLANE_STRAIN
strain = SMALL
incremental = true
generate_output = 'strain_xx strain_zz stress_xx stress_yy stress_zz'
eigenstrain_names = eigenstrain
[../]
[../]
[../]
[]
[AuxKernels]
[./temp]
type = FunctionAux
variable = temp
function = temp
execute_on = 'timestep_begin'
[../]
[]
[BCs]
[./no_x]
type = DirichletBC
boundary = 1
value = 0
variable = disp_x
[../]
[./disp_x]
type = FunctionDirichletBC
boundary = 2
function = disp_x
variable = disp_x
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 3600
poissons_ratio = 0.2
[../]
[./thermal_strain]
type = ComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 1e-8
temperature = temp
stress_free_temperature = 580
eigenstrain_name = eigenstrain
[../]
[./stress]
type = ComputeStrainIncrementBasedStress
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
line_search = 'none'
l_max_its = 50
l_tol = 1e-6
nl_max_its = 15
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
start_time = 0
end_time = 2
num_steps = 2
[]
[Outputs]
exodus = true
console = true
[]