- variableThe name of the variable that this Kernel operates on
C++ Type:NonlinearVariableName
Description:The name of the variable that this Kernel operates on
ADDiffusion
Description
The steady-state diffusion equation on a domain is defined as
The weak form of this equation, in inner-product notation, is given by:
where are the test functions and is the finite element solution of the weak formulation.
The Jacobian in ADDiffusion
is computed using forward automatic differentiation.
Input Parameters
- blockThe list of block ids (SubdomainID) that this object will be applied
C++ Type:std::vector
Options:
Description:The list of block ids (SubdomainID) that this object will be applied
- displacementsThe displacements
C++ Type:std::vector
Options:
Description:The displacements
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.
- diag_save_inThe name of auxiliary variables to save this Kernel'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 Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)
- 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
- save_inThe name of auxiliary variables to save this Kernel'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 Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)
- 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_tagssystemThe tag for the matrices this Kernel should fill
Default:system
C++ Type:MultiMooseEnum
Options:nontime system
Description:The tag for the matrices this Kernel should fill
- vector_tagsnontimeThe tag for the vectors this Kernel should fill
Default:nontime
C++ Type:MultiMooseEnum
Options:nontime time
Description:The tag for the vectors this Kernel should fill
Tagging Parameters
Input Files
- test/tests/kernels/ad_coupled_convection/ad_coupled_convection.i
- test/tests/kernels/ad_coupled_value/ad_aux_coupled_time_value.i
- modules/tensor_mechanics/test/tests/ad_linear_elasticity/linear_elastic_material.i
- python/mms/test/mms_spatial.i
- test/tests/kernels/ad_simple_diffusion/ad_simple_diffusion.i
- test/tests/kernels/ad_max_dofs_per_elem_error/ad_max_dofs_per_elem.i
- modules/combined/test/tests/thermal_elastic/ad-thermal_elastic.i
- test/tests/kernels/jxw_grad_test_dep_on_displacements/not-handling-jxw.i
- modules/stochastic_tools/test/tests/transfers/batch_sampler_transfer/sub.i
- test/tests/kernels/ad_vector_couple/ad_grad_vector_couple.i
- test/tests/bcs/ad_function_dirichlet_bc/test.i
- test/tests/multiapps/full_solve_multiapp_reset/sub.i
- test/tests/kernels/ad_vector_couple/ad_vector_couple.i
- modules/tensor_mechanics/test/tests/ad_linear_elasticity/tensor.i
- test/tests/tag/tag_ad_kernels.i
- test/tests/kernels/jxw_grad_test_dep_on_displacements/jxw-spherical.i
- test/tests/bcs/ad_bc_preset_nodal/bc_preset_nodal.i
- test/tests/kernels/ad_vector_couple/ad_vector_couple_default.i
- modules/combined/test/tests/ad_cavity_pressure/multiple_postprocessors.i
- modules/combined/test/tests/ad_cavity_pressure/3d.i
- test/tests/kernels/ad_2d_diffusion/2d_diffusion_neumannbc_test.i
- test/tests/misc/displaced_mesh_coupling/ad.i
- modules/combined/test/tests/ad_cavity_pressure/rz.i
- test/tests/kernels/ad_2d_diffusion/2d_diffusion_bodyforce_test.i
- examples/ex14_pps/ex14.i
- test/tests/bcs/ad_bc_preset_nodal/bc_function_preset.i
- modules/misc/test/tests/kernels/thermo_diffusion/ad_thermo_diffusion.i
- test/tests/materials/ad_piecewise_linear_interpolation_material/piecewise_linear_interpolation_material.i
- test/tests/bcs/ad_bcs/ad_bc.i
- test/tests/kernels/kernel_precompute/adkernel_precompute_test.i
- modules/stochastic_tools/test/tests/multiapps/batch_full_solve_multiapp/sub.i
- python/mms/test/mms_temporal.i
- modules/combined/test/tests/thermo_mech/ad-youngs_modulus_function_temp.i
- modules/combined/test/tests/ad_cavity_pressure/initial_temperature.i
- modules/heat_conduction/test/tests/ad_heat_conduction/test.i
- test/tests/misc/max_var_n_dofs_per_elem/max_var_n_dofs_per_elem.i
- test/tests/preconditioners/auto_smp/ad_coupled_convection.i
- test/tests/geomsearch/quadrature_nearest_node_locator/qnnl_ad.i
- test/tests/kernels/ad_2d_diffusion/2d_diffusion_test.i
- tutorials/darcy_thermo_mech/step01_diffusion/problems/step1.i
- modules/stochastic_tools/examples/batch/sub.i
- test/tests/kernels/jxw_grad_test_dep_on_displacements/jxw-cylindrical.i
test/tests/kernels/ad_coupled_convection/ad_coupled_convection.i
[Mesh]
type = GeneratedMesh
dim = 2
nx = 4
ny = 4
[]
[Variables]
[./u]
[../]
[./v]
[../]
[]
[Kernels]
[./diff]
type = ADDiffusion
variable = u
[../]
[./convection]
type = ADCoupledConvection
variable = u
velocity_vector = v
[../]
[./diff_v]
type = ADDiffusion
variable = v
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = u
boundary = left
value = 0
[../]
[./right]
type = DirichletBC
variable = u
boundary = right
value = 1
[../]
[./left_v]
type = DirichletBC
variable = v
boundary = left
value = 0
[../]
[./right_v]
type = DirichletBC
variable = v
boundary = right
value = 1
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Steady
solve_type = 'Newton'
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
l_tol = 1e-10
nl_rel_tol = 1e-9
nl_max_its = 2
[]
[Outputs]
exodus = true
[]
test/tests/kernels/ad_coupled_value/ad_aux_coupled_time_value.i
###########################################################
# This is a simple test of coupling an aux variable into the
# ADCoupledTimeDerivative kernel.
# The expected solution for the variable v is
# v(x) = 1/2 * (x^2 + x)
###########################################################
[Mesh]
type = GeneratedMesh
nx = 5
ny = 5
dim = 2
[]
[Variables]
[./v]
[../]
[]
[AuxVariables]
[./u]
[../]
[]
[Functions]
[./u]
type = ParsedFunction
value = 't'
[../]
[]
[AuxKernels]
[./u]
type = FunctionAux
variable = u
function = u
[../]
[]
[Kernels]
[./time_v]
type = ADCoupledTimeDerivative
variable = v
v = u
[../]
[./diff_v]
type = ADDiffusion
variable = v
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = v
boundary = 'left'
value = 0
[../]
[./right]
type = DirichletBC
variable = v
boundary = 'right'
value = 1
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[]
[]
[Postprocessors]
[./l2]
type = ElementL2Error
variable = v
function = '1/2 * (x^2 + x)'
[../]
[]
[Executioner]
type = Transient
num_steps = 1
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
[]
python/mms/test/mms_spatial.i
[Mesh]
type = GeneratedMesh
dim = 2
nx = 8
ny = 8
[]
[Variables]
[u][]
[]
[Kernels]
[diff]
type = ADDiffusion
variable = u
[]
[force]
type = BodyForce
variable = u
function = force
[]
[]
[Functions]
[exact]
type = ParsedFunction
value = 'sin(2*pi*x)*sin(2*pi*y)'
[]
[force]
type = ParsedFunction
value = '8*pi^2*sin(2*x*pi)*sin(2*y*pi)'
[]
[]
[BCs]
[all]
type = FunctionDirichletBC
variable = u
function = exact
boundary = 'left right top bottom'
[]
[]
[Postprocessors]
[error]
type = ElementL2Error
function = exact
variable = u
[]
[h]
type = AverageElementSize
[]
[]
[Executioner]
type = Steady
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
exodus = true
csv = true
[]
test/tests/kernels/ad_simple_diffusion/ad_simple_diffusion.i
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
[]
[Variables]
[./u]
[../]
[]
[Kernels]
[./diff]
type = ADDiffusion
variable = u
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = u
boundary = left
value = 0
[../]
[./right]
type = DirichletBC
variable = u
boundary = right
value = 1
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Steady
# Preconditioned JFNK (default)
solve_type = 'Newton'
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
l_tol = 1e-10
nl_rel_tol = 1e-9
nl_max_its = 1
[]
[Outputs]
exodus = true
[]
test/tests/kernels/ad_max_dofs_per_elem_error/ad_max_dofs_per_elem.i
[Mesh]
type = GeneratedMesh
elem_type = HEX27
dim = 3
[]
[Variables]
[u]
order = SECOND
[]
[v]
order = SECOND
[]
[]
[Kernels]
[u_diff]
type = ADDiffusion
variable = u
[]
[v_diff]
type = ADDiffusion
variable = v
[]
[]
[BCs]
[./left]
type = DirichletBC
variable = u
boundary = left
value = 0
[../]
[./right]
type = DirichletBC
variable = u
boundary = right
value = 1
[../]
[]
[Executioner]
type = Steady
[]
modules/combined/test/tests/thermal_elastic/ad-thermal_elastic.i
# Patch Test
# This test is designed to compute constant xx, yy, zz, xy, yz, and xz
# stress on a set of irregular hexes. The mesh is composed of one
# block with seven elements. The elements form a unit cube with one
# internal element. There is a nodeset for each exterior node.
# The cube is displaced by 1e-6 units in x, 2e-6 in y, and 3e-6 in z.
# The faces are sheared as well (1e-6, 2e-6, and 3e-6 for xy, yz, and
# zx). This gives a uniform strain/stress state for all six unique
# tensor components. This displacement is again applied in the second
# step.
# With Young's modulus at 1e6 and Poisson's ratio at 0, the shear
# modulus is 5e5 (G=E/2/(1+nu)). Therefore, for the mechanical strain,
#
# stress xx = 1e6 * 1e-6 = 1
# stress yy = 1e6 * 2e-6 = 2
# stress zz = 1e6 * 3e-6 = 3
# stress xy = 2 * 5e5 * 1e-6 / 2 = 0.5
# (2 * G * gamma_xy / 2 = 2 * G * epsilon_xy)
# stress yz = 2 * 5e5 * 2e-6 / 2 = 1
# stress zx = 2 * 5e5 * 3e-6 / 2 = 1.5
# Young's modulus is a function of temperature for this test. The
# temperature changes from 100 to 500. The Young's modulus drops
# due to that temperature change from 1e6 to 6e5.
# Poisson's ratio also is a function of temperature and changes from
# 0 to 0.25.
# At the end of the temperature ramp, E=6e5 and nu=0.25. This gives
# G=2.4e=5. lambda=E*nu/(1+nu)/(1-2*nu)=2.4E5. The final stress
# is therefore
# stress xx = 2.4e5 * 12e-6 + 2*2.4e5*2e-6 = 3.84
# stress yy = 2.4e5 * 12e-6 + 2*2.4e5*4e-6 = 4.80
# stress zz = 2.4e5 * 12e-6 + 2*2.4e5*6e-6 = 5.76
# stress xy = 2 * 2.4e5 * 2e-6 / 2 = 0.48
# (2 * G * gamma_xy / 2 = 2 * G * epsilon_xy)
# stress yz = 2 * 2.4e5 * 4e-6 / 2 = 0.96
# stress xz = 2 * 2.4e5 * 6e-6 / 2 = 1.44
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
file = thermal_elastic.e
[]
[Functions]
[./ramp1]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. 1. 2.'
scale_factor = 1e-6
[../]
[./ramp2]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. 1. 2.'
scale_factor = 2e-6
[../]
[./ramp3]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. 1. 2.'
scale_factor = 3e-6
[../]
[./ramp4]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. 1. 2.'
scale_factor = 4e-6
[../]
[./ramp6]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. 1. 2.'
scale_factor = 6e-6
[../]
[./tempFunc]
type = PiecewiseLinear
x = '0 1 2'
y = '100.0 100.0 500.0'
[../]
[]
[Variables]
[./temp]
initial_condition = 100.0
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
add_variables = true
generate_output = 'stress_xx stress_yy stress_zz stress_xy stress_xz stress_yz'
strain = FINITE
use_automatic_differentiation = true
[../]
[]
[Kernels]
[./heat]
type = ADDiffusion
variable = temp
[../]
[]
[BCs]
[./node1_x]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[../]
[./node1_y]
type = ADFunctionDirichletBC
variable = disp_y
boundary = 1
function = ramp2
[../]
[./node1_z]
type = ADFunctionDirichletBC
variable = disp_z
boundary = 1
function = ramp3
[../]
[./node2_x]
type = ADFunctionDirichletBC
variable = disp_x
boundary = 2
function = ramp1
[../]
[./node2_y]
type = ADFunctionDirichletBC
variable = disp_y
boundary = 2
function = ramp2
[../]
[./node2_z]
type = ADFunctionDirichletBC
variable = disp_z
boundary = 2
function = ramp6
[../]
[./node3_x]
type = ADFunctionDirichletBC
variable = disp_x
boundary = 3
function = ramp1
[../]
[./node3_y]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.0
[../]
[./node3_z]
type = ADFunctionDirichletBC
variable = disp_z
boundary = 3
function = ramp3
[../]
[./node4_x]
type = DirichletBC
variable = disp_x
boundary = 4
value = 0.0
[../]
[./node4_y]
type = DirichletBC
variable = disp_y
boundary = 4
value = 0.0
[../]
[./node4_z]
type = DirichletBC
variable = disp_z
boundary = 4
value = 0.0
[../]
[./node5_x]
type = ADFunctionDirichletBC
variable = disp_x
boundary = 5
function = ramp1
[../]
[./node5_y]
type = ADFunctionDirichletBC
variable = disp_y
boundary = 5
function = ramp4
[../]
[./node5_z]
type = ADFunctionDirichletBC
variable = disp_z
boundary = 5
function = ramp3
[../]
[./node6_x]
type = ADFunctionDirichletBC
variable = disp_x
boundary = 6
function = ramp2
[../]
[./node6_y]
type = ADFunctionDirichletBC
variable = disp_y
boundary = 6
function = ramp4
[../]
[./node6_z]
type = ADFunctionDirichletBC
variable = disp_z
boundary = 6
function = ramp6
[../]
[./node7_x]
type = ADFunctionDirichletBC
variable = disp_x
boundary = 7
function = ramp2
[../]
[./node7_y]
type = ADFunctionDirichletBC
variable = disp_y
boundary = 7
function = ramp2
[../]
[./node7_z]
type = ADFunctionDirichletBC
variable = disp_z
boundary = 7
function = ramp3
[../]
[./node8_x]
type = ADFunctionDirichletBC
variable = disp_x
boundary = 8
function = ramp1
[../]
[./node8_y]
type = ADFunctionDirichletBC
variable = disp_y
boundary = 8
function = ramp2
[../]
[./node8_z]
type = DirichletBC
variable = disp_z
boundary = 8
value = 0.0
[../]
[./temp]
type = ADFunctionDirichletBC
variable = temp
boundary = '10 12'
function = tempFunc
[../]
[]
[Materials]
[./youngs_modulus]
type = ADPiecewiseLinearInterpolationMaterial
x = '100 500'
y = '1e6 6e5'
property = youngs_modulus
variable = temp
[../]
[./poissons_ratio]
type = ADPiecewiseLinearInterpolationMaterial
x = '100 500'
y = '0 0.25'
property = poissons_ratio
variable = temp
[../]
[./elasticity_tensor]
type = ADComputeVariableIsotropicElasticityTensor
youngs_modulus = youngs_modulus
poissons_ratio = poissons_ratio
[../]
[./stress]
type = ADComputeFiniteStrainElasticStress
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
nl_rel_tol = 1e-9
nl_abs_tol = 1e-9
l_max_its = 20
start_time = 0.0
dt = 1.0
end_time = 2.0
[]
[Outputs]
exodus = true
[]
test/tests/kernels/jxw_grad_test_dep_on_displacements/not-handling-jxw.i
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 2
ny = 2
elem_type = QUAD9
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./u]
order = FIRST
[../]
[./v]
[../]
[]
[Kernels]
[./disp_x]
type = Diffusion
variable = disp_x
[../]
[./disp_y]
type = Diffusion
variable = disp_y
[../]
[./u]
type = ADDiffusion
variable = u
use_displaced_mesh = true
[../]
[./v]
type = ADDiffusion
variable = v
use_displaced_mesh = true
[../]
[]
[BCs]
# BCs cannot be preset due to Jacobian test
[./u_left]
type = DirichletBC
preset = false
value = 0
boundary = 'left'
variable = u
[../]
[./u_right]
type = DirichletBC
preset = false
value = 1
boundary = 'right'
variable = u
[../]
[./v_left]
type = DirichletBC
preset = false
value = 0
boundary = 'left'
variable = v
[../]
[./v_right]
type = DirichletBC
preset = false
value = 1
boundary = 'right'
variable = v
[../]
[./disp_x_left]
type = DirichletBC
preset = false
value = 0
boundary = 'left'
variable = disp_x
[../]
[./disp_x_right]
type = DirichletBC
preset = false
value = 1
boundary = 'right'
variable = disp_x
[../]
[./disp_y_left]
type = DirichletBC
preset = false
value = 0
boundary = 'bottom'
variable = disp_y
[../]
[./disp_y_right]
type = DirichletBC
preset = false
value = 1
boundary = 'top'
variable = disp_y
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Steady
solve_type = NEWTON
[]
[Outputs]
[./dofmap]
type = DOFMap
execute_on = 'initial'
[../]
exodus = true
[]
[ICs]
[./disp_x]
type = RandomIC
variable = disp_x
min = 0.01
max = 0.09
[../]
[./disp_y]
type = RandomIC
variable = disp_y
min = 0.01
max = 0.09
[../]
[./u]
type = RandomIC
variable = u
min = 0.1
max = 0.9
[../]
[./v]
type = RandomIC
variable = v
min = 0.1
max = 0.9
[../]
[]
modules/stochastic_tools/test/tests/transfers/batch_sampler_transfer/sub.i
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
[]
[Variables]
[u]
[]
[]
[Kernels]
[diff]
type = ADDiffusion
variable = u
[]
[time]
type = ADTimeDerivative
variable = u
[]
[]
[BCs]
[left]
type = DirichletBC
variable = u
boundary = left
value = 0
[]
[right]
type = DirichletBC
variable = u
boundary = right
value = 1
[]
[]
[Postprocessors]
[average]
type = AverageNodalVariableValue
variable = u
[]
[]
[Executioner]
type = Transient
num_steps = 1
dt = 0.25
solve_type = NEWTON
[]
[Controls]
[stochastic]
type = SamplerReceiver
[]
[]
[Outputs]
[]
test/tests/kernels/ad_vector_couple/ad_grad_vector_couple.i
[Mesh]
type = GeneratedMesh
dim = 2
nx = 20
ny = 20
[]
[Variables]
[u]
family = LAGRANGE
order = FIRST
[]
[v]
family = LAGRANGE_VEC
order = FIRST
[]
[]
[Kernels]
[time]
type = TimeDerivative
variable = u
[]
[diff]
type = ADDiffusion
variable = u
[]
[convection]
type = ADCoupledVectorConvection
variable = u
velocity_vector = v
use_grad_row = true
[]
[diff_v]
type = ADVectorDiffusion
variable = v
[]
[]
[BCs]
[left]
type = ADFunctionDirichletBC
variable = u
function = 1
boundary = 'left'
[]
[right]
type = ADFunctionDirichletBC
variable = u
function = 2
boundary = 'bottom'
[]
[left_v]
type = ADVectorFunctionDirichletBC
variable = v
function_x = 1
function_y = 2
boundary = 'left'
[]
[right_v]
type = ADVectorFunctionDirichletBC
variable = v
function_x = 4
function_y = 8
boundary = 'top'
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
num_steps = 10
dt = 0.05
[]
[Outputs]
execute_on = TIMESTEP_END
exodus = true
[]
test/tests/bcs/ad_function_dirichlet_bc/test.i
###########################################################
# This is a test of Boundary Condition System. The
# FunctionDirichletBC is used to contribute the residuals
# to the boundary term operators in the weak form.
#
# @Requirement F3.40
###########################################################
[Mesh]
[./square]
type = GeneratedMeshGenerator
dim = 2
nx = 32
ny = 32
[../]
[]
[Variables]
[./u]
[../]
[]
[Functions]
[./ff_1]
type = ParsedFunction
value = alpha*alpha*pi
vars = 'alpha'
vals = '16'
[../]
[./ff_2]
type = ParsedFunction
value = pi*sin(alpha*pi*x)
vars = 'alpha'
vals = '16'
[../]
[./forcing_func]
type = CompositeFunction
functions = 'ff_1 ff_2'
[../]
[./bc_func]
type = ParsedFunction
value = sin(alpha*pi*x)
vars = 'alpha'
vals = '16'
[../]
[]
[Kernels]
[./diff]
type = ADDiffusion
variable = u
[../]
[./forcing]
type = ADBodyForce
variable = u
function = forcing_func
[../]
[]
[BCs]
[./all]
type = ADFunctionDirichletBC
variable = u
boundary = 'left right'
function = bc_func
[../]
[]
[Executioner]
type = Steady
nl_rel_tol = 1e-12
[]
[Outputs]
execute_on = 'timestep_end'
exodus = true
[]
test/tests/multiapps/full_solve_multiapp_reset/sub.i
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
[]
[Variables]
[u]
[]
[]
[Kernels]
[diff]
type = ADDiffusion
variable = u
[../]
[td]
type = ADTimeDerivative
variable = u
[]
[]
[BCs]
[left]
type = DirichletBC
variable = u
boundary = left
value = 0
[]
[right]
type = DirichletBC
variable = u
boundary = right
value = 1
[]
[]
[Executioner]
type = Transient
num_steps = 4
dt = 0.25
solve_type = 'NEWTON'
[]
[Outputs]
exodus = true
[]
test/tests/kernels/ad_vector_couple/ad_vector_couple.i
[Mesh]
type = GeneratedMesh
dim = 2
nx = 20
ny = 20
[]
[Variables]
[u]
family = LAGRANGE
order = FIRST
[]
[v]
family = LAGRANGE_VEC
order = FIRST
[]
[]
[Kernels]
[time]
type = TimeDerivative
variable = u
[]
[diff]
type = ADDiffusion
variable = u
[]
[convection]
type = ADCoupledVectorConvection
variable = u
velocity_vector = v
[]
[diff_v]
type = ADVectorDiffusion
variable = v
[]
[]
[BCs]
[left]
type = ADFunctionDirichletBC
variable = u
function = 1
boundary = 'left'
[]
[right]
type = ADFunctionDirichletBC
variable = u
function = 2
boundary = 'bottom'
[]
[left_v]
type = ADVectorFunctionDirichletBC
variable = v
function_x = 1
function_y = 2
boundary = 'left'
[]
[right_v]
type = ADVectorFunctionDirichletBC
variable = v
function_x = 4
function_y = 8
boundary = 'top'
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
num_steps = 10
dt = 0.05
[]
[Outputs]
execute_on = TIMESTEP_END
exodus = 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
[]
test/tests/tag/tag_ad_kernels.i
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
[]
[Variables]
[./u]
[../]
[]
[Kernels]
[./diff]
type = ADDiffusion
variable = u
extra_matrix_tags = 'mat_tag1 mat_tag2'
extra_vector_tags = 'vec_tag1 vec_tag2'
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = u
boundary = left
value = 0
extra_matrix_tags = 'mat_tag1 mat_tag2'
extra_vector_tags = 'vec_tag1'
[../]
[./right]
type = DirichletBC
variable = u
boundary = right
value = 1
extra_matrix_tags = 'mat_tag1 mat_tag2'
extra_vector_tags = 'vec_tag1'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Problem]
type = TagTestProblem
test_tag_vectors = 'nontime residual vec_tag1 vec_tag2'
test_tag_matrices = 'mat_tag1 mat_tag2'
extra_tag_matrices = 'mat_tag1 mat_tag2'
extra_tag_vectors = 'vec_tag1 vec_tag2'
[]
[Executioner]
type = Steady
solve_type = 'Newton'
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
l_tol = 1e-10
nl_rel_tol = 1e-9
nl_max_its = 1
[]
[Outputs]
exodus = true
[]
test/tests/kernels/jxw_grad_test_dep_on_displacements/jxw-spherical.i
[GlobalParams]
displacements = 'disp_r'
order = SECOND
[]
[Mesh]
type = GeneratedMesh
dim = 1
nx = 3
elem_type = EDGE3
[]
[Problem]
coord_type = RSPHERICAL
[]
[Variables]
[./disp_r]
[../]
[./u]
order = FIRST
[../]
[]
[Kernels]
[./disp_r]
type = Diffusion
variable = disp_r
[../]
[./u]
type = ADDiffusion
variable = u
use_displaced_mesh = true
[../]
[]
[BCs]
# BCs cannot be preset due to Jacobian tests
[./u_left]
type = DirichletBC
preset = false
value = 0
boundary = 'left'
variable = u
[../]
[./u_right]
type = DirichletBC
preset = false
value = 1
boundary = 'right'
variable = u
[../]
[./disp_r_left]
type = DirichletBC
preset = false
value = 0
boundary = 'left'
variable = disp_r
[../]
[./disp_r_right]
type = DirichletBC
preset = false
value = 1
boundary = 'right'
variable = disp_r
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Steady
solve_type = NEWTON
[]
[Outputs]
[./dofmap]
type = DOFMap
execute_on = 'initial'
[../]
exodus = true
[]
[ICs]
[./disp_r]
type = RandomIC
variable = disp_r
min = 0.01
max = 0.09
[../]
[./u]
type = RandomIC
variable = u
min = 0.1
max = 0.9
[../]
[]
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
[]
test/tests/kernels/ad_vector_couple/ad_vector_couple_default.i
[Mesh]
type = GeneratedMesh
dim = 2
nx = 20
ny = 20
[]
[Variables]
[u]
family = LAGRANGE
order = FIRST
[]
[]
[Kernels]
[time]
type = TimeDerivative
variable = u
[]
[diff]
type = ADDiffusion
variable = u
[]
[convection]
type = ADCoupledVectorConvection
variable = u
velocity_vector = '0 1'
[]
[]
[BCs]
[left]
type = ADFunctionDirichletBC
variable = u
function = 1
boundary = 'left'
[]
[right]
type = ADFunctionDirichletBC
variable = u
function = 2
boundary = 'bottom'
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
num_steps = 10
dt = 0.1
[]
[Outputs]
execute_on = TIMESTEP_END
exodus = true
[]
modules/combined/test/tests/ad_cavity_pressure/multiple_postprocessors.i
#
# Cavity Pressure Test (Volume input as a vector of postprocessors)
#
# This test is designed to compute an internal pressure based on
# p = n * R * T / V
# where
# p is the pressure
# n is the amount of material in the volume (moles)
# R is the universal gas constant
# T is the temperature
# V is the volume
#
# The mesh is composed of one block (1) with an interior cavity of volume 8.
# Block 2 sits in the cavity and has a volume of 1. Thus, the total
# initial volume is 7.
# The test adjusts n, T, and V in the following way:
# n => n0 + alpha * t
# T => T0 + beta * t
# V => V0 + gamma * t
# with
# alpha = n0
# beta = T0 / 2
# gamma = - (0.003322259...) * V0
# T0 = 240.54443866068704
# V0 = 7
# n0 = f(p0)
# p0 = 100
# R = 8.314472 J * K^(-1) * mol^(-1)
#
# So, n0 = p0 * V0 / R / T0 = 100 * 7 / 8.314472 / 240.544439
# = 0.35
#
# In this test the internal volume is calculated as the sum of two Postprocessors
# internalVolumeInterior and internalVolumeExterior. This sum equals the value
# reported by the internalVolume postprocessor.
#
# The parameters combined at t = 1 gives p = 301.
#
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[Mesh]
file = 3d.e
[]
[Functions]
[./displ_positive]
type = PiecewiseLinear
x = '0 1'
y = '0 0.0029069767441859684'
[../]
[./displ_negative]
type = PiecewiseLinear
x = '0 1'
y = '0 -0.0029069767441859684'
[../]
[./temp1]
type = PiecewiseLinear
x = '0 1'
y = '1 1.5'
scale_factor = 240.54443866068704
[../]
[./material_input_function]
type = PiecewiseLinear
x = '0 1'
y = '0 0.35'
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./temp]
initial_condition = 240.54443866068704
[../]
[./material_input]
[../]
[]
[AuxVariables]
[./pressure_residual_x]
[../]
[./pressure_residual_y]
[../]
[./pressure_residual_z]
[../]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zx]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
use_automatic_differentiation = true
[../]
[./heat]
type = ADDiffusion
variable = temp
use_displaced_mesh = true
[../]
[./material_input_dummy]
type = ADDiffusion
variable = material_input
use_displaced_mesh = true
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
index_i = 0
index_j = 0
variable = stress_xx
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
index_i = 1
index_j = 1
variable = stress_yy
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
index_i = 2
index_j = 2
variable = stress_zz
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
index_i = 0
index_j = 1
variable = stress_xy
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
index_i = 1
index_j = 2
variable = stress_yz
[../]
[./stress_zx]
type = RankTwoAux
rank_two_tensor = stress
index_i = 2
index_j = 0
variable = stress_zx
[../]
[]
[BCs]
[./no_x_exterior]
type = DirichletBC
variable = disp_x
boundary = '7 8'
value = 0.0
[../]
[./no_y_exterior]
type = DirichletBC
variable = disp_y
boundary = '9 10'
value = 0.0
[../]
[./no_z_exterior]
type = DirichletBC
variable = disp_z
boundary = '11 12'
value = 0.0
[../]
[./prescribed_left]
type = ADFunctionDirichletBC
variable = disp_x
boundary = 13
function = displ_positive
[../]
[./prescribed_right]
type = ADFunctionDirichletBC
variable = disp_x
boundary = 14
function = displ_negative
[../]
[./no_y]
type = DirichletBC
variable = disp_y
boundary = '15 16'
value = 0.0
[../]
[./no_z]
type = DirichletBC
variable = disp_z
boundary = '17 18'
value = 0.0
[../]
[./no_x_interior]
type = DirichletBC
variable = disp_x
boundary = '1 2'
value = 0.0
[../]
[./no_y_interior]
type = DirichletBC
variable = disp_y
boundary = '3 4'
value = 0.0
[../]
[./no_z_interior]
type = DirichletBC
variable = disp_z
boundary = '5 6'
value = 0.0
[../]
[./temperatureInterior]
type = ADFunctionDirichletBC
boundary = 100
function = temp1
variable = temp
[../]
[./MaterialInput]
type = ADFunctionDirichletBC
boundary = '100 13 14 15 16'
function = material_input_function
variable = material_input
[../]
[./CavityPressure]
[./1]
boundary = 100
initial_pressure = 100
material_input = materialInput
R = 8.314472
temperature = aveTempInterior
volume = 'internalVolumeInterior internalVolumeExterior'
startup_time = 0.5
output = ppress
save_in = 'pressure_residual_x pressure_residual_y pressure_residual_z'
use_automatic_differentiation = true
[../]
[../]
[]
[Materials]
[./elast_tensor1]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e1
poissons_ratio = 0
block = 1
[../]
[./strain1]
type = ADComputeFiniteStrain
block = 1
[../]
[./stress1]
type = ADComputeFiniteStrainElasticStress
block = 1
[../]
[./elast_tensor2]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0
block = 2
[../]
[./strain2]
type = ADComputeFiniteStrain
block = 2
[../]
[./stress2]
type = ADComputeFiniteStrainElasticStress
block = 2
[../]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type -sub_pc_type'
petsc_options_value = 'asm lu'
nl_rel_tol = 1e-12
l_tol = 1e-12
l_max_its = 20
dt = 0.5
end_time = 1.0
[]
[Postprocessors]
[./internalVolume]
type = InternalVolume
boundary = 100
execute_on = 'initial linear'
[../]
[./aveTempInterior]
type = SideAverageValue
boundary = 100
variable = temp
execute_on = 'initial linear'
[../]
[./internalVolumeInterior]
type = InternalVolume
boundary = '1 2 3 4 5 6'
execute_on = 'initial linear'
[../]
[./internalVolumeExterior]
type = InternalVolume
boundary = '13 14 15 16 17 18'
execute_on = 'initial linear'
[../]
[./materialInput]
type = SideAverageValue
boundary = '7 8 9 10 11 12'
variable = material_input
execute_on = linear
[../]
[]
[Outputs]
exodus = true
[]
modules/combined/test/tests/ad_cavity_pressure/3d.i
#
# Cavity Pressure Test
#
# This test is designed to compute an internal pressure based on
# p = n * R * T / V
# where
# p is the pressure
# n is the amount of material in the volume (moles)
# R is the universal gas constant
# T is the temperature
# V is the volume
#
# The mesh is composed of one block (1) with an interior cavity of volume 8.
# Block 2 sits in the cavity and has a volume of 1. Thus, the total
# initial volume is 7.
# The test adjusts n, T, and V in the following way:
# n => n0 + alpha * t
# T => T0 + beta * t
# V => V0 + gamma * t
# with
# alpha = n0
# beta = T0 / 2
# gamma = - (0.003322259...) * V0
# T0 = 240.54443866068704
# V0 = 7
# n0 = f(p0)
# p0 = 100
# R = 8.314472 J * K^(-1) * mol^(-1)
#
# So, n0 = p0 * V0 / R / T0 = 100 * 7 / 8.314472 / 240.544439
# = 0.35
#
# The parameters combined at t = 1 gives p = 301.
#
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[Mesh]
file = 3d.e
[]
[Functions]
[./displ_positive]
type = PiecewiseLinear
x = '0 1'
y = '0 0.0029069767441859684'
[../]
[./displ_negative]
type = PiecewiseLinear
x = '0 1'
y = '0 -0.0029069767441859684'
[../]
[./temp1]
type = PiecewiseLinear
x = '0 1'
y = '1 1.5'
scale_factor = 240.54443866068704
[../]
[./material_input_function]
type = PiecewiseLinear
x = '0 1'
y = '0 0.35'
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./temp]
initial_condition = 240.54443866068704
[../]
[./material_input]
[../]
[]
[AuxVariables]
[./pressure_residual_x]
[../]
[./pressure_residual_y]
[../]
[./pressure_residual_z]
[../]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zx]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
use_automatic_differentiation = true
[../]
[./heat]
type = ADDiffusion
variable = temp
use_displaced_mesh = true
[../]
[./material_input_dummy]
type = ADDiffusion
variable = material_input
use_displaced_mesh = true
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
index_i = 0
index_j = 0
variable = stress_xx
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
index_i = 1
index_j = 1
variable = stress_yy
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
index_i = 2
index_j = 2
variable = stress_zz
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
index_i = 0
index_j = 1
variable = stress_xy
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
index_i = 1
index_j = 2
variable = stress_yz
[../]
[./stress_zx]
type = RankTwoAux
rank_two_tensor = stress
index_i = 2
index_j = 0
variable = stress_zx
[../]
[]
[BCs]
[./no_x_exterior]
type = DirichletBC
variable = disp_x
boundary = '7 8'
value = 0.0
[../]
[./no_y_exterior]
type = DirichletBC
variable = disp_y
boundary = '9 10'
value = 0.0
[../]
[./no_z_exterior]
type = DirichletBC
variable = disp_z
boundary = '11 12'
value = 0.0
[../]
[./prescribed_left]
type = ADFunctionDirichletBC
variable = disp_x
boundary = 13
function = displ_positive
[../]
[./prescribed_right]
type = ADFunctionDirichletBC
variable = disp_x
boundary = 14
function = displ_negative
[../]
[./no_y]
type = DirichletBC
variable = disp_y
boundary = '15 16'
value = 0.0
[../]
[./no_z]
type = DirichletBC
variable = disp_z
boundary = '17 18'
value = 0.0
[../]
[./no_x_interior]
type = DirichletBC
variable = disp_x
boundary = '1 2'
value = 0.0
[../]
[./no_y_interior]
type = DirichletBC
variable = disp_y
boundary = '3 4'
value = 0.0
[../]
[./no_z_interior]
type = DirichletBC
variable = disp_z
boundary = '5 6'
value = 0.0
[../]
[./temperatureInterior]
type = ADFunctionDirichletBC
boundary = 100
function = temp1
variable = temp
[../]
[./MaterialInput]
type = ADFunctionDirichletBC
boundary = '100 13 14 15 16'
function = material_input_function
variable = material_input
[../]
[./CavityPressure]
[./1]
boundary = 100
initial_pressure = 100
material_input = materialInput
R = 8.314472
temperature = aveTempInterior
volume = internalVolume
startup_time = 0.5
output = ppress
save_in = 'pressure_residual_x pressure_residual_y pressure_residual_z'
use_automatic_differentiation = true
[../]
[../]
[]
[Materials]
[./elast_tensor1]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e1
poissons_ratio = 0
block = 1
[../]
[./strain1]
type = ADComputeFiniteStrain
block = 1
[../]
[./stress1]
type = ADComputeFiniteStrainElasticStress
block = 1
[../]
[./elast_tensor2]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0
block = 2
[../]
[./strain2]
type = ADComputeFiniteStrain
block = 2
[../]
[./stress2]
type = ADComputeFiniteStrainElasticStress
block = 2
[../]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type -sub_pc_type'
petsc_options_value = 'asm lu'
nl_rel_tol = 1e-12
l_tol = 1e-12
l_max_its = 20
dt = 0.5
end_time = 1.0
[]
[Postprocessors]
[./internalVolume]
type = InternalVolume
boundary = 100
execute_on = 'initial linear'
[../]
[./aveTempInterior]
type = SideAverageValue
boundary = 100
variable = temp
execute_on = 'initial linear'
[../]
[./materialInput]
type = SideAverageValue
boundary = '7 8 9 10 11 12'
variable = material_input
execute_on = linear
[../]
[]
[Outputs]
exodus = true
[]
test/tests/kernels/ad_2d_diffusion/2d_diffusion_neumannbc_test.i
[Mesh]
file = square.e
[]
[Variables]
[./u]
[../]
[]
[Kernels]
[./diff]
type = ADDiffusion
variable = u
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = u
boundary = 1
value = 0
[../]
[./right]
type = ADNeumannBC
variable = u
boundary = 2
value = 1
[../]
[]
[Executioner]
type = Steady
solve_type = 'PJFNK'
[]
[Outputs]
file_base = neumannbc_out
exodus = true
[]
test/tests/misc/displaced_mesh_coupling/ad.i
[GlobalParams]
displacements = 'u'
[]
[Mesh]
type = GeneratedMesh
dim = 1
[]
[Variables]
[./u]
[../]
[./v]
[../]
[]
[Kernels]
[./u]
type = ADDiffusion
use_displaced_mesh = true
variable = u
[../]
[./v]
type = ADDiffusion
use_displaced_mesh = false
variable = v
[../]
[]
[BCs]
[./no_x]
type = ADNeumannBC
variable = u
boundary = left
value = 1.0e-3
use_displaced_mesh = true
[../]
[./right]
type = DirichletBC
variable = u
boundary = right
value = 1
[../]
[./lright]
type = DirichletBC
variable = v
boundary = right
value = 1
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
num_steps = 1
[]
[Outputs]
exodus = true
[]
modules/combined/test/tests/ad_cavity_pressure/rz.i
#
# Cavity Pressure Test
#
# This test is designed to compute an internal pressure based on
# p = n * R * T / V
# where
# p is the pressure
# n is the amount of material in the volume (moles)
# R is the universal gas constant
# T is the temperature
# V is the volume
#
# The mesh is composed of one block (2) with an interior cavity of volume 8.
# Block 1 sits in the cavity and has a volume of 1. Thus, the total
# initial volume is 7.
# The test adjusts T in the following way:
# T => T0 + beta * t
# with
# beta = T0
# T0 = 240.54443866068704
# V0 = 7
# n0 = f(p0)
# p0 = 100
# R = 8.314472 J * K^(-1) * mol^(-1)
#
# So, n0 = p0 * V0 / R / T0 = 100 * 7 / 8.314472 / 240.544439
# = 0.35
#
# At t = 1, p = 200.
[Problem]
coord_type = RZ
[]
[GlobalParams]
displacements = 'disp_r disp_z'
[]
[Mesh]
file = rz.e
[]
[Functions]
[./temperature]
type = PiecewiseLinear
x = '0 1'
y = '1 2'
scale_factor = 240.54443866068704
[../]
[]
[Variables]
[./disp_r]
[../]
[./disp_z]
[../]
[./temp]
initial_condition = 240.54443866068704
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
use_automatic_differentiation = true
[../]
[./heat]
type = ADDiffusion
variable = temp
use_displaced_mesh = true
[../]
[]
[BCs]
[./no_x]
type = DirichletBC
variable = disp_r
boundary = '1 2'
value = 0.0
[../]
[./no_y]
type = DirichletBC
variable = disp_z
boundary = '1 2'
value = 0.0
[../]
[./temperatureInterior]
type = ADFunctionDirichletBC
preset = false
boundary = 2
function = temperature
variable = temp
[../]
[./CavityPressure]
[./1]
boundary = 2
initial_pressure = 100
R = 8.314472
temperature = aveTempInterior
volume = internalVolume
startup_time = 0.5
output = ppress
use_automatic_differentiation = true
[../]
[../]
[]
[Materials]
[./elastic_tensor1]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.3
block = 1
[../]
[./strain1]
type = ADComputeAxisymmetricRZFiniteStrain
block = 1
[../]
[./stress1]
type = ADComputeFiniteStrainElasticStress
block = 1
[../]
[./elastic_tensor2]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.3
block = 2
[../]
[./strain2]
type = ADComputeAxisymmetricRZFiniteStrain
block = 2
[../]
[./stress2]
type = ADComputeFiniteStrainElasticStress
block = 2
[../]
[]
[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 = 2
execute_on = 'initial linear'
[../]
[./aveTempInterior]
type = SideAverageValue
boundary = 2
variable = temp
execute_on = 'initial linear'
[../]
[]
[Outputs]
exodus = true
[./checkpoint]
type = Checkpoint
num_files = 1
[../]
[]
test/tests/kernels/ad_2d_diffusion/2d_diffusion_bodyforce_test.i
###########################################################
# This is a simple test of the Kernel System.
# It solves the Laplacian equation on a small 2x2 grid.
# The "Diffusion" kernel is used to calculate the
# residuals of the weak form of this operator. The
# "BodyForce" kernel is used to apply a time-dependent
# volumetric source.
###########################################################
[Mesh]
file = square.e
[]
[Variables]
active = 'u'
[./u]
order = FIRST
family = LAGRANGE
[../]
[]
[Kernels]
[./diff]
type = ADDiffusion
variable = u
[../]
[./bf]
type = ADBodyForce
variable = u
postprocessor = ramp
[../]
[]
[Functions]
[./ramp]
type = ParsedFunction
value = 't'
[../]
[]
[Postprocessors]
[./ramp]
type = FunctionValuePostprocessor
function = ramp
execute_on = linear
[../]
[]
[BCs]
active = 'left right'
[./left]
type = DirichletBC
variable = u
boundary = 1
value = 0
[../]
[./right]
type = DirichletBC
variable = u
boundary = 2
value = 0
[../]
[]
[Executioner]
type = Transient
dt = 1.0
end_time = 1.0
solve_type = 'NEWTON'
[]
[Outputs]
file_base = bodyforce_out
exodus = true
[]
examples/ex14_pps/ex14.i
[Mesh]
type = GeneratedMesh
dim = 2
nx = 32
ny = 32
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.0
[]
[Variables]
[forced]
order = FIRST
family = LAGRANGE
[]
[]
[Functions]
# A ParsedFunction allows us to supply analytic expressions directly in the input file
[exact]
type = ParsedFunction
value = sin(alpha*pi*x)
vars = alpha
vals = 16
[]
# This function is an actual compiled function
[force]
type = ExampleFunction
alpha = 16
[]
[]
[Kernels]
[diff]
type = ADDiffusion
variable = forced
[]
# This Kernel can take a function name to use
[forcing]
type = ADBodyForce
variable = forced
function = force
[]
[]
[BCs]
# The BC can take a function name to use
[all]
type = FunctionDirichletBC
variable = forced
boundary = 'bottom right top left'
function = exact
[]
[]
[Executioner]
type = Steady
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Postprocessors]
[h]
type = AverageElementSize
[]
[error]
type = ElementL2Error
variable = forced
function = exact
[]
[]
[Outputs]
execute_on = 'timestep_end'
exodus = true
csv = true
[]
test/tests/bcs/ad_bc_preset_nodal/bc_function_preset.i
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
nz = 0
zmin = 0
zmax = 0
elem_type = QUAD4
[]
[Variables]
active = 'u'
[./u]
order = FIRST
family = LAGRANGE
[../]
[]
[Functions]
[./left]
type = ParsedFunction
value = 'y'
[../]
[./right]
type = ParsedFunction
value = '1+y'
[../]
[]
[Kernels]
active = 'diff'
[./diff]
type = ADDiffusion
variable = u
[../]
[]
[BCs]
active = 'left right'
[./left]
type = ADFunctionDirichletBC
variable = u
boundary = 3
function = left
[../]
[./right]
type = ADFunctionDirichletBC
variable = u
boundary = 1
function = right
[../]
[]
[Executioner]
type = Steady
solve_type = 'PJFNK'
[]
[Outputs]
file_base = bc_func_out
exodus = true
[]
modules/misc/test/tests/kernels/thermo_diffusion/ad_thermo_diffusion.i
# Steady-state test for the ThermoDiffusion kernel.
#
# This test applies a constant temperature gradient to drive thermo-diffusion
# in the variable u. At steady state, the thermo-diffusion is balanced by
# diffusion due to Fick's Law, so the total flux is
#
# J = -D ( grad(u) - ( Qstar u / R ) grad(1/T) )
#
# If there are no fluxes at the boundaries, then there is no background flux and
# these two terms must balance each other everywhere:
#
# grad(u) = ( Qstar u / R ) grad(1/T)
#
# The dx can be eliminated to give
#
# d(ln u) / d(1/T) = Qstar / R
#
# This can be solved to give the profile for u as a function of temperature:
#
# u = A exp( Qstar / R T )
#
# Here, we are using simple heat conduction with Dirichlet boundaries on 0 <= x <= 1
# to give a linear profile for temperature: T = x + 1. We also need to apply one
# boundary condition on u, which is u(x=0) = 1. These conditions give:
#
# u = exp( -(Qstar/R) (x/(x+1)) )
#
# This analytical result is tracked by the aux variable "correct_u".
[Mesh]
type = GeneratedMesh
dim = 1
nx = 100
[]
[Variables]
[./u]
initial_condition = 1
[../]
[./temp]
initial_condition = 1
[../]
[]
[Kernels]
[./soret]
type = ADThermoDiffusion
variable = u
temperature = temp
[../]
[./diffC]
type = ADDiffusion
variable = u
[../]
# Heat diffusion gives a linear temperature profile to drive the Soret diffusion.
[./diffT]
type = ADDiffusion
variable = temp
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = u
preset = false
boundary = left
value = 1
[../]
[./leftt]
type = DirichletBC
variable = temp
preset = false
boundary = left
value = 1
[../]
[./rightt]
type = DirichletBC
variable = temp
preset = false
boundary = right
value = 2
[../]
[]
[Materials]
[./ad_soret_coefficient]
type = ADSoretCoeffTest
temperature = temp
coupled_var = u
[../]
[]
[Preconditioning]
[./full]
type = SMP
full = true
[../]
[]
[Executioner]
type = Steady
[]
[Postprocessors]
[./error]
type = NodalL2Error
variable = u
function = 'exp(-x/(x+1))'
[../]
[]
[Outputs]
execute_on = FINAL
exodus = true
[]
test/tests/materials/ad_piecewise_linear_interpolation_material/piecewise_linear_interpolation_material.i
[Mesh]
type = GeneratedMesh
dim = 2
nx = 3
ny = 3
nz = 0
elem_type = QUAD4
[]
[Variables]
[./u]
order = FIRST
family = LAGRANGE
[../]
[]
[Kernels]
[./diff1]
type = ADDiffusion
variable = u
[../]
[]
[BCs]
[./left_u]
type = DirichletBC
variable = u
boundary = left
value = 0
[../]
[./right_u]
type = DirichletBC
variable = u
boundary = right
value = 1
[../]
[]
[Materials]
[./m1]
type = ADPiecewiseLinearInterpolationMaterial
property = m1
variable = u
xy_data = '0 0
1 1'
block = 0
outputs = all
[../]
[./m2]
type = ADPiecewiseLinearInterpolationMaterial
property = m2
variable = u
x = '0 1'
y = '0 1'
block = 0
outputs = all
[../]
[]
[Executioner]
type = Steady
solve_type = 'PJFNK'
[]
[Outputs]
exodus = true
[]
test/tests/bcs/ad_bcs/ad_bc.i
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
[]
[Variables]
[./u]
[../]
[]
[Kernels]
[./diff]
type = ADDiffusion
variable = u
[../]
[]
[BCs]
[./left]
type = ADFunctionDirichletBC
variable = u
boundary = left
function = '1'
[../]
[./right]
type = ADRobinBC
variable = u
boundary = right
[../]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
[]
[Outputs]
exodus = true
[]
test/tests/kernels/kernel_precompute/adkernel_precompute_test.i
[Mesh]
type = GeneratedMesh
dim = 2
nx = 2
ny = 2
nz = 0
zmin = 0
zmax = 0
elem_type = QUAD4
[]
[Variables]
[./convected]
order = FIRST
family = LAGRANGE
[../]
[]
[Kernels]
[./diff]
type = ADDiffusion
variable = convected
[../]
[./conv]
type = ADConvectionPrecompute
variable = convected
velocity = '1.0 0.0 0.0'
[../]
[]
[BCs]
[./bottom]
type = DirichletBC
variable = convected
preset = false
boundary = 'left'
value = 0
[../]
[./top]
type = DirichletBC
variable = convected
preset = false
boundary = 'right'
value = 1
[../]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
[]
[Outputs]
execute_on = 'timestep_end'
file_base = out
exodus = true
[]
modules/stochastic_tools/test/tests/multiapps/batch_full_solve_multiapp/sub.i
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
[]
[Variables]
[u]
[]
[]
[Kernels]
[diff]
type = ADDiffusion
variable = u
[]
[time]
type = ADTimeDerivative
variable = u
[]
[]
[BCs]
[left]
type = DirichletBC
variable = u
boundary = left
value = 0
[]
[right]
type = DirichletBC
variable = u
boundary = right
value = 1
[]
[]
[Postprocessors]
[average]
type = AverageNodalVariableValue
variable = u
[]
[]
[Executioner]
type = Transient
num_steps = 1
dt = 0.25
solve_type = NEWTON
[]
[Outputs]
exodus = true
[]
python/mms/test/mms_temporal.i
[Mesh]
type = GeneratedMesh
dim = 2
nx = 8
ny = 8
[]
[Variables]
[u][]
[]
[Kernels]
[time]
type = ADTimeDerivative
variable = u
[]
[diff]
type = ADDiffusion
variable = u
[]
[force]
type = BodyForce
variable = u
function = force
[]
[]
[Functions]
[exact]
type = ParsedFunction
value = 't^3*x*y'
[]
[force]
type = ParsedFunction
value = '3*x*y*t^2'
[]
[]
[BCs]
[all]
type = FunctionDirichletBC
variable = u
function = exact
boundary = 'left right top bottom'
[]
[]
[Postprocessors]
[error]
type = ElementL2Error
function = exact
variable = u
[]
[h]
type = AverageElementSize
[]
[]
[Executioner]
type = Transient
dt = 1
end_time = 3
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
exodus = true
csv = true
[]
modules/combined/test/tests/thermo_mech/ad-youngs_modulus_function_temp.i
# ---------------------------------------------------------------------------
# This test is designed to verify the variable elasticity tensor functionality in the
# ADComputeFiniteStrainElasticStress class with the elasticity_tensor_has_changed flag
# by varying the young's modulus with temperature. A constant strain is applied
# to the mesh in this case, and the stress varies with the changing elastic constants.
#
# Geometry: A single element cube in symmetry boundary conditions and pulled
# at a constant displacement to create a constant strain in the x-direction.
#
# Temperature: The temperature varies from 400K to 700K in this simulation by
# 100K each time step. The temperature is held constant in the last
# timestep to ensure that the elasticity tensor components are constant
# under constant temperature.
#
# Results: Because Poisson's ratio is set to zero, only the stress along the x
# axis is non-zero. The stress changes with temperature.
#
# Temperature(K) strain_{xx}(m/m) Young's Modulus(Pa) stress_{xx}(Pa)
# 400 0.001 10.0e6 1.0e4
# 500 0.001 10.0e6 1.0e4
# 600 0.001 9.94e6 9.94e3
# 700 0.001 9.93e6 9.93e3
#
# The tensor mechanics results align exactly with the analytical results above
# when this test is run with ComputeIncrementalSmallStrain. When the test is
# run with ComputeFiniteStrain, a 0.05% discrepancy between the analytical
# strains and the simulation strain results is observed, and this discrepancy
# is carried over into the calculation of the elastic stress.
#-------------------------------------------------------------------------
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./temp]
initial_condition = 400
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./elastic_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Functions]
[./temperature_function]
type = PiecewiseLinear
x = '1 4'
y = '400 700'
[../]
[]
[Kernels]
[./heat]
type = ADDiffusion
variable = temp
[../]
[./TensorMechanics]
use_displaced_mesh = true
use_automatic_differentiation = true
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[../]
[./elastic_strain_xx]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = elastic_strain_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[]
[BCs]
[./u_left_fix]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./u_bottom_fix]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./u_back_fix]
type = DirichletBC
variable = disp_z
boundary = back
value = 0.0
[../]
[./u_pull_right]
type = DirichletBC
variable = disp_x
boundary = right
value = 0.001
[../]
[./temp_bc_1]
type = ADFunctionDirichletBC
variable = temp
preset = false
boundary = '1 2 3 4'
function = temperature_function
[../]
[]
[Materials]
[./youngs_modulus]
type = ADPiecewiseLinearInterpolationMaterial
xy_data = '0 10e+6
599.9999 10e+6
600 9.94e+6
99900 10e3'
property = youngs_modulus
variable = temp
[../]
[./elasticity_tensor]
type = ADComputeVariableIsotropicElasticityTensor
youngs_modulus = youngs_modulus
poissons_ratio = 0.0
[../]
[./strain]
type = ADComputeIncrementalSmallStrain
[../]
[./stress]
type = ADComputeFiniteStrainElasticStress
[../]
[]
[Preconditioning]
[./full]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
end_time = 5
[]
[Postprocessors]
[./elastic_strain_xx]
type = ElementAverageValue
variable = elastic_strain_xx
[../]
[./elastic_stress_xx]
type = ElementAverageValue
variable = stress_xx
[../]
[./temp]
type = AverageNodalVariableValue
variable = temp
[../]
[]
[Outputs]
exodus = true
[]
modules/combined/test/tests/ad_cavity_pressure/initial_temperature.i
#
# Cavity Pressure Test
#
# This test is designed to compute an internal pressure based on
# p = n * R * T / V
# where
# p is the pressure
# n is the amount of material in the volume (moles)
# R is the universal gas constant
# T is the temperature
# V is the volume
#
# The mesh is composed of one block (1) with an interior cavity of volume 8.
# Block 2 sits in the cavity and has a volume of 1. Thus, the total
# initial volume is 7.
# The test adjusts n, T, and V in the following way:
# n => n0 + alpha * t
# T => T0 + beta * t
# V => V0 + gamma * t
# with
# alpha = n0
# beta = T0 / 2
# gamma = -(0.003322259...) * V0
# T0 = 240.54443866068704
# V0 = 7
# n0 = f(p0)
# p0 = 100
# R = 8.314472 J * K^(-1) * mol^(-1)
#
# So, n0 = p0 * V0 / R / T0 = 100 * 7 / 8.314472 / 240.544439
# = 0.35
#
# The parameters combined at t = 1 gives p = 301.
#
# This test sets the initial temperature to 500, but the CavityPressure
# is told that that initial temperature is T0. Thus, the final solution
# is unchanged.
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
file = 3d.e
[]
[GlobalParams]
volumetric_locking_correction = true
[]
[Functions]
[./displ_positive]
type = PiecewiseLinear
x = '0 1'
y = '0 0.0029069767441859684'
[../]
[./displ_negative]
type = PiecewiseLinear
x = '0 1'
y = '0 -0.0029069767441859684'
[../]
[./temp1]
type = PiecewiseLinear
x = '0 1'
y = '1 1.5'
scale_factor = 240.54443866068704
[../]
[./material_input_function]
type = PiecewiseLinear
x = '0 1'
y = '0 0.35'
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./temp]
initial_condition = 500
[../]
[./material_input]
[../]
[]
[AuxVariables]
[./pressure_residual_x]
[../]
[./pressure_residual_y]
[../]
[./pressure_residual_z]
[../]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zx]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
use_automatic_differentiation = true
[../]
[./heat]
type = ADDiffusion
variable = temp
use_displaced_mesh = true
[../]
[./material_input_dummy]
type = ADDiffusion
variable = material_input
use_displaced_mesh = true
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
index_i = 0
index_j = 0
variable = stress_xx
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
index_i = 1
index_j = 1
variable = stress_yy
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
index_i = 2
index_j = 2
variable = stress_zz
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
index_i = 0
index_j = 1
variable = stress_xy
[../]
[./stress_yz]
type = RankTwoAux
rank_two_tensor = stress
index_i = 1
index_j = 2
variable = stress_yz
[../]
[./stress_zx]
type = RankTwoAux
rank_two_tensor = stress
index_i = 2
index_j = 0
variable = stress_zx
[../]
[]
[BCs]
[./no_x_exterior]
type = DirichletBC
variable = disp_x
boundary = '7 8'
value = 0.0
[../]
[./no_y_exterior]
type = DirichletBC
variable = disp_y
boundary = '9 10'
value = 0.0
[../]
[./no_z_exterior]
type = DirichletBC
variable = disp_z
boundary = '11 12'
value = 0.0
[../]
[./prescribed_left]
type = ADFunctionDirichletBC
variable = disp_x
boundary = 13
function = displ_positive
[../]
[./prescribed_right]
type = ADFunctionDirichletBC
variable = disp_x
boundary = 14
function = displ_negative
[../]
[./no_y]
type = DirichletBC
variable = disp_y
boundary = '15 16'
value = 0.0
[../]
[./no_z]
type = DirichletBC
variable = disp_z
boundary = '17 18'
value = 0.0
[../]
[./no_x_interior]
type = DirichletBC
variable = disp_x
boundary = '1 2'
value = 0.0
[../]
[./no_y_interior]
type = DirichletBC
variable = disp_y
boundary = '3 4'
value = 0.0
[../]
[./no_z_interior]
type = DirichletBC
variable = disp_z
boundary = '5 6'
value = 0.0
[../]
[./temperatureInterior]
type = ADFunctionDirichletBC
boundary = 100
function = temp1
variable = temp
[../]
[./MaterialInput]
type = ADFunctionDirichletBC
boundary = '100 13 14 15 16'
function = material_input_function
variable = material_input
[../]
[./CavityPressure]
[./1]
boundary = 100
initial_pressure = 100
material_input = materialInput
R = 8.314472
temperature = aveTempInterior
initial_temperature = 240.54443866068704
volume = internalVolume
startup_time = 0.5
output = ppress
save_in = 'pressure_residual_x pressure_residual_y pressure_residual_z'
use_automatic_differentiation = true
[../]
[../]
[]
[Materials]
[./elast_tensor1]
type = ComputeElasticityTensor
C_ijkl = '0 5'
fill_method = symmetric_isotropic
block = 1
[../]
[./strain1]
type = ADComputeFiniteStrain
block = 1
[../]
[./stress1]
type = ADComputeFiniteStrainElasticStress
block = 1
[../]
[./elast_tensor2]
type = ComputeElasticityTensor
C_ijkl = '0 5'
fill_method = symmetric_isotropic
block = 2
[../]
[./strain2]
type = ADComputeFiniteStrain
block = 2
[../]
[./stress2]
type = ADComputeFiniteStrainElasticStress
block = 2
[../]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type -sub_pc_type'
petsc_options_value = 'asm lu'
nl_rel_tol = 1e-12
l_tol = 1e-12
l_max_its = 20
dt = 0.5
end_time = 1.0
[]
[Postprocessors]
[./internalVolume]
type = InternalVolume
boundary = 100
execute_on = 'initial linear'
[../]
[./aveTempInterior]
type = SideAverageValue
boundary = 100
variable = temp
execute_on = 'initial linear'
[../]
[./materialInput]
type = SideAverageValue
boundary = '7 8 9 10 11 12'
variable = material_input
execute_on = linear
[../]
[]
[Outputs]
exodus = true
[]
modules/heat_conduction/test/tests/ad_heat_conduction/test.i
# This test solves a 1D transient heat equation with a complicated thermal
# conductivity in order to verify jacobian calculation via AD
[Mesh]
type = GeneratedMesh
dim = 2
nx = 5
ny = 5
xmax = 0.001
ymax = 0.001
[]
[Variables]
[./T]
initial_condition = 1.5
[../]
[./c]
initial_condition = 1.5
[../]
[]
[Kernels]
[./HeatDiff]
type = ADHeatConduction
variable = T
thermal_conductivity = thermal_conductivity
[../]
[./heat_dt]
type = ADHeatConductionTimeDerivative
variable = T
specific_heat = thermal_conductivity
density_name = thermal_conductivity
[../]
[./c]
type = ADDiffusion
variable = c
[../]
[]
[Kernels]
[./c_dt]
type = TimeDerivative
variable = c
[../]
[]
[BCs]
[./left_c]
type = DirichletBC
variable = c
boundary = left
value = 2
[../]
[./right_c]
type = DirichletBC
variable = c
boundary = right
value = 1
[../]
[./left_T]
type = DirichletBC
variable = T
boundary = top
value = 1
[../]
[./right_T]
type = DirichletBC
variable = T
boundary = bottom
value = 2
[../]
[]
[Materials]
[./k]
type = ADThermalConductivityTest
c = c
temperature = T
[../]
[]
[Preconditioning]
[./full]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
num_steps = 1
[]
[Outputs]
exodus = true
[]
test/tests/misc/max_var_n_dofs_per_elem/max_var_n_dofs_per_elem.i
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
nz = 10
[]
[Variables]
[./u]
[../]
[]
[Kernels]
[./diff]
type = ADDiffusion
variable = u
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = u
boundary = left
value = 0
[../]
[./right]
type = DirichletBC
variable = u
boundary = right
value = 1
[../]
[]
[Executioner]
type = Steady
# Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Postprocessors]
[./max_dofs]
type = MaxVarNDofsPerElemPP
[../]
[]
[Outputs]
exodus = true
[]
test/tests/preconditioners/auto_smp/ad_coupled_convection.i
[Mesh]
type = GeneratedMesh
dim = 2
nx = 4
ny = 4
[]
[Variables]
[u][]
[v][]
[]
[Kernels]
[diff]
type = ADDiffusion
variable = u
[]
[convection]
type = ADCoupledConvection
variable = u
velocity_vector = v
scale = 100
[]
[diff_v]
type = ADDiffusion
variable = v
[]
[]
[BCs]
[left]
type = DirichletBC
variable = u
preset = false
boundary = left
value = 0
[]
[right]
type = DirichletBC
variable = u
preset = false
boundary = right
value = 1
[]
[left_v]
type = DirichletBC
variable = v
preset = false
boundary = left
value = 0
[]
[right_v]
type = DirichletBC
variable = v
preset = false
boundary = right
value = 1
[]
[]
[Preconditioning/smp]
# this block is part of what is being tested, see "tests" file
type = SMP
full = true
[]
[Executioner]
type = Steady
solve_type = NEWTON
nl_abs_tol = 1e-10 # needed to get non-preconditioned version to fail
auto_preconditioning = false # this is part of what is being tested, see "tests" file
[]
[Outputs]
exodus = true
[]
test/tests/geomsearch/quadrature_nearest_node_locator/qnnl_ad.i
[Mesh]
file = 2dcontact_collide.e
displacements = 'disp_x disp_y'
[]
[Variables]
[./u]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./distance]
order = CONSTANT
family = MONOMIAL
[../]
[disp_x][]
[disp_y][]
[]
[Kernels]
[./diff]
type = ADDiffusion
variable = u
use_displaced_mesh = true
[../]
[]
[AuxKernels]
[./distance]
type = NearestNodeDistanceAux
variable = distance
boundary = 2
paired_boundary = 3
[../]
[]
[BCs]
[./block1_left]
type = DirichletBC
variable = u
boundary = 1
value = 0
[../]
[./block1_right]
type = DirichletBC
variable = u
boundary = 2
value = 1
[../]
[./block2_left]
type = DirichletBC
variable = u
boundary = 3
value = 0
[../]
[./block2_right]
type = DirichletBC
variable = u
boundary = 4
value = 1
[../]
[]
[Executioner]
type = Steady
solve_type = 'PJFNK'
[]
[Outputs]
exodus = true
file_base = qnnl_ad
[]
test/tests/kernels/ad_2d_diffusion/2d_diffusion_test.i
###########################################################
# This is a simple test of the Kernel System.
# It solves the Laplacian equation on a small 2x2 grid.
# The "Diffusion" kernel is used to calculate the
# residuals of the weak form of this operator.
#
# @Requirement F3.30
###########################################################
[Mesh]
file = square.e
[]
[Variables]
active = 'u'
[./u]
order = FIRST
family = LAGRANGE
[../]
[]
[Kernels]
active = 'diff'
[./diff]
type = ADDiffusion
variable = u
[../]
[]
[BCs]
active = 'left right'
[./left]
type = DirichletBC
variable = u
boundary = 1
value = 0
[../]
[./right]
type = DirichletBC
variable = u
boundary = 2
value = 1
[../]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
[]
[Outputs]
file_base = out
exodus = true
[]
tutorials/darcy_thermo_mech/step01_diffusion/problems/step1.i
[Mesh]
type = GeneratedMesh # Can generate simple lines, rectangles and rectangular prisms
dim = 2 # Dimension of the mesh
nx = 100 # Number of elements in the x direction
ny = 10 # Number of elements in the y direction
xmax = 0.304 # Length of test chamber
ymax = 0.0257 # Test chamber radius
[]
[Variables]
[pressure]
# Adds a Linear Lagrange variable by default
[]
[]
[Kernels]
[diffusion]
type = ADDiffusion # Laplacian operator using automatic differentiation
variable = pressure # Operate on the "pressure" variable from above
[]
[]
[BCs]
[inlet]
type = DirichletBC # Simple u=value BC
variable = pressure # Variable to be set
boundary = left # Name of a sideset in the mesh
value = 4000 # (Pa) From Figure 2 from paper. First data point for 1mm spheres.
[]
[outlet]
type = DirichletBC
variable = pressure
boundary = right
value = 0 # (Pa) Gives the correct pressure drop from Figure 2 for 1mm spheres
[]
[]
[Problem]
type = FEProblem # This is the "normal" type of Finite Element Problem in MOOSE
coord_type = RZ # Axisymmetric RZ
rz_coord_axis = X # Which axis the symmetry is around
[]
[Executioner]
type = Steady # Steady state problem
solve_type = NEWTON # Perform a Newton solve, uses AD to compute Jacobian terms
petsc_options_iname = '-pc_type -pc_hypre_type' # PETSc option pairs with values below
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
exodus = true # Output Exodus format
[]
modules/stochastic_tools/examples/batch/sub.i
[Mesh]
type = GeneratedMesh
dim = 3
nx = 10
ny = 10
nz = 10
[]
[Variables]
[u]
[]
[]
[Kernels]
[diff]
type = ADDiffusion
variable = u
[]
[time]
type = ADTimeDerivative
variable = u
[]
[]
[BCs]
[left]
type = DirichletBC
variable = u
boundary = left
value = 0
[]
[right]
type = DirichletBC
variable = u
boundary = right
value = 1
[]
[]
[Postprocessors]
[average]
type = AverageNodalVariableValue
variable = u
[]
[]
[Problem]
type = FEProblem
[]
[Executioner]
type = Transient
num_steps = 1
dt = 0.25
solve_type = NEWTON
[]
[Controls]
[receiver]
type = SamplerReceiver
[]
[]
[Outputs]
[]
test/tests/kernels/jxw_grad_test_dep_on_displacements/jxw-cylindrical.i
[GlobalParams]
displacements = 'disp_r disp_z'
order = SECOND
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 3
ny = 3
elem_type = QUAD9
[]
[Problem]
coord_type = RZ
[]
[Variables]
[./disp_r]
[../]
[./disp_z]
[../]
[./u]
order = FIRST
[../]
[./v]
[../]
[]
[Kernels]
[./disp_r]
type = Diffusion
variable = disp_r
[../]
[./disp_z]
type = Diffusion
variable = disp_z
[../]
[./u]
type = ADDiffusion
variable = u
use_displaced_mesh = true
[../]
[./v]
type = ADDiffusion
variable = v
use_displaced_mesh = true
[../]
[]
[BCs]
# BCs cannot be preset due to Jacobian tests
[./u_left]
type = DirichletBC
preset = false
value = 0
boundary = 'left'
variable = u
[../]
[./u_right]
type = DirichletBC
preset = false
value = 1
boundary = 'right'
variable = u
[../]
[./v_left]
type = DirichletBC
preset = false
value = 0
boundary = 'left'
variable = v
[../]
[./v_right]
type = DirichletBC
preset = false
value = 1
boundary = 'right'
variable = v
[../]
[./disp_r_left]
type = DirichletBC
preset = false
value = 0
boundary = 'left'
variable = disp_r
[../]
[./disp_r_right]
type = DirichletBC
preset = false
value = 1
boundary = 'right'
variable = disp_r
[../]
[./disp_z_left]
type = DirichletBC
preset = false
value = 0
boundary = 'bottom'
variable = disp_z
[../]
[./disp_z_right]
type = DirichletBC
preset = false
value = 1
boundary = 'top'
variable = disp_z
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Steady
solve_type = NEWTON
[]
[Outputs]
[./dofmap]
type = DOFMap
execute_on = 'initial'
[../]
exodus = true
[]
[ICs]
[./disp_r]
type = RandomIC
variable = disp_r
min = 0.01
max = 0.09
[../]
[./disp_z]
type = RandomIC
variable = disp_z
min = 0.01
max = 0.09
[../]
[./u]
type = RandomIC
variable = u
min = 0.1
max = 0.9
[../]
[./v]
type = RandomIC
variable = v
min = 0.1
max = 0.9
[../]
[]
Child Objects
- tutorials/darcy_thermo_mech/step03_darcy_material/include/kernels/DarcyPressure.h
- modules/heat_conduction/include/kernels/ADHeatConduction.h
tutorials/darcy_thermo_mech/step03_darcy_material/include/kernels/DarcyPressure.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
// Including the "ADDiffusion" Kernel so it can be extended
#include "ADDiffusion.h"
/**
* Computes the residual contribution: K / mu * grad_u * grad_phi.
*
* We are inheriting from ADDiffusion instead of from ADKernel because
* the grad_u * grad_phi is already coded and all that is
* needed is to specialize that calculation by multiplying by K / mu.
*/
template <ComputeStage compute_stage>
class DarcyPressure : public ADDiffusion<compute_stage>
{
public:
static InputParameters validParams();
DarcyPressure(const InputParameters & parameters);
protected:
/// ADKernelGrad objects must override precomputeQpResidual
virtual ADRealVectorValue precomputeQpResidual() override;
// References to be set from Material system
/// The permeability. Note that this is declared as a \p MaterialProperty. This means that if
/// calculation of this property in the producing \p Material depends on non-linear variables, the
/// derivative information will be lost here in the consumer and the non-linear solve will suffer
const MaterialProperty<Real> & _permeability;
/// The viscosity. This is declared as an \p ADMaterialProperty, meaning any derivative
/// information coming from the producing \p Material will be preserved and the integrity of the
/// non-linear solve will be likewise preserved
const ADMaterialProperty(Real) & _viscosity;
usingKernelGradMembers;
};
modules/heat_conduction/include/kernels/ADHeatConduction.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 "ADDiffusion.h"
template <ComputeStage>
class ADHeatConduction;
declareADValidParams(ADHeatConduction);
template <ComputeStage compute_stage>
class ADHeatConduction : public ADDiffusion<compute_stage>
{
public:
static InputParameters validParams();
ADHeatConduction(const InputParameters & parameters);
protected:
virtual ADRealVectorValue precomputeQpResidual() override;
const ADMaterialProperty(Real) & _thermal_conductivity;
usingKernelGradMembers;
};