- 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
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 block ids (SubdomainID) that this object will be applied
C++ Type:std::vector
Description:The list of block ids (SubdomainID) that this object will be applied
- boundaryThe list of boundary IDs from the mesh where this boundary condition applies
C++ Type:std::vector
Description:The list of boundary IDs from the mesh where this boundary condition 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
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 computeSubdomainProperties() 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
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 computeSubdomainProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped
- extra_stress_namesMaterial property names of rank two tensors to be added to the stress.
C++ Type:std::vector
Description:Material property names of rank two tensors to be added to the stress.
ADComputeLinearElasticStress
Compute stress using elasticity for small strains
Description
This material, ADComputeLinearElasticStress
computes the elastic stress for a total and small strain formulation: this stress class is compatible with the ADComputeSmallStrain type of strain calculators, including those for non-Cartesian coordinate systems. This stress calculator class can be used with any coordinate system to calculate the elastic stress response for a small total formulation strain.
Elastic materials do not experience permanent deformation, and all elastic strain and elastic stress is recoverable. Elastic stress is related to elastic strain through the elasticity tensor
where is the total strain formulation; this strain measure is also the sum of the mechanical elastic strain and any eigenstrains in the system.
Input Parameters
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector
Options:
Description:Adds user-defined labels for accessing object parameters via control logic.
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Options:
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
Options:
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
Options:
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
Options:
Description:List of material properties, from this material, to output (outputs must also be defined to an output type)
- outputsnone Vector of output names were you would like to restrict the output of variables(s) associated with this object
Default:none
C++ Type:std::vector
Options:
Description:Vector of output names were you would like to restrict the output of variables(s) associated with this object
Outputs Parameters
Input Files
- modules/tensor_mechanics/test/tests/ad_isotropic_elasticity_tensor/bulk_modulus_shear_modulus_test.i
- modules/tensor_mechanics/test/tests/ad_linear_elasticity/linear_elastic_material.i
- modules/tensor_mechanics/test/tests/ad_simple_linear/linear-ad.i
- modules/tensor_mechanics/test/tests/ad_simple_linear/linear-ad-reverse-dependency.i
- modules/combined/test/tests/mortar_tm/2d/ad_frictionless_fir/small.i
- modules/tensor_mechanics/test/tests/ad_thermal_expansion_function/mean.i
- modules/tensor_mechanics/test/tests/ad_pressure/pressure_test.i
- modules/combined/test/tests/thermo_mech/ad-thermo_mech.i
- modules/tensor_mechanics/test/tests/ad_action/two_coord.i
- modules/tensor_mechanics/test/tests/ad_thermal_expansion_function/small_const.i
- modules/tensor_mechanics/test/tests/ad_linear_elasticity/tensor.i
- modules/tensor_mechanics/test/tests/ad_action/two_block.i
- modules/tensor_mechanics/test/tests/ad_isotropic_elasticity_tensor/2D-axisymmetric_rz_test.i
- modules/combined/test/tests/mortar_tm/2drz/ad_frictionless_first/small.i
- modules/tensor_mechanics/test/tests/ad_elastic/rz_small_elastic.i
- modules/tensor_mechanics/test/tests/ad_thermal_expansion_function/instantaneous.i
- modules/tensor_mechanics/test/tests/dynamics/wave_1D/wave_rayleigh_hht_AD.i
- modules/tensor_mechanics/test/tests/ad_action/two_block_no_action.i
- modules/tensor_mechanics/test/tests/ad_linear_elasticity/thermal_expansion.i
- modules/tensor_mechanics/test/tests/ad_thermal_expansion_function/small_linear.i
- modules/tensor_mechanics/test/tests/ad_isotropic_elasticity_tensor/youngs_modulus_poissons_ratio_test.i
- modules/tensor_mechanics/test/tests/ad_linear_elasticity/extra_stresses.i
- modules/tensor_mechanics/examples/hyper_elastic_test.i
- modules/tensor_mechanics/test/tests/ad_elastic/rspherical_small_elastic.i
- modules/combined/test/tests/mortar_tm/2drz/ad_frictionless_second/small.i
- modules/tensor_mechanics/test/tests/gravity/ad_gravity_test.i
- modules/tensor_mechanics/test/tests/ad_elastic/green-lagrange.i
- modules/tensor_mechanics/test/tests/ad_linear_elasticity/applied_strain.i
- modules/tensor_mechanics/test/tests/ad_thermal_expansion_function/dilatation.i
- modules/tensor_mechanics/test/tests/ad_isotropic_elasticity_tensor/lambda_shear_modulus_test.i
- modules/combined/test/tests/mortar_tm/2d/ad_frictionless_sec/small.i
modules/tensor_mechanics/test/tests/ad_isotropic_elasticity_tensor/bulk_modulus_shear_modulus_test.i
[Mesh]
type = GeneratedMesh
dim = 3
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[AuxVariables]
[./stress_11]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
add_variables = true
use_automatic_differentiation = true
[../]
[]
[AuxKernels]
[./stress_11]
type = RankTwoAux
variable = stress_11
rank_two_tensor = stress
index_j = 1
index_i = 1
[../]
[]
[BCs]
[./bottom]
type = ADDirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./left]
type = ADDirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./back]
type = ADDirichletBC
variable = disp_z
boundary = back
value = 0
[../]
[./top]
type = ADDirichletBC
variable = disp_y
boundary = top
value = 0.001
[../]
[]
[Materials]
[./stress]
type = ADComputeLinearElasticStress
[../]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
bulk_modulus = 416666
shear_modulus = 454545
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Steady
l_max_its = 20
nl_max_its = 10
solve_type = NEWTON
[]
[Outputs]
exodus = true
[]
modules/tensor_mechanics/test/tests/ad_linear_elasticity/linear_elastic_material.i
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
xmax = 50
ymax = 50
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[./diffused]
[./InitialCondition]
type = RandomIC
[../]
[../]
[]
[Modules/TensorMechanics/Master/All]
strain = SMALL
add_variables = true
generate_output = 'stress_xx stress_yy stress_zz stress_xy stress_yz stress_zx'
use_automatic_differentiation = true
[]
[Kernels]
[./diff]
type = ADDiffusion
variable = diffused
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0
[../]
[./stress]
type = ADComputeLinearElasticStress
[../]
[]
[BCs]
[./bottom]
type = ADDirichletBC
variable = diffused
boundary = 'right'
value = 1
[../]
[./top]
type = ADDirichletBC
variable = diffused
boundary = 'top'
value = 0
[../]
[./disp_x_BC]
type = ADDirichletBC
variable = disp_x
boundary = 'bottom top'
value = 0.5
[../]
[./disp_x_BC2]
type = ADDirichletBC
variable = disp_x
boundary = 'left right'
value = 0.01
[../]
[./disp_y_BC]
type = ADDirichletBC
variable = disp_y
boundary = 'bottom top'
value = 0.8
[../]
[./disp_y_BC2]
type = ADDirichletBC
variable = disp_y
boundary = 'left right'
value = 0.02
[../]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
nl_rel_tol = 1e-12
[]
[Outputs]
exodus = true
[]
modules/tensor_mechanics/test/tests/ad_simple_linear/linear-ad.i
[Mesh]
type = GeneratedMesh
dim = 3
nx = 2
ny = 2
nz = 2
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
# scale with one over Young's modulus
[./disp_x]
scaling = 1e-10
[../]
[./disp_y]
scaling = 1e-10
[../]
[./disp_z]
scaling = 1e-10
[../]
[]
[Kernels]
[./stress_x]
type = ADStressDivergenceTensors
component = 0
variable = disp_x
[../]
[./stress_y]
type = ADStressDivergenceTensors
component = 1
variable = disp_y
[../]
[./stress_z]
type = ADStressDivergenceTensors
component = 2
variable = disp_z
[../]
[]
[BCs]
[./symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[../]
[./tdisp]
type = DirichletBC
variable = disp_z
boundary = front
value = 0.1
[../]
[]
[Materials]
[./elasticity]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.3
youngs_modulus = 1e10
[../]
[]
[Materials]
[./strain]
type = ADComputeSmallStrain
[../]
[./stress]
type = ADComputeLinearElasticStress
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
dt = 0.05
solve_type = 'NEWTON'
petsc_options_iname = -pc_hypre_type
petsc_options_value = boomeramg
dtmin = 0.05
num_steps = 1
[]
[Outputs]
exodus = true
file_base = "linear-out"
[]
modules/tensor_mechanics/test/tests/ad_simple_linear/linear-ad-reverse-dependency.i
[Mesh]
type = GeneratedMesh
dim = 3
nx = 2
ny = 2
nz = 2
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[./stress_x]
type = ADStressDivergenceTensors
component = 0
variable = disp_x
[../]
[./stress_y]
type = ADStressDivergenceTensors
component = 1
variable = disp_y
[../]
[./stress_z]
type = ADStressDivergenceTensors
component = 2
variable = disp_z
[../]
[]
[BCs]
[./symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[../]
[./tdisp]
type = DirichletBC
variable = disp_z
boundary = front
value = 0.1
[../]
[]
[Materials]
[./elasticity]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.3
youngs_modulus = 1e10
[../]
[]
[Materials]
[./stress]
type = ADComputeLinearElasticStress
[../]
[./strain]
type = ADComputeSmallStrain
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
dt = 0.05
solve_type = 'NEWTON'
petsc_options_iname = -pc_hypre_type
petsc_options_value = boomeramg
dtmin = 0.05
num_steps = 1
[]
[Outputs]
exodus = true
file_base = "linear-out"
[]
modules/combined/test/tests/mortar_tm/2d/ad_frictionless_fir/small.i
E_block = 1e7
E_plank = 1e7
elem = QUAD4
order = FIRST
name = 'small'
[Mesh]
patch_size = 80
patch_update_strategy = auto
[./plank]
type = GeneratedMeshGenerator
dim = 2
xmin = -0.3
xmax = 0.3
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
[../]
[./plank_sidesets]
type = RenameBoundaryGenerator
input = plank
old_boundary_id = '0 1 2 3'
new_boundary_name = 'plank_bottom plank_right plank_top plank_left'
[../]
[./plank_id]
type = SubdomainIDGenerator
input = plank_sidesets
subdomain_id = 1
[../]
[./block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.31
xmax = 0.91
ymin = 7.7
ymax = 8.5
nx = 3
ny = 4
elem_type = ${elem}
[../]
[./block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[../]
[./combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[../]
[./block_rename]
type = RenameBlockGenerator
input = combined
old_block_id = '1 2'
new_block_name = 'plank block'
[../]
[./block_sidesets]
type = SideSetsFromPointsGenerator
input = block_rename
points = '0.6 7.7 0
0.91 8.0 0
0.6 8.5 0
0.31 8.0 0'
new_boundary = 'block_bottom block_right block_top block_left'
[../]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[./disp_x]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[./disp_y]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[]
[Modules/TensorMechanics/Master]
[./action]
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank block'
use_automatic_differentiation = true
[../]
[]
[Contact]
[./frictionless]
mesh = block_sidesets
master = plank_right
slave = block_left
formulation = mortar
system = constraint
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = plank_left
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
boundary = plank_bottom
value = 0.0
[../]
[./right_x]
type = ADFunctionDirichletBC
variable = disp_x
boundary = block_right
function = '-0.04*sin(4*(t+1.5))+0.02'
[../]
[./right_y]
type = ADFunctionDirichletBC
variable = disp_y
boundary = block_right
function = '-t'
[../]
[]
[Materials]
[./plank]
type = ComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[../]
[./block]
type = ComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[../]
[./stress]
type = ADComputeLinearElasticStress
block = 'plank block'
[../]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15'
end_time = 13.5
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'contact'
[]
[Postprocessors]
[./nl_its]
type = NumNonlinearIterations
[../]
[./total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[../]
[./l_its]
type = NumLinearIterations
[../]
[./total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[../]
[./contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_slave_subdomain
[../]
[./avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[../]
[./max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[../]
[./min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[../]
[./avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[../]
[./max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[../]
[./min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[../]
[]
[Outputs]
exodus = true
file_base = ${name}
[./comp]
type = CSV
show = 'contact'
[../]
[./out]
type = CSV
file_base = '${name}_out'
[../]
[]
[Debug]
show_var_residual_norms = true
[]
modules/tensor_mechanics/test/tests/ad_thermal_expansion_function/mean.i
# This test checks the thermal expansion calculated via a mean thermal expansion coefficient.
# The coefficient is selected so as to result in a 1e-4 strain in the x-axis, and to cross over
# from positive to negative strain.
[Mesh]
[./gen]
type = GeneratedMeshGenerator
dim = 3
[../]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[AuxVariables]
[./temp]
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
add_variables = true
eigenstrain_names = eigenstrain
generate_output = 'strain_xx strain_yy strain_zz'
use_automatic_differentiation = true
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./bottom]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./back]
type = DirichletBC
variable = disp_z
boundary = back
value = 0.0
[../]
[]
[AuxKernels]
[./temp]
type = FunctionAux
variable = temp
function = '1 + t'
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1
poissons_ratio = 0.3
[../]
[./stress]
type = ADComputeLinearElasticStress
[../]
[./thermal_expansion_strain]
type = ADComputeMeanThermalExpansionFunctionEigenstrain
thermal_expansion_function = cte_func_mean
thermal_expansion_function_reference_temperature = 1.2
stress_free_temperature = 1.5
temperature = temp
eigenstrain_name = eigenstrain
[../]
[]
[Functions]
[./cte_func_mean]
type = ParsedFunction
vars = 'T T_stress_free T_ref end_strain'
vals = '2 1.5 1.2 1e-4'
value = 'end_strain / (T - T_stress_free - end_strain * (T_stress_free - T_ref))'
[../]
[]
[Postprocessors]
[./disp_x_max]
type = SideAverageValue
variable = disp_x
boundary = right
[../]
[./temp_avg]
type = ElementAverageValue
variable = temp
[../]
[]
[Executioner]
type = Transient
end_time = 1.0
dt = 0.1
[]
[Outputs]
csv = true
[]
modules/tensor_mechanics/test/tests/ad_pressure/pressure_test.i
#
# Pressure Test
#
# This test is designed to compute pressure loads on three faces of a unit cube.
#
# The mesh is composed of one block with a single element. Symmetry bcs are
# applied to the faces opposite the pressures. Poisson's ratio is zero,
# which makes it trivial to check displacements.
#
[Mesh]
type = FileMesh
file = pressure_test.e
displacements = 'disp_x disp_y disp_z'
[]
[Functions]
[./rampConstant]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. 1. 1.'
scale_factor = 1.0
[../]
[./zeroRamp]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. 0. 1.'
scale_factor = 1.0
[../]
[./rampUnramp]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. 1. 0.'
scale_factor = 10.0
[../]
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[]
[Kernels]
[./TensorMechanics]
displacements = 'disp_x disp_y disp_z'
use_automatic_differentiation = true
[../]
[]
[BCs]
[./no_x]
type = DirichletBC
variable = disp_x
boundary = 4
value = 0.0
[../]
[./no_y]
type = DirichletBC
variable = disp_y
boundary = 5
value = 0.0
[../]
[./no_z]
type = DirichletBC
variable = disp_z
boundary = 6
value = 0.0
[../]
[./Pressure]
[./Side1]
boundary = 1
function = rampConstant
displacements = 'disp_x disp_y disp_z'
use_automatic_differentiation = true
[../]
[./Side2]
boundary = 2
function = zeroRamp
displacements = 'disp_x disp_y disp_z'
use_automatic_differentiation = true
factor = 2.0
[../]
[./Side3]
boundary = 3
function = rampUnramp
displacements = 'disp_x disp_y disp_z'
use_automatic_differentiation = true
[../]
[../]
[]
[Materials]
[./Elasticity_tensor]
type = ComputeElasticityTensor
block = 1
fill_method = symmetric_isotropic
C_ijkl = '0 0.5e6'
[../]
[./strain]
type = ADComputeSmallStrain
displacements = 'disp_x disp_y disp_z'
block = 1
[../]
[./stress]
type = ADComputeLinearElasticStress
block = 1
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
nl_abs_tol = 1e-10
l_max_its = 20
start_time = 0.0
dt = 1.0
num_steps = 2
end_time = 2.0
[]
[Outputs]
[./out]
type = Exodus
elemental_as_nodal = true
[../]
[]
modules/combined/test/tests/thermo_mech/ad-thermo_mech.i
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
temperature = temp
volumetric_locking_correction = true
[]
[Mesh]
file = cube.e
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./temp]
[../]
[]
[Kernels]
[./TensorMechanics]
use_automatic_differentiation = true
[../]
[./heat]
type = ADHeatConduction
variable = temp
[../]
[]
[BCs]
[./bottom_x]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[../]
[./bottom_y]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[../]
[./bottom_z]
type = DirichletBC
variable = disp_z
boundary = 1
value = 0.0
[../]
[./bottom_temp]
type = DirichletBC
variable = temp
preset = false
boundary = 1
value = 10.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.0
poissons_ratio = 0.3
[../]
[./strain]
type = ADComputeSmallStrain
eigenstrain_names = eigenstrain
[../]
[./thermal_strain]
type = ADComputeThermalExpansionEigenstrain
stress_free_temperature = 0.0
thermal_expansion_coeff = 1e-5
eigenstrain_name = eigenstrain
[../]
[./stress]
type = ADComputeLinearElasticStress
[../]
[./heat]
type = HeatConductionMaterial
specific_heat = 1.0
thermal_conductivity = 1.0
[../]
[./density]
type = ADDensity
density = 1.0
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
nl_rel_tol = 1e-14
l_tol = 1e-3
l_max_its = 100
dt = 1.0
end_time = 1.0
[]
[Outputs]
exodus = true
[]
modules/tensor_mechanics/test/tests/ad_action/two_coord.i
[Mesh]
[generated_mesh]
type = GeneratedMeshGenerator
dim = 2
nx = 16
ny = 8
xmin = -1
xmax = 1
[]
[block1]
type = SubdomainBoundingBoxGenerator
block_id = 1
bottom_left = '-1 0 0'
top_right = '0 1 0'
input = generated_mesh
[]
[block2]
type = SubdomainBoundingBoxGenerator
block_id = 2
bottom_left = '0 0 0'
top_right = '1 1 0'
input = block1
[]
[]
[Problem]
coord_type = 'XYZ RZ'
block = '1 2'
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Modules/TensorMechanics/Master]
active = 'block1 block2'
[./error]
strain = SMALL
add_variables = true
[../]
[./block1]
strain = SMALL
add_variables = true
block = 1
use_automatic_differentiation = true
[../]
[./block2]
strain = SMALL
add_variables = true
block = 2
use_automatic_differentiation = true
[../]
[]
[AuxVariables]
[./vmstress]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./vmstress]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = vmstress
scalar_type = VonMisesStress
execute_on = timestep_end
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e10
poissons_ratio = 0.345
[../]
[./_elastic_stress]
type = ADComputeLinearElasticStress
block = '1 2'
[../]
[]
[BCs]
[./topx]
type = DirichletBC
boundary = 'top'
variable = disp_x
value = 0.0
[../]
[./topy]
type = DirichletBC
boundary = 'top'
variable = disp_y
value = 0.0
[../]
[./bottomx]
type = DirichletBC
boundary = 'bottom'
variable = disp_x
value = 0.0
[../]
[./bottomy]
type = DirichletBC
boundary = 'bottom'
variable = disp_y
value = 0.05
[../]
[]
[Debug]
show_var_residual_norms = true
[]
[Preconditioning]
[./full]
type = SMP
full = true
[../]
[]
[Executioner]
type = Steady
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = ' 201 hypre boomeramg 10'
line_search = 'none'
nl_rel_tol = 5e-9
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
[]
[Outputs]
exodus = true
[]
modules/tensor_mechanics/test/tests/ad_thermal_expansion_function/small_const.i
# This tests the thermal expansion coefficient function using both
# options to specify that function: mean and instantaneous. There
# two blocks, each containing a single element, and these use the
# two variants of the function.
# In this test, the instantaneous CTE function has a constant value,
# while the mean CTE function is an analytic function designed to
# give the same response. If \bar{alpha}(T) is the mean CTE function,
# and \alpha(T) is the instantaneous CTE function,
# \bar{\alpha}(T) = 1/(T-Tref) \intA^{T}_{Tsf} \alpha(T) dT
# where Tref is the reference temperature used to define the mean CTE
# function, and Tsf is the stress-free temperature.
# This version of the test uses small deformation theory. The results
# from the two models are identical.
[Mesh]
file = 'blocks.e'
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[AuxVariables]
[./temp]
order = FIRST
family = LAGRANGE
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
add_variables = true
eigenstrain_names = eigenstrain
generate_output = 'strain_xx strain_yy strain_zz'
use_automatic_differentiation = true
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = disp_x
boundary = 3
value = 0.0
[../]
[./bottom]
type = DirichletBC
variable = disp_y
boundary = 2
value = 0.0
[../]
[./back]
type = DirichletBC
variable = disp_z
boundary = 1
value = 0.0
[../]
[]
[AuxKernels]
[./temp]
type = FunctionAux
variable = temp
block = '1 2'
function = temp_func
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./small_stress]
type = ADComputeLinearElasticStress
[../]
[./thermal_expansion_strain1]
type = ADComputeMeanThermalExpansionFunctionEigenstrain
block = 1
thermal_expansion_function = cte_func_mean
thermal_expansion_function_reference_temperature = 0.5
stress_free_temperature = 0.0
temperature = temp
eigenstrain_name = eigenstrain
[../]
[./thermal_expansion_strain2]
type = ADComputeInstantaneousThermalExpansionFunctionEigenstrain
block = 2
thermal_expansion_function = cte_func_inst
stress_free_temperature = 0.0
temperature = temp
eigenstrain_name = eigenstrain
[../]
[]
[Functions]
[./cte_func_mean]
type = ParsedFunction
vars = 'tsf tref scale' #stress free temp, reference temp, scale factor
vals = '0.0 0.5 1e-4'
value = 'scale * (t - tsf) / (t - tref)'
[../]
[./cte_func_inst]
type = PiecewiseLinear
xy_data = '0 1.0
2 1.0'
scale_factor = 1e-4
[../]
[./temp_func]
type = PiecewiseLinear
xy_data = '0 1
1 2'
[../]
[]
[Postprocessors]
[./disp_1]
type = NodalMaxValue
variable = disp_x
boundary = 101
[../]
[./disp_2]
type = NodalMaxValue
variable = disp_x
boundary = 102
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
l_max_its = 100
l_tol = 1e-4
nl_abs_tol = 1e-8
nl_rel_tol = 1e-12
start_time = 0.0
end_time = 1.0
dt = 0.1
[]
[Outputs]
csv = true
[]
modules/tensor_mechanics/test/tests/ad_linear_elasticity/tensor.i
# This input file is designed to test the RankTwoAux and RankFourAux
# auxkernels, which report values out of the Tensors used in materials
# properties.
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 2
ny = 2
xmax = 2
ymax = 2
[]
[Variables]
[./diffused]
[./InitialCondition]
type = RandomIC
[../]
[../]
[]
[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
[../]
[]
[Modules/TensorMechanics/Master/All]
strain = SMALL
add_variables = true
generate_output = 'stress_xx stress_yy stress_zz stress_xy stress_yz stress_zx'
use_automatic_differentiation = true
[]
[Kernels]
[./diff]
type = ADDiffusion
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 ='1111 1122 1133 1123 1113 1112 2222 2233 2223 2213 2212 3333 3323 3313 3312 2323 2313 2312 1313 1312 1212'
[../]
[./stress]
type = ADComputeLinearElasticStress
[../]
[]
[BCs]
[./bottom]
type = DirichletBC
variable = diffused
boundary = 'right'
value = 1
[../]
[./top]
type = DirichletBC
variable = diffused
boundary = 'top'
value = 0
[../]
[./disp_x_BC]
type = DirichletBC
variable = disp_x
boundary = 'bottom top'
value = 0.5
[../]
[./disp_x_BC2]
type = DirichletBC
variable = disp_x
boundary = 'left right'
value = 0.01
[../]
[./disp_y_BC]
type = DirichletBC
variable = disp_y
boundary = 'bottom top'
value = 0.8
[../]
[./disp_y_BC2]
type = DirichletBC
variable = disp_y
boundary = 'left right'
value = 0.02
[../]
[]
[Preconditioning]
[./full]
type = SMP
full = true
[../]
[]
[Executioner]
type = Steady
solve_type = 'PJFNK'
[]
[Outputs]
exodus = true
[]
modules/tensor_mechanics/test/tests/ad_action/two_block.i
[Mesh]
[generated_mesh]
type = GeneratedMeshGenerator
dim = 2
nx = 4
ny = 4
[]
[block1]
type = SubdomainBoundingBoxGenerator
block_id = 1
bottom_left = '0 0 0'
top_right = '0.5 1 0'
input = generated_mesh
[]
[block2]
type = SubdomainBoundingBoxGenerator
block_id = 2
bottom_left = '0.5 0 0'
top_right = '1 1 0'
input = block1
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Modules/TensorMechanics/Master]
[./block1]
strain = FINITE
add_variables = true
#block = 1
use_automatic_differentiation = true
[../]
[./block2]
strain = SMALL
add_variables = true
block = 2
use_automatic_differentiation = true
[../]
[]
[AuxVariables]
[./stress_theta]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_theta]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./stress_theta]
type = RankTwoAux
rank_two_tensor = stress
index_i = 2
index_j = 2
variable = stress_theta
execute_on = timestep_end
[../]
[./strain_theta]
type = RankTwoAux
rank_two_tensor = total_strain
index_i = 2
index_j = 2
variable = strain_theta
execute_on = timestep_end
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e10
poissons_ratio = 0.345
[../]
[./_elastic_stress1]
type = ADComputeFiniteStrainElasticStress
block = 1
[../]
[./_elastic_stress2]
type = ADComputeLinearElasticStress
block = 2
[../]
[]
[BCs]
[./left]
type = DirichletBC
boundary = 'left'
variable = disp_x
value = 0.0
[../]
[./top]
type = DirichletBC
boundary = 'top'
variable = disp_y
value = 0.0
[../]
[./right]
type = DirichletBC
boundary = 'right'
variable = disp_x
value = 0.01
[../]
[./bottom]
type = DirichletBC
boundary = 'bottom'
variable = disp_y
value = 0.01
[../]
[]
[Debug]
show_var_residual_norms = true
[]
[Preconditioning]
[./full]
type = SMP
full = true
[../]
[]
[Executioner]
type = Steady
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = ' 201 hypre boomeramg 10'
line_search = 'none'
nl_rel_tol = 5e-9
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
[]
[Outputs]
exodus = true
[]
modules/tensor_mechanics/test/tests/ad_isotropic_elasticity_tensor/2D-axisymmetric_rz_test.i
[Mesh]
type = GeneratedMesh
dim = 2
elem_type = QUAD8
[]
[GlobalParams]
displacements = 'disp_r disp_z'
[]
[Problem]
coord_type = RZ
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
add_variables = true
use_automatic_differentiation = true
[../]
[]
[AuxVariables]
[./stress_theta]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./stress_theta]
type = RankTwoAux
rank_two_tensor = stress
index_i = 2
index_j = 2
variable = stress_theta
execute_on = timestep_end
[../]
[]
[Materials]
[./elasticity_tensor]
#Material constants selected to match isotropic lambda and shear modulus case
type = ComputeElasticityTensor
C_ijkl = '1022726 113636 113636 1022726 454545'
fill_method = axisymmetric_rz
[../]
[./elastic_stress]
type = ADComputeLinearElasticStress
[../]
[]
[BCs]
# pin particle along symmetry planes
[./no_disp_r]
type = DirichletBC
variable = disp_r
boundary = left
value = 0.0
[../]
[./no_disp_z]
type = DirichletBC
variable = disp_z
boundary = bottom
value = 0.0
[../]
# exterior and internal pressures
[./exterior_pressure_r]
type = ADPressure
variable = disp_r
boundary = right
component = 0
constant = 200000
[../]
[]
[Debug]
show_var_residual_norms = true
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = ' 201 hypre boomeramg 10'
line_search = 'none'
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
nl_rel_tol = 5e-9
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
end_time = 1
num_steps = 1000
dtmax = 5e6
dtmin = 1
[./TimeStepper]
type = IterationAdaptiveDT
dt = 1
optimal_iterations = 6
iteration_window = 0
linear_iteration_ratio = 100
[../]
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
[]
[Postprocessors]
[./dt]
type = TimestepSize
[../]
[]
[Outputs]
file_base = 2D-axisymmetric_rz_test_out
exodus = true
[]
modules/combined/test/tests/mortar_tm/2drz/ad_frictionless_first/small.i
E_block = 1e7
E_plank = 1e7
elem = QUAD4
order = FIRST
name = 'small'
[Problem]
coord_type = RZ
[]
[Mesh]
patch_size = 80
patch_update_strategy = auto
[./plank]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 0.6
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
[../]
[./plank_sidesets]
type = RenameBoundaryGenerator
input = plank
old_boundary_id = '0 1 2 3'
new_boundary_name = 'plank_bottom plank_right plank_top plank_left'
[../]
[./plank_id]
type = SubdomainIDGenerator
input = plank_sidesets
subdomain_id = 1
[../]
[./block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.61
xmax = 1.21
ymin = 9.2
ymax = 10.0
nx = 3
ny = 4
elem_type = ${elem}
[../]
[./block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[../]
[./combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[../]
[./block_rename]
type = RenameBlockGenerator
input = combined
old_block_id = '1 2'
new_block_name = 'plank block'
[../]
[./corner]
type = ExtraNodesetGenerator
input = block_rename
coord = '0 -10.0'
new_boundary = point
[../]
[./block_sidesets]
type = SideSetsFromPointsGenerator
input = corner
points = '0.9 9.2 0
1.21 9.5 0
0.9 10.0 0
0.61 9.5 0'
new_boundary = 'block_bottom block_right block_top block_left'
[../]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[./disp_x]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[./disp_y]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[]
[Modules/TensorMechanics/Master]
[./block]
use_automatic_differentiation = true
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'block'
[../]
[./plank]
use_automatic_differentiation = true
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank'
eigenstrain_names = 'swell'
[../]
[]
[Contact]
[./frictionless]
mesh = block_sidesets
master = plank_right
slave = block_left
formulation = mortar
system = constraint
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = plank_left
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
boundary = plank_bottom
value = 0.0
[../]
[./right_x]
type = DirichletBC
variable = disp_x
boundary = block_right
value = 0
[../]
[./right_y]
type = ADFunctionDirichletBC
variable = disp_y
boundary = block_right
function = '-t'
[../]
[]
[Materials]
[./plank]
type = ComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[../]
[./block]
type = ComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[../]
[./stress]
type = ADComputeLinearElasticStress
block = 'plank block'
[../]
[./swell]
type = ADComputeEigenstrain
block = 'plank'
eigenstrain_name = swell
eigen_base = '1 0 0 0 0 0 0 0 0'
prefactor = swell_mat
[../]
[./swell_mat]
type = GenericFunctionMaterial
prop_names = 'swell_mat'
prop_values = '7e-2*(1-cos(4*t))'
block = 'plank'
[../]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15'
end_time = 10
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'contact'
[]
[Postprocessors]
[./nl_its]
type = NumNonlinearIterations
[../]
[./total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[../]
[./l_its]
type = NumLinearIterations
[../]
[./total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[../]
[./contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_slave_subdomain
[../]
[./avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[../]
[./max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[../]
[./min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[../]
[./avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[../]
[./max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[../]
[./min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[../]
[]
[Outputs]
exodus = true
file_base = ${name}
[./comp]
type = CSV
show = 'contact'
[../]
[./out]
type = CSV
file_base = '${name}_out'
[../]
[]
[Debug]
show_var_residual_norms = true
[]
modules/tensor_mechanics/test/tests/ad_elastic/rz_small_elastic.i
[Mesh]
type = GeneratedMesh
dim = 2
nx = 3
ny = 3
[]
[Problem]
coord_type = RZ
[]
[GlobalParams]
displacements = 'disp_r disp_z'
[]
[Variables]
# scale with one over Young's modulus
[./disp_r]
scaling = 1e-10
[../]
[./disp_z]
scaling = 1e-10
[../]
[]
[Kernels]
[./stress_r]
type = ADStressDivergenceRZTensors
component = 0
variable = disp_r
[../]
[./stress_z]
type = ADStressDivergenceRZTensors
component = 1
variable = disp_z
[../]
[]
[BCs]
[./bottom]
type = DirichletBC
variable = disp_z
boundary = bottom
value = 0
[../]
[./axial]
type = DirichletBC
variable = disp_r
boundary = left
value = 0
[../]
[./rdisp]
type = DirichletBC
variable = disp_r
boundary = right
value = 0.1
[../]
[]
[Materials]
[./elasticity]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.3
youngs_modulus = 1e10
[../]
[]
[Materials]
[./strain]
type = ADComputeAxisymmetricRZSmallStrain
[../]
[./stress]
type = ADComputeLinearElasticStress
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
dt = 0.05
solve_type = 'NEWTON'
petsc_options_iname = -pc_hypre_type
petsc_options_value = boomeramg
dtmin = 0.05
num_steps = 1
[]
[Outputs]
exodus = true
[]
modules/tensor_mechanics/test/tests/ad_thermal_expansion_function/instantaneous.i
# This test checks the thermal expansion calculated via a instantaneous thermal expansion coefficient.
# The coefficient is selected so as to result in a 1e-4 strain in the x-axis, and to cross over
# from positive to negative strain.
[Mesh]
[./gen]
type = GeneratedMeshGenerator
dim = 3
[../]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[AuxVariables]
[./temp]
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
add_variables = true
eigenstrain_names = eigenstrain
generate_output = 'strain_xx strain_yy strain_zz'
use_automatic_differentiation = true
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./bottom]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./back]
type = DirichletBC
variable = disp_z
boundary = back
value = 0.0
[../]
[]
[AuxKernels]
[./temp]
type = FunctionAux
variable = temp
function = '1 + t'
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1
poissons_ratio = 0.3
[../]
[./stress]
type = ADComputeLinearElasticStress
[../]
[./thermal_expansion_strain]
type = ADComputeInstantaneousThermalExpansionFunctionEigenstrain
thermal_expansion_function = 4e-4
stress_free_temperature = 1.5
temperature = temp
eigenstrain_name = eigenstrain
[../]
[]
[Postprocessors]
[./disp_x_max]
type = SideAverageValue
variable = disp_x
boundary = right
[../]
[./temp_avg]
type = ElementAverageValue
variable = temp
[../]
[]
[Executioner]
type = Transient
end_time = 1.0
dt = 0.1
[]
[Outputs]
csv = true
[]
modules/tensor_mechanics/test/tests/dynamics/wave_1D/wave_rayleigh_hht_AD.i
# Wave propogation in 1D using HHT time integration in the presence of Rayleigh damping
#
# The test is for an 1D bar element of length 4m fixed on one end
# with a sinusoidal pulse dirichlet boundary condition applied to the other end.
# alpha, beta and gamma are HHT time integration parameters
# eta and zeta are mass dependent and stiffness dependent Rayleigh damping
# coefficients, respectively.
# The equation of motion in terms of matrices is:
#
# M*accel + (eta*M+zeta*K)*((1+alpha)*vel-alpha*vel_old)
# +(1+alpha)*K*disp-alpha*K*disp_old = 0
#
# Here M is the mass matrix, K is the stiffness matrix
#
# The displacement at the first, second, third and fourth node at t = 0.1 are
# -7.787499960311491942e-02, 1.955566679096475483e-02 and -4.634888180231294501e-03, respectively.
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 4
nz = 1
xmin = 0.0
xmax = 0.1
ymin = 0.0
ymax = 4.0
zmin = 0.0
zmax = 0.1
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[AuxVariables]
[./vel_x]
[../]
[./accel_x]
[../]
[./vel_y]
[../]
[./accel_y]
[../]
[./vel_z]
[../]
[./accel_z]
[../]
[]
[Kernels]
[./DynamicTensorMechanics]
displacements = 'disp_x disp_y disp_z'
alpha = -0.3
zeta = 0.1
use_automatic_differentiation = true
[../]
[./inertia_x]
type = InertialForce
variable = disp_x
velocity = vel_x
acceleration = accel_x
beta = 0.422
gamma = 0.8
eta=0.1
alpha = -0.3
[../]
[./inertia_y]
type = InertialForce
variable = disp_y
velocity = vel_y
acceleration = accel_y
beta = 0.422
gamma = 0.8
eta=0.1
alpha = -0.3
[../]
[./inertia_z]
type = InertialForce
variable = disp_z
velocity = vel_z
acceleration = accel_z
beta = 0.422
gamma = 0.8
eta = 0.1
alpha = -0.3
[../]
[]
[AuxKernels]
[./accel_x]
type = NewmarkAccelAux
variable = accel_x
displacement = disp_x
velocity = vel_x
beta = 0.422
execute_on = timestep_end
[../]
[./vel_x]
type = NewmarkVelAux
variable = vel_x
acceleration = accel_x
gamma = 0.8
execute_on = timestep_end
[../]
[./accel_y]
type = NewmarkAccelAux
variable = accel_y
displacement = disp_y
velocity = vel_y
beta = 0.422
execute_on = timestep_end
[../]
[./vel_y]
type = NewmarkVelAux
variable = vel_y
acceleration = accel_y
gamma = 0.8
execute_on = timestep_end
[../]
[./accel_z]
type = NewmarkAccelAux
variable = accel_z
displacement = disp_z
velocity = vel_z
beta = 0.422
execute_on = timestep_end
[../]
[./vel_z]
type = NewmarkVelAux
variable = vel_z
acceleration = accel_z
gamma = 0.8
execute_on = timestep_end
[../]
[]
[BCs]
[./top_y]
type = DirichletBC
variable = disp_y
boundary = top
value=0.0
[../]
[./top_x]
type = DirichletBC
variable = disp_x
boundary = top
value=0.0
[../]
[./top_z]
type = DirichletBC
variable = disp_z
boundary = top
value=0.0
[../]
[./right_x]
type = DirichletBC
variable = disp_x
boundary = right
value=0.0
[../]
[./right_z]
type = DirichletBC
variable = disp_z
boundary = right
value=0.0
[../]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = left
value=0.0
[../]
[./left_z]
type = DirichletBC
variable = disp_z
boundary = left
value=0.0
[../]
[./front_x]
type = DirichletBC
variable = disp_x
boundary = front
value=0.0
[../]
[./front_z]
type = DirichletBC
variable = disp_z
boundary = front
value=0.0
[../]
[./back_x]
type = DirichletBC
variable = disp_x
boundary = back
value=0.0
[../]
[./back_z]
type = DirichletBC
variable = disp_z
boundary = back
value=0.0
[../]
[./bottom_x]
type = DirichletBC
variable = disp_x
boundary = bottom
value=0.0
[../]
[./bottom_z]
type = DirichletBC
variable = disp_z
boundary = bottom
value=0.0
[../]
[./bottom_y]
type = FunctionDirichletBC
variable = disp_y
boundary = bottom
function = displacement_bc
[../]
[]
[Materials]
[./Elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
C_ijkl = '1 0'
[../]
[./strain]
type = ADComputeSmallStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[../]
[./stress]
type = ADComputeLinearElasticStress
block = 0
[../]
[./density]
type = GenericConstantMaterial
block = 0
prop_names = 'density'
prop_values = '1'
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
start_time = 0
end_time = 6.0
l_tol = 1e-12
nl_rel_tol = 1e-12
dt = 0.1
[]
[Functions]
[./displacement_bc]
type = PiecewiseLinear
data_file = 'sine_wave.csv'
format = columns
[../]
[]
[Postprocessors]
[./_dt]
type = TimestepSize
[../]
[./disp_1]
type = NodalVariableValue
nodeid = 1
variable = disp_y
[../]
[./disp_2]
type = NodalVariableValue
nodeid = 3
variable = disp_y
[../]
[./disp_3]
type = NodalVariableValue
nodeid = 10
variable = disp_y
[../]
[./disp_4]
type = NodalVariableValue
nodeid = 14
variable = disp_y
[../]
[]
[Outputs]
file_base = 'wave_rayleigh_hht_out'
exodus = true
perf_graph = true
[]
modules/tensor_mechanics/test/tests/ad_action/two_block_no_action.i
[Mesh]
[generated_mesh]
type = GeneratedMeshGenerator
dim = 2
nx = 4
ny = 4
[]
[block1]
type = SubdomainBoundingBoxGenerator
block_id = 1
bottom_left = '0 0 0'
top_right = '0.5 1 0'
input = generated_mesh
[]
[block2]
type = SubdomainBoundingBoxGenerator
block_id = 2
bottom_left = '0.5 0 0'
top_right = '1 1 0'
input = block1
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
# [Modules/TensorMechanics/Master]
# [./block1]
# strain = FINITE
# add_variables = true
# #block = 1
# use_automatic_differentiation = true
# [../]
# [./block2]
# strain = SMALL
# add_variables = true
# block = 2
# use_automatic_differentiation = true
# [../]
# []
[Kernels]
[./disp_x]
type = ADStressDivergenceTensors
variable = disp_x
component = 0
[../]
[./disp_y]
type = ADStressDivergenceTensors
variable = disp_y
component = 1
[../]
[]
[AuxVariables]
[./stress_theta]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_theta]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./stress_theta]
type = RankTwoAux
rank_two_tensor = stress
index_i = 2
index_j = 2
variable = stress_theta
execute_on = timestep_end
[../]
[./strain_theta]
type = RankTwoAux
rank_two_tensor = total_strain
index_i = 2
index_j = 2
variable = strain_theta
execute_on = timestep_end
[../]
[]
[Materials]
[./block_1]
type = ADComputeFiniteStrain
block = 1
[../]
[./block_2]
type = ADComputeSmallStrain
block = 2
[../]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e10
poissons_ratio = 0.345
[../]
[./_elastic_stress1]
type = ADComputeFiniteStrainElasticStress
block = 1
[../]
[./_elastic_stress2]
type = ADComputeLinearElasticStress
block = 2
[../]
[]
[BCs]
[./left]
type = DirichletBC
boundary = 'left'
variable = disp_x
value = 0.0
[../]
[./top]
type = DirichletBC
boundary = 'top'
variable = disp_y
value = 0.0
[../]
[./right]
type = DirichletBC
boundary = 'right'
variable = disp_x
value = 0.01
[../]
[./bottom]
type = DirichletBC
boundary = 'bottom'
variable = disp_y
value = 0.01
[../]
[]
[Debug]
show_var_residual_norms = true
[]
[Preconditioning]
[./full]
type = SMP
full = true
[../]
[]
[Executioner]
type = Steady
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = ' 201 hypre boomeramg 10'
line_search = 'none'
nl_rel_tol = 5e-9
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
[]
[Outputs]
exodus = true
[]
modules/tensor_mechanics/test/tests/ad_linear_elasticity/thermal_expansion.i
# This input file is designed to test the RankTwoAux and RankFourAux
# auxkernels, which report values out of the Tensors used in materials
# properties.
# Materials properties into AuxVariables - these are elemental variables, not nodal variables.
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 2
ny = 2
xmax = 2
ymax = 2
[]
[Modules/TensorMechanics/Master/All]
strain = SMALL
eigenstrain_names = eigenstrain
add_variables = true
generate_output = 'stress_xx stress_yy stress_xy'
use_automatic_differentiation = true
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0
[../]
[./stress]
type = ADComputeLinearElasticStress
[../]
[./eigenstrain]
type = ADComputeEigenstrain
eigen_base = '1e-4'
eigenstrain_name = eigenstrain
[../]
[]
[BCs]
[./bottom_y]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0
[../]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
nl_rel_tol = 1e-14
[]
[Outputs]
exodus = true
[]
modules/tensor_mechanics/test/tests/ad_thermal_expansion_function/small_linear.i
# This tests the thermal expansion coefficient function using both
# options to specify that function: mean and instantaneous. There
# two blocks, each containing a single element, and these use the
# two variants of the function.
# In this test, the instantaneous CTE function is a linear function
# while the mean CTE function is an analytic function designed to
# give the same response. If \bar{alpha}(T) is the mean CTE function,
# and \alpha(T) is the instantaneous CTE function,
# \bar{\alpha}(T) = 1/(T-Tref) \intA^{T}_{Tsf} \alpha(T) dT
# where Tref is the reference temperature used to define the mean CTE
# function, and Tsf is the stress-free temperature.
# This version of the test uses small deformation theory. The results
# from the two models are identical.
[Mesh]
file = 'blocks.e'
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[AuxVariables]
[./temp]
order = FIRST
family = LAGRANGE
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
add_variables = true
eigenstrain_names = eigenstrain
generate_output = 'strain_xx strain_yy strain_zz'
use_automatic_differentiation = true
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = disp_x
boundary = 3
value = 0.0
[../]
[./bottom]
type = DirichletBC
variable = disp_y
boundary = 2
value = 0.0
[../]
[./back]
type = DirichletBC
variable = disp_z
boundary = 1
value = 0.0
[../]
[]
[AuxKernels]
[./temp]
type = FunctionAux
variable = temp
block = '1 2'
function = temp_func
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./small_stress]
type = ADComputeLinearElasticStress
[../]
[./thermal_expansion_strain1]
type = ADComputeMeanThermalExpansionFunctionEigenstrain
block = 1
thermal_expansion_function = cte_func_mean
thermal_expansion_function_reference_temperature = 0.5
stress_free_temperature = 0.0
temperature = temp
eigenstrain_name = eigenstrain
[../]
[./thermal_expansion_strain2]
type = ADComputeInstantaneousThermalExpansionFunctionEigenstrain
block = 2
thermal_expansion_function = cte_func_inst
stress_free_temperature = 0.0
temperature = temp
eigenstrain_name = eigenstrain
[../]
[]
[Functions]
[./cte_func_mean]
type = ParsedFunction
vars = 'tsf tref scale' #stress free temp, reference temp, scale factor
vals = '0.0 0.5 1e-4'
value = 'scale * (0.5 * t^2 - 0.5 * tsf^2) / (t - tref)'
[../]
[./cte_func_inst]
type = PiecewiseLinear
xy_data = '0 0.0
2 2.0'
scale_factor = 1e-4
[../]
[./temp_func]
type = PiecewiseLinear
xy_data = '0 1
1 2'
[../]
[]
[Postprocessors]
[./disp_1]
type = NodalMaxValue
variable = disp_x
boundary = 101
[../]
[./disp_2]
type = NodalMaxValue
variable = disp_x
boundary = 102
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
l_max_its = 100
l_tol = 1e-4
nl_abs_tol = 1e-8
nl_rel_tol = 1e-12
start_time = 0.0
end_time = 1.0
dt = 0.1
[]
[Outputs]
csv = true
[]
modules/tensor_mechanics/test/tests/ad_isotropic_elasticity_tensor/youngs_modulus_poissons_ratio_test.i
[Mesh]
type = GeneratedMesh
dim = 3
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[AuxVariables]
[./stress_11]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
add_variables = true
use_automatic_differentiation = true
[../]
[]
[AuxKernels]
[./stress_11]
type = RankTwoAux
variable = stress_11
rank_two_tensor = stress
index_j = 1
index_i = 1
[../]
[]
[BCs]
[./bottom]
type = ADDirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./left]
type = ADDirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./back]
type = ADDirichletBC
variable = disp_z
boundary = back
value = 0
[../]
[./top]
type = ADDirichletBC
variable = disp_y
boundary = top
value = 0.001
[../]
[]
[Materials]
[./stress]
type = ADComputeLinearElasticStress
[../]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.1
youngs_modulus = 1e6
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Steady
l_max_its = 20
nl_max_its = 10
solve_type = NEWTON
[]
[Outputs]
exodus = true
[]
modules/tensor_mechanics/test/tests/ad_linear_elasticity/extra_stresses.i
# This input file is designed to test adding extra stress to ADComputeLinearElasticStress
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
xmax = 50
ymax = 50
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Modules/TensorMechanics/Master/All]
strain = SMALL
add_variables = true
generate_output = 'stress_xx stress_yy stress_zz stress_xy stress_yz stress_zx hydrostatic_stress vonmises_stress'
use_automatic_differentiation = true
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0
[../]
[./stress]
type = ADComputeLinearElasticStress
extra_stress_names = 'stress_one stress_two'
[../]
[./stress_one]
type = GenericConstantRankTwoTensor
tensor_name = stress_one
tensor_values = '0 1e3 1e3 1e3 0 1e3 1e3 1e3 0'
[../]
[./stress_two]
type = GenericConstantRankTwoTensor
tensor_name = stress_two
tensor_values = '1e3 0 0 0 1e3 0 0 0 1e3'
[../]
[]
[BCs]
[./disp_x_BC]
type = ADDirichletBC
variable = disp_x
boundary = 'bottom top'
value = 0.5
[../]
[./disp_x_BC2]
type = ADDirichletBC
variable = disp_x
boundary = 'left right'
value = 0.01
[../]
[./disp_y_BC]
type = ADDirichletBC
variable = disp_y
boundary = 'bottom top'
value = 0.8
[../]
[./disp_y_BC2]
type = ADDirichletBC
variable = disp_y
boundary = 'left right'
value = 0.02
[../]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
[]
[Postprocessors]
[./hydrostatic]
type = ElementAverageValue
variable = hydrostatic_stress
[../]
[./von_mises]
type = ElementAverageValue
variable = vonmises_stress
[../]
[]
[Outputs]
exodus = true
[]
modules/tensor_mechanics/examples/hyper_elastic_test.i
[Mesh]
type = GeneratedMesh
dim = 3
nx = 5
ny = 5
nz = 5
use_displaced_mesh = false
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Functions]
[./top_displacement]
type = ParsedFunction
value = t
[../]
[]
[BCs]
[./bottom_x]
type = DirichletBC
variable = 'disp_x'
boundary = bottom
value = 0
[../]
[./bottom_y]
type = DirichletBC
variable = 'disp_y'
boundary = bottom
value = 0
[../]
[./bottom_z]
type = DirichletBC
variable = 'disp_z'
boundary = bottom
value = 0
[../]
[./top_x]
type = DirichletBC
variable = 'disp_x'
boundary = top
value = 0
[../]
[./top_y]
type = FunctionDirichletBC
variable = 'disp_y'
boundary = top
function = top_displacement
[../]
[./top_z]
type = DirichletBC
variable = 'disp_z'
boundary = top
value = 0
[../]
[]
[Kernels]
[./x]
type = ADStressDivergenceTensors
variable = disp_x
component = 0
[../]
[./y]
type = ADStressDivergenceTensors
variable = disp_y
component = 1
[../]
[./z]
type = ADStressDivergenceTensors
variable = disp_z
component = 2
[../]
[]
[Materials]
[./rubber_elasticity]
type = ComputeIsotropicElasticityTensor
# lambda = 1.2e7
# shear_modulus = 1.2e7
youngs_modulus = 1
poissons_ratio = 0.45 # the closer this gets to 0.5 the worse the problem becomes
[../]
[]
[Materials]
[./strain]
type = ADComputeGreenLagrangeStrain
[../]
[./stress]
type = ADComputeLinearElasticStress
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
dt = 0.05
dtmin = 0.05
nl_abs_tol = 1e-10
num_steps = 500
[]
[Outputs]
execute_on = 'INITIAL TIMESTEP_END'
exodus = true
print_linear_residuals = false
[]
modules/tensor_mechanics/test/tests/ad_elastic/rspherical_small_elastic.i
[Mesh]
type = GeneratedMesh
dim = 1
nx = 5
[]
[Problem]
coord_type = RSPHERICAL
[]
[GlobalParams]
displacements = 'disp_r'
[]
[Variables]
# scale with one over Young's modulus
[./disp_r]
scaling = 1e-10
[../]
[]
[Kernels]
[./stress_r]
type = ADStressDivergenceRSphericalTensors
component = 0
variable = disp_r
[../]
[]
[BCs]
[./center]
type = DirichletBC
variable = disp_r
boundary = left
value = 0
[../]
[./rdisp]
type = DirichletBC
variable = disp_r
boundary = right
value = 0.1
[../]
[]
[Materials]
[./elasticity]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.3
youngs_modulus = 1e10
[../]
[]
[Materials]
[./strain]
type = ADComputeRSphericalSmallStrain
[../]
[./stress]
type = ADComputeLinearElasticStress
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
dt = 0.05
solve_type = 'NEWTON'
petsc_options_iname = -pc_hypre_type
petsc_options_value = boomeramg
dtmin = 0.05
num_steps = 1
[]
[Outputs]
exodus = true
[]
modules/combined/test/tests/mortar_tm/2drz/ad_frictionless_second/small.i
E_block = 1e7
E_plank = 1e7
elem = QUAD9
order = SECOND
name = 'small'
[Problem]
coord_type = RZ
[]
[Mesh]
patch_size = 80
patch_update_strategy = auto
[./plank]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 0.6
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
[../]
[./plank_sidesets]
type = RenameBoundaryGenerator
input = plank
old_boundary_id = '0 1 2 3'
new_boundary_name = 'plank_bottom plank_right plank_top plank_left'
[../]
[./plank_id]
type = SubdomainIDGenerator
input = plank_sidesets
subdomain_id = 1
[../]
[./block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.61
xmax = 1.21
ymin = 9.2
ymax = 10.0
nx = 3
ny = 4
elem_type = ${elem}
[../]
[./block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[../]
[./combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[../]
[./block_rename]
type = RenameBlockGenerator
input = combined
old_block_id = '1 2'
new_block_name = 'plank block'
[../]
[./corner]
type = ExtraNodesetGenerator
input = block_rename
coord = '0 -10.0'
new_boundary = point
[../]
[./block_sidesets]
type = SideSetsFromPointsGenerator
input = corner
points = '0.9 9.2 0
1.21 9.5 0
0.9 10.0 0
0.61 9.5 0'
new_boundary = 'block_bottom block_right block_top block_left'
[../]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[./disp_x]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[./disp_y]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[]
[Modules/TensorMechanics/Master]
[./block]
use_automatic_differentiation = true
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'block'
[../]
[./plank]
use_automatic_differentiation = true
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank'
eigenstrain_names = 'swell'
[../]
[]
[Contact]
[./frictionless]
mesh = block_sidesets
master = plank_right
slave = block_left
formulation = mortar
system = constraint
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = plank_left
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
boundary = plank_bottom
value = 0.0
[../]
[./right_x]
type = DirichletBC
variable = disp_x
boundary = block_right
value = 0
[../]
[./right_y]
type = ADFunctionDirichletBC
variable = disp_y
boundary = block_right
function = '-t'
[../]
[]
[Materials]
[./plank]
type = ComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[../]
[./block]
type = ComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[../]
[./stress]
type = ADComputeLinearElasticStress
block = 'plank block'
[../]
[./swell]
type = ADComputeEigenstrain
block = 'plank'
eigenstrain_name = swell
eigen_base = '1 0 0 0 0 0 0 0 0'
prefactor = swell_mat
[../]
[./swell_mat]
type = GenericFunctionMaterial
prop_names = 'swell_mat'
prop_values = '7e-2*(1-cos(4*t))'
block = 'plank'
[../]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15'
end_time = 10
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'contact'
[]
[Postprocessors]
[./nl_its]
type = NumNonlinearIterations
[../]
[./total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[../]
[./l_its]
type = NumLinearIterations
[../]
[./total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[../]
[./contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_slave_subdomain
[../]
[./avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[../]
[./max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[../]
[./min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[../]
[./avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[../]
[./max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[../]
[./min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[../]
[]
[Outputs]
exodus = true
file_base = ${name}
[./comp]
type = CSV
show = 'contact'
[../]
[./out]
type = CSV
file_base = '${name}_out'
[../]
[]
[Debug]
show_var_residual_norms = true
[]
modules/tensor_mechanics/test/tests/gravity/ad_gravity_test.i
#
# Gravity Test
#
# This test is designed to apply a gravity body force.
#
# The mesh is composed of one block with a single element.
# The bottom is fixed in all three directions. Poisson's ratio
# is zero and the density is 20/9.81
# which makes it trivial to check displacements.
#
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
# [./TensorMechanics]
# [../]
[./x]
type = ADStressDivergenceTensors
variable = disp_x
component = 0
[../]
[./y]
type = ADStressDivergenceTensors
variable = disp_y
component = 1
[../]
[./z]
type = ADStressDivergenceTensors
variable = disp_z
component = 2
[../]
[./gravity_y]
type = ADGravity
variable = disp_y
value = -9.81
[../]
[]
[BCs]
[./no_x]
type = DirichletBC
variable = disp_x
boundary = bottom
value = 0.0
[../]
[./no_y]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./no_z]
type = DirichletBC
variable = disp_z
boundary = bottom
value = 0.0
[../]
[]
[Materials]
[./Elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric_isotropic
C_ijkl = '0 0.5e6'
[../]
[./strain]
type = ADComputeSmallStrain
displacements = 'disp_x disp_y disp_z'
[../]
[./stress]
type = ADComputeLinearElasticStress
[../]
[./density]
type = GenericConstantMaterial
prop_names = density
prop_values = 2.0387
[../]
[]
[Preconditioning]
[./full]
type = SMP
full = true
[../]
[]
[Executioner]
type = Steady
solve_type = PJFNK
nl_abs_tol = 1e-10
l_max_its = 20
[]
[Outputs]
[./out]
type = Exodus
elemental_as_nodal = true
[../]
[]
modules/tensor_mechanics/test/tests/ad_elastic/green-lagrange.i
[Mesh]
type = GeneratedMesh
dim = 3
nx = 3
ny = 3
nz = 4
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[./stress_x]
type = ADStressDivergenceTensors
component = 0
variable = disp_x
[../]
[./stress_y]
type = ADStressDivergenceTensors
component = 1
variable = disp_y
[../]
[./stress_z]
type = ADStressDivergenceTensors
component = 2
variable = disp_z
[../]
[]
[BCs]
[./symmy]
type = DirichletBC
variable = disp_y
boundary = back
value = 0
[../]
[./symmx]
type = DirichletBC
variable = disp_x
boundary = back
value = 0
[../]
[./symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[../]
[./tdisp]
type = DirichletBC
variable = disp_z
boundary = front
value = 0.3
[../]
[]
[Materials]
[./elasticity]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.45
youngs_modulus = 1
[../]
[]
[Materials]
[./strain]
type = ADComputeGreenLagrangeStrain
[../]
[./stress]
type = ADComputeLinearElasticStress
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
[]
[Outputs]
execute_on = 'FINAL'
exodus = true
[]
modules/tensor_mechanics/test/tests/ad_linear_elasticity/applied_strain.i
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 2
ny = 2
xmax = 2
ymax = 2
[]
[Modules/TensorMechanics/Master/All]
strain = SMALL
eigenstrain_names = eigenstrain
add_variables = true
generate_output = 'strain_xx strain_yy strain_xy'
use_automatic_differentiation = true
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0
[../]
[./stress]
type = ADComputeLinearElasticStress
[../]
[./eigenstrain]
type = ADComputeEigenstrain
eigen_base = '0.1 0.05 0 0 0 0.01'
prefactor = -1
eigenstrain_name = eigenstrain
[../]
[]
[BCs]
[./bottom_y]
type = ADDirichletBC
variable = disp_y
boundary = 'bottom'
value = 0
[../]
[./left_x]
type = ADDirichletBC
variable = disp_x
boundary = 'left'
value = 0
[../]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
[]
[Outputs]
exodus = true
[]
modules/tensor_mechanics/test/tests/ad_thermal_expansion_function/dilatation.i
# This test checks the thermal expansion calculated via an dilatation function.
# The coefficient is selected so as to result in a 1e-4 strain in the x-axis, and to cross over
# from positive to negative strain.
[Mesh]
[./gen]
type = GeneratedMeshGenerator
dim = 3
[../]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[AuxVariables]
[./temp]
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
add_variables = true
eigenstrain_names = eigenstrain
generate_output = 'strain_xx strain_yy strain_zz'
use_automatic_differentiation = true
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./bottom]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./back]
type = DirichletBC
variable = disp_z
boundary = back
value = 0.0
[../]
[]
[AuxKernels]
[./temp]
type = FunctionAux
variable = temp
function = '1 + t'
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1
poissons_ratio = 0.3
[../]
[./stress]
type = ADComputeLinearElasticStress
[../]
[./thermal_expansion_strain]
type = ADComputeDilatationThermalExpansionFunctionEigenstrain
dilatation_function = cte_dilatation
stress_free_temperature = 1.5
temperature = temp
eigenstrain_name = eigenstrain
[../]
[]
[Functions]
[./cte_dilatation]
type = PiecewiseLinear
x = '1 2'
y = '-1e-4 1e-4'
[../]
[]
[Postprocessors]
[./disp_x_max]
type = SideAverageValue
variable = disp_x
boundary = right
[../]
[./temp_avg]
type = ElementAverageValue
variable = temp
[../]
[]
[Executioner]
type = Transient
end_time = 1.0
dt = 0.1
[]
[Outputs]
csv = true
[]
modules/tensor_mechanics/test/tests/ad_isotropic_elasticity_tensor/lambda_shear_modulus_test.i
[Mesh]
type = GeneratedMesh
dim = 3
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[AuxVariables]
[./stress_11]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
add_variables = true
use_automatic_differentiation = true
[../]
[]
[AuxKernels]
[./stress_11]
type = RankTwoAux
variable = stress_11
rank_two_tensor = stress
index_j = 1
index_i = 1
[../]
[]
[BCs]
[./bottom]
type = ADDirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./left]
type = ADDirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./back]
type = ADDirichletBC
variable = disp_z
boundary = back
value = 0
[../]
[./top]
type = ADDirichletBC
variable = disp_y
boundary = top
value = 0.001
[../]
[]
[Materials]
[./stress]
type = ADComputeLinearElasticStress
[../]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
lambda = 113636
shear_modulus = 454545
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Steady
l_max_its = 20
nl_max_its = 10
solve_type = NEWTON
[]
[Outputs]
exodus = true
[]
modules/combined/test/tests/mortar_tm/2d/ad_frictionless_sec/small.i
E_block = 1e7
E_plank = 1e7
elem = QUAD9
order = SECOND
name = 'small'
[Mesh]
patch_size = 80
patch_update_strategy = auto
[./plank]
type = GeneratedMeshGenerator
dim = 2
xmin = -0.3
xmax = 0.3
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
[../]
[./plank_sidesets]
type = RenameBoundaryGenerator
input = plank
old_boundary_id = '0 1 2 3'
new_boundary_name = 'plank_bottom plank_right plank_top plank_left'
[../]
[./plank_id]
type = SubdomainIDGenerator
input = plank_sidesets
subdomain_id = 1
[../]
[./block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.31
xmax = 0.91
ymin = 7.7
ymax = 8.5
nx = 3
ny = 4
elem_type = ${elem}
[../]
[./block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[../]
[./combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[../]
[./block_rename]
type = RenameBlockGenerator
input = combined
old_block_id = '1 2'
new_block_name = 'plank block'
[../]
[./block_sidesets]
type = SideSetsFromPointsGenerator
input = block_rename
points = '0.6 7.7 0
0.91 8.0 0
0.6 8.5 0
0.31 8.0 0'
new_boundary = 'block_bottom block_right block_top block_left'
[../]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[./disp_x]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[./disp_y]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[]
[Modules/TensorMechanics/Master]
[./action]
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank block'
use_automatic_differentiation = true
[../]
[]
[Contact]
[./frictionless]
mesh = block_sidesets
master = plank_right
slave = block_left
formulation = mortar
system = constraint
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = plank_left
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
boundary = plank_bottom
value = 0.0
[../]
[./right_x]
type = ADFunctionDirichletBC
variable = disp_x
boundary = block_right
function = '-0.04*sin(4*(t+1.5))+0.02'
[../]
[./right_y]
type = ADFunctionDirichletBC
variable = disp_y
boundary = block_right
function = '-t'
[../]
[]
[Materials]
[./plank]
type = ComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[../]
[./block]
type = ComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[../]
[./stress]
type = ADComputeLinearElasticStress
block = 'plank block'
[../]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15'
end_time = 13.5
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'contact'
[]
[Postprocessors]
[./nl_its]
type = NumNonlinearIterations
[../]
[./total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[../]
[./l_its]
type = NumLinearIterations
[../]
[./total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[../]
[./contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_slave_subdomain
[../]
[./avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[../]
[./max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[../]
[./min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[../]
[./avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[../]
[./max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[../]
[./min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[../]
[]
[Outputs]
exodus = true
file_base = ${name}
[./comp]
type = CSV
show = 'contact'
[../]
[./out]
type = CSV
file_base = '${name}_out'
[../]
[]
[Debug]
show_var_residual_norms = true
[]