- 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
- valueValue of the BC
C++ Type:double
Description:Value of the BC
- variableThe name of the variable that this boundary condition applies to
C++ Type:NonlinearVariableName
Description:The name of the variable that this boundary condition applies to
ADDirichletBC
Imposes the essential boundary condition , where is a constant, controllable value.
Description
ADDirichletBC
is the simplest type of NodalBC
, and is used for imposing so-called "essential" boundary conditions on systems of partial differential equations (PDEs). Such boundary conditions force a particular set of degrees of freedom (DOFs) defined by the boundary
parameter to take on a single, controllable value. This class is appropriate to use for PDEs of the form
where is the domain, and is its boundary. In this case, a ADDirichletBC
object is used to impose the condition (2) on the subset of the boundary denoted by . In this case, the value
corresponds to the constant , and the user must define one or more sidesets corresponding to the boundary subset .
Note that ADDirichletBC
computes its Jacobian using automatic differentiation.
Preset boundary conditions
With the parameter preset = true
, the value of the boundary condition is applied before the solve begins. With preset = false
, the boundary condition is only enforced as the solve progresses. In most situations, presetting the boundary condition is better.
The default behavior of the preset
parameter is determined by the flag use_legacy_dirichlet_bc
in the application. Change this flag to false to switch your application to the preferred behavior (setting preset = true
as the default).
Example Input Syntax
[BCs]
active = 'left right'
# We will use preset BCs
[./left]
type = ADDirichletBC
variable = u
boundary = 3
value = 0
[../]
[./right]
type = ADDirichletBC
variable = u
boundary = 1
value = 1
[../]
[]
(test/tests/bcs/ad_bc_preset_nodal/bc_preset_nodal.i)/opt/civet/build_0/moose/test/tests/bcs/ad_bc_preset_nodal/bc_preset_nodal.i
[Mesh]
type = GeneratedMesh
dim = 2
nx = 2
ny = 2
nz = 0
zmin = 0
zmax = 0
elem_type = QUAD4
[]
[Variables]
active = 'u'
[./u]
order = FIRST
family = LAGRANGE
[../]
[]
[Kernels]
active = 'diff'
[./diff]
type = ADDiffusion
variable = u
[../]
[]
[BCs]
active = 'left right'
# We will use preset BCs
[./left]
type = ADDirichletBC
variable = u
boundary = 3
value = 0
[../]
[./right]
type = ADDirichletBC
variable = u
boundary = 1
value = 1
[../]
[]
[Executioner]
type = Steady
solve_type = 'PJFNK'
[]
[Outputs]
file_base = bc_preset_out
exodus = true
[]
Input Parameters
- diag_save_inThe name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)
C++ Type:std::vector
Options:
Description:The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)
- displacementsThe displacements
C++ Type:std::vector
Options:
Description:The displacements
- presetTrueWhether or not to preset the BC (apply the value before the solve begins). Note that the default value of this parameter is handled by the use_legacy_dirichlet_bc parameter on the MooseApp.
Default:True
C++ Type:bool
Options:
Description:Whether or not to preset the BC (apply the value before the solve begins). Note that the default value of this parameter is handled by the use_legacy_dirichlet_bc parameter on the MooseApp.
- save_inThe name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)
C++ Type:std::vector
Options:
Description:The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)
Optional 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
- use_displaced_meshFalseWhether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Default:False
C++ Type:bool
Options:
Description:Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Advanced Parameters
- extra_matrix_tagsThe extra tags for the matrices this Kernel should fill
C++ Type:std::vector
Options:
Description:The extra tags for the matrices this Kernel should fill
- extra_vector_tagsThe extra tags for the vectors this Kernel should fill
C++ Type:std::vector
Options:
Description:The extra tags for the vectors this Kernel should fill
- matrix_tagssystem timeThe tag for the matrices this Kernel should fill
Default:system time
C++ Type:MultiMooseEnum
Options:nontime system time
Description:The tag for the matrices this Kernel should fill
- vector_tagsresidualThe tag for the vectors this Kernel should fill
Default:residual
C++ Type:MultiMooseEnum
Options:nontime time residual
Description:The tag for the vectors this Kernel should fill
Tagging Parameters
Input Files
- modules/tensor_mechanics/test/tests/ad_2D_geometries/2D-RZ_finiteStrain_test.i
- modules/tensor_mechanics/test/tests/ad_isotropic_elasticity_tensor/bulk_modulus_shear_modulus_test.i
- modules/tensor_mechanics/test/tests/ad_1D_spherical/finiteStrain_1DSphere_hollow.i
- modules/tensor_mechanics/test/tests/ad_viscoplasticity_stress_update/creep.i
- modules/tensor_mechanics/test/tests/ad_viscoplasticity_stress_update/lps_dual.i
- modules/tensor_mechanics/test/tests/ad_linear_elasticity/linear_elastic_material.i
- modules/tensor_mechanics/test/tests/rom_stress_update/3d.i
- modules/combined/test/tests/ad_power_law_creep/power_law_creep.i
- modules/tensor_mechanics/test/tests/rom_stress_update/verification.i
- modules/combined/test/tests/ad_cavity_pressure/negative_volume.i
- modules/tensor_mechanics/test/tests/ad_finite_strain_jacobian/bending_jacobian.i
- modules/tensor_mechanics/test/tests/ad_viscoplasticity_stress_update/gtn_single.i
- modules/tensor_mechanics/test/tests/rom_stress_update/2drz.i
- modules/tensor_mechanics/test/tests/ad_viscoplasticity_stress_update/lps_single_split.i
- modules/tensor_mechanics/test/tests/ad_viscoplasticity_stress_update/lps_single.i
- test/tests/bcs/ad_bc_preset_nodal/bc_preset_nodal.i
- modules/tensor_mechanics/test/tests/ad_finite_strain_jacobian/3d_bar.i
- modules/combined/test/tests/exception/ad.i
- modules/tensor_mechanics/test/tests/ad_isotropic_elasticity_tensor/youngs_modulus_poissons_ratio_test.i
- modules/combined/test/tests/ad_power_law_creep/power_law_creep_restart2.i
- modules/combined/test/tests/ad_power_law_creep/power_law_creep_simple.i
- modules/tensor_mechanics/test/tests/ad_plastic/power_law_creep.i
- modules/tensor_mechanics/test/tests/ad_linear_elasticity/extra_stresses.i
- modules/tensor_mechanics/test/tests/ad_2D_geometries/2D-RZ_centerline_VLC.i
- modules/tensor_mechanics/test/tests/ad_viscoplasticity_stress_update/exact.i
- modules/combined/test/tests/ad_power_law_creep/power_law_creep_restart1.i
- modules/tensor_mechanics/test/tests/ad_2D_geometries/3D-RZ_finiteStrain_test.i
- modules/combined/test/tests/ad_power_law_creep/power_law_creep_smallstrain.i
- modules/tensor_mechanics/test/tests/ad_linear_elasticity/applied_strain.i
- modules/tensor_mechanics/test/tests/ad_2D_geometries/2D-RZ_finiteStrain_resid.i
- modules/tensor_mechanics/test/tests/ad_1D_spherical/smallStrain_1DSphere.i
- modules/tensor_mechanics/test/tests/ad_isotropic_elasticity_tensor/lambda_shear_modulus_test.i
modules/tensor_mechanics/test/tests/ad_2D_geometries/2D-RZ_finiteStrain_test.i
# Considers the mechanics solution for a thick spherical shell that is uniformly
# pressurized on the inner and outer surfaces, using 2D axisymmetric geometry.
# This test uses the strain calculator ComputeAxisymmetricRZFiniteStrain,
# which is generated through the use of the TensorMechanics MasterAction.
#
# From Roark (Formulas for Stress and Strain, McGraw-Hill, 1975), the radially-dependent
# circumferential stress in a uniformly pressurized thick spherical shell is given by:
#
# S(r) = [ Pi[ri^3(2r^3+ro^3)] - Po[ro^3(2r^3+ri^3)] ] / [2r^3(ro^3-ri^3)]
#
# where:
# Pi = inner pressure
# Po = outer pressure
# ri = inner radius
# ro = outer radius
#
# The tests assume an inner and outer radii of 5 and 10, with internal and external
# pressures of 100000 and 200000 at t = 1.0, respectively. The resulting compressive
# tangential stress is largest at the inner wall and, from the above equation, has a
# value of -271429.
#
# RESULTS are below. Since stresses are average element values, values for the
# edge element and one-element-in are used to extrapolate the stress to the
# inner surface. The vesrion of the tests that are checked use the coarsest meshes.
#
# Mesh Radial elem S(edge elem) S(one elem in) S(extrap to surf)
# 1D-SPH
# 2D-RZ 12 (x10) -265004 -254665 -270174
# 3D 12 (6x6) -261880 -252811 -266415
#
# 1D-SPH
# 2D-RZ 48 (x10) -269853 -266710 -271425
# 3D 48 (10x10) -268522 -265653 -269957
#
# The numerical solution converges to the analytical solution as the mesh is
# refined.
[Mesh]
file = 2D-RZ_mesh.e
[]
[GlobalParams]
displacements = 'disp_r disp_z'
[]
[Problem]
coord_type = RZ
[]
[Modules/TensorMechanics/Master]
[./all]
strain = FINITE
add_variables = true
block = 1
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
block = 1
[../]
[./_elastic_strain]
type = ADComputeFiniteStrainElasticStress
block = 1
[../]
[]
[BCs]
# pin particle along symmetry planes
[./no_disp_r]
type = ADDirichletBC
variable = disp_r
boundary = xzero
value = 0.0
[../]
[./no_disp_z]
type = ADDirichletBC
variable = disp_z
boundary = yzero
value = 0.0
[../]
# exterior and internal pressures
[./exterior_pressure_r]
type = ADPressure
variable = disp_r
boundary = outer
component = 0
function = '200000*t'
[../]
[./exterior_pressure_z]
type = ADPressure
variable = disp_z
boundary = outer
component = 1
function = '200000*t'
[../]
[./interior_pressure_r]
type = ADPressure
variable = disp_r
boundary = inner
component = 0
function = '100000*t'
[../]
[./interior_pressure_z]
type = ADPressure
variable = disp_z
boundary = inner
component = 1
function = '100000*t'
[../]
[]
[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 = 0.2
dt = 0.1
[]
[Postprocessors]
[./strainTheta]
type = ElementAverageValue
variable = strain_theta
[../]
[./stressTheta]
type = ElementAverageValue
variable = stress_theta
[../]
[./stressTheta_pt]
type = PointValue
point = '5.0 0.0 0.0'
#bottom inside edge for comparison to theory; use csv = true
variable = stress_theta
[../]
[]
[Outputs]
exodus = true
[]
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_1D_spherical/finiteStrain_1DSphere_hollow.i
# This simulation models the mechanics solution for a hollow sphere under
# pressure, applied on the outer surfaces, using 1D spherical symmetry
# assumpitions. The inner radius of the sphere, r = 4mm, is pinned to prevent
# rigid body movement of the sphere.
#
# From Bower (Applied Mechanics of Solids, 2008, available online at
# solidmechanics.org/text/Chapter4_1/Chapter4_1.htm), and applying the outer
# pressure and pinned displacement boundary conditions set in this simulation,
# the radial displacement is given by:
#
# u(r) = \frac{P(1 + v)(1 - 2v)b^3}{E(b^3(1 + v) + 2a^3(1-2v))} * (\frac{a^3}{r^2} - r)
#
# where P is the applied pressure, b is the outer radius, a is the inner radius,
# v is Poisson's ration, E is Young's Modulus, and r is the radial position.
#
# The radial stress is given by:
#
# S(r) = \frac{Pb^3}{b^3(1 + v) + 2a^3(1 - 2v)} * (\frac{2a^3}{r^3}(2v - 1) - (1 + v))
#
# The test assumes an inner radius of 4mm, and outer radius of 9 mm,
# zero displacement at r = 4mm, and an applied outer pressure of 2MPa.
# The radial stress is largest in the inner most element and, at an assumed
# mid element coordinate of 4.5mm, is equal to -2.545MPa.
[Mesh]
type = GeneratedMesh
dim = 1
xmin = 4
xmax = 9
nx = 5
[]
[GlobalParams]
displacements = 'disp_r'
[]
[Problem]
coord_type = RSPHERICAL
[]
[Modules/TensorMechanics/Master]
[./all]
strain = FINITE
add_variables = true
use_automatic_differentiation = true
[../]
[]
[AuxVariables]
[./stress_rr]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Postprocessors]
[./stress_rr]
type = ElementAverageValue
variable = stress_rr
[../]
[]
[AuxKernels]
[./stress_rr]
type = RankTwoAux
rank_two_tensor = stress
index_i = 0
index_j = 0
variable = stress_rr
execute_on = timestep_end
[../]
[]
[BCs]
[./innerDisp]
type = ADDirichletBC
boundary = left
variable = disp_r
value = 0.0
[../]
[./outerPressure]
type = ADPressure
boundary = right
variable = disp_r
component = 0
constant = 2
[../]
[]
[Materials]
[./Elasticity_tensor]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.345
youngs_modulus = 1e4
[../]
[./stress]
type = ADComputeFiniteStrainElasticStress
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
line_search = none
# controls for linear iterations
l_max_its = 100
l_tol = 1e-8
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-10
nl_abs_tol = 1e-5
# time control
start_time = 0.0
dt = 0.25
dtmin = 0.0001
end_time = 1.0
[]
[Outputs]
exodus = true
[]
modules/tensor_mechanics/test/tests/ad_viscoplasticity_stress_update/creep.i
# This test is provided as a check to ensure ADComputeMultiplePorousInelasticStress
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 2
ny = 2
xmax = 0.002
ymax = 0.002
[]
[Modules/TensorMechanics/Master/All]
strain = FINITE
add_variables = true
base_name = 'total'
generate_output = 'strain_xx strain_yy strain_xy hydrostatic_stress vonmises_stress'
use_automatic_differentiation = true
[]
[Functions]
[./pull]
type = PiecewiseLinear
x = '0 0.1'
y = '0 1e-5'
[../]
[]
[Materials]
active='elasticity_tensor porous_stress creep'
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e10
poissons_ratio = 0.3
base_name = 'total'
[../]
[./porous_stress]
type = ADComputeMultiplePorousInelasticStress
inelastic_models = creep
initial_porosity = 0.1
outputs = all
base_name = 'total'
[../]
[./regular_stress]
type = ADComputeMultipleInelasticStress
inelastic_models = creep
outputs = all
base_name = 'total'
[../]
[./porosity]
type = GenericConstantMaterial
prop_names = porosity
prop_values = 0.1
outputs = all
[../]
[./creep]
type = ADPowerLawCreepStressUpdate
activation_energy = 4e4
temperature = 1200
coefficient = 1e-18
gas_constant = 1.987
n_exponent = 3
base_name = 'creep'
outputs = all
[../]
[]
[BCs]
[./no_disp_x]
type = ADDirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./no_disp_y]
type = ADDirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./pull_disp_y]
type = ADFunctionDirichletBC
variable = disp_y
boundary = top
function = pull
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
dt = 0.01
end_time = 0.12
[]
[Postprocessors]
[./disp_x]
type = SideAverageValue
variable = disp_x
boundary = right
[../]
[./disp_y]
type = SideAverageValue
variable = disp_y
boundary = top
[../]
[./avg_hydro]
type = ElementAverageValue
variable = total_hydrostatic_stress
[../]
[./avg_vonmises]
type = ElementAverageValue
variable = total_vonmises_stress
[../]
[./dt]
type = TimestepSize
[../]
[./num_lin]
type = NumLinearIterations
outputs = console
[../]
[./num_nonlin]
type = NumNonlinearIterations
outputs = console
[../]
[./eff_creep_strain]
type = ElementAverageValue
variable = creep_effective_creep_strain
[../]
[./porosity]
type = ElementAverageValue
variable = porosity
[../]
[]
[Outputs]
csv = true
[]
modules/tensor_mechanics/test/tests/ad_viscoplasticity_stress_update/lps_dual.i
# This test provides an example of combining two LPS viscoplasticity models with different stress
# exponents.
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 1
ny = 1
xmax = 0.002
ymax = 0.002
[]
[Modules/TensorMechanics/Master/All]
strain = FINITE
add_variables = true
generate_output = 'strain_xx strain_yy strain_xy hydrostatic_stress vonmises_stress'
use_automatic_differentiation = true
[]
[Functions]
[./pull]
type = PiecewiseLinear
x = '0 0.1'
y = '0 1e-5'
[../]
[./tot_effective_viscoplasticity]
type = ParsedFunction
vals = 'lps_1_eff_creep_strain lps_3_eff_creep_strain'
vars = 'lps_1_eff_creep_strain lps_3_eff_creep_strain'
value = 'lps_1_eff_creep_strain+lps_3_eff_creep_strain'
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e10
poissons_ratio = 0.3
[../]
[./stress]
type = ADComputeMultiplePorousInelasticStress
inelastic_models = 'one two'
initial_porosity = 0.1
outputs = all
[../]
[./one]
type = ADViscoplasticityStressUpdate
coefficient = 'coef_3'
power = 3
base_name = 'lps_1'
outputs = all
relative_tolerance = 1e-11
[../]
[./two]
type = ADViscoplasticityStressUpdate
coefficient = 1e-10
power = 1
base_name = 'lps_3'
outputs = all
relative_tolerance = 1e-11
[../]
[./coef]
type = ParsedMaterial
f_name = coef_3
# Example of creep power law
function = '0.5e-18 * exp(-4e4 / 1.987 / 1200)'
[../]
[]
[BCs]
[./no_disp_x]
type = ADDirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./no_disp_y]
type = ADDirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./pull_disp_y]
type = ADFunctionDirichletBC
variable = disp_y
boundary = top
function = pull
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
dt = 0.01
end_time = 0.12
[]
[Postprocessors]
[./disp_x]
type = SideAverageValue
variable = disp_x
boundary = right
[../]
[./disp_y]
type = SideAverageValue
variable = disp_y
boundary = top
[../]
[./avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
[../]
[./avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
[../]
[./dt]
type = TimestepSize
[../]
[./num_lin]
type = NumLinearIterations
outputs = console
[../]
[./num_nonlin]
type = NumNonlinearIterations
outputs = console
[../]
[./lps_1_eff_creep_strain]
type = ElementAverageValue
variable = lps_1_effective_viscoplasticity
[../]
[./lps_3_eff_creep_strain]
type = ElementAverageValue
variable = lps_3_effective_viscoplasticity
[../]
[./lps_1_gauge_stress]
type = ElementAverageValue
variable = lps_1_gauge_stress
[../]
[./lps_3_gauge_stress]
type = ElementAverageValue
variable = lps_3_gauge_stress
[../]
[./eff_creep_strain_tot]
type = FunctionValuePostprocessor
function = tot_effective_viscoplasticity
[../]
[./porosity]
type = ElementAverageValue
variable = porosity
[../]
[]
[Outputs]
csv = 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/rom_stress_update/3d.i
[Mesh]
type = GeneratedMesh
dim = 3
nx = 2
ny = 2
nz = 2
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[AuxVariables]
[./temperature]
initial_condition = 900.0
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = FINITE
add_variables = true
generate_output = 'vonmises_stress'
use_automatic_differentiation = true
[../]
[]
[BCs]
[./symmy]
type = ADDirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./symmx]
type = ADDirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./symmz]
type = ADDirichletBC
variable = disp_z
boundary = back
value = 0
[../]
[./pressure_x]
type = ADPressure
variable = disp_x
component = 0
boundary = right
constant = 1.0e5
[../]
[./pressure_y]
type = ADPressure
variable = disp_y
component = 1
boundary = top
constant = -1.0e5
[../]
[./pressure_z]
type = ADPressure
variable = disp_z
component = 2
boundary = front
constant = -1.0e5
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 3.30e11
poissons_ratio = 0.3
[../]
[./stress]
type = ADComputeMultipleInelasticStress
inelastic_models = rom_stress_prediction
[../]
[./rom_stress_prediction]
type = SS316HLAROMANCEStressUpdateTest
temperature = temperature
initial_mobile_dislocation_density = 6.0e12
initial_immobile_dislocation_density = 4.4e11
outputs = all
[../]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
nl_abs_tol = 1e-12
automatic_scaling = true
compute_scaling_once = false
num_steps = 5
[]
[Postprocessors]
[./effective_strain_avg]
type = ElementAverageValue
variable = effective_creep_strain
[../]
[./temperature]
type = ElementAverageValue
variable = temperature
[../]
[./mobile_dislocations]
type = ElementAverageValue
variable = mobile_dislocations
[../]
[./immobile_disloactions]
type = ElementAverageValue
variable = immobile_dislocations
[../]
[]
[Outputs]
csv = true
[]
modules/combined/test/tests/ad_power_law_creep/power_law_creep.i
# 1x1x1 unit cube with uniform pressure on top face
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
[]
[Variables]
[./temp]
initial_condition = 1000.0
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = FINITE
incremental = true
add_variables = true
generate_output = 'stress_yy creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_yy'
use_automatic_differentiation = true
[../]
[]
[Kernels]
[./heat]
type = ADHeatConduction
variable = temp
[../]
[./heat_ie]
type = ADHeatConductionTimeDerivative
variable = temp
[../]
[]
[BCs]
[./u_top_pull]
type = ADPressure
variable = disp_y
component = 1
boundary = top
constant = -10.0e6
[../]
[./u_bottom_fix]
type = ADDirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./u_yz_fix]
type = ADDirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./u_xy_fix]
type = ADDirichletBC
variable = disp_z
boundary = back
value = 0.0
[../]
[./temp_fix]
type = DirichletBC
variable = temp
boundary = 'bottom top'
value = 1000.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2e11
poissons_ratio = 0.3
[../]
[./radial_return_stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'power_law_creep'
[../]
[./power_law_creep]
type = ADPowerLawCreepStressUpdate
coefficient = 1.0e-15
n_exponent = 4
activation_energy = 3.0e5
temperature = temp
[../]
[./thermal]
type = HeatConductionMaterial
specific_heat = 1.0
thermal_conductivity = 100.
[../]
[./density]
type = ADDensity
density = 1.0
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 20
nl_max_its = 20
nl_rel_tol = 1e-6
nl_abs_tol = 1e-6
l_tol = 1e-5
start_time = 0.0
end_time = 1.0
num_steps = 10
dt = 0.1
[]
[Outputs]
exodus = true
[]
modules/tensor_mechanics/test/tests/rom_stress_update/verification.i
[Mesh]
type = GeneratedMesh
dim = 3
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[AuxVariables]
[./temperature]
[../]
[]
[AuxKernels]
[./temp_aux]
type = FunctionAux
variable = temperature
function = temp_fcn
execute_on = 'initial timestep_begin'
[../]
[]
[Functions]
[./rhom_fcn]
type = PiecewiseConstant
data_file = ss316_verification_data.csv
x_index_in_file = 0
y_index_in_file = 1
format = columns
xy_in_file_only = false
direction = right
[../]
[./rhoi_fcn]
type = PiecewiseConstant
data_file = ss316_verification_data.csv
x_index_in_file = 0
y_index_in_file = 2
format = columns
xy_in_file_only = false
direction = right
[../]
[./vmJ2_fcn]
type = PiecewiseConstant
data_file = ss316_verification_data.csv
x_index_in_file = 0
y_index_in_file = 3
format = columns
xy_in_file_only = false
direction = right
[../]
[./evm_fcn]
type = PiecewiseConstant
data_file = ss316_verification_data.csv
x_index_in_file = 0
y_index_in_file = 4
format = columns
xy_in_file_only = false
direction = right
[../]
[./temp_fcn]
type = PiecewiseConstant
data_file = ss316_verification_data.csv
x_index_in_file = 0
y_index_in_file = 5
format = columns
xy_in_file_only = false
direction = right
[../]
[./rhom_soln_fcn]
type = PiecewiseConstant
data_file = ss316_verification_data.csv
x_index_in_file = 0
y_index_in_file = 7
format = columns
xy_in_file_only = false
direction = right
[../]
[./rhoi_soln_fcn]
type = PiecewiseConstant
data_file = ss316_verification_data.csv
x_index_in_file = 0
y_index_in_file = 8
format = columns
xy_in_file_only = false
direction = right
[../]
[./creep_rate_soln_fcn]
type = PiecewiseConstant
data_file = ss316_verification_data.csv
x_index_in_file = 0
y_index_in_file = 10
format = columns
xy_in_file_only = false
direction = right
[../]
[./rhom_diff_fcn]
type = ParsedFunction
vars = 'rhom_soln rhom'
vals = 'rhom_soln rhom'
value = 'abs(rhom_soln - rhom) / rhom_soln'
[../]
[./rhoi_diff_fcn]
type = ParsedFunction
vars = 'rhoi_soln rhoi'
vals = 'rhoi_soln rhoi'
value = 'abs(rhoi_soln - rhoi) / rhoi_soln'
[../]
[./creep_rate_diff_fcn]
type = ParsedFunction
vars = 'creep_rate_soln creep_rate'
vals = 'creep_rate_soln creep_rate'
value = 'abs(creep_rate_soln - creep_rate) / creep_rate_soln'
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = FINITE
add_variables = true
generate_output = 'vonmises_stress'
use_automatic_differentiation = true
[../]
[]
[BCs]
[./symmx]
type = ADDirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./symmy]
type = ADDirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./symmz]
type = ADDirichletBC
variable = disp_z
boundary = back
value = 0
[../]
[./pressure_x]
type = ADPressure
variable = disp_x
component = 0
boundary = right
function = vmJ2_fcn
constant = 0.5e6
[../]
[./pressure_y]
type = ADPressure
variable = disp_y
component = 1
boundary = top
function = vmJ2_fcn
constant = -0.5e6
[../]
[./pressure_z]
type = ADPressure
variable = disp_z
component = 2
boundary = front
function = vmJ2_fcn
constant = -0.5e6
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e11
poissons_ratio = 0.3
[../]
[./stress]
type = ADComputeMultipleInelasticStress
inelastic_models = rom_stress_prediction
[../]
[./rom_stress_prediction]
type = SS316HLAROMANCEStressUpdateTest
temperature = temperature
effective_inelastic_strain_name = effective_creep_strain
internal_solve_full_iteration_history = true
apply_strain = false
outputs = all
immobile_dislocation_density_forcing_function = rhoi_fcn
mobile_dislocation_density_forcing_function = rhom_fcn
old_creep_strain_forcing_function = evm_fcn
[../]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_ksp_ew -snes_converged_reason -ksp_converged_reason'# -ksp_error_if_not_converged -snes_error_if_not_converged'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
line_search = 'none'
automatic_scaling = true
compute_scaling_once = false
nl_abs_tol = 1e-10
dt = 1e-3
end_time = 1e-2
[]
[Postprocessors]
[./effective_strain_avg]
type = ElementAverageValue
variable = effective_creep_strain
outputs = console
[../]
[./temperature]
type = ElementAverageValue
variable = temperature
outputs = console
[../]
[./rhom]
type = ElementAverageValue
variable = mobile_dislocations
[../]
[./rhoi]
type = ElementAverageValue
variable = immobile_dislocations
[../]
[./vonmises_stress]
type = ElementAverageValue
variable = vonmises_stress
outputs = console
[../]
[./creep_rate]
type = ElementAverageValue
variable = creep_rate
[../]
[./rhom_in]
type = FunctionValuePostprocessor
function = rhom_fcn
execute_on = 'TIMESTEP_END initial'
outputs = console
[../]
[./rhoi_in]
type = FunctionValuePostprocessor
function = rhoi_fcn
execute_on = 'TIMESTEP_END initial'
outputs = console
[../]
[./vmJ2_in]
type = FunctionValuePostprocessor
function = vmJ2_fcn
execute_on = 'TIMESTEP_END initial'
outputs = console
[../]
[./rhom_soln]
type = FunctionValuePostprocessor
function = rhom_soln_fcn
outputs = console
[../]
[./rhoi_soln]
type = FunctionValuePostprocessor
function = rhoi_soln_fcn
outputs = console
[../]
[./creep_rate_soln]
type = FunctionValuePostprocessor
function = creep_rate_soln_fcn
outputs = console
[../]
[./rhom_diff]
type = FunctionValuePostprocessor
function = rhom_diff_fcn
outputs = console
[../]
[./rhoi_diff]
type = FunctionValuePostprocessor
function = rhoi_diff_fcn
outputs = console
[../]
[./creep_rate_diff]
type = FunctionValuePostprocessor
function = creep_rate_diff_fcn
outputs = console
[../]
[./rhom_max_diff]
type = TimeExtremeValue
postprocessor = rhom_diff
outputs = console
[../]
[./rhoi_max_diff]
type = TimeExtremeValue
postprocessor = rhoi_diff
outputs = console
[../]
[./creep_rate_max_diff]
type = TimeExtremeValue
postprocessor = creep_rate_diff
outputs = console
[../]
[]
[Outputs]
csv = true
file_base = 'verification_1e-3_out'
[]
modules/combined/test/tests/ad_cavity_pressure/negative_volume.i
#
# Cavity Pressure Test
#
# This test is designed to compute a negative number of moles
# to trigger an error check in the CavityPressureUserObject.
# The negative number of moles is achieved by supplying an
# open volume to the InternalVolume postprocessor, which
# calculates a negative volume.
[Problem]
coord_type = RZ
[]
[GlobalParams]
displacements = 'disp_r disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 1
ny = 2
[]
[Functions]
[./temperature]
type = PiecewiseLinear
x = '0 1'
y = '1 2'
scale_factor = 100
[../]
[]
[Variables]
[./temperature]
initial_condition = 100
[../]
[]
[Modules/TensorMechanics/Master]
[./block]
strain = FINITE
add_variables = true
use_automatic_differentiation = true
[../]
[]
[Kernels]
[./heat]
type = Diffusion
variable = temperature
use_displaced_mesh = true
[../]
[]
[BCs]
[./no_x]
type = ADDirichletBC
variable = disp_r
boundary = left
value = 0.0
[../]
[./no_y]
type = ADDirichletBC
variable = disp_z
boundary = bottom
value = 0.0
[../]
[./temperatureInterior]
type = ADFunctionDirichletBC
boundary = 2
function = temperature
variable = temperature
[../]
[./CavityPressure]
[./pressure]
boundary = 'top bottom right'
initial_pressure = 10e5
R = 8.3143
output_initial_moles = initial_moles
temperature = aveTempInterior
volume = internalVolume
startup_time = 0.5
output = ppress
use_automatic_differentiation = true
[../]
[../]
[]
[Materials]
[./elastic_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stress1]
type = ADComputeFiniteStrainElasticStress
[../]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type -sub_pc_type'
petsc_options_value = 'asm lu'
nl_abs_tol = 1e-10
l_max_its = 20
dt = 0.5
end_time = 1.0
[]
[Postprocessors]
[./internalVolume]
type = InternalVolume
boundary = 'top bottom right'
execute_on = 'initial linear'
[../]
[./aveTempInterior]
type = AxisymmetricCenterlineAverageValue
boundary = left
variable = temperature
execute_on = 'initial linear'
[../]
[]
[Outputs]
exodus = false
[]
modules/tensor_mechanics/test/tests/ad_finite_strain_jacobian/bending_jacobian.i
[Mesh]
[generated_mesh]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 10
ymin = 0
ymax = 2
nx = 10
ny = 2
elem_type = QUAD4
[]
[corner]
type = ExtraNodesetGenerator
new_boundary = 101
coord = '0 0'
input = generated_mesh
[]
[side]
type = ExtraNodesetGenerator
new_boundary = 102
coord = '10 0'
input = corner
[]
[mid]
type = ExtraNodesetGenerator
new_boundary = 103
coord = '5 2'
input = side
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Modules/TensorMechanics/Master]
[./all]
strain = FINITE
add_variables = true
use_finite_deform_jacobian = true
volumetric_locking_correction = false
use_automatic_differentiation = true
[../]
[]
[Materials]
[./stress]
type = ADComputeFiniteStrainElasticStress
[../]
[./elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric9
C_ijkl = '1.684e5 0.176e5 0.176e5 1.684e5 0.176e5 1.684e5 0.754e5 0.754e5 0.754e5'
[../]
[]
[BCs]
[./fix_corner_x]
type = ADDirichletBC
variable = disp_x
boundary = 101
value = 0
[../]
[./fix_corner_y]
type = ADDirichletBC
variable = disp_y
boundary = 101
value = 0
[../]
[./fix_y]
type = ADDirichletBC
variable = disp_y
boundary = 102
value = 0
[../]
[./move_y]
type = ADFunctionDirichletBC
variable = disp_y
boundary = 103
function = '-t'
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
nl_rel_tol = 1e-10
nl_max_its = 10
l_tol = 1e-4
l_max_its = 50
dt = 0.1
dtmin = 0.1
num_steps = 2
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Outputs]
exodus = true
[]
modules/tensor_mechanics/test/tests/ad_viscoplasticity_stress_update/gtn_single.i
# This test provides an example of an individual GTN viscoplasticity model
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 1
ny = 1
xmax = 0.002
ymax = 0.002
[]
[Modules/TensorMechanics/Master/All]
strain = FINITE
add_variables = true
base_name = 'total'
generate_output = 'strain_xx strain_yy strain_xy hydrostatic_stress vonmises_stress'
use_automatic_differentiation = true
[]
[Functions]
[./pull]
type = PiecewiseLinear
x = '0 0.1'
y = '0 1e-5'
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e10
poissons_ratio = 0.3
base_name = 'total'
[../]
[./stress]
type = ADComputeMultiplePorousInelasticStress
inelastic_models = gtn
initial_porosity = 0.1
outputs = all
base_name = 'total'
[../]
[./gtn]
type = ADViscoplasticityStressUpdate
total_strain_base_name = 'total'
coefficient = 'coef'
power = 3
viscoplasticity_model = GTN
outputs = all
relative_tolerance = 1e-11
[../]
[./coef]
type = ParsedMaterial
f_name = coef
# Example of creep power law
function = '1e-18 * exp(-4e4 / 1.987 / 1200)'
[../]
[]
[BCs]
[./no_disp_x]
type = ADDirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./no_disp_y]
type = ADDirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./pull_disp_y]
type = ADFunctionDirichletBC
variable = disp_y
boundary = top
function = pull
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
dt = 0.01
end_time = 0.12
[]
[Postprocessors]
[./disp_x]
type = SideAverageValue
variable = disp_x
boundary = right
[../]
[./disp_y]
type = SideAverageValue
variable = disp_y
boundary = top
[../]
[./avg_hydro]
type = ElementAverageValue
variable = total_hydrostatic_stress
[../]
[./avg_vonmises]
type = ElementAverageValue
variable = total_vonmises_stress
[../]
[./dt]
type = TimestepSize
[../]
[./num_lin]
type = NumLinearIterations
outputs = console
[../]
[./num_nonlin]
type = NumNonlinearIterations
outputs = console
[../]
[./eff_creep_strain]
type = ElementAverageValue
variable = effective_viscoplasticity
[../]
[./porosity]
type = ElementAverageValue
variable = porosity
[../]
[]
[Outputs]
csv = true
[]
modules/tensor_mechanics/test/tests/rom_stress_update/2drz.i
[Mesh]
type = GeneratedMesh
dim = 2
nx = 2
ny = 2
[]
[Problem]
coord_type = RZ
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[AuxVariables]
[./temperature]
initial_condition = 900.0
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = FINITE
add_variables = true
use_automatic_differentiation = true
[../]
[]
[BCs]
[./symmy]
type = ADDirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./symmx]
type = ADDirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./pressure_x]
type = ADPressure
variable = disp_x
component = 0
boundary = right
constant = 3.1675e5
[../]
[./pressure_y]
type = ADPressure
variable = disp_y
component = 1
boundary = top
constant = 6.336e5
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 3.30e11
poissons_ratio = 0.3
[../]
[./stress]
type = ADComputeMultipleInelasticStress
inelastic_models = rom_stress_prediction
[../]
[./rom_stress_prediction]
type = SS316HLAROMANCEStressUpdateTest
temperature = temperature
initial_mobile_dislocation_density = 6.0e12
initial_immobile_dislocation_density = 4.4e11
outputs = all
[../]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
nl_abs_tol = 1e-12
automatic_scaling = true
compute_scaling_once = false
num_steps = 5
[]
[Postprocessors]
[./effective_strain_avg]
type = ElementAverageValue
variable = effective_creep_strain
[../]
[./temperature]
type = ElementAverageValue
variable = temperature
[../]
[./mobile_dislocations]
type = ElementAverageValue
variable = mobile_dislocations
[../]
[./immobile_disloactions]
type = ElementAverageValue
variable = immobile_dislocations
[../]
[]
[Outputs]
csv = true
[]
modules/tensor_mechanics/test/tests/ad_viscoplasticity_stress_update/lps_single_split.i
# This test provides an example of combining two LPS viscoplasticity model.
# The answer should be close, but not exactly the same, as lps_single.i
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 1
ny = 1
xmax = 0.002
ymax = 0.002
[]
[Modules/TensorMechanics/Master/All]
strain = FINITE
add_variables = true
generate_output = 'strain_xx strain_yy strain_xy hydrostatic_stress vonmises_stress'
use_automatic_differentiation = true
[]
[Functions]
[./pull]
type = PiecewiseLinear
x = '0 0.1'
y = '0 1e-5'
[../]
[./tot_effective_viscoplasticity]
type = ParsedFunction
vals = 'lps_1_eff_creep_strain lps_2_eff_creep_strain'
vars = 'lps_1_eff_creep_strain lps_2_eff_creep_strain'
value = 'lps_1_eff_creep_strain+lps_2_eff_creep_strain'
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e10
poissons_ratio = 0.3
[../]
[./stress]
type = ADComputeMultiplePorousInelasticStress
inelastic_models = 'one two'
initial_porosity = 0.1
outputs = all
[../]
[./one]
type = ADViscoplasticityStressUpdate
coefficient = 'coef'
power = 3
base_name = 'lps_first'
outputs = all
relative_tolerance = 1e-11
[../]
[./two]
type = ADViscoplasticityStressUpdate
coefficient = 'coef'
power = 3
base_name = 'lps_second'
outputs = all
relative_tolerance = 1e-11
[../]
[./coef]
type = ParsedMaterial
f_name = coef
# Example of creep power law
function = '0.5e-18 * exp(-4e4 / 1.987 / 1200)'
[../]
[]
[BCs]
[./no_disp_x]
type = ADDirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./no_disp_y]
type = ADDirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./pull_disp_y]
type = ADFunctionDirichletBC
variable = disp_y
boundary = top
function = pull
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
dt = 0.01
end_time = 0.12
[]
[Postprocessors]
[./disp_x]
type = SideAverageValue
variable = disp_x
boundary = right
[../]
[./disp_y]
type = SideAverageValue
variable = disp_y
boundary = top
[../]
[./avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
[../]
[./avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
[../]
[./dt]
type = TimestepSize
[../]
[./num_lin]
type = NumLinearIterations
outputs = console
[../]
[./num_nonlin]
type = NumNonlinearIterations
outputs = console
[../]
[./lps_1_eff_creep_strain]
type = ElementAverageValue
variable = lps_first_effective_viscoplasticity
outputs = none
[../]
[./lps_2_eff_creep_strain]
type = ElementAverageValue
variable = lps_second_effective_viscoplasticity
outputs = none
[../]
[./eff_creep_strain_tot]
type = FunctionValuePostprocessor
function = tot_effective_viscoplasticity
[../]
[./porosity]
type = ElementAverageValue
variable = porosity
[../]
[]
[Outputs]
csv = true
[]
modules/tensor_mechanics/test/tests/ad_viscoplasticity_stress_update/lps_single.i
# This test provides an example of an individual LPS viscoplasticity model
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 1
ny = 1
xmax = 0.002
ymax = 0.002
[]
[Modules/TensorMechanics/Master/All]
strain = FINITE
add_variables = true
generate_output = 'strain_xx strain_yy strain_xy hydrostatic_stress vonmises_stress'
use_automatic_differentiation = true
[]
[Functions]
[./pull]
type = PiecewiseLinear
x = '0 0.1'
y = '0 1e-5'
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e10
poissons_ratio = 0.3
[../]
[./stress]
type = ADComputeMultiplePorousInelasticStress
inelastic_models = lps
initial_porosity = 0.1
outputs = all
[../]
[./lps]
type = ADViscoplasticityStressUpdate
coefficient = 'coef'
power = 3
outputs = all
relative_tolerance = 1e-11
[../]
[./coef]
type = ParsedMaterial
f_name = coef
# Example of creep power law
function = '1e-18 * exp(-4e4 / 1.987 / 1200)'
[../]
[]
[BCs]
[./no_disp_x]
type = ADDirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./no_disp_y]
type = ADDirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./pull_disp_y]
type = ADFunctionDirichletBC
variable = disp_y
boundary = top
function = pull
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
dt = 0.01
end_time = 0.12
[]
[Postprocessors]
[./disp_x]
type = SideAverageValue
variable = disp_x
boundary = right
[../]
[./disp_y]
type = SideAverageValue
variable = disp_y
boundary = top
[../]
[./avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
[../]
[./avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
[../]
[./dt]
type = TimestepSize
[../]
[./num_lin]
type = NumLinearIterations
outputs = console
[../]
[./num_nonlin]
type = NumNonlinearIterations
outputs = console
[../]
[./eff_creep_strain]
type = ElementAverageValue
variable = effective_viscoplasticity
[../]
[./porosity]
type = ElementAverageValue
variable = porosity
[../]
[]
[Outputs]
csv = true
[]
test/tests/bcs/ad_bc_preset_nodal/bc_preset_nodal.i
[Mesh]
type = GeneratedMesh
dim = 2
nx = 2
ny = 2
nz = 0
zmin = 0
zmax = 0
elem_type = QUAD4
[]
[Variables]
active = 'u'
[./u]
order = FIRST
family = LAGRANGE
[../]
[]
[Kernels]
active = 'diff'
[./diff]
type = ADDiffusion
variable = u
[../]
[]
[BCs]
active = 'left right'
# We will use preset BCs
[./left]
type = ADDirichletBC
variable = u
boundary = 3
value = 0
[../]
[./right]
type = ADDirichletBC
variable = u
boundary = 1
value = 1
[../]
[]
[Executioner]
type = Steady
solve_type = 'PJFNK'
[]
[Outputs]
file_base = bc_preset_out
exodus = true
[]
modules/tensor_mechanics/test/tests/ad_finite_strain_jacobian/3d_bar.i
[Mesh]
[generated_mesh]
type = GeneratedMeshGenerator
dim = 3
xmin = 0
xmax = 2
ymin = 0
ymax = 2
zmin = 0
zmax = 10
nx = 10
ny = 2
nz = 2
elem_type = HEX8
[]
[corner]
type = ExtraNodesetGenerator
new_boundary = 101
coord = '0 0 0'
input = generated_mesh
[]
[side]
type = ExtraNodesetGenerator
new_boundary = 102
coord = '2 0 0'
input = corner
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Modules/TensorMechanics/Master]
[./all]
strain = FINITE
add_variables = true
use_finite_deform_jacobian = true
volumetric_locking_correction = false
use_automatic_differentiation = true
[../]
[]
[Materials]
[./stress]
type = ADComputeFiniteStrainElasticStress
[../]
[./elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric9
C_ijkl = '1.684e5 0.176e5 0.176e5 1.684e5 0.176e5 1.684e5 0.754e5 0.754e5 0.754e5'
[../]
[]
[BCs]
[./fix_corner_x]
type = ADDirichletBC
variable = disp_x
boundary = 101
value = 0
[../]
[./fix_corner_y]
type = ADDirichletBC
variable = disp_y
boundary = 101
value = 0
[../]
[./fix_side_y]
type = ADDirichletBC
variable = disp_y
boundary = 102
value = 0
[../]
[./fix_z]
type = ADDirichletBC
variable = disp_z
boundary = back
value = 0
[../]
[./move_z]
type = ADFunctionDirichletBC
variable = disp_z
boundary = front
function = 't'
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
nl_rel_tol = 1e-10
nl_max_its = 10
l_tol = 1e-4
l_max_its = 50
dt = 0.2
dtmin = 0.2
num_steps = 2
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Outputs]
exodus = true
[]
modules/combined/test/tests/exception/ad.i
[GlobalParams]
order = SECOND
displacements = 'disp_x disp_y'
[]
[Problem]
coord_type = RZ
[]
[Mesh]
patch_update_strategy = iteration
[./gen]
type = FileMeshGenerator
file = mesh.e
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./temp]
initial_condition = 501
[../]
[]
[AuxVariables]
[./density_aux]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Modules/TensorMechanics/Master]
[./finite]
strain = FINITE
use_automatic_differentiation = true
[../]
[]
[Kernels]
[./gravity]
type = ADGravity
variable = disp_y
value = -9.81
[../]
[./heat]
type = ADMatDiffusion
variable = temp
diffusivity = 1
[../]
[./heat_ie]
type = ADTimeDerivative
variable = temp
[../]
[]
[AuxKernels]
[./conductance]
type = MaterialRealAux
property = density
variable = density_aux
boundary = inner_surface
[../]
[]
[ThermalContact]
[./thermal_contact]
type = GapHeatTransfer
variable = temp
master = outer_interior
slave = inner_surface
quadrature = true
[../]
[]
[BCs]
[./no_x]
type = ADDirichletBC
variable = disp_x
boundary = 'centerline'
value = 0.0
[../]
[./no_y]
type = ADDirichletBC
variable = disp_y
boundary = 'centerline outer_exterior'
value = 0.0
[../]
[./temp]
type = FunctionDirichletBC
boundary = outer_exterior
variable = temp
function = '500 + t'
[../]
[]
[Materials]
[./density]
type = GenericConstantMaterial
prop_names = 'density'
prop_values = '1'
[../]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e11
poissons_ratio = 0.3
[../]
[./inner_elastic_stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'inner_creep'
block = inner
outputs = all
[../]
[./inner_creep]
type = ADPowerLawCreepExceptionTest
coefficient = 10e-22
n_exponent = 2
activation_energy = 0
block = inner
[../]
[./outer_stressstress]
type = ADComputeFiniteStrainElasticStress
block = outer
[../]
[]
[Executioner]
type = Transient
petsc_options = ' -snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
line_search = none
nl_abs_tol = 1e-7
l_max_its = 20
num_steps = 1
dt = 1
dtmin = .1
[]
[Outputs]
exodus = 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/combined/test/tests/ad_power_law_creep/power_law_creep_restart2.i
# 1x1x1 unit cube with uniform pressure on top face
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
[]
[Variables]
[./temp]
order = FIRST
family = LAGRANGE
initial_condition = 1000.0
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = FINITE
incremental = true
add_variables = true
generate_output = 'stress_yy creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_yy'
use_automatic_differentiation = true
[../]
[]
[Functions]
[./top_pull]
type = PiecewiseLinear
x = '0 1'
y = '1 1'
[../]
[]
[Kernels]
[./heat]
type = ADHeatConduction
variable = temp
[../]
[./heat_ie]
type = ADHeatConductionTimeDerivative
variable = temp
[../]
[]
[BCs]
[./u_top_pull]
type = ADPressure
variable = disp_y
component = 1
boundary = top
constant = -10.0e6
function = top_pull
[../]
[./u_bottom_fix]
type = ADDirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./u_yz_fix]
type = ADDirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./u_xy_fix]
type = ADDirichletBC
variable = disp_z
boundary = back
value = 0.0
[../]
[./temp_fix]
type = DirichletBC
variable = temp
boundary = 'bottom top'
value = 1000.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2e11
poissons_ratio = 0.3
[../]
[./radial_return_stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'power_law_creep'
[../]
[./power_law_creep]
type = ADPowerLawCreepStressUpdate
coefficient = 1.0e-15
n_exponent = 4
activation_energy = 3.0e5
temperature = temp
[../]
[./thermal]
type = HeatConductionMaterial
specific_heat = 1.0
thermal_conductivity = 100.
[../]
[./density]
type = ADDensity
density = 1.0
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 20
nl_max_its = 20
nl_rel_tol = 1e-6
nl_abs_tol = 1e-6
l_tol = 1e-5
start_time = 0.6
end_time = 1.0
num_steps = 12
dt = 0.1
[]
[Outputs]
file_base = power_law_creep_out
exodus = true
[]
[Problem]
restart_file_base = power_law_creep_restart1_out_cp/0006
[]
modules/combined/test/tests/ad_power_law_creep/power_law_creep_simple.i
# 1x1x1 unit cube with uniform pressure on top face
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
[]
[AuxVariables]
[./temp]
initial_condition = 1000.0
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = FINITE
incremental = true
add_variables = true
generate_output = 'stress_yy creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_yy'
use_automatic_differentiation = true
[../]
[]
[BCs]
[./u_top_fix]
type = ADDirichletBC
variable = disp_y
boundary = top
value = 1e-5
[../]
[./u_bottom_fix]
type = ADDirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./u_yz_fix]
type = ADDirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./u_xy_fix]
type = ADDirichletBC
variable = disp_z
boundary = back
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2e11
poissons_ratio = 0.3
[../]
[./radial_return_stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'power_law_creep'
[../]
[./power_law_creep]
type = ADPowerLawCreepStressUpdate
coefficient = 1.0e-15
n_exponent = 4
activation_energy = 3.0e5
temperature = temp
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
num_steps = 10
dt = 0.1
[]
[Outputs]
exodus = true
[]
modules/tensor_mechanics/test/tests/ad_plastic/power_law_creep.i
[Mesh]
type = GeneratedMesh
dim = 2
nx = 2
ny = 2
second_order = true
[]
[GlobalParams]
displacements = 'disp_x disp_y'
volumetric_locking_correction = false
[]
[AuxVariables]
[./hydrostatic_stress]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./hydrostatic_stress]
type = RankTwoScalarAux
variable = hydrostatic_stress
rank_two_tensor = stress
scalar_type = Hydrostatic
[../]
[]
[Variables]
[./disp_x]
order = SECOND
scaling = 1e-10
[../]
[./disp_y]
order = SECOND
scaling = 1e-10
[../]
[]
[Functions]
[./pull]
type = PiecewiseLinear
x = '0 10'
y = '0 1e-3'
[../]
[]
[Kernels]
[./stress_x]
type = ADStressDivergenceTensors
component = 0
variable = disp_x
[../]
[./stress_y]
type = ADStressDivergenceTensors
component = 1
variable = disp_y
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e10
poissons_ratio = 0.3
[../]
[./strain]
type = ADComputeIncrementalSmallStrain
[../]
[./elastic_strain]
type = ADComputeMultipleInelasticStress
[../]
[./creep_ten]
type = ADPowerLawCreepStressUpdate
coefficient = 10e-24
n_exponent = 4
activation_energy = 0
base_name = creep_ten
[../]
[./creep_ten2]
type = ADPowerLawCreepStressUpdate
coefficient = 10e-24
n_exponent = 4
activation_energy = 0
base_name = creep_ten2
[../]
[./creep_one]
type = ADPowerLawCreepStressUpdate
coefficient = 1e-24
n_exponent = 4
activation_energy = 0
base_name = creep_one
[../]
[./creep_nine]
type = ADPowerLawCreepStressUpdate
coefficient = 9e-24
n_exponent = 4
activation_energy = 0
base_name = creep_nine
[../]
[./creep_zero]
type = ADPowerLawCreepStressUpdate
coefficient = 0e-24
n_exponent = 4
activation_energy = 0
base_name = creep_zero
[../]
[]
[BCs]
[./no_disp_x]
type = ADDirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./no_disp_y]
type = ADDirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./pull_disp_y]
type = ADFunctionDirichletBC
variable = disp_y
boundary = top
function = pull
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
petsc_options_iname = -pc_hypre_type
petsc_options_value = boomeramg
line_search = 'none'
nl_rel_tol = 1e-5
num_steps = 5
dt = 1e-1
[]
[Postprocessors]
[./max_disp_x]
type = ElementExtremeValue
variable = disp_x
[../]
[./max_disp_y]
type = ElementExtremeValue
variable = disp_y
[../]
[./max_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
[../]
[./dt]
type = TimestepSize
[../]
[./num_lin]
type = NumLinearIterations
outputs = console
[../]
[./num_nonlin]
type = NumNonlinearIterations
outputs = console
[../]
[]
[Outputs]
csv = 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/test/tests/ad_2D_geometries/2D-RZ_centerline_VLC.i
# Simple test to check for use of AxisymmetricCenterlineAverageValue with
# volumetric_locking_correction activated in a tensor mechanics simulation
[Mesh]
type = GeneratedMesh
dim = 2
[]
[GlobalParams]
displacements = 'disp_r disp_z'
volumetric_locking_correction = true
[]
[Problem]
coord_type = RZ
[]
[Modules/TensorMechanics/Master]
[./all]
strain = FINITE
add_variables = true
use_automatic_differentiation = true
[../]
[]
[AuxVariables]
[./temperature]
initial_condition = 298.0
[../]
[]
[BCs]
[./symmetry_x]
type = ADDirichletBC
variable = disp_r
value = 0
boundary = left
[../]
[./roller_z]
type = ADDirichletBC
variable = disp_z
value = 0
boundary = bottom
[../]
[./top_load]
type = ADFunctionDirichletBC
variable = disp_z
function = -0.01*t
boundary = top
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e10
poissons_ratio = 0.3
[../]
[./_elastic_strain]
type = ADComputeFiniteStrainElasticStress
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
line_search = 'none'
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-6
l_max_its = 50
start_time = 0.0
end_time = 0.3
dt = 0.1
[]
[Postprocessors]
[./center_temperature]
type = AxisymmetricCenterlineAverageValue
variable = temperature
boundary = left
[../]
[]
[Outputs]
csv = true
perf_graph = true
[]
modules/tensor_mechanics/test/tests/ad_viscoplasticity_stress_update/exact.i
# This test provides comparison to calculated values from Leblond:1994kl
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
pore_shape_model = spherical
[]
[Mesh]
[./msh]
type = CartesianMeshGenerator
dim = 3
dx = 0.01
dy = 0.01
dz = 0.01
iz = 1
ix = 1
iy = 1
[../]
[./extra_nodeset]
type = ExtraNodesetGenerator
input = msh
new_boundary = 'origin'
coord = '0 0 0'
[]
[]
[Modules/TensorMechanics/Master/All]
strain = FINITE
add_variables = true
generate_output = 'strain_xx strain_yy strain_xy hydrostatic_stress vonmises_stress'
use_automatic_differentiation = true
[]
[Functions]
[./Q_gtn]
type = ParsedFunction
vars = 'avg_vonmises gtn_gauge_stress'
vals = 'avg_vonmises gtn_gauge_stress'
value = 'avg_vonmises/gtn_gauge_stress'
[../]
[./M_gtn]
type = ParsedFunction
vars = 'avg_hydro gtn_gauge_stress'
vals = 'avg_hydro gtn_gauge_stress'
value = 'abs(avg_hydro) / gtn_gauge_stress'
[../]
[./Q_ten]
type = ParsedFunction
vars = 'avg_vonmises ten_gauge_stress'
vals = 'avg_vonmises ten_gauge_stress'
value = 'avg_vonmises/ten_gauge_stress'
[../]
[./M_ten]
type = ParsedFunction
vars = 'avg_hydro ten_gauge_stress'
vals = 'avg_hydro ten_gauge_stress'
value = 'abs(avg_hydro) / ten_gauge_stress'
[../]
[./Q_five]
type = ParsedFunction
vars = 'avg_vonmises five_gauge_stress'
vals = 'avg_vonmises five_gauge_stress'
value = 'avg_vonmises/five_gauge_stress'
[../]
[./M_five]
type = ParsedFunction
vars = 'avg_hydro five_gauge_stress'
vals = 'avg_hydro five_gauge_stress'
value = 'abs(avg_hydro) / five_gauge_stress'
[../]
[./Q_three]
type = ParsedFunction
vars = 'avg_vonmises three_gauge_stress'
vals = 'avg_vonmises three_gauge_stress'
value = 'avg_vonmises / three_gauge_stress'
[../]
[./M_three]
type = ParsedFunction
vars = 'avg_hydro three_gauge_stress'
vals = 'avg_hydro three_gauge_stress'
value = 'abs(avg_hydro) / three_gauge_stress'
[../]
[./Q_two]
type = ParsedFunction
vars = 'avg_vonmises two_gauge_stress'
vals = 'avg_vonmises two_gauge_stress'
value = 'avg_vonmises/two_gauge_stress'
[../]
[./M_two]
type = ParsedFunction
vars = 'avg_hydro two_gauge_stress'
vals = 'avg_hydro two_gauge_stress'
value = 'abs(avg_hydro) / two_gauge_stress'
[../]
[./Q_onepointfive]
type = ParsedFunction
vars = 'avg_vonmises onepointfive_gauge_stress'
vals = 'avg_vonmises onepointfive_gauge_stress'
value = 'avg_vonmises / onepointfive_gauge_stress'
[../]
[./M_onepointfive]
type = ParsedFunction
vars = 'avg_hydro onepointfive_gauge_stress'
vals = 'avg_hydro onepointfive_gauge_stress'
value = 'abs(avg_hydro) / onepointfive_gauge_stress'
[../]
[./Q_one]
type = ParsedFunction
vars = 'avg_vonmises one_gauge_stress'
vals = 'avg_vonmises one_gauge_stress'
value = 'avg_vonmises / one_gauge_stress'
[../]
[./M_one]
type = ParsedFunction
vars = 'avg_hydro one_gauge_stress'
vals = 'avg_hydro one_gauge_stress'
value = 'abs(avg_hydro) / one_gauge_stress'
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e10
poissons_ratio = 0.3
[../]
[./stress]
type = ADComputeMultiplePorousInelasticStress
inelastic_models = 'gtn lps_ten lps_five lps_three lps_two lps_onepointfive lps_one'
initial_porosity = 1e-3
outputs = all
extra_stress_names = extra_stress
[../]
[./gtn]
type = ADViscoplasticityStressUpdate
coefficient = 0
power = 1 # arbitrary
viscoplasticity_model = GTN
base_name = gtn
outputs = all
relative_tolerance = 1e-30
[../]
[./lps_ten]
type = ADViscoplasticityStressUpdate
coefficient = 0
power = 10
base_name = ten
outputs = all
relative_tolerance = 1e-30
[../]
[./lps_five]
type = ADViscoplasticityStressUpdate
coefficient = 0
power = 5
base_name = five
outputs = all
relative_tolerance = 1e-30
[../]
[./lps_three]
type = ADViscoplasticityStressUpdate
coefficient = 0
power = 3
base_name = three
outputs = all
relative_tolerance = 1e-30
[../]
[./lps_two]
type = ADViscoplasticityStressUpdate
coefficient = 0
power = 2
base_name = two
outputs = all
relative_tolerance = 1e-30
[../]
[./lps_onepointfive]
type = ADViscoplasticityStressUpdate
coefficient = 0
power = 1.5
base_name = onepointfive
outputs = all
relative_tolerance = 1e-30
[../]
[./lps_one]
type = ADViscoplasticityStressUpdate
coefficient = 0
power = 1
base_name = one
outputs = all
relative_tolerance = 1e-30
[../]
[./const_stress]
type = ComputeExtraStressConstant
extra_stress_tensor = '1 1 1 1 1 1 1 1 1'
outputs = all
[../]
[]
[BCs]
[./no_disp_x]
type = ADDirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./no_disp_y]
type = ADDirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./no_disp_z]
type = ADDirichletBC
variable = disp_z
boundary = back
value = 0.0
[../]
[./Pressure]
[./bcs]
boundary = 'top right front'
function = '10^(t/4.5)'
use_automatic_differentiation = true
[../]
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
num_steps = 10
nl_abs_tol = 1e-8
[]
[Postprocessors]
[./avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
[../]
[./avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
[../]
[./gtn_gauge_stress]
type = ElementAverageValue
variable = gtn_gauge_stress
outputs = none
[../]
[./0Q_gtn]
type = FunctionValuePostprocessor
function = Q_gtn
[../]
[./0M_gtn]
type = FunctionValuePostprocessor
function = M_gtn
[../]
[./ten_gauge_stress]
type = ElementAverageValue
variable = ten_gauge_stress
outputs = none
[../]
[./1Q_ten]
type = FunctionValuePostprocessor
function = Q_ten
[../]
[./1M_ten]
type = FunctionValuePostprocessor
function = M_ten
[../]
[./five_gauge_stress]
type = ElementAverageValue
variable = five_gauge_stress
outputs = none
[../]
[./2Q_five]
type = FunctionValuePostprocessor
function = Q_five
[../]
[./2M_five]
type = FunctionValuePostprocessor
function = M_five
[../]
[./three_gauge_stress]
type = ElementAverageValue
variable = three_gauge_stress
outputs = none
[../]
[./3Q_three]
type = FunctionValuePostprocessor
function = Q_three
[../]
[./3M_three]
type = FunctionValuePostprocessor
function = M_three
[../]
[./two_gauge_stress]
type = ElementAverageValue
variable = two_gauge_stress
outputs = none
[../]
[./4Q_two]
type = FunctionValuePostprocessor
function = Q_two
[../]
[./4M_two]
type = FunctionValuePostprocessor
function = M_two
[../]
[./onepointfive_gauge_stress]
type = ElementAverageValue
variable = onepointfive_gauge_stress
outputs = none
[../]
[./5Q_onepointfive]
type = FunctionValuePostprocessor
function = Q_onepointfive
[../]
[./5M_onepointfive]
type = FunctionValuePostprocessor
function = M_onepointfive
[../]
[./one_gauge_stress]
type = ElementAverageValue
variable = one_gauge_stress
outputs = none
[../]
[./6Q_one]
type = FunctionValuePostprocessor
function = Q_one
[../]
[./6M_one]
type = FunctionValuePostprocessor
function = M_one
[../]
[]
[Outputs]
csv = true
file_base = exact_spherical_out
[]
modules/combined/test/tests/ad_power_law_creep/power_law_creep_restart1.i
# 1x1x1 unit cube with uniform pressure on top face
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
[]
[Variables]
[./temp]
order = FIRST
family = LAGRANGE
initial_condition = 1000.0
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = FINITE
incremental = true
add_variables = true
generate_output = 'stress_yy creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_yy'
use_automatic_differentiation = true
[../]
[]
[Functions]
[./top_pull]
type = PiecewiseLinear
x = '0 1'
y = '1 1'
[../]
[]
[Kernels]
[./heat]
type = ADHeatConduction
variable = temp
[../]
[./heat_ie]
type = ADHeatConductionTimeDerivative
variable = temp
[../]
[]
[BCs]
[./u_top_pull]
type = ADPressure
variable = disp_y
component = 1
boundary = top
constant = -10.0e6
function = top_pull
[../]
[./u_bottom_fix]
type = ADDirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./u_yz_fix]
type = ADDirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./u_xy_fix]
type = ADDirichletBC
variable = disp_z
boundary = back
value = 0.0
[../]
[./temp_fix]
type = DirichletBC
variable = temp
boundary = 'bottom top'
value = 1000.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2e11
poissons_ratio = 0.3
[../]
[./radial_return_stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'power_law_creep'
[../]
[./power_law_creep]
type = ADPowerLawCreepStressUpdate
coefficient = 1.0e-15
n_exponent = 4
activation_energy = 3.0e5
temperature = temp
[../]
[./thermal]
type = HeatConductionMaterial
specific_heat = 1.0
thermal_conductivity = 100.
[../]
[./density]
type = ADDensity
density = 1.0
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 20
nl_max_its = 20
nl_rel_tol = 1e-6
nl_abs_tol = 1e-6
l_tol = 1e-5
start_time = 0.0
end_time = 1.0
num_steps = 6
dt = 0.1
[]
[Outputs]
exodus = true
csv = true
[./out]
type = Checkpoint
num_files = 1
[../]
[]
modules/tensor_mechanics/test/tests/ad_2D_geometries/3D-RZ_finiteStrain_test.i
# Considers the mechanics solution for a thick spherical shell that is uniformly
# pressurized on the inner and outer surfaces, using 3D geometry.
#
# From Roark (Formulas for Stress and Strain, McGraw-Hill, 1975), the radially-dependent
# circumferential stress in a uniformly pressurized thick spherical shell is given by:
#
# S(r) = [ Pi[ri^3(2r^3+ro^3)] - Po[ro^3(2r^3+ri^3)] ] / [2r^3(ro^3-ri^3)]
#
# where:
# Pi = inner pressure
# Po = outer pressure
# ri = inner radius
# ro = outer radius
#
# The tests assume an inner and outer radii of 5 and 10, with internal and external
# pressures of 100000 and 200000 at t = 1.0, respectively. The resulting compressive
# tangential stress is largest at the inner wall and, from the above equation, has a
# value of -271429.
#
# RESULTS are below. Since stresses are average element values, values for the
# edge element and one-element-in are used to extrapolate the stress to the
# inner surface. The vesrion of the tests that are checked use the coarsest meshes.
#
# Mesh Radial elem S(edge elem) S(one elem in) S(extrap to surf)
# 1D-SPH
# 2D-RZ 12 (x10) -265004 -254665 -270174
# 3D 12 (6x6) -261880 -252811 -266415
#
# 1D-SPH
# 2D-RZ 48 (x10) -269853 -266710 -271425
# 3D 48 (10x10) -268522 -265653 -269957
#
# The numerical solution converges to the analytical solution as the mesh is
# refined.
[Mesh]
file = 3D_mesh.e
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Modules/TensorMechanics/Master]
[./all]
strain = FINITE
add_variables = true
block = 1
use_displaced_mesh = true
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
block = 1
[../]
[./elastic_strain]
type = ADComputeFiniteStrainElasticStress
block = 1
[../]
[]
[BCs]
# pin particle along symmetry planes
[./no_disp_x]
type = ADDirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[../]
[./no_disp_y]
type = ADDirichletBC
variable = disp_y
boundary = yzero
value = 0.0
[../]
[./no_disp_z]
type = ADDirichletBC
variable = disp_z
boundary = zzero
value = 0.0
[../]
# exterior and internal pressures
[./exterior_pressure_x]
type = ADPressure
variable = disp_x
boundary = outer
component = 0
function = '200000*t'
[../]
[./exterior_pressure_y]
type = ADPressure
variable = disp_y
boundary = outer
component = 1
function = '200000*t'
[../]
[./exterior_pressure_z]
type = ADPressure
variable = disp_z
boundary = outer
component = 2
function = '200000*t'
[../]
[./interior_pressure_x]
type = ADPressure
variable = disp_x
boundary = inner
component = 0
function = '100000*t'
[../]
[./interior_pressure_y]
type = ADPressure
variable = disp_y
boundary = inner
component = 1
function = '100000*t'
[../]
[./interior_pressure_z]
type = ADPressure
variable = disp_z
boundary = inner
component = 2
function = '100000*t'
[../]
[]
[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 = 0.2
dt = 0.1
[]
[Postprocessors]
[./strainTheta]
type = ElementAverageValue
variable = strain_theta
[../]
[./stressTheta]
type = ElementAverageValue
variable = stress_theta
[../]
[./stressTheta_pt]
type = PointValue
point = '5.0 0.0 0.0'
#bottom inside edge for comparison to theory; use csv = true
variable = stress_theta
[../]
[]
[Outputs]
exodus = true
[]
modules/combined/test/tests/ad_power_law_creep/power_law_creep_smallstrain.i
# 1x1x1 unit cube with uniform pressure on top face for the case of small strain.
# This test does not have a solid mechanics analog because there is not an equvialent
# small strain with rotations strain calculator material in solid mechanics
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
[]
[Variables]
[./temp]
order = FIRST
family = LAGRANGE
initial_condition = 1000.0
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
incremental = true
add_variables = true
generate_output = 'stress_yy creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_yy'
use_automatic_differentiation = true
[../]
[]
[Functions]
[./top_pull]
type = PiecewiseLinear
x = '0 1'
y = '1 1'
[../]
[]
[Kernels]
[./heat]
type = ADHeatConduction
variable = temp
[../]
[./heat_ie]
type = ADHeatConductionTimeDerivative
variable = temp
[../]
[]
[BCs]
[./u_top_pull]
type = ADPressure
variable = disp_y
component = 1
boundary = top
constant = -10.0e6
function = top_pull
[../]
[./u_bottom_fix]
type = ADDirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./u_yz_fix]
type = ADDirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./u_xy_fix]
type = ADDirichletBC
variable = disp_z
boundary = back
value = 0.0
[../]
[./temp_fix]
type = DirichletBC
variable = temp
boundary = 'bottom top'
value = 1000.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2e11
poissons_ratio = 0.3
[../]
[./radial_return_stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'power_law_creep'
[../]
[./power_law_creep]
type = ADPowerLawCreepStressUpdate
coefficient = 1.0e-15
n_exponent = 4
activation_energy = 3.0e5
temperature = temp
[../]
[./thermal]
type = HeatConductionMaterial
specific_heat = 1.0
thermal_conductivity = 100.
[../]
[./density]
type = ADDensity
density = 1.0
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 20
nl_max_its = 20
nl_rel_tol = 1e-6
nl_abs_tol = 1e-6
l_tol = 1e-5
start_time = 0.0
end_time = 1.0
num_steps = 10
dt = 0.1
[]
[Outputs]
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_2D_geometries/2D-RZ_finiteStrain_resid.i
# This tests the save_in_disp residual aux-variables for
# ComputeAxisymmetricRZFiniteStrain, which is generated through the use of the
# TensorMechanics MasterAction. The GeneratedMesh is 1x1, rotated via axisym to
# create a cylinder of height 1, radius 1.
#
# PostProcessor force_z plots the force on the top surface of the cylinder.
#
# Displacement of 0.1 is applied to top of cylinder while other surfaces are
# constrained. Plotting force_z vs stress_z will show a slope of 3.14159 (pi),
# consistent with formula for normal stress:
#
# Stress = force / area
#
# where area is A = pi * r^2 for a circle.
[Mesh]
type = GeneratedMesh
dim = 2
nx = 5
ny = 5
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.0
[]
[GlobalParams]
displacements = 'disp_r disp_z'
[]
[Problem]
coord_type = RZ
[]
[Modules/TensorMechanics/Master]
[./all]
strain = FINITE
add_variables = true
save_in = 'force_r force_z'
use_automatic_differentiation = true
[../]
[]
[AuxVariables]
[./stress_r]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_r]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_z]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_z]
order = CONSTANT
family = MONOMIAL
[../]
[./force_r]
order = FIRST
family = LAGRANGE
[../]
[./force_z]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxKernels]
[./stress_r]
type = RankTwoAux
rank_two_tensor = stress
index_i = 0
index_j = 0
variable = stress_r
execute_on = timestep_end
[../]
[./strain_r]
type = RankTwoAux
rank_two_tensor = total_strain
index_i = 0
index_j = 0
variable = strain_r
execute_on = timestep_end
[../]
[./stress_z]
type = RankTwoAux
rank_two_tensor = stress
index_i = 1
index_j = 1
variable = stress_z
execute_on = timestep_end
[../]
[./strain_z]
type = RankTwoAux
rank_two_tensor = total_strain
index_i = 1
index_j = 1
variable = strain_z
execute_on = timestep_end
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./_elastic_strain]
type = ADComputeFiniteStrainElasticStress
[../]
[]
[BCs]
[./no_disp_r_left]
type = ADDirichletBC
variable = disp_r
boundary = left
value = 0.0
[../]
[./no_disp_r_right]
type = ADDirichletBC
variable = disp_r
boundary = right
value = 0.0
[../]
[./no_disp_z_bottom]
type = ADDirichletBC
variable = disp_z
boundary = bottom
value = 0.0
[../]
[./top]
type = ADFunctionDirichletBC
variable = disp_z
boundary = top
function = 't'
[../]
[]
[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 = 0.1
dt = 0.01
[]
[Postprocessors]
[./strainR]
type = ElementAverageValue
variable = strain_r
[../]
[./stressR]
type = ElementAverageValue
variable = stress_r
[../]
[./strainZ]
type = ElementAverageValue
variable = strain_z
[../]
[./stressZ]
type = ElementAverageValue
variable = stress_z
[../]
[./force_r]
type = NodalSum
variable = force_r
boundary = top
[../]
[./force_z]
type = NodalSum
variable = force_z
boundary = top
[../]
[]
[Outputs]
exodus = true
print_linear_residuals = false
perf_graph = true
[]
modules/tensor_mechanics/test/tests/ad_1D_spherical/smallStrain_1DSphere.i
# This simulation models the mechanics solution for a solid sphere under
# pressure, applied on the outer surfaces, using 1D spherical symmetry
# assumpitions. The inner center of the sphere, r = 0, is pinned to prevent
# movement of the sphere.
#
# From Bower (Applied Mechanics of Solids, 2008, available online at
# solidmechanics.org/text/Chapter4_1/Chapter4_1.htm), and applying the outer
# pressure and pinned displacement boundary conditions set in this simulation,
# the radial displacement is given by:
#
# u(r) = \frac{- P * (1 - 2 * v) * r}{E}
#
# where P is the applied pressure, v is Poisson's ration, E is Young's Modulus,
# and r is the radial position.
#
# The test assumes a radius of 4, zero displacement at r = 0mm, and an applied
# outer pressure of 1MPa. Under these conditions in a solid sphere, the radial
# stress is constant and has a value of -1 MPa.
[Mesh]
type = GeneratedMesh
dim = 1
xmin = 0
xmax = 4
nx = 4
[]
[GlobalParams]
displacements = 'disp_r'
[]
[Problem]
coord_type = RSPHERICAL
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
add_variables = true
save_in = residual_r
use_automatic_differentiation = true
[../]
[]
[AuxVariables]
[./stress_rr]
order = CONSTANT
family = MONOMIAL
[../]
[./residual_r]
[../]
[]
[Postprocessors]
[./stress_rr]
type = ElementAverageValue
variable = stress_rr
[../]
[./residual_r]
type = NodalSum
variable = residual_r
boundary = right
[../]
[]
[AuxKernels]
[./stress_rr]
type = RankTwoAux
rank_two_tensor = stress
index_i = 0
index_j = 0
variable = stress_rr
execute_on = timestep_end
[../]
[]
[BCs]
[./innerDisp]
type = ADDirichletBC
boundary = left
variable = disp_r
value = 0.0
[../]
[./outerPressure]
type = ADPressure
boundary = right
variable = disp_r
component = 0
constant = 1
[../]
[]
[Materials]
[./Elasticity_tensor]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.345
youngs_modulus = 1e4
[../]
[./stress]
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
line_search = none
# controls for linear iterations
l_max_its = 100
l_tol = 1e-8
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-10
nl_abs_tol = 1e-5
# time control
start_time = 0.0
dt = 0.25
dtmin = 0.0001
end_time = 1.0
[]
[Outputs]
exodus = 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
[]
Child Objects
framework/include/bcs/ADPresetBC.h
// This file is part of the MOOSE framework
// https://www.mooseframework.org
//
// All rights reserved, see COPYRIGHT for full restrictions
// https://github.com/idaholab/moose/blob/master/COPYRIGHT
//
// Licensed under LGPL 2.1, please see LICENSE for details
// https://www.gnu.org/licenses/lgpl-2.1.html
#pragma once
#include "ADDirichletBC.h"
template <ComputeStage>
class ADPresetBC;
declareADValidParams(ADPresetBC);
/**
* Defines a boundary condition that (pre)sets the solution at the boundary
* to be a user specified value.
*/
template <ComputeStage compute_stage>
class ADPresetBC : public ADDirichletBC<compute_stage>
{
public:
static InputParameters validParams();
ADPresetBC(const InputParameters & parameters);
protected:
usingDirichletBCMembers;
};