- displacementsThe displacements appropriate for the simulation geometry and coordinate system
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:The displacements appropriate for the simulation geometry and coordinate system
Compute Incremental Strain
Compute a strain increment and rotation increment for small strains.
Description
The material ComputeIncrementalStrain is designed for linear elasticity problems formulated within an incremental framework. As with ComputeSmallStrain, this material is useful for verifying material models with hand calculations because of the simplified strain calculations. As in the small strain material, the incremental small strain class assumes the gradient of displacement with respect to position is much smaller than unity, and the squared displacement gradient term is neglected in the small strain definition to give: As the class name suggests, ComputeIncrementalStrain is an incremental formulation. The stress increment is calculated from the current strain increment at each time step. In this class, the rotation tensor is defined to be the rank-2 Identity tensor: no rotations are allowed in the model. Stateful properties, including strain_old and stress_old, are stored. This incremental small strain material is useful as a component of verifying more complex finite incremental strain-stress calculations.
Example Input File Syntax
The incremental small strain calculator can be activated in the input file through the use of the Solid Mechanics Physics, as shown below.
[Physics<<<{"href": "../../syntax/Physics/index.html"}>>>]
[SolidMechanics<<<{"href": "../../syntax/Physics/SolidMechanics/index.html"}>>>]
[QuasiStatic<<<{"href": "../../syntax/Physics/SolidMechanics/QuasiStatic/index.html"}>>>]
[./all]
strain<<<{"description": "Strain formulation"}>>> = SMALL
incremental<<<{"description": "Use incremental or total strain (if not explicitly specified this defaults to incremental for finite strain and total for small strain)"}>>> = true
add_variables<<<{"description": "Add the displacement variables"}>>> = true
eigenstrain_names<<<{"description": "List of eigenstrains to be applied in this strain calculation"}>>> = eigenstrain
generate_output<<<{"description": "Add scalar quantity output for stress and/or strain"}>>> = 'strain_xx strain_yy strain_zz'
[../]
[../]
[../]
[](modules/solid_mechanics/test/tests/thermal_expansion/constant_expansion_coeff.i)The Solid Mechanics Physics is designed to automatically determine and set the strain and stress divergence parameters correctly for the selected strain formulation. We recommend that users employ the Solid Mechanics Physics whenever possible to ensure consistency between the test function gradients and the strain formulation selected.
Input Parameters
- base_nameOptional parameter that allows the user to define multiple mechanics material systems on the same block, i.e. for multiple phases
C++ Type:std::string
Controllable:No
Description:Optional parameter that allows the user to define multiple mechanics material systems on the same block, i.e. for multiple phases
- blockThe list of blocks (ids or names) that this object will be applied
C++ Type:std::vector<SubdomainName>
Controllable:No
Description:The list of blocks (ids or names) that this object will be applied
- boundaryThe list of boundaries (ids or names) from the mesh where this object applies
C++ Type:std::vector<BoundaryName>
Controllable:No
Description:The list of boundaries (ids or names) from the mesh where this object applies
- computeTrueWhen false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies.
Default:True
C++ Type:bool
Controllable:No
Description:When false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies.
- constant_onNONEWhen ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped
Default:NONE
C++ Type:MooseEnum
Options:NONE, ELEMENT, SUBDOMAIN
Controllable:No
Description:When ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped
- declare_suffixAn optional suffix parameter that can be appended to any declared properties. The suffix will be prepended with a '_' character.
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:An optional suffix parameter that can be appended to any declared properties. The suffix will be prepended with a '_' character.
- eigenstrain_namesList of eigenstrains to be applied in this strain calculation
C++ Type:std::vector<MaterialPropertyName>
Unit:(no unit assumed)
Controllable:No
Description:List of eigenstrains to be applied in this strain calculation
- global_strainOptional material property holding a global strain tensor applied to the mesh as a whole
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:Optional material property holding a global strain tensor applied to the mesh as a whole
- volumetric_locking_correctionFalseFlag to correct volumetric locking
Default:False
C++ Type:bool
Controllable:No
Description:Flag to correct volumetric locking
Optional Parameters
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector<std::string>
Controllable:No
Description:Adds user-defined labels for accessing object parameters via control logic.
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Controllable:Yes
Description:Set the enabled status of the MooseObject.
- implicitTrueDetermines whether this object is calculated using an implicit or explicit form
Default:True
C++ Type:bool
Controllable:No
Description:Determines whether this object is calculated using an implicit or explicit form
- search_methodnearest_node_connected_sidesChoice of search algorithm. All options begin by finding the nearest node in the primary boundary to a query point in the secondary boundary. In the default nearest_node_connected_sides algorithm, primary boundary elements are searched iff that nearest node is one of their nodes. This is fast to determine via a pregenerated node-to-elem map and is robust on conforming meshes. In the optional all_proximate_sides algorithm, primary boundary elements are searched iff they touch that nearest node, even if they are not topologically connected to it. This is more CPU-intensive but is necessary for robustness on any boundary surfaces which has disconnections (such as Flex IGA meshes) or non-conformity (such as hanging nodes in adaptively h-refined meshes).
Default:nearest_node_connected_sides
C++ Type:MooseEnum
Options:nearest_node_connected_sides, all_proximate_sides
Controllable:No
Description:Choice of search algorithm. All options begin by finding the nearest node in the primary boundary to a query point in the secondary boundary. In the default nearest_node_connected_sides algorithm, primary boundary elements are searched iff that nearest node is one of their nodes. This is fast to determine via a pregenerated node-to-elem map and is robust on conforming meshes. In the optional all_proximate_sides algorithm, primary boundary elements are searched iff they touch that nearest node, even if they are not topologically connected to it. This is more CPU-intensive but is necessary for robustness on any boundary surfaces which has disconnections (such as Flex IGA meshes) or non-conformity (such as hanging nodes in adaptively h-refined meshes).
- seed0The seed for the master random number generator
Default:0
C++ Type:unsigned int
Controllable:No
Description:The seed for the master random number generator
Advanced Parameters
- output_propertiesList of material properties, from this material, to output (outputs must also be defined to an output type)
C++ Type:std::vector<std::string>
Controllable:No
Description:List of material properties, from this material, to output (outputs must also be defined to an output type)
- outputsnone Vector of output names where you would like to restrict the output of variables(s) associated with this object
Default:none
C++ Type:std::vector<OutputName>
Controllable:No
Description:Vector of output names where you would like to restrict the output of variables(s) associated with this object
Outputs Parameters
- prop_getter_suffixAn optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:An optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
- use_interpolated_stateFalseFor the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
Default:False
C++ Type:bool
Controllable:No
Description:For the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
Material Property Retrieval Parameters
Input Files
- (modules/porous_flow/test/tests/plastic_heating/shear01.i)
- (modules/contact/test/tests/explicit_dynamics/first_test.i)
- (modules/solid_mechanics/test/tests/jacobian/phe01.i)
- (modules/contact/test/tests/verification/patch_tests/automatic_patch_update/sliding_update.i)
- (modules/combined/test/tests/DiffuseCreep/variable_base_eigen_strain.i)
- (modules/contact/test/tests/verification/patch_tests/plane_2/plane2_template2.i)
- (modules/solid_mechanics/test/tests/visco/burgers_creep.i)
- (modules/contact/test/tests/verification/patch_tests/plane_3/plane3_template1.i)
- (modules/contact/test/tests/verification/patch_tests/plane_4/plane4_mu_0_2_pen.i)
- (modules/combined/test/tests/j2_plasticity_vs_LSH/j2_hard1_mod_small_strain.i)
- (modules/solid_mechanics/test/tests/central_difference/lumped/3D/3d_nodalmass_explicit.i)
- (modules/solid_mechanics/test/tests/central_difference/lumped/2D/2d_nodalmass_explicit.i)
- (modules/solid_mechanics/test/tests/central_difference/lumped/3D/3d_lumped_explicit.i)
- (modules/contact/test/tests/verification/patch_tests/plane_2/plane2_mu_0_2_pen.i)
- (modules/solid_mechanics/test/tests/visco/gen_maxwell_relax.i)
- (modules/solid_mechanics/test/tests/central_difference/consistent/3D/3d_consistent_explicit_mass_scaling.i)
- (modules/solid_mechanics/test/tests/central_difference/lumped/2D/2d_lumped_explicit.i)
- (modules/solid_mechanics/test/tests/central_difference/lumped/1D/1d_lumped_explicit.i)
- (modules/solid_mechanics/test/tests/visco/gen_kv_creep.i)
- (modules/combined/test/tests/DiffuseCreep/stress_based_chem_pot.i)
- (modules/contact/test/tests/verification/patch_tests/plane_1/plane1_mu_0_2_pen.i)
- (modules/contact/test/tests/verification/patch_tests/plane_2/plane2_template1.i)
- (modules/combined/test/tests/DiffuseCreep/stress.i)
- (modules/contact/test/tests/verification/patch_tests/plane_1/plane1_template2.i)
- (modules/solid_mechanics/test/tests/jacobian/cto28.i)
- (modules/solid_mechanics/test/tests/visco/gen_kv_driving.i)
- (modules/porous_flow/test/tests/jacobian/phe01.i)
- (modules/combined/test/tests/j2_plasticity_vs_LSH/j2_hard1_mod_optimised.i)
- (modules/solid_mechanics/test/tests/visco/gen_maxwell_driving.i)
- (modules/contact/test/tests/verification/patch_tests/plane_1/plane1_template1.i)
- (modules/porous_flow/test/tests/plastic_heating/tensile01.i)
- (modules/contact/test/tests/verification/patch_tests/plane_3/plane3_mu_0_2_pen.i)
- (modules/combined/test/tests/thermo_mech/youngs_modulus_function_temp.i)
- (modules/porous_flow/test/tests/dirackernels/injection_with_plasticity.i)
- (modules/porous_flow/test/tests/plastic_heating/compressive01.i)
- (modules/contact/test/tests/verification/patch_tests/plane_4/plane4_template1.i)
- (modules/contact/test/tests/verification/patch_tests/plane_4/plane4_template2.i)
- (modules/solid_mechanics/test/tests/ad_elastic/incremental_small_elastic-noad.i)
- (modules/solid_mechanics/test/tests/central_difference/lumped/1D/1d_nodalmass_explicit.i)
- (modules/solid_mechanics/test/tests/central_difference/consistent/1D/1d_consistent_explicit.i)
- (modules/solid_mechanics/test/tests/central_difference/consistent/2D/2d_consistent_explicit.i)
- (modules/contact/test/tests/verification/patch_tests/plane_3/plane3_template2.i)
- (modules/combined/test/tests/DiffuseCreep/stress_flux_n_gb_relax.i)
- (modules/solid_mechanics/test/tests/central_difference/consistent/3D/3d_consistent_explicit.i)
Child Objects
(modules/solid_mechanics/test/tests/thermal_expansion/constant_expansion_coeff.i)
# This test involves only thermal expansion strains on a 2x2x2 cube of approximate
# steel material. An initial temperature of 25 degrees C is given for the material,
# and an auxkernel is used to calculate the temperature in the entire cube to
# raise the temperature each time step. After the first timestep,in which the
# temperature jumps, the temperature increases by 6.25C each timestep.
# The thermal strain increment should therefore be
# 6.25 C * 1.3e-5 1/C = 8.125e-5 m/m.
# This test is also designed to be used to identify problems with restart files
[Mesh]
type = GeneratedMesh
dim = 3
nx = 2
ny = 2
nz = 2
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[AuxVariables]
[./temp]
[../]
[]
[Functions]
[./temperature_load]
type = ParsedFunction
expression = t*(500.0)+300.0
[../]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[./all]
strain = SMALL
incremental = true
add_variables = true
eigenstrain_names = eigenstrain
generate_output = 'strain_xx strain_yy strain_zz'
[../]
[../]
[../]
[]
[AuxKernels]
[./tempfuncaux]
type = FunctionAux
variable = temp
function = temperature_load
[../]
[]
[BCs]
[./x_bot]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./y_bot]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./z_bot]
type = DirichletBC
variable = disp_z
boundary = back
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2.1e5
poissons_ratio = 0.3
[../]
[./small_stress]
type = ComputeFiniteStrainElasticStress
[../]
[./thermal_expansion_strain]
type = ComputeThermalExpansionEigenstrain
stress_free_temperature = 298
thermal_expansion_coeff = 1.3e-5
temperature = temp
eigenstrain_name = eigenstrain
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
l_max_its = 50
nl_max_its = 50
nl_rel_tol = 1e-12
nl_abs_tol = 1e-10
l_tol = 1e-9
start_time = 0.0
end_time = 0.075
dt = 0.0125
dtmin = 0.0001
[]
[Outputs]
exodus = true
checkpoint = true
[]
[Postprocessors]
[./strain_xx]
type = ElementAverageValue
variable = strain_xx
[../]
[./strain_yy]
type = ElementAverageValue
variable = strain_yy
[../]
[./strain_zz]
type = ElementAverageValue
variable = strain_zz
[../]
[./temperature]
type = AverageNodalVariableValue
variable = temp
[../]
[]
(modules/porous_flow/test/tests/plastic_heating/shear01.i)
# Tensile heating, using capped weak-plane plasticity
# x_disp(z=1) = t
# totalstrain_xz = t
# with C_ijkl = 0.5 0.25
# stress_zx = stress_xz = 0.25*t, so q=0.25*t, but
# with cohesion=1 and tan(phi)=1: max(q)=1. With tan(psi)=0,
# the plastic return is always to (p, q) = (0, 1),
# so plasticstrain_zx = max(t - 4, 0)
# heat_energy_rate = coeff * (t - 4) for t>4
# Heat capacity of rock = specific_heat_cap * density = 4
# So temperature of rock should be:
# (1 - porosity) * 4 * T = (1 - porosity) * coeff * (t - 4)
[Mesh]
type = GeneratedMesh
dim = 3
xmin = -10
xmax = 10
zmin = 0
zmax = 1
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
PorousFlowDictator = dictator
[]
[Variables]
[temperature]
[]
[]
[Kernels]
[energy_dot]
type = PorousFlowEnergyTimeDerivative
variable = temperature
base_name = non_existent
[]
[phe]
type = PorousFlowPlasticHeatEnergy
variable = temperature
coeff = 8
[]
[]
[AuxVariables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[AuxKernels]
[disp_x]
type = FunctionAux
variable = disp_x
function = 'z*t'
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = temperature
number_fluid_phases = 0
number_fluid_components = 0
[]
[coh]
type = TensorMechanicsHardeningConstant
value = 1
[]
[tanphi]
type = TensorMechanicsHardeningConstant
value = 1.0
[]
[tanpsi]
type = TensorMechanicsHardeningConstant
value = 0.0
[]
[t_strength]
type = TensorMechanicsHardeningConstant
value = 10
[]
[c_strength]
type = TensorMechanicsHardeningConstant
value = 10
[]
[]
[Materials]
[rock_internal_energy]
type = PorousFlowMatrixInternalEnergy
specific_heat_capacity = 2
density = 2
[]
[temp]
type = PorousFlowTemperature
temperature = temperature
[]
[porosity]
type = PorousFlowPorosityConst
porosity = 0.7
[]
[phe]
type = ComputePlasticHeatEnergy
[]
[elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric_isotropic
C_ijkl = '0.5 0.25'
[]
[strain]
type = ComputeIncrementalStrain
displacements = 'disp_x disp_y disp_z'
[]
[admissible]
type = ComputeMultipleInelasticStress
inelastic_models = mc
perform_finite_strain_rotations = false
[]
[mc]
type = CappedWeakPlaneStressUpdate
cohesion = coh
tan_friction_angle = tanphi
tan_dilation_angle = tanpsi
tensile_strength = t_strength
compressive_strength = c_strength
tip_smoother = 0
smoothing_tol = 1
yield_function_tol = 1E-10
perfect_guess = true
[]
[]
[Postprocessors]
[temp]
type = PointValue
point = '0 0 0'
variable = temperature
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_atol -snes_rtol -snes_max_it'
petsc_options_value = 'bcgs bjacobi 1E-15 1E-10 10000'
[]
[]
[Executioner]
type = Transient
solve_type = Newton
dt = 1
end_time = 10
[]
[Outputs]
file_base = shear01
csv = true
[]
(modules/contact/test/tests/explicit_dynamics/first_test.i)
# One element test to test the central difference time integrator in 3D.
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[block_one]
type = GeneratedMeshGenerator
dim = 3
nx = 2
ny = 2
nz = 2
xmin = 4.5
xmax = 5.5
ymin = 4.5
ymax = 5.5
zmin = 0.0001
zmax = 1.0001
boundary_name_prefix = 'ball'
[]
[block_two]
type = GeneratedMeshGenerator
dim = 3
nx = 2
ny = 2
nz = 2
xmin = 0.0
xmax = 10
ymin = 0.0
ymax = 10
zmin = -2
zmax = 0
boundary_name_prefix = 'base'
boundary_id_offset = 10
[]
[block_one_id]
type = SubdomainIDGenerator
input = block_one
subdomain_id = 1
[]
[block_two_id]
type = SubdomainIDGenerator
input = block_two
subdomain_id = 2
[]
[combine]
type = MeshCollectionGenerator
inputs = ' block_one_id block_two_id'
[]
allow_renumbering = false
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[AuxVariables]
[vel_x]
[]
[accel_x]
[]
[vel_y]
[]
[accel_y]
[]
[vel_z]
[]
[accel_z]
[]
[]
[AuxKernels]
[accel_x]
type = TestNewmarkTI
variable = accel_x
displacement = disp_x
first = false
[]
[vel_x]
type = TestNewmarkTI
variable = vel_x
displacement = disp_x
[]
[accel_y]
type = TestNewmarkTI
variable = accel_y
displacement = disp_y
first = false
[]
[vel_y]
type = TestNewmarkTI
variable = vel_y
displacement = disp_x
[]
[accel_z]
type = TestNewmarkTI
variable = accel_z
displacement = disp_z
first = false
[]
[vel_z]
type = TestNewmarkTI
variable = vel_z
displacement = disp_z
[]
[]
[Kernels]
[DynamicTensorMechanics]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
stiffness_damping_coefficient = 0.04
#generate_output = 'stress_zz strain_zz'
[]
[inertia_x]
type = InertialForce
variable = disp_x
[]
[inertia_y]
type = InertialForce
variable = disp_y
[]
[inertia_z]
type = InertialForce
variable = disp_z
[]
[]
[Functions]
[dispz]
type = ParsedFunction
expression = if(t<1.0e3,-0.01*t,0)
[]
[push]
type = ParsedFunction
expression = if(t<10.0,0.01*t,0.1)
[]
[]
[BCs]
[z_front]
type = FunctionDirichletBC
variable = disp_z
boundary = 'ball_front'
function = dispz
preset = false
[]
[x_front]
type = DirichletBC
variable = disp_x
boundary = 'ball_front'
preset = false
value = 0.0
[]
[y_front]
type = DirichletBC
variable = disp_y
boundary = 'ball_front'
preset = false
value = 0.0
[]
[x_fixed]
type = DirichletBC
variable = disp_x
boundary = 'base_back'
preset = false
value = 0.0
[]
[y_fixed]
type = DirichletBC
variable = disp_y
boundary = 'base_back'
preset = false
value = 0.0
[]
[z_fixed]
type = DirichletBC
variable = disp_z
boundary = 'base_back'
preset = false
value = 0.0
[]
[]
[ExplicitDynamicsContact]
[my_contact]
model = frictionless
primary = base_front
secondary = ball_back
penalty = 1.0e3
verbose = true
[]
[]
[Materials]
[elasticity_tensor_block_one]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e3
poissons_ratio = 0.0
block = 1
[]
[elasticity_tensor_block_two]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.0
block = 2
[]
[strain_block]
type = ComputeIncrementalStrain
displacements = 'disp_x disp_y disp_z'
implicit = false
[]
[stress_block]
type = ComputeFiniteStrainElasticStress
[]
[density]
type = GenericConstantMaterial
prop_names = density
prop_values = 1e4
[]
[wave_speed]
type = WaveSpeed
[]
[]
[Executioner]
type = Transient
start_time = -0.01
end_time = 0.25
dt = 0.005
timestep_tolerance = 1e-6
[TimeIntegrator]
type = CentralDifference
[]
[]
[Postprocessors]
[disp_58z]
type = NodalVariableValue
nodeid = 1
variable = disp_z
[]
[critical_time_step]
type = CriticalTimeStep
density = density
[]
[contact_pressure_max]
type = NodalExtremeValue
variable = contact_pressure
block = '1 2'
value_type = max
[]
[]
[Outputs]
exodus = true
csv = true
[]
(modules/solid_mechanics/test/tests/jacobian/phe01.i)
# Capped weak-plane plasticity, Kernel = PlasticHeatEnergy
[Mesh]
type = GeneratedMesh
dim = 3
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[./silly_phe]
type = PlasticHeatEnergy
coeff = 0.5
variable = disp_x
[../]
[./dummy_disp_y]
type = TimeDerivative
variable = disp_y
[../]
[./dummy_disp_z]
type = TimeDerivative
variable = disp_z
[../]
[]
[UserObjects]
[./coh]
type = SolidMechanicsHardeningExponential
value_0 = 1
value_residual = 2
rate = 1
[../]
[./tanphi]
type = SolidMechanicsHardeningExponential
value_0 = 1.0
value_residual = 0.5
rate = 2
[../]
[./tanpsi]
type = SolidMechanicsHardeningExponential
value_0 = 0.1
value_residual = 0.05
rate = 3
[../]
[./t_strength]
type = SolidMechanicsHardeningExponential
value_0 = 100
value_residual = 100
rate = 1
[../]
[./c_strength]
type = SolidMechanicsHardeningCubic
value_0 = 1
value_residual = 0
internal_0 = -2
internal_limit = 0
[../]
[]
[Materials]
[./phe]
type = ComputePlasticHeatEnergy
[../]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
lambda = 1.0
shear_modulus = 2.0
[../]
[./strain]
type = ComputeIncrementalStrain
displacements = 'disp_x disp_y disp_z'
eigenstrain_names = ini_stress
[../]
[./ini_stress]
type = ComputeEigenstrainFromInitialStress
initial_stress = '0 0 0 0 0 1 0 1 -1.5'
eigenstrain_name = ini_stress
[../]
[./admissible]
type = ComputeMultipleInelasticStress
inelastic_models = mc
tangent_operator = nonlinear
[../]
[./mc]
type = CappedWeakPlaneStressUpdate
cohesion = coh
tan_friction_angle = tanphi
tan_dilation_angle = tanpsi
tensile_strength = t_strength
compressive_strength = c_strength
max_NR_iterations = 20
tip_smoother = 0
smoothing_tol = 1
yield_function_tol = 1E-10
perfect_guess = false
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_atol -snes_rtol -snes_max_it -snes_type'
petsc_options_value = 'bcgs bjacobi 1E-15 1E-10 10000 test'
[../]
[]
[Executioner]
type = Transient
solve_type = Newton
[]
(modules/contact/test/tests/verification/patch_tests/automatic_patch_update/sliding_update.i)
[Mesh]
file = sliding_update.e
displacements = 'disp_x disp_y'
patch_size = 5
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Kernels]
[TensorMechanics]
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2e5
poissons_ratio = 0.3
[]
[strain]
type = ComputeIncrementalStrain
[]
[stress]
type = ComputeFiniteStrainElasticStress
[]
[]
[Contact]
[leftright]
secondary = 3
primary = 2
normalize_penalty = true
tangential_tolerance = 1e-3
penalty = 1e+4
model = frictionless
formulation = penalty
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
start_time = 0
end_time = 10.0
l_tol = 1e-8
nl_rel_tol = 1e-6
nl_abs_tol = 1e-4
dt = 2.0
line_search = 'none'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
petsc_options_value = 'lu superlu_dist'
timestep_tolerance = 1e-1
[]
[BCs]
[fixed_1_2x]
type = DirichletBC
boundary = '1'
value = 0.0
variable = disp_x
[]
[fixed_1_2y]
type = DirichletBC
boundary = '1'
value = 0.0
variable = disp_y
[]
[sliding_1]
type = FunctionDirichletBC
function = sliding_fn
variable = disp_x
boundary = '4'
[]
[normal_y]
type = DirichletBC
variable = disp_y
boundary = '4'
value = -0.01
[]
# [./Pressure]
# [./normal_pressure]
# disp_x = disp_x
# disp_y = disp_y
# factor = 100.0
# boundary = 4
# [../]
# [../]
[]
[Functions]
[sliding_fn]
type = ParsedFunction
expression = 't'
[]
[]
[Outputs]
exodus = true
perf_graph = true
[]
(modules/combined/test/tests/DiffuseCreep/variable_base_eigen_strain.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 50
ny = 2
xmin = 0
xmax = 10
ymin = 0
ymax = 2
[]
[Variables]
[./c]
[./InitialCondition]
type = FunctionIC
function = 'x0:=5.0;thk:=0.5;m:=2;r:=abs(x-x0);v:=exp(-(r/thk)^m);0.1+0.01*v'
[../]
[../]
[./mu]
[../]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./gb]
family = LAGRANGE
order = FIRST
[../]
[./eigen_strain_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./eigen_strain_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yy]
family = MONOMIAL
order = CONSTANT
[../]
[]
[Kernels]
[./conc]
type = CHSplitConcentration
variable = c
mobility = mobility_prop
chemical_potential_var = mu
[../]
[./chempot]
type = CHSplitChemicalPotential
variable = mu
chemical_potential_prop = mu_prop
c = c
[../]
[./time]
type = TimeDerivative
variable = c
[../]
[./TensorMechanics]
displacements = 'disp_x disp_y'
[../]
[]
[AuxKernels]
[./gb]
type = FunctionAux
variable = gb
function = 'x0:=5.0;thk:=0.5;m:=2;r:=abs(x-x0);v:=exp(-(r/thk)^m);v'
[../]
[./eigenstrain_xx]
type = RankTwoAux
variable = eigen_strain_xx
rank_two_tensor = eigenstrain
index_i = 0
index_j = 0
[../]
[./eigenstrain_yy]
type = RankTwoAux
variable = eigen_strain_yy
rank_two_tensor = eigenstrain
index_i = 1
index_j = 1
[../]
[./stress_xx]
type = RankTwoAux
variable = stress_xx
rank_two_tensor = stress
index_i = 0
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
variable = stress_yy
rank_two_tensor = stress
index_i = 1
index_j = 1
[../]
[]
[Materials]
[./chemical_potential]
type = DerivativeParsedMaterial
block = 0
property_name = mu_prop
coupled_variables = c
expression = 'c'
derivative_order = 1
[../]
[./var_dependence]
type = DerivativeParsedMaterial
block = 0
expression = 'c*(1.0-c)'
coupled_variables = c
property_name = var_dep
derivative_order = 1
[../]
[./mobility]
type = CompositeMobilityTensor
block = 0
M_name = mobility_prop
tensors = diffusivity
weights = var_dep
coupled_variables = c
[../]
[./phase_normal]
type = PhaseNormalTensor
phase = gb
normal_tensor_name = gb_normal
[../]
[./aniso_tensor]
type = GBDependentAnisotropicTensor
gb = gb
bulk_parameter = 0.1
gb_parameter = 1
gb_normal_tensor_name = gb_normal
gb_tensor_prop_name = aniso_tensor
[../]
[./diffusivity]
type = GBDependentDiffusivity
gb = gb
bulk_parameter = 0.1
gb_parameter = 1
gb_normal_tensor_name = gb_normal
gb_tensor_prop_name = diffusivity
[../]
[./eigenstrain_prefactor]
type = DerivativeParsedMaterial
block = 0
expression = 'c-0.1'
coupled_variables = c
property_name = eigenstrain_prefactor
derivative_order = 1
[../]
[./eigenstrain]
type = ComputeVariableBaseEigenStrain
base_tensor_property_name = aniso_tensor
prefactor = eigenstrain_prefactor
eigenstrain_name = eigenstrain
[../]
[./strain]
type = ComputeIncrementalStrain
displacements = 'disp_x disp_y'
eigenstrain_names = eigenstrain
[../]
[./stress]
type = ComputeStrainIncrementBasedStress
[../]
[./elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '120.0 80.0'
fill_method = symmetric_isotropic
[../]
[]
[BCs]
[./Periodic]
[./cbc]
auto_direction = 'x y'
variable = c
[../]
[../]
[./fix_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./fix_y]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
petsc_options_iname = '-pc_type -ksp_grmres_restart -sub_ksp_type -sub_pc_type -pc_asm_overlap'
petsc_options_value = 'asm 31 preonly lu 1'
nl_rel_tol = 1e-10
nl_max_its = 5
l_tol = 1e-4
l_max_its = 20
dt = 1
num_steps = 5
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Outputs]
exodus = true
[]
(modules/contact/test/tests/verification/patch_tests/plane_2/plane2_template2.i)
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Mesh]
file = plane2_mesh.e
[]
[Problem]
type = AugmentedLagrangianContactProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
maximum_lagrangian_update_iterations = 200
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./penetration]
[../]
[./saved_x]
[../]
[./saved_y]
[../]
[./diag_saved_x]
[../]
[./diag_saved_y]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
save_in = 'saved_x saved_y'
extra_vector_tags = 'ref'
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./zeroslip_x]
type = ConstantAux
variable = inc_slip_x
boundary = 4
execute_on = timestep_begin
value = 0.0
[../]
[./zeroslip_y]
type = ConstantAux
variable = inc_slip_y
boundary = 4
execute_on = timestep_begin
value = 0.0
[../]
[./accum_slip_x]
type = AccumulateAux
variable = accum_slip_x
accumulate_from_variable = inc_slip_x
execute_on = timestep_end
[../]
[./accum_slip_y]
type = AccumulateAux
variable = accum_slip_y
accumulate_from_variable = inc_slip_y
execute_on = timestep_end
[../]
[./penetration]
type = PenetrationAux
variable = penetration
boundary = 4
paired_boundary = 3
[../]
[]
[Postprocessors]
[./bot_react_x]
type = NodalSum
variable = saved_x
boundary = 1
[../]
[./bot_react_y]
type = NodalSum
variable = saved_y
boundary = 1
[../]
[./top_react_x]
type = NodalSum
variable = saved_x
boundary = 5
[../]
[./top_react_y]
type = NodalSum
variable = saved_y
boundary = 5
[../]
[./ref_resid_x]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_x
[../]
[./ref_resid_y]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_y
[../]
[./sigma_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./sigma_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./disp_x5]
type = NodalVariableValue
nodeid = 4
variable = disp_x
[../]
[./disp_x9]
type = NodalVariableValue
nodeid = 8
variable = disp_x
[../]
[./disp_y5]
type = NodalVariableValue
nodeid = 4
variable = disp_y
[../]
[./disp_y9]
type = NodalVariableValue
nodeid = 8
variable = disp_y
[../]
[./_dt]
type = TimestepSize
[../]
[./num_lin_it]
type = NumLinearIterations
[../]
[./num_nonlin_it]
type = NumNonlinearIterations
[../]
[]
[BCs]
[./bot_y]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[../]
[./side_x]
type = DirichletBC
variable = disp_x
boundary = 2
value = 0.0
[../]
[./top_press]
type = Pressure
variable = disp_y
boundary = 5
factor = 109.89
[../]
[]
[Materials]
[./bot_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./bot_strain]
type = ComputeIncrementalStrain
block = '1'
[../]
[./bot_stress]
type = ComputeFiniteStrainElasticStress
block = '1'
[../]
[./top_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '2'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./top_strain]
type = ComputeIncrementalStrain
block = '2'
[../]
[./top_stress]
type = ComputeFiniteStrainElasticStress
block = '2'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_abs_tol = 1e-8
nl_rel_tol = 1e-7
l_max_its = 100
nl_max_its = 200
dt = 1.0
end_time = 1.0
num_steps = 10
dtmin = 1.0
l_tol = 1e-3
[]
[VectorPostprocessors]
[./x_disp]
type = NodalValueSampler
variable = disp_x
boundary = '1 3 4 5'
sort_by = x
[../]
[./cont_press]
type = NodalValueSampler
variable = contact_pressure
boundary = '3'
sort_by = x
[../]
[]
[Outputs]
print_linear_residuals = true
perf_graph = true
[./exodus]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[./chkfile]
type = CSV
show = 'bot_react_x bot_react_y disp_x5 disp_y5 disp_x9 disp_y9 sigma_yy sigma_zz top_react_x top_react_y x_disp cont_press'
execute_vector_postprocessors_on = timestep_end
[../]
[./outfile]
type = CSV
delimiter = ' '
execute_vector_postprocessors_on = none
[../]
[]
[Contact]
[./leftright]
secondary = 3
primary = 4
normalize_penalty = true
tangential_tolerance = 1e-3
penalty = 1e+9
al_penetration_tolerance = 1e-8
[../]
[]
(modules/solid_mechanics/test/tests/visco/burgers_creep.i)
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
elem_type = HEX8
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./creep_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./creep_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
use_displaced_mesh = true
[]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
variable = stress_xx
rank_two_tensor = stress
index_j = 0
index_i = 0
execute_on = timestep_end
[../]
[./strain_xx]
type = RankTwoAux
variable = strain_xx
rank_two_tensor = total_strain
index_j = 0
index_i = 0
execute_on = timestep_end
[../]
[./creep_strain_xx]
type = RankTwoAux
variable = creep_strain_xx
rank_two_tensor = creep_strain
index_j = 0
index_i = 0
execute_on = timestep_end
[../]
[./strain_yy]
type = RankTwoAux
variable = strain_yy
rank_two_tensor = total_strain
index_j = 1
index_i = 1
execute_on = timestep_end
[../]
[./creep_strain_yy]
type = RankTwoAux
variable = creep_strain_yy
rank_two_tensor = creep_strain
index_j = 1
index_i = 1
execute_on = timestep_end
[../]
[]
[BCs]
[./symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[../]
[./axial_load]
type = NeumannBC
variable = disp_x
boundary = right
value = 10e6
[../]
[]
[Materials]
[./burgers]
type = GeneralizedKelvinVoigtModel
creep_modulus = '10e9'
creep_viscosity = '1 10'
poisson_ratio = 0.2
young_modulus = 10e9
longterm_poissons_ratio = 0.2
longterm_youngs_modulus = 10e9
[../]
[./stress]
type = ComputeMultipleInelasticStress
inelastic_models = 'creep'
[../]
[./creep]
type = LinearViscoelasticStressUpdate
[../]
[./strain]
type = ComputeIncrementalStrain
displacements = 'disp_x disp_y disp_z'
[../]
[]
[UserObjects]
[./update]
type = LinearViscoelasticityManager
viscoelastic_model = burgers
[../]
[]
[Postprocessors]
[strain_yy]
type = ElementAverageValue
variable = strain_yy
[]
[creep_strain_yy]
type = ElementAverageValue
variable = creep_strain_yy
[]
[stress_xx]
type = ElementAverageValue
variable = stress_xx
[]
[strain_xx]
type = ElementAverageValue
variable = strain_xx
[]
[creep_strain_xx]
type = ElementAverageValue
variable = creep_strain_xx
[]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
l_max_its = 50
l_tol = 1e-10
nl_max_its = 20
nl_rel_tol = 1e-10
nl_abs_tol = 1e-10
dtmin = 0.01
end_time = 100
[./TimeStepper]
type = LogConstantDT
first_dt = 0.1
log_dt = 0.1
[../]
[]
[Outputs]
file_base = burgers_creep_out
csv = true
[]
(modules/contact/test/tests/verification/patch_tests/plane_3/plane3_template1.i)
[GlobalParams]
order = SECOND
displacements = 'disp_x disp_y'
[]
[Mesh]
file = plane3_mesh.e
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./penetration]
[../]
[./saved_x]
[../]
[./saved_y]
[../]
[./diag_saved_x]
[../]
[./diag_saved_y]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[./tang_force_x]
[../]
[./tang_force_y]
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
save_in = 'saved_x saved_y'
extra_vector_tags = 'ref'
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./zeroslip_x]
type = ConstantAux
variable = inc_slip_x
boundary = 4
execute_on = timestep_begin
value = 0.0
[../]
[./zeroslip_y]
type = ConstantAux
variable = inc_slip_y
boundary = 4
execute_on = timestep_begin
value = 0.0
[../]
[./accum_slip_x]
type = AccumulateAux
variable = accum_slip_x
accumulate_from_variable = inc_slip_x
execute_on = timestep_end
[../]
[./accum_slip_y]
type = AccumulateAux
variable = accum_slip_y
accumulate_from_variable = inc_slip_y
execute_on = timestep_end
[../]
[./penetration]
type = PenetrationAux
variable = penetration
boundary = 4
paired_boundary = 3
[../]
[]
[Postprocessors]
[./bot_react_x]
type = NodalSum
variable = saved_x
boundary = 1
[../]
[./bot_react_y]
type = NodalSum
variable = saved_y
boundary = 1
[../]
[./top_react_x]
type = NodalSum
variable = saved_x
boundary = 5
[../]
[./top_react_y]
type = NodalSum
variable = saved_y
boundary = 5
[../]
[./ref_resid_x]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_x
[../]
[./ref_resid_y]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_y
[../]
[./sigma_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./sigma_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./disp_x2]
type = NodalVariableValue
nodeid = 1
variable = disp_x
[../]
[./disp_x11]
type = NodalVariableValue
nodeid = 10
variable = disp_x
[../]
[./disp_y2]
type = NodalVariableValue
nodeid = 1
variable = disp_y
[../]
[./disp_y11]
type = NodalVariableValue
nodeid = 10
variable = disp_y
[../]
[./_dt]
type = TimestepSize
[../]
[./num_lin_it]
type = NumLinearIterations
[../]
[./num_nonlin_it]
type = NumNonlinearIterations
[../]
[]
[BCs]
[./bot_y]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[../]
[./side_x]
type = DirichletBC
variable = disp_x
boundary = 2
value = 0.0
[../]
[./top_press]
type = Pressure
variable = disp_y
boundary = 5
factor = 109.89
[../]
[]
[Materials]
[./bot_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./bot_strain]
type = ComputeIncrementalStrain
block = '1'
[../]
[./bot_stress]
type = ComputeFiniteStrainElasticStress
block = '1'
[../]
[./top_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '2'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./top_strain]
type = ComputeIncrementalStrain
block = '2'
[../]
[./top_stress]
type = ComputeFiniteStrainElasticStress
block = '2'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type'
petsc_options_value = 'asm'
line_search = 'none'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-8
l_max_its = 100
nl_max_its = 200
dt = 1.0
end_time = 1.0
num_steps = 10
dtmin = 1.0
l_tol = 1e-3
[]
[VectorPostprocessors]
[./x_disp]
type = NodalValueSampler
variable = disp_x
boundary = '1 3 4 5'
sort_by = x
[../]
[./cont_press]
type = NodalValueSampler
variable = contact_pressure
boundary = '3'
sort_by = x
[../]
[]
[Outputs]
print_linear_residuals = true
perf_graph = true
[./exodus]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[./chkfile]
type = CSV
show = 'bot_react_x bot_react_y disp_x2 disp_y2 disp_x11 disp_y11 sigma_yy sigma_zz top_react_x top_react_y x_disp cont_press'
execute_vector_postprocessors_on = timestep_end
[../]
[./outfile]
type = CSV
delimiter = ' '
execute_vector_postprocessors_on = none
[../]
[]
[Contact]
[./leftright]
secondary = 3
primary = 4
normalize_penalty = true
tangential_tolerance = 1e-3
penalty = 1e+9
[../]
[]
(modules/contact/test/tests/verification/patch_tests/plane_4/plane4_mu_0_2_pen.i)
[GlobalParams]
order = SECOND
displacements = 'disp_x disp_y'
[]
[Mesh]
file = plane4_mesh.e
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./penetration]
[../]
[./saved_x]
[../]
[./saved_y]
[../]
[./diag_saved_x]
[../]
[./diag_saved_y]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[./tang_force_x]
[../]
[./tang_force_y]
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
save_in = 'saved_x saved_y'
extra_vector_tags = 'ref'
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./inc_slip_x]
type = PenetrationAux
variable = inc_slip_x
execute_on = timestep_end
boundary = 3
paired_boundary = 4
[../]
[./inc_slip_y]
type = PenetrationAux
variable = inc_slip_y
execute_on = timestep_end
boundary = 3
paired_boundary = 4
[../]
[./accum_slip_x]
type = PenetrationAux
variable = accum_slip_x
execute_on = timestep_end
boundary = 3
paired_boundary = 4
[../]
[./accum_slip_y]
type = PenetrationAux
variable = accum_slip_y
execute_on = timestep_end
boundary = 3
paired_boundary = 4
[../]
[./penetration]
type = PenetrationAux
variable = penetration
boundary = 3
paired_boundary = 4
[../]
[./tang_force_x]
type = PenetrationAux
variable = tang_force_x
quantity = tangential_force_x
boundary = 3
paired_boundary = 4
[../]
[./tang_force_y]
type = PenetrationAux
variable = tang_force_y
quantity = tangential_force_y
boundary = 3
paired_boundary = 4
[../]
[]
[Postprocessors]
[./bot_react_x]
type = NodalSum
variable = saved_x
boundary = 1
[../]
[./bot_react_y]
type = NodalSum
variable = saved_y
boundary = 1
[../]
[./top_react_x]
type = NodalSum
variable = saved_x
boundary = 5
[../]
[./top_react_y]
type = NodalSum
variable = saved_y
boundary = 5
[../]
[./ref_resid_x]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_x
[../]
[./ref_resid_y]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_y
[../]
[./sigma_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./sigma_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./disp_x9]
type = NodalVariableValue
nodeid = 8
variable = disp_x
[../]
[./disp_x16]
type = NodalVariableValue
nodeid = 15
variable = disp_x
[../]
[./disp_y9]
type = NodalVariableValue
nodeid = 8
variable = disp_y
[../]
[./disp_y16]
type = NodalVariableValue
nodeid = 15
variable = disp_y
[../]
[./_dt]
type = TimestepSize
[../]
[./num_lin_it]
type = NumLinearIterations
[../]
[./num_nonlin_it]
type = NumNonlinearIterations
[../]
[]
[BCs]
[./bot_y]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[../]
[./side_x]
type = DirichletBC
variable = disp_x
boundary = 2
value = 0.0
[../]
[./top_press]
type = Pressure
variable = disp_y
boundary = 5
factor = 109.89
[../]
[]
[Materials]
[./bot_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./bot_strain]
type = ComputeIncrementalStrain
block = '1'
[../]
[./bot_stress]
type = ComputeFiniteStrainElasticStress
block = '1'
[../]
[./top_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '2'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./top_strain]
type = ComputeIncrementalStrain
block = '2'
[../]
[./top_stress]
type = ComputeFiniteStrainElasticStress
block = '2'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-7
l_max_its = 100
nl_max_its = 200
dt = 1.0
end_time = 1.0
num_steps = 10
dtmin = 1.0
l_tol = 1e-3
[]
[VectorPostprocessors]
[./x_disp]
type = NodalValueSampler
variable = disp_x
boundary = '1 3 4 5'
sort_by = x
[../]
[./cont_press]
type = NodalValueSampler
variable = contact_pressure
boundary = '3'
sort_by = x
[../]
[]
[Outputs]
file_base = plane4_mu_0_2_pen_out
print_linear_residuals = true
perf_graph = true
[./exodus]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[./chkfile]
type = CSV
file_base = plane4_mu_0_2_pen_check
show = 'bot_react_x bot_react_y disp_x9 disp_y9 disp_x16 disp_y16 sigma_yy sigma_zz top_react_x top_react_y x_disp cont_press'
execute_vector_postprocessors_on = timestep_end
[../]
[./outfile]
type = CSV
delimiter = ' '
execute_vector_postprocessors_on = none
[../]
[]
[Contact]
[./leftright]
secondary = 3
primary = 4
model = coulomb
formulation = penalty
normalize_penalty = true
friction_coefficient = 0.2
penalty = 1e+9
[../]
[]
(modules/combined/test/tests/j2_plasticity_vs_LSH/j2_hard1_mod_small_strain.i)
# Test designed to compare results and active time between SH/LinearStrainHardening
# material vs TM j2 plastic user object. As number of elements increases, TM
# active time increases at a much higher rate than SM. Testing at 4x4x4
# (64 elements).
#
# plot vm_stress vs intnl to see constant hardening
#
# Original test located at:
# solid_mechanics/tests/j2_plasticity/hard1.i
[Mesh]
type = GeneratedMesh
dim = 3
nx = 4
ny = 4
nz = 4
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[]
[Kernels]
[TensorMechanics]
displacements = 'disp_x disp_y disp_z'
[]
[]
[AuxVariables]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[intnl]
order = CONSTANT
family = MONOMIAL
[]
[vm_stress]
order = CONSTANT
family = MONOMIAL
[]
[eq_pl_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[]
[intnl]
type = MaterialStdVectorAux
index = 0
property = plastic_internal_parameter
variable = intnl
[]
[eq_pl_strain]
type = RankTwoScalarAux
rank_two_tensor = plastic_strain
scalar_type = EffectiveStrain
variable = eq_pl_strain
[]
[vm_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
scalar_type = VonMisesStress
variable = vm_stress
[]
[]
[BCs]
[left]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[bottom]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[]
[back]
type = DirichletBC
variable = disp_z
boundary = back
value = 0.0
[]
[z]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = 't/60'
[]
[]
[UserObjects]
[str]
type = TensorMechanicsHardeningConstant
value = 2.4e2
[]
[j2]
type = TensorMechanicsPlasticJ2
yield_strength = str
yield_function_tolerance = 1E-3
internal_constraint_tolerance = 1E-9
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
#with E = 2.1e5 and nu = 0.3
#Hooke's law: E-nu to Lambda-G
C_ijkl = '121154 80769.2'
[]
[strain]
type = ComputeIncrementalStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[]
[mc]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = j2
tangent_operator = elastic
perform_finite_strain_rotations = false
[]
[]
[Executioner]
type = Transient
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-6
nl_abs_tol = 1e-10
l_tol = 1e-4
start_time = 0.0
end_time = 0.5
dt = 0.01
[]
[Postprocessors]
[stress_zz]
type = ElementAverageValue
variable = stress_zz
[]
[intnl]
type = ElementAverageValue
variable = intnl
[]
[eq_pl_strain]
type = PointValue
point = '0 0 0'
variable = eq_pl_strain
[]
[vm_stress]
type = PointValue
point = '0 0 0'
variable = vm_stress
[]
[]
[Outputs]
csv = true
print_linear_residuals = false
perf_graph = true
[]
(modules/solid_mechanics/test/tests/central_difference/lumped/3D/3d_nodalmass_explicit.i)
# Test for the CentralDifference time integrator
[Mesh]
[./generated_mesh]
type = GeneratedMeshGenerator
dim = 3
nx = 1
ny = 1
nz = 2
xmin = 0.0
xmax = 1
ymin = 0.0
ymax = 1
zmin = 0.0
zmax = 2
[../]
[./all_nodes]
type = BoundingBoxNodeSetGenerator
new_boundary = 'all'
input = 'generated_mesh'
top_right = '1 1 2'
bottom_left = '0 0 0'
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[AuxVariables]
[./vel_x]
[../]
[./accel_x]
[../]
[./vel_y]
[../]
[./accel_y]
[../]
[./vel_z]
[../]
[./accel_z]
[../]
[]
[Kernels]
[./DynamicSolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[]
[AuxKernels]
[./accel_x]
type = TestNewmarkTI
variable = accel_x
displacement = disp_x
first = false
[../]
[./vel_x]
type = TestNewmarkTI
variable = vel_x
displacement = disp_x
[../]
[./accel_y]
type = TestNewmarkTI
variable = accel_y
displacement = disp_y
first = false
[../]
[./vel_y]
type = TestNewmarkTI
variable = vel_y
displacement = disp_y
[../]
[./accel_z]
type = TestNewmarkTI
variable = accel_z
displacement = disp_z
first = false
[../]
[./vel_z]
type = TestNewmarkTI
variable = vel_z
displacement = disp_z
[../]
[]
[BCs]
[./x_bot]
type = FunctionDirichletBC
boundary = 'back'
variable = disp_x
function = dispx
preset = false
[../]
[./y_bot]
type = FunctionDirichletBC
variable = disp_y
boundary = back
function = dispy
preset = false
[../]
[./z_bot]
type = FunctionDirichletBC
variable = disp_z
boundary = back
function = dispz
preset = false
[../]
[]
[Functions]
[./dispx]
type = PiecewiseLinear
x = '0.0 1.0 2.0 3.0 4.0' # time
y = '0.0 1.0 0.0 -1.0 0.0' # displacement
[../]
[./dispy]
type = ParsedFunction
expression = 0.1*t*t*sin(10*t)
[../]
[./dispz]
type = ParsedFunction
expression = 0.1*t*t*sin(20*t)
[../]
[]
[NodalKernels]
[./nodal_mass_x]
type = NodalTranslationalInertia
boundary = 'all'
nodal_mass_file = 'nodal_mass_file.csv'
variable = 'disp_x'
[../]
[./nodal_mass_y]
type = NodalTranslationalInertia
boundary = 'all'
nodal_mass_file = 'nodal_mass_file.csv'
variable = 'disp_y'
[../]
[./nodal_mass_z]
type = NodalTranslationalInertia
boundary = 'all'
nodal_mass_file = 'nodal_mass_file.csv'
variable = 'disp_z'
[../]
[]
[Materials]
[./elasticity_tensor_block]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.25
block = 0
[../]
[./strain_block]
type = ComputeIncrementalStrain
block = 0
displacements = 'disp_x disp_y disp_z'
implicit = false
[../]
[./stress_block]
type = ComputeFiniteStrainElasticStress
block = 0
[../]
[]
[Executioner]
type = Transient
start_time = -0.01
end_time = 0.1
dt = 0.005
timestep_tolerance = 1e-6
[./TimeIntegrator]
type = CentralDifference
[../]
[]
[Postprocessors]
[./accel_10x]
type = NodalVariableValue
nodeid = 10
variable = accel_x
[../]
[]
[Outputs]
exodus = false
csv = true
[]
(modules/solid_mechanics/test/tests/central_difference/lumped/2D/2d_nodalmass_explicit.i)
# One element test to test the central difference time integrator.
[Mesh]
[./generated_mesh]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 1
ymin = 0
ymax = 2
nx = 1
ny = 2
[../]
[./all_nodes]
type = BoundingBoxNodeSetGenerator
new_boundary = 'all'
input = 'generated_mesh'
top_right = '1 2 0'
bottom_left = '0 0 0'
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./accel_x]
[../]
[./vel_x]
[../]
[./accel_y]
[../]
[./vel_y]
[../]
[]
[AuxKernels]
[./accel_x]
type = TestNewmarkTI
variable = accel_x
displacement = disp_x
first = false
[../]
[./vel_x]
type = TestNewmarkTI
variable = vel_x
displacement = disp_x
[../]
[./accel_y]
type = TestNewmarkTI
variable = accel_y
displacement = disp_y
first = false
[../]
[./vel_y]
type = TestNewmarkTI
variable = vel_y
displacement = disp_y
[../]
[]
[Kernels]
[./DynamicSolidMechanics]
displacements = 'disp_x disp_y'
[../]
[]
[BCs]
[./y_bot]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./x_bot]
type = FunctionDirichletBC
boundary = bottom
variable = disp_x
function = disp
preset = false
[../]
[]
[Functions]
[./disp]
type = PiecewiseLinear
x = '0.0 1.0 2.0 3.0 4.0' # time
y = '0.0 1.0 0.0 -1.0 0.0' # displacement
[../]
[]
[NodalKernels]
[./nodal_mass_x]
type = NodalTranslationalInertia
variable = 'disp_x'
nodal_mass_file = 'nodal_mass_file.csv'
boundary = 'all'
[../]
[./nodal_mass_y]
type = NodalTranslationalInertia
variable = 'disp_y'
nodal_mass_file = 'nodal_mass_file.csv'
boundary = 'all'
[../]
[]
[Materials]
[./elasticity_tensor_block]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.25
block = 0
[../]
[./strain_block]
type = ComputeIncrementalStrain
block = 0
displacements = 'disp_x disp_y'
implicit = false
[../]
[./stress_block]
type = ComputeFiniteStrainElasticStress
block = 0
[../]
[]
[Executioner]
type = Transient
start_time = 0
end_time = 0.1
dt = 0.005
timestep_tolerance = 1e-6
[./TimeIntegrator]
type = CentralDifference
[../]
[]
[Postprocessors]
[./accel_2x]
type = PointValue
point = '1.0 2.0 0.0'
variable = accel_x
[../]
[]
[Outputs]
exodus = false
csv = true
[]
(modules/solid_mechanics/test/tests/central_difference/lumped/3D/3d_lumped_explicit.i)
# Test for the central difference time integrator in 3D.
[Mesh]
[./generated_mesh]
type = GeneratedMeshGenerator
dim = 3
nx = 1
ny = 1
nz = 2
xmin = 0.0
xmax = 1
ymin = 0.0
ymax = 1
zmin = 0.0
zmax = 2
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[AuxVariables]
[./vel_x]
[../]
[./accel_x]
[../]
[./vel_y]
[../]
[./accel_y]
[../]
[./vel_z]
[../]
[./accel_z]
[../]
[]
[AuxKernels]
[./accel_x]
type = TestNewmarkTI
variable = accel_x
displacement = disp_x
first = false
[../]
[./vel_x]
type = TestNewmarkTI
variable = vel_x
displacement = disp_x
[../]
[./accel_y]
type = TestNewmarkTI
variable = accel_y
displacement = disp_y
first = false
[../]
[./vel_y]
type = TestNewmarkTI
variable = vel_y
displacement = disp_x
[../]
[./accel_z]
type = TestNewmarkTI
variable = accel_z
displacement = disp_z
first = false
[../]
[./vel_z]
type = TestNewmarkTI
variable = vel_z
displacement = disp_z
[../]
[]
[Kernels]
[./DynamicSolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[./inertia_x]
type = InertialForce
variable = disp_x
[../]
[./inertia_y]
type = InertialForce
variable = disp_y
[../]
[./inertia_z]
type = InertialForce
variable = disp_z
[../]
[]
[BCs]
[./x_bot]
type = FunctionDirichletBC
variable = disp_x
boundary = 'back'
function = dispx
preset = false
[../]
[./y_bot]
type = FunctionDirichletBC
variable = disp_y
boundary = 'back'
function = dispy
preset = false
[../]
[./z_bot]
type = FunctionDirichletBC
variable = disp_z
boundary = 'back'
function = dispz
preset = false
[../]
[]
[Functions]
[./dispx]
type = PiecewiseLinear
x = '0.0 1.0 2.0 3.0 4.0' # time
y = '0.0 1.0 0.0 -1.0 0.0' # displacement
[../]
[./dispy]
type = ParsedFunction
expression = 0.1*t*t*sin(10*t)
[../]
[./dispz]
type = ParsedFunction
expression = 0.1*t*t*sin(20*t)
[../]
[]
[Materials]
[./elasticity_tensor_block]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.25
block = 0
[../]
[./strain_block]
type = ComputeIncrementalStrain
block = 0
displacements = 'disp_x disp_y disp_z'
implicit = false
[../]
[./stress_block]
type = ComputeFiniteStrainElasticStress
block = 0
[../]
[./density]
type = GenericConstantMaterial
block = 0
prop_names = density
prop_values = 1e4
[../]
[wave_speed]
type = WaveSpeed
[]
[]
[Executioner]
type = Transient
start_time = -0.01
end_time = 0.1
dt = 0.005
timestep_tolerance = 1e-6
[./TimeIntegrator]
type = CentralDifference
solve_type = lumped
[../]
[]
[Postprocessors]
[./accel_10x]
type = NodalVariableValue
nodeid = 10
variable = accel_x
[../]
[]
[Outputs]
exodus = false
csv = true
[]
(modules/contact/test/tests/verification/patch_tests/plane_2/plane2_mu_0_2_pen.i)
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Mesh]
file = plane2_mesh.e
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./penetration]
[../]
[./saved_x]
[../]
[./saved_y]
[../]
[./diag_saved_x]
[../]
[./diag_saved_y]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[./tang_force_x]
[../]
[./tang_force_y]
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
save_in = 'saved_x saved_y'
extra_vector_tags = 'ref'
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./inc_slip_x]
type = PenetrationAux
variable = inc_slip_x
execute_on = timestep_end
boundary = 3
paired_boundary = 4
[../]
[./inc_slip_y]
type = PenetrationAux
variable = inc_slip_y
execute_on = timestep_end
boundary = 3
paired_boundary = 4
[../]
[./accum_slip_x]
type = PenetrationAux
variable = accum_slip_x
execute_on = timestep_end
boundary = 3
paired_boundary = 4
[../]
[./accum_slip_y]
type = PenetrationAux
variable = accum_slip_y
execute_on = timestep_end
boundary = 3
paired_boundary = 4
[../]
[./penetration]
type = PenetrationAux
variable = penetration
boundary = 3
paired_boundary = 4
[../]
[./tang_force_x]
type = PenetrationAux
variable = tang_force_x
quantity = tangential_force_x
boundary = 3
paired_boundary = 4
[../]
[./tang_force_y]
type = PenetrationAux
variable = tang_force_y
quantity = tangential_force_y
boundary = 3
paired_boundary = 4
[../]
[]
[Postprocessors]
[./bot_react_x]
type = NodalSum
variable = saved_x
boundary = 1
[../]
[./bot_react_y]
type = NodalSum
variable = saved_y
boundary = 1
[../]
[./top_react_x]
type = NodalSum
variable = saved_x
boundary = 5
[../]
[./top_react_y]
type = NodalSum
variable = saved_y
boundary = 5
[../]
[./ref_resid_x]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_x
[../]
[./ref_resid_y]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_y
[../]
[./sigma_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./sigma_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./disp_x5]
type = NodalVariableValue
nodeid = 4
variable = disp_x
[../]
[./disp_x9]
type = NodalVariableValue
nodeid = 8
variable = disp_x
[../]
[./disp_y5]
type = NodalVariableValue
nodeid = 4
variable = disp_y
[../]
[./disp_y9]
type = NodalVariableValue
nodeid = 8
variable = disp_y
[../]
[./_dt]
type = TimestepSize
[../]
[./num_lin_it]
type = NumLinearIterations
[../]
[./num_nonlin_it]
type = NumNonlinearIterations
[../]
[]
[BCs]
[./bot_y]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[../]
[./side_x]
type = DirichletBC
variable = disp_x
boundary = 2
value = 0.0
[../]
[./top_press]
type = Pressure
variable = disp_y
boundary = 5
factor = 109.89
[../]
[]
[Materials]
[./bot_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./bot_strain]
type = ComputeIncrementalStrain
block = '1'
[../]
[./bot_stress]
type = ComputeFiniteStrainElasticStress
block = '1'
[../]
[./top_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '2'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./top_strain]
type = ComputeIncrementalStrain
block = '2'
[../]
[./top_stress]
type = ComputeFiniteStrainElasticStress
block = '2'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_abs_tol = 1e-8
nl_rel_tol = 1e-7
l_max_its = 100
nl_max_its = 200
dt = 1.0
end_time = 1.0
num_steps = 10
dtmin = 1.0
l_tol = 1e-3
[]
[VectorPostprocessors]
[./x_disp]
type = NodalValueSampler
variable = disp_x
boundary = '1 3 4 5'
sort_by = x
[../]
[./cont_press]
type = NodalValueSampler
variable = contact_pressure
boundary = '3'
sort_by = x
[../]
[]
[Outputs]
file_base = plane2_mu_0_2_pen_out
print_linear_residuals = true
perf_graph = true
[./exodus]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[./chkfile]
type = CSV
file_base = plane2_mu_0_2_pen_check
show = 'bot_react_x bot_react_y disp_x5 disp_y5 disp_x9 disp_y9 sigma_yy sigma_zz top_react_x top_react_y x_disp cont_press'
execute_vector_postprocessors_on = timestep_end
[../]
[./outfile]
type = CSV
delimiter = ' '
execute_vector_postprocessors_on = none
[../]
[]
[Contact]
[./leftright]
secondary = 3
primary = 4
model = coulomb
formulation = penalty
normalize_penalty = true
friction_coefficient = 0.2
penalty = 1e+9
[../]
[]
(modules/solid_mechanics/test/tests/visco/gen_maxwell_relax.i)
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
elem_type = HEX8
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./creep_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
use_displaced_mesh = true
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
variable = stress_xx
rank_two_tensor = stress
index_j = 0
index_i = 0
execute_on = timestep_end
[../]
[./strain_xx]
type = RankTwoAux
variable = strain_xx
rank_two_tensor = total_strain
index_j = 0
index_i = 0
execute_on = timestep_end
[../]
[./creep_strain_xx]
type = RankTwoAux
variable = creep_strain_xx
rank_two_tensor = creep_strain
index_j = 0
index_i = 0
execute_on = timestep_end
[../]
[]
[BCs]
[./symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[../]
[./disp]
type = DirichletBC
variable = disp_x
boundary = right
value = 0.001
[../]
[]
[Materials]
[./maxwell]
type = GeneralizedMaxwellModel
creep_modulus = '3.333333e9 3.333333e9'
creep_viscosity = '1 10'
poisson_ratio = 0.2
young_modulus = 10e9
[../]
[./stress]
type = ComputeMultipleInelasticStress
inelastic_models = 'creep'
[../]
[./creep]
type = LinearViscoelasticStressUpdate
[../]
[./strain]
type = ComputeIncrementalStrain
displacements = 'disp_x disp_y disp_z'
[../]
[]
[UserObjects]
[./update]
type = LinearViscoelasticityManager
viscoelastic_model = maxwell
[../]
[]
[Postprocessors]
[./stress_xx]
type = ElementAverageValue
variable = stress_xx
block = 'ANY_BLOCK_ID 0'
[../]
[./strain_xx]
type = ElementAverageValue
variable = strain_xx
block = 'ANY_BLOCK_ID 0'
[../]
[./creep_strain_xx]
type = ElementAverageValue
variable = creep_strain_xx
block = 'ANY_BLOCK_ID 0'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
l_max_its = 50
l_tol = 1e-8
nl_max_its = 20
nl_rel_tol = 1e-8
nl_abs_tol = 1e-6
dtmin = 0.01
end_time = 100
[./TimeStepper]
type = LogConstantDT
first_dt = 0.1
log_dt = 0.1
[../]
[]
[Outputs]
file_base = gen_maxwell_relax_out
exodus = true
[]
(modules/solid_mechanics/test/tests/central_difference/consistent/3D/3d_consistent_explicit_mass_scaling.i)
# One element test to test the central difference time integrator in 3D.
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 2
xmin = 0.0
xmax = 1
ymin = 0.0
ymax = 1
zmin = 0.0
zmax = 2
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[AuxVariables]
[vel_x]
[]
[accel_x]
[]
[vel_y]
[]
[accel_y]
[]
[vel_z]
[]
[accel_z]
[]
[]
[AuxKernels]
[accel_x]
type = TestNewmarkTI
variable = accel_x
displacement = disp_x
first = false
[]
[vel_x]
type = TestNewmarkTI
variable = vel_x
displacement = disp_x
[]
[accel_y]
type = TestNewmarkTI
variable = accel_y
displacement = disp_y
first = false
[]
[vel_y]
type = TestNewmarkTI
variable = vel_y
displacement = disp_x
[]
[accel_z]
type = TestNewmarkTI
variable = accel_z
displacement = disp_z
first = false
[]
[vel_z]
type = TestNewmarkTI
variable = vel_z
displacement = disp_z
[]
[]
[Kernels]
[DynamicSolidMechanics]
displacements = 'disp_x disp_y disp_z'
[]
[inertia_x]
type = InertialForce
variable = disp_x
[]
[inertia_y]
type = InertialForce
variable = disp_y
[]
[inertia_z]
type = InertialForce
variable = disp_z
[]
[]
[BCs]
[x_bot]
type = FunctionDirichletBC
variable = disp_x
boundary = 'back'
function = dispx
preset = false
[]
[y_bot]
type = FunctionDirichletBC
variable = disp_y
boundary = 'back'
function = dispy
preset = false
[]
[z_bot]
type = FunctionDirichletBC
variable = disp_z
boundary = 'back'
function = dispz
preset = false
[]
[Periodic]
[x_dir]
variable = 'disp_x disp_y disp_z'
primary = 'left'
secondary = 'right'
translation = '1.0 0.0 0.0'
[]
[y_dir]
variable = 'disp_x disp_y disp_z'
primary = 'bottom'
secondary = 'top'
translation = '0.0 1.0 0.0'
[]
[]
[]
[Functions]
[dispx]
type = PiecewiseLinear
x = '0.0 1.0 2.0 3.0 4.0' # time
y = '0.0 1.0 0.0 -1.0 0.0' # displacement
[]
[dispy]
type = ParsedFunction
expression = 0.1*t*t*sin(10*t)
[]
[dispz]
type = ParsedFunction
expression = 0.1*t*t*sin(20*t)
[]
[]
[Materials]
[elasticity_tensor_block]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.25
block = 0
[]
[strain_block]
type = ComputeIncrementalStrain
block = 0
displacements = 'disp_x disp_y disp_z'
implicit = false
[]
[stress_block]
type = ComputeFiniteStrainElasticStress
block = 0
[]
[density]
type = GenericConstantMaterial
block = 0
prop_names = density
prop_values = 1e4
[]
[density_scaling]
type = DensityScaling
block = 0
true_density = density
desired_time_step = 0.06
scaled_density = density_scaled
additional_density = density_scaling
output_properties = density_scaling
outputs = 'exodus'
safety_factor = 0.5
[]
[]
[Executioner]
type = Transient
start_time = -0.01
end_time = 0.1
dt = 0.005
timestep_tolerance = 1e-6
[TimeIntegrator]
type = CentralDifference
use_constant_mass = false
solve_type = lumped
[]
[TimeStepper]
type = PostprocessorDT
postprocessor = time_step
[]
[]
[Postprocessors]
[accel_6x]
type = NodalVariableValue
nodeid = 6
variable = accel_x
[]
[time_step]
type = CriticalTimeStep
factor = 0.5
density = density
density_scaling = density_scaling
execute_on = 'INITIAL TIMESTEP_END'
[]
[]
[Outputs]
exodus = true
csv = true
[]
(modules/solid_mechanics/test/tests/central_difference/lumped/2D/2d_lumped_explicit.i)
# Tests for the central difference time integrator for 2D elements
[Mesh]
[./generated_mesh]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 1
ymin = 0
ymax = 2
nx = 1
ny = 2
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./accel_x]
[../]
[./vel_x]
[../]
[./accel_y]
[../]
[./vel_y]
[../]
[]
[AuxKernels]
[./accel_x]
type = TestNewmarkTI
variable = accel_x
displacement = disp_x
first = false
[../]
[./vel_x]
type = TestNewmarkTI
variable = vel_x
displacement = disp_x
[../]
[./accel_y]
type = TestNewmarkTI
variable = accel_y
displacement = disp_y
first = false
[../]
[./vel_y]
type = TestNewmarkTI
variable = vel_y
displacement = disp_y
[../]
[]
[Kernels]
[./DynamicSolidMechanics]
displacements = 'disp_x disp_y'
[../]
[./inertia_x]
type = InertialForce
variable = disp_x
[../]
[./inertia_y]
type = InertialForce
variable = disp_y
[../]
[]
[BCs]
[./y_bot]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./x_bot]
type = FunctionDirichletBC
boundary = bottom
variable = disp_x
function = disp
preset = false
[../]
[]
[Functions]
[./disp]
type = PiecewiseLinear
x = '0.0 1.0 2.0 3.0 4.0' # time
y = '0.0 1.0 0.0 -1.0 0.0' # displacement
[../]
[]
[Materials]
[./elasticity_tensor_block]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.25
block = 0
[../]
[./strain_block]
type = ComputeIncrementalStrain
block = 0
displacements = 'disp_x disp_y'
implicit = false
[../]
[./stress_block]
type = ComputeFiniteStrainElasticStress
block = 0
[../]
[./density]
type = GenericConstantMaterial
block = 0
prop_names = density
prop_values = 1e4
[../]
[]
[Executioner]
type = Transient
start_time = 0
end_time = 0.1
dt = 0.005
timestep_tolerance = 1e-6
[./TimeIntegrator]
type = CentralDifference
solve_type = lumped
[../]
[]
[Postprocessors]
[./accel_2x]
type = PointValue
point = '1.0 2.0 0.0'
variable = accel_x
[../]
[]
[Outputs]
exodus = false
csv = true
[]
(modules/solid_mechanics/test/tests/central_difference/lumped/1D/1d_lumped_explicit.i)
# Test for central difference integration for a 1D element
[Mesh]
[./generated_mesh]
type = GeneratedMeshGenerator
xmin = 0
xmax = 10
nx = 5
dim = 1
[../]
[]
[Variables]
[./disp_x]
[../]
[]
[AuxVariables]
[./accel_x]
[../]
[./vel_x]
[../]
[]
[AuxKernels]
[./accel_x]
type = TestNewmarkTI
variable = accel_x
displacement = disp_x
first = false
[../]
[./vel_x]
type = TestNewmarkTI
variable = vel_x
displacement = disp_x
[../]
[]
[Kernels]
[./DynamicSolidMechanics]
displacements = 'disp_x'
[../]
[./inertia_x]
type = InertialForce
variable = disp_x
[../]
[]
[NodalKernels]
[./force_x]
type = UserForcingFunctorNodalKernel
variable = disp_x
boundary = right
functor = force_x
[../]
[]
[Functions]
[./force_x]
type = PiecewiseLinear
x = '0.0 1.0 2.0 3.0 4.0' # time
y = '0.0 1.0 0.0 -1.0 0.0' # force
scale_factor = 1e3
[../]
[]
[BCs]
[./fixx1]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor_block]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.25
block = 0
[../]
[./strain_block]
type = ComputeIncrementalStrain
block = 0
displacements = 'disp_x'
implicit = false
[../]
[./stress_block]
type = ComputeFiniteStrainElasticStress
block = 0
[../]
[./density]
type = GenericConstantMaterial
block = 0
prop_names = density
prop_values = 2500
[../]
[]
[Executioner]
type = Transient
start_time = -0.01
end_time = 0.1
timestep_tolerance = 2e-10
dt = 0.005
[./TimeIntegrator]
type = CentralDifference
solve_type = lumped
[../]
[]
[Postprocessors]
[./accel_x]
type = PointValue
point = '10.0 0.0 0.0'
variable = accel_x
[../]
[]
[Outputs]
exodus = false
csv = true
[]
(modules/solid_mechanics/test/tests/visco/gen_kv_creep.i)
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
elem_type = HEX8
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./creep_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
use_displaced_mesh = true
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
variable = stress_xx
rank_two_tensor = stress
index_j = 0
index_i = 0
execute_on = timestep_end
[../]
[./strain_xx]
type = RankTwoAux
variable = strain_xx
rank_two_tensor = total_strain
index_j = 0
index_i = 0
execute_on = timestep_end
[../]
[./creep_strain_xx]
type = RankTwoAux
variable = creep_strain_xx
rank_two_tensor = creep_strain
index_j = 0
index_i = 0
execute_on = timestep_end
[../]
[]
[BCs]
[./symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[../]
[./axial_load]
type = NeumannBC
variable = disp_x
boundary = right
value = 10e6
[../]
[]
[Materials]
[./kelvin_voigt]
type = GeneralizedKelvinVoigtModel
creep_modulus = '10e9 10e9'
creep_viscosity = '1 10'
poisson_ratio = 0.2
young_modulus = 10e9
[../]
[./stress]
type = ComputeMultipleInelasticStress
inelastic_models = 'creep'
[../]
[./creep]
type = LinearViscoelasticStressUpdate
[../]
[./strain]
type = ComputeIncrementalStrain
displacements = 'disp_x disp_y disp_z'
[../]
[]
[UserObjects]
[./update]
type = LinearViscoelasticityManager
viscoelastic_model = kelvin_voigt
[../]
[]
[Postprocessors]
[./stress_xx]
type = ElementAverageValue
variable = stress_xx
block = 'ANY_BLOCK_ID 0'
[../]
[./strain_xx]
type = ElementAverageValue
variable = strain_xx
block = 'ANY_BLOCK_ID 0'
[../]
[./creep_strain_xx]
type = ElementAverageValue
variable = creep_strain_xx
block = 'ANY_BLOCK_ID 0'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
l_max_its = 100
l_tol = 1e-8
nl_max_its = 50
nl_rel_tol = 1e-8
nl_abs_tol = 1e-8
dtmin = 0.01
end_time = 100
[./TimeStepper]
type = LogConstantDT
first_dt = 0.1
log_dt = 0.1
[../]
[]
[Outputs]
file_base = gen_kv_creep_out
exodus = true
[]
(modules/combined/test/tests/DiffuseCreep/stress_based_chem_pot.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 50
ny = 2
xmin = 0
xmax = 10
ymin = 0
ymax = 2
[]
[Variables]
[./c]
[./InitialCondition]
type = FunctionIC
function = 'x0:=5.0;thk:=0.5;m:=2;r:=abs(x-x0);v:=exp(-(r/thk)^m);0.1+0.1*v'
[../]
[../]
[./mu]
[../]
[./jx]
[../]
[./jy]
[../]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./gb]
family = LAGRANGE
order = FIRST
[../]
[./creep_strain_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xy]
family = MONOMIAL
order = CONSTANT
[../]
[./mu_prop]
family = MONOMIAL
order = CONSTANT
[../]
[./mech_prop]
family = MONOMIAL
order = CONSTANT
[../]
[./total_potential]
family = MONOMIAL
order = CONSTANT
[../]
[]
[Kernels]
[./conc]
type = CHSplitConcentration
variable = c
mobility = mobility_prop
chemical_potential_var = mu
[../]
[./chempot]
type = CHSplitChemicalPotential
variable = mu
chemical_potential_prop = total_potential
c = c
[../]
[./flux_x]
type = CHSplitFlux
variable = jx
component = 0
mobility_name = mobility_prop
mu = mu
c = c
[../]
[./flux_y]
type = CHSplitFlux
variable = jy
component = 1
mobility_name = mobility_prop
mu = mu
c = c
[../]
[./time]
type = TimeDerivative
variable = c
[../]
[./TensorMechanics]
displacements = 'disp_x disp_y'
[../]
[]
[AuxKernels]
[./gb]
type = FunctionAux
variable = gb
function = 'x0:=5.0;thk:=0.5;m:=2;r:=abs(x-x0);v:=exp(-(r/thk)^m);v'
[../]
[./creep_strain_xx]
type = RankTwoAux
variable = creep_strain_xx
rank_two_tensor = creep_strain
index_i = 0
index_j = 0
[../]
[./stress_xx]
type = RankTwoAux
variable = stress_xx
rank_two_tensor = stress
index_i = 0
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
variable = stress_yy
rank_two_tensor = stress
index_i = 1
index_j = 1
[../]
[./stress_xy]
type = RankTwoAux
variable = stress_xy
rank_two_tensor = stress
index_i = 0
index_j = 1
[../]
[./mu_prop]
type = MaterialRealAux
property = mu_prop
variable = mu_prop
[../]
[./mech_prop]
type = MaterialRealAux
property = mech_prop
variable = mech_prop
[../]
[./total_potential]
type = MaterialRealAux
property = total_potential
variable = total_potential
[../]
[]
[Materials]
[./chemical_potential]
type = DerivativeParsedMaterial
block = 0
property_name = mu_prop
coupled_variables = c
expression = 'c'
derivative_order = 1
[../]
[./mechanical_potential]
type = StressBasedChemicalPotential
property_name = mech_prop
stress_name = stress
direction_tensor_name = aniso_tensor
prefactor_name = 1.0
[../]
[./total_potential]
type = DerivativeSumMaterial
block = 0
property_name = total_potential
sum_materials = 'mu_prop mech_prop'
coupled_variables = 'c'
derivative_order = 2
[../]
[./var_dependence]
type = DerivativeParsedMaterial
block = 0
expression = 'c*(1.0-c)'
coupled_variables = c
property_name = var_dep
derivative_order = 1
[../]
[./mobility]
type = CompositeMobilityTensor
block = 0
M_name = mobility_prop
tensors = diffusivity
weights = var_dep
coupled_variables = c
[../]
[./phase_normal]
type = PhaseNormalTensor
phase = gb
normal_tensor_name = gb_normal
[../]
[./aniso_tensor]
type = GBDependentAnisotropicTensor
gb = gb
bulk_parameter = 0.1
gb_parameter = 1
gb_normal_tensor_name = gb_normal
gb_tensor_prop_name = aniso_tensor
[../]
[./diffusivity]
type = GBDependentDiffusivity
gb = gb
bulk_parameter = 0.1
gb_parameter = 1
gb_normal_tensor_name = gb_normal
gb_tensor_prop_name = diffusivity
[../]
[./diffuse_strain_increment]
type = FluxBasedStrainIncrement
xflux = jx
yflux = jy
gb = gb
property_name = diffuse
[../]
[./diffuse_creep_strain]
type = SumTensorIncrements
tensor_name = creep_strain
coupled_tensor_increment_names = diffuse
[../]
[./strain]
type = ComputeIncrementalStrain
displacements = 'disp_x disp_y'
[../]
[./stress]
type = ComputeStrainIncrementBasedStress
inelastic_strain_names = creep_strain
[../]
[./elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '120.0 80.0'
fill_method = symmetric_isotropic
[../]
[]
[BCs]
[./Periodic]
[./cbc]
auto_direction = 'x y'
variable = c
[../]
[../]
[./fix_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./fix_y]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
petsc_options_iname = '-pc_type -ksp_grmres_restart -sub_ksp_type -sub_pc_type -pc_asm_overlap'
petsc_options_value = 'asm 31 preonly lu 1'
nl_rel_tol = 1e-10
nl_max_its = 5
l_tol = 1e-4
l_max_its = 20
dt = 1
num_steps = 5
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Outputs]
exodus = true
[]
(modules/contact/test/tests/verification/patch_tests/plane_1/plane1_mu_0_2_pen.i)
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Mesh]
file = plane1_mesh.e
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./penetration]
[../]
[./saved_x]
[../]
[./saved_y]
[../]
[./diag_saved_x]
[../]
[./diag_saved_y]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[./tang_force_x]
[../]
[./tang_force_y]
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
save_in = 'saved_x saved_y'
extra_vector_tags = 'ref'
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./inc_slip_x]
type = PenetrationAux
variable = inc_slip_x
execute_on = timestep_end
boundary = 3
paired_boundary = 4
[../]
[./inc_slip_y]
type = PenetrationAux
variable = inc_slip_y
execute_on = timestep_end
boundary = 3
paired_boundary = 4
[../]
[./accum_slip_x]
type = PenetrationAux
variable = accum_slip_x
execute_on = timestep_end
boundary = 3
paired_boundary = 4
[../]
[./accum_slip_y]
type = PenetrationAux
variable = accum_slip_y
execute_on = timestep_end
boundary = 3
paired_boundary = 4
[../]
[./penetration]
type = PenetrationAux
variable = penetration
boundary = 3
paired_boundary = 4
[../]
[./tang_force_x]
type = PenetrationAux
variable = tang_force_x
quantity = tangential_force_x
boundary = 3
paired_boundary = 4
[../]
[./tang_force_y]
type = PenetrationAux
variable = tang_force_y
quantity = tangential_force_y
boundary = 3
paired_boundary = 4
[../]
[]
[Postprocessors]
[./bot_react_x]
type = NodalSum
variable = saved_x
boundary = 1
[../]
[./bot_react_y]
type = NodalSum
variable = saved_y
boundary = 1
[../]
[./top_react_x]
type = NodalSum
variable = saved_x
boundary = 5
[../]
[./top_react_y]
type = NodalSum
variable = saved_y
boundary = 5
[../]
[./ref_resid_x]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_x
[../]
[./ref_resid_y]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_y
[../]
[./sigma_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./sigma_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./disp_x2]
type = NodalVariableValue
nodeid = 1
variable = disp_x
[../]
[./disp_x7]
type = NodalVariableValue
nodeid = 6
variable = disp_x
[../]
[./disp_y2]
type = NodalVariableValue
nodeid = 1
variable = disp_y
[../]
[./disp_y7]
type = NodalVariableValue
nodeid = 6
variable = disp_y
[../]
[./_dt]
type = TimestepSize
[../]
[./num_lin_it]
type = NumLinearIterations
[../]
[./num_nonlin_it]
type = NumNonlinearIterations
[../]
[]
[BCs]
[./bot_y]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[../]
[./side_x]
type = DirichletBC
variable = disp_x
boundary = 2
value = 0.0
[../]
[./top_press]
type = Pressure
variable = disp_y
boundary = 5
factor = 109.89
[../]
[]
[Materials]
[./bot_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./bot_strain]
type = ComputeIncrementalStrain
block = '1'
[../]
[./bot_stress]
type = ComputeFiniteStrainElasticStress
block = '1'
[../]
[./top_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '2'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./top_strain]
type = ComputeIncrementalStrain
block = '2'
[../]
[./top_stress]
type = ComputeFiniteStrainElasticStress
block = '2'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_abs_tol = 1e-9
nl_rel_tol = 1e-8
l_max_its = 50
nl_max_its = 100
dt = 1.0
end_time = 1.0
num_steps = 10
dtmin = 1.0
l_tol = 1e-3
[]
[VectorPostprocessors]
[./x_disp]
type = NodalValueSampler
variable = disp_x
boundary = '1 3 4 5'
sort_by = x
[../]
[./cont_press]
type = NodalValueSampler
variable = contact_pressure
boundary = '3'
sort_by = x
[../]
[]
[Outputs]
file_base = plane1_mu_0_2_pen_out
print_linear_residuals = true
perf_graph = true
[./exodus]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[./chkfile]
type = CSV
file_base = plane1_mu_0_2_pen_check
show = 'bot_react_x bot_react_y disp_x2 disp_y2 disp_x7 disp_y7 sigma_yy sigma_zz top_react_x top_react_y x_disp cont_press'
execute_vector_postprocessors_on = timestep_end
[../]
[./outfile]
type = CSV
delimiter = ' '
execute_vector_postprocessors_on = none
[../]
[]
[Contact]
[./leftright]
secondary = 3
primary = 4
model = coulomb
formulation = penalty
normalize_penalty = true
friction_coefficient = 0.2
penalty = 1e+9
[../]
[]
(modules/contact/test/tests/verification/patch_tests/plane_2/plane2_template1.i)
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Mesh]
file = plane2_mesh.e
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./penetration]
[../]
[./saved_x]
[../]
[./saved_y]
[../]
[./diag_saved_x]
[../]
[./diag_saved_y]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
save_in = 'saved_x saved_y'
extra_vector_tags = 'ref'
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./zeroslip_x]
type = ConstantAux
variable = inc_slip_x
boundary = 4
execute_on = timestep_begin
value = 0.0
[../]
[./zeroslip_y]
type = ConstantAux
variable = inc_slip_y
boundary = 4
execute_on = timestep_begin
value = 0.0
[../]
[./accum_slip_x]
type = AccumulateAux
variable = accum_slip_x
accumulate_from_variable = inc_slip_x
execute_on = timestep_end
[../]
[./accum_slip_y]
type = AccumulateAux
variable = accum_slip_y
accumulate_from_variable = inc_slip_y
execute_on = timestep_end
[../]
[./penetration]
type = PenetrationAux
variable = penetration
boundary = 4
paired_boundary = 3
[../]
[]
[Postprocessors]
[./bot_react_x]
type = NodalSum
variable = saved_x
boundary = 1
[../]
[./bot_react_y]
type = NodalSum
variable = saved_y
boundary = 1
[../]
[./top_react_x]
type = NodalSum
variable = saved_x
boundary = 5
[../]
[./top_react_y]
type = NodalSum
variable = saved_y
boundary = 5
[../]
[./ref_resid_x]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_x
[../]
[./ref_resid_y]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_y
[../]
[./sigma_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./sigma_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./disp_x5]
type = NodalVariableValue
nodeid = 4
variable = disp_x
[../]
[./disp_x9]
type = NodalVariableValue
nodeid = 8
variable = disp_x
[../]
[./disp_y5]
type = NodalVariableValue
nodeid = 4
variable = disp_y
[../]
[./disp_y9]
type = NodalVariableValue
nodeid = 8
variable = disp_y
[../]
[./_dt]
type = TimestepSize
[../]
[./num_lin_it]
type = NumLinearIterations
[../]
[./num_nonlin_it]
type = NumNonlinearIterations
[../]
[]
[BCs]
[./bot_y]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[../]
[./side_x]
type = DirichletBC
variable = disp_x
boundary = 2
value = 0.0
[../]
[./top_press]
type = Pressure
variable = disp_y
boundary = 5
factor = 109.89
[../]
[]
[Materials]
[./bot_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./bot_strain]
type = ComputeIncrementalStrain
block = '1'
[../]
[./bot_stress]
type = ComputeFiniteStrainElasticStress
block = '1'
[../]
[./top_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '2'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./top_strain]
type = ComputeIncrementalStrain
block = '2'
[../]
[./top_stress]
type = ComputeFiniteStrainElasticStress
block = '2'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_abs_tol = 1e-8
nl_rel_tol = 1e-7
l_max_its = 100
nl_max_its = 200
dt = 1.0
end_time = 1.0
num_steps = 10
dtmin = 1.0
l_tol = 1e-3
[]
[VectorPostprocessors]
[./x_disp]
type = NodalValueSampler
variable = disp_x
boundary = '1 3 4 5'
sort_by = x
[../]
[./cont_press]
type = NodalValueSampler
variable = contact_pressure
boundary = '3'
sort_by = x
[../]
[]
[Outputs]
print_linear_residuals = true
perf_graph = true
[./exodus]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[./chkfile]
type = CSV
show = 'bot_react_x bot_react_y disp_x5 disp_y5 disp_x9 disp_y9 sigma_yy sigma_zz top_react_x top_react_y x_disp cont_press'
execute_vector_postprocessors_on = timestep_end
[../]
[./outfile]
type = CSV
delimiter = ' '
execute_vector_postprocessors_on = none
[../]
[]
[Contact]
[./leftright]
secondary = 3
primary = 4
normalize_penalty = true
tangential_tolerance = 1e-3
penalty = 1e+9
[../]
[]
(modules/combined/test/tests/DiffuseCreep/stress.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 50
ny = 2
xmin = 0
xmax = 10
ymin = 0
ymax = 2
[]
[Variables]
[./c]
[./InitialCondition]
type = FunctionIC
function = 'x0:=5.0;thk:=0.5;m:=2;r:=abs(x-x0);v:=exp(-(r/thk)^m);0.1+0.1*v'
[../]
[../]
[./mu]
[../]
[./jx]
[../]
[./jy]
[../]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./gb]
family = LAGRANGE
order = FIRST
[../]
[./creep_strain_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./creep_strain_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./creep_strain_xy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xy]
family = MONOMIAL
order = CONSTANT
[../]
[]
[Kernels]
[./conc]
type = CHSplitConcentration
variable = c
mobility = mobility_prop
chemical_potential_var = mu
[../]
[./chempot]
type = CHSplitChemicalPotential
variable = mu
chemical_potential_prop = mu_prop
c = c
[../]
[./flux_x]
type = CHSplitFlux
variable = jx
component = 0
mobility_name = mobility_prop
mu = mu
c = c
[../]
[./flux_y]
type = CHSplitFlux
variable = jy
component = 1
mobility_name = mobility_prop
mu = mu
c = c
[../]
[./time]
type = TimeDerivative
variable = c
[../]
[./TensorMechanics]
displacements = 'disp_x disp_y'
[../]
[]
[AuxKernels]
[./gb]
type = FunctionAux
variable = gb
function = 'x0:=5.0;thk:=0.5;m:=2;r:=abs(x-x0);v:=exp(-(r/thk)^m);v'
[../]
[./creep_strain_xx]
type = RankTwoAux
variable = creep_strain_xx
rank_two_tensor = creep_strain
index_i = 0
index_j = 0
[../]
[./creep_strain_yy]
type = RankTwoAux
variable = creep_strain_yy
rank_two_tensor = creep_strain
index_i = 1
index_j = 1
[../]
[./creep_strain_xy]
type = RankTwoAux
variable = creep_strain_xy
rank_two_tensor = creep_strain
index_i = 0
index_j = 1
[../]
[./stress_xx]
type = RankTwoAux
variable = stress_xx
rank_two_tensor = stress
index_i = 0
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
variable = stress_yy
rank_two_tensor = stress
index_i = 1
index_j = 1
[../]
[./stress_xy]
type = RankTwoAux
variable = stress_xy
rank_two_tensor = stress
index_i = 0
index_j = 1
[../]
[]
[Materials]
[./chemical_potential]
type = DerivativeParsedMaterial
block = 0
property_name = mu_prop
coupled_variables = c
expression = 'c'
derivative_order = 1
[../]
[./var_dependence]
type = DerivativeParsedMaterial
block = 0
expression = 'c*(1.0-c)'
coupled_variables = c
property_name = var_dep
derivative_order = 1
[../]
[./mobility]
type = CompositeMobilityTensor
block = 0
M_name = mobility_prop
tensors = diffusivity
weights = var_dep
coupled_variables = c
[../]
[./phase_normal]
type = PhaseNormalTensor
phase = gb
normal_tensor_name = gb_normal
[../]
[./aniso_tensor]
type = GBDependentAnisotropicTensor
gb = gb
bulk_parameter = 0.1
gb_parameter = 1
gb_normal_tensor_name = gb_normal
gb_tensor_prop_name = aniso_tensor
[../]
[./diffusivity]
type = GBDependentDiffusivity
gb = gb
bulk_parameter = 0.1
gb_parameter = 1
gb_normal_tensor_name = gb_normal
gb_tensor_prop_name = diffusivity
[../]
[./diffuse_strain_increment]
type = FluxBasedStrainIncrement
xflux = jx
yflux = jy
gb = gb
property_name = diffuse
[../]
[./diffuse_creep_strain]
type = SumTensorIncrements
tensor_name = creep_strain
coupled_tensor_increment_names = diffuse
[../]
[./strain]
type = ComputeIncrementalStrain
displacements = 'disp_x disp_y'
[../]
[./stress]
type = ComputeStrainIncrementBasedStress
inelastic_strain_names = creep_strain
[../]
[./elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '120.0 80.0'
fill_method = symmetric_isotropic
[../]
[]
[BCs]
[./Periodic]
[./cbc]
auto_direction = 'x y'
variable = c
[../]
[../]
[./fix_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./fix_y]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
petsc_options_iname = '-pc_type -ksp_grmres_restart -sub_ksp_type -sub_pc_type -pc_asm_overlap'
petsc_options_value = 'asm 31 preonly lu 1'
nl_rel_tol = 1e-10
nl_max_its = 5
l_tol = 1e-4
l_max_its = 20
dt = 1
num_steps = 5
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Outputs]
exodus = true
[]
(modules/contact/test/tests/verification/patch_tests/plane_1/plane1_template2.i)
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Mesh]
file = plane1_mesh.e
[]
[Problem]
type = AugmentedLagrangianContactProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
maximum_lagrangian_update_iterations = 200
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./penetration]
[../]
[./saved_x]
[../]
[./saved_y]
[../]
[./diag_saved_x]
[../]
[./diag_saved_y]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
save_in = 'saved_x saved_y'
extra_vector_tags = 'ref'
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./zeroslip_x]
type = ConstantAux
variable = inc_slip_x
boundary = 4
execute_on = timestep_begin
value = 0.0
[../]
[./zeroslip_y]
type = ConstantAux
variable = inc_slip_y
boundary = 4
execute_on = timestep_begin
value = 0.0
[../]
[./accum_slip_x]
type = AccumulateAux
variable = accum_slip_x
accumulate_from_variable = inc_slip_x
execute_on = timestep_end
[../]
[./accum_slip_y]
type = AccumulateAux
variable = accum_slip_y
accumulate_from_variable = inc_slip_y
execute_on = timestep_end
[../]
[./penetration]
type = PenetrationAux
variable = penetration
boundary = 4
paired_boundary = 3
[../]
[]
[Postprocessors]
[./bot_react_x]
type = NodalSum
variable = saved_x
boundary = 1
[../]
[./bot_react_y]
type = NodalSum
variable = saved_y
boundary = 1
[../]
[./top_react_x]
type = NodalSum
variable = saved_x
boundary = 5
[../]
[./top_react_y]
type = NodalSum
variable = saved_y
boundary = 5
[../]
[./ref_resid_x]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_x
[../]
[./ref_resid_y]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_y
[../]
[./sigma_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./sigma_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./disp_x2]
type = NodalVariableValue
nodeid = 1
variable = disp_x
[../]
[./disp_x7]
type = NodalVariableValue
nodeid = 6
variable = disp_x
[../]
[./disp_y2]
type = NodalVariableValue
nodeid = 1
variable = disp_y
[../]
[./disp_y7]
type = NodalVariableValue
nodeid = 6
variable = disp_y
[../]
[./_dt]
type = TimestepSize
[../]
[./num_lin_it]
type = NumLinearIterations
[../]
[./num_nonlin_it]
type = NumNonlinearIterations
[../]
[]
[BCs]
[./bot_y]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[../]
[./side_x]
type = DirichletBC
variable = disp_x
boundary = 2
value = 0.0
[../]
[./top_press]
type = Pressure
variable = disp_y
boundary = 5
factor = 109.89
[../]
[]
[Materials]
[./bot_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./bot_strain]
type = ComputeIncrementalStrain
block = '1'
[../]
[./bot_stress]
type = ComputeFiniteStrainElasticStress
block = '1'
[../]
[./top_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '2'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./top_strain]
type = ComputeIncrementalStrain
block = '2'
[../]
[./top_stress]
type = ComputeFiniteStrainElasticStress
block = '2'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-9
l_max_its = 50
nl_max_its = 100
dt = 1.0
end_time = 1.0
num_steps = 10
dtmin = 1.0
l_tol = 1e-3
[]
[VectorPostprocessors]
[./x_disp]
type = NodalValueSampler
variable = disp_x
boundary = '1 3 4 5'
sort_by = x
[../]
[./cont_press]
type = NodalValueSampler
variable = contact_pressure
boundary = '3'
sort_by = x
[../]
[]
[Outputs]
print_linear_residuals = true
perf_graph = true
[./exodus]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[./chkfile]
type = CSV
show = 'bot_react_x bot_react_y disp_x2 disp_y2 disp_x7 disp_y7 sigma_yy sigma_zz top_react_x top_react_y x_disp cont_press'
execute_vector_postprocessors_on = timestep_end
[../]
[./outfile]
type = CSV
delimiter = ' '
execute_vector_postprocessors_on = none
[../]
[]
[Contact]
[./leftright]
secondary = 3
primary = 4
normalize_penalty = true
tangential_tolerance = 1e-3
penalty = 1e+9
al_penetration_tolerance = 1e-8
[../]
[]
(modules/solid_mechanics/test/tests/jacobian/cto28.i)
#Cosserat capped weak plane and capped drucker prager
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[./cx_elastic]
type = StressDivergenceTensors
variable = disp_x
component = 0
[../]
[./cy_elastic]
type = StressDivergenceTensors
variable = disp_y
component = 1
[../]
[./cz_elastic]
type = StressDivergenceTensors
variable = disp_z
component = 2
[../]
[]
[UserObjects]
[./ts]
type = SolidMechanicsHardeningConstant
value = 10
[../]
[./cs]
type = SolidMechanicsHardeningConstant
value = 10
[../]
[./mc_coh]
type = SolidMechanicsHardeningConstant
value = 10
[../]
[./phi]
type = SolidMechanicsHardeningConstant
value = 0.8
[../]
[./psi]
type = SolidMechanicsHardeningConstant
value = 0.4
[../]
[./dp]
type = SolidMechanicsPlasticDruckerPragerHyperbolic
mc_cohesion = mc_coh
mc_friction_angle = phi
mc_dilation_angle = psi
yield_function_tolerance = 1E-11 # irrelevant here
internal_constraint_tolerance = 1E-9 # irrelevant here
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 10.0
poissons_ratio = 0.25
[../]
[./strain]
type = ComputeIncrementalStrain
eigenstrain_names = ini_stress
[../]
[./ini_stress]
type = ComputeEigenstrainFromInitialStress
initial_stress = '10 0 0 0 10 0 0 0 10'
eigenstrain_name = ini_stress
[../]
[./admissible]
type = ComputeMultipleInelasticStress
inelastic_models = 'dp'
relative_tolerance = 2.0
absolute_tolerance = 1E6
max_iterations = 1
[../]
[./dp]
type = CappedDruckerPragerStressUpdate
base_name = dp
DP_model = dp
tensile_strength = ts
compressive_strength = cs
yield_function_tol = 1E-11
tip_smoother = 1
smoothing_tol = 1
[../]
[]
[Preconditioning]
[./andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_atol -snes_rtol -snes_max_it -snes_type'
petsc_options_value = 'bcgs bjacobi 1E-15 1E-10 10000 test'
[../]
[]
[Executioner]
solve_type = 'NEWTON'
end_time = 1
dt = 1
type = Transient
[]
(modules/solid_mechanics/test/tests/visco/gen_kv_driving.i)
# Represents a unique Maxwell module with E = 10GPa and eta = 10 days with an imposed eigenstrain alpha = 0.001.
# The behavior is set up so that the creep strain is driven by both the elastic stress and the internal
# stress induced by the eigenstrain (E * alpha).
#
# In this test, the specimen is free of external stress (sigma = 0) so the creep deformation only derives from
# the eigenstrain. The total strain to be expected is:
# epsilon = alpha * (1 + t / eta)
# Both the stress and the elastic strain are 0.
#
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
elem_type = HEX8
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./creep_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
use_displaced_mesh = true
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
variable = stress_xx
rank_two_tensor = stress
index_j = 0
index_i = 0
execute_on = timestep_end
[../]
[./strain_xx]
type = RankTwoAux
variable = strain_xx
rank_two_tensor = total_strain
index_j = 0
index_i = 0
execute_on = timestep_end
[../]
[./creep_strain_xx]
type = RankTwoAux
variable = creep_strain_xx
rank_two_tensor = creep_strain
index_j = 0
index_i = 0
execute_on = timestep_end
[../]
[]
[BCs]
[./symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[../]
[]
[Materials]
[./eigen]
type = ComputeEigenstrain
eigenstrain_name = eigen_true
eigen_base = '1e-3 1e-3 1e-3 0 0 0'
[../]
[./kelvin_voigt]
type = GeneralizedKelvinVoigtModel
creep_modulus = ''
creep_viscosity = '10'
poisson_ratio = 0.2
young_modulus = 10e9
driving_eigenstrain = eigen_true
[../]
[./stress]
type = ComputeMultipleInelasticStress
inelastic_models = 'creep'
[../]
[./creep]
type = LinearViscoelasticStressUpdate
[../]
[./strain]
type = ComputeIncrementalStrain
displacements = 'disp_x disp_y disp_z'
eigenstrain_names = 'eigen_true'
[../]
[]
[UserObjects]
[./update]
type = LinearViscoelasticityManager
viscoelastic_model = kelvin_voigt
[../]
[]
[Postprocessors]
[./stress_xx]
type = ElementAverageValue
variable = stress_xx
block = 'ANY_BLOCK_ID 0'
[../]
[./strain_xx]
type = ElementAverageValue
variable = strain_xx
block = 'ANY_BLOCK_ID 0'
[../]
[./creep_strain_xx]
type = ElementAverageValue
variable = creep_strain_xx
block = 'ANY_BLOCK_ID 0'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
l_max_its = 50
l_tol = 1e-8
nl_max_its = 20
nl_rel_tol = 1e-11
nl_abs_tol = 1e-8
dtmin = 0.01
end_time = 100
[./TimeStepper]
type = LogConstantDT
first_dt = 0.1
log_dt = 0.1
[../]
[]
[Outputs]
file_base = gen_kv_driving_out
exodus = true
[]
(modules/porous_flow/test/tests/jacobian/phe01.i)
# Capped weak-plane plasticity, Kernel = PorousFlowPlasticHeatEnergy
[Mesh]
type = GeneratedMesh
dim = 3
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
PorousFlowDictator = dictator
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[temperature]
[]
[]
[ICs]
[disp_x]
type = RandomIC
variable = disp_x
min = -0.1
max = 0.1
[]
[disp_y]
type = RandomIC
variable = disp_y
min = -0.1
max = 0.1
[]
[disp_z]
type = RandomIC
variable = disp_z
min = -0.1
max = 0.1
[]
[temp]
type = RandomIC
variable = temperature
min = 0.1
max = 0.2
[]
[]
[Kernels]
[phe]
type = PorousFlowPlasticHeatEnergy
variable = temperature
[]
[dummy_disp_x]
type = PorousFlowPlasticHeatEnergy
coeff = -1.3
variable = disp_x
[]
[dummy_disp_y]
type = PorousFlowPlasticHeatEnergy
coeff = 1.1
variable = disp_y
[]
[dummy_disp_z]
type = PorousFlowPlasticHeatEnergy
coeff = 0.2
variable = disp_z
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = 'temperature disp_x disp_y disp_z'
number_fluid_phases = 0
number_fluid_components = 0
[]
[coh]
type = TensorMechanicsHardeningExponential
value_0 = 1
value_residual = 2
rate = 1
[]
[tanphi]
type = TensorMechanicsHardeningExponential
value_0 = 1.0
value_residual = 0.5
rate = 2
[]
[tanpsi]
type = TensorMechanicsHardeningExponential
value_0 = 0.1
value_residual = 0.05
rate = 3
[]
[t_strength]
type = TensorMechanicsHardeningExponential
value_0 = 100
value_residual = 100
rate = 1
[]
[c_strength]
type = TensorMechanicsHardeningCubic
value_0 = 1
value_residual = 0
internal_0 = -2
internal_limit = 0
[]
[]
[Materials]
[temp]
type = PorousFlowTemperature
temperature = temperature
[]
[porosity]
type = PorousFlowPorosity
thermal = true
mechanical = true
porosity_zero = 0.3
thermal_expansion_coeff = 1.3
[]
[volstrain]
type = PorousFlowVolumetricStrain
[]
[phe]
type = ComputePlasticHeatEnergy
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
lambda = 1.0
shear_modulus = 2.0
[]
[strain]
type = ComputeIncrementalStrain
displacements = 'disp_x disp_y disp_z'
eigenstrain_names = ini_stress
[]
[ini_stress]
type = ComputeEigenstrainFromInitialStress
initial_stress = '0 0 0 0 0 1 0 1 -1.5'
eigenstrain_name = ini_stress
[]
[admissible]
type = ComputeMultipleInelasticStress
inelastic_models = mc
tangent_operator = nonlinear
[]
[mc]
type = CappedWeakPlaneStressUpdate
cohesion = coh
tan_friction_angle = tanphi
tan_dilation_angle = tanpsi
tensile_strength = t_strength
compressive_strength = c_strength
max_NR_iterations = 20
tip_smoother = 0
smoothing_tol = 1
yield_function_tol = 1E-10
perfect_guess = false
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_atol -snes_rtol -snes_max_it -snes_type'
petsc_options_value = 'bcgs bjacobi 1E-15 1E-10 10000 test'
[]
[]
[Executioner]
type = Transient
solve_type = Newton
[]
(modules/combined/test/tests/j2_plasticity_vs_LSH/j2_hard1_mod_optimised.i)
# Test designed to compare results and active time between SH/LinearStrainHardening
# material vs TM j2 plastic user object. As number of elements increases, TM
# active time increases at a much higher rate than SM. Testing at 4x4x4
# (64 elements).
#
# plot vm_stress vs intnl to see constant hardening
#
# Original test located at:
# solid_mechanics/tests/j2_plasticity/hard1.i
[Mesh]
type = GeneratedMesh
dim = 3
nx = 4
ny = 4
nz = 4
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[]
[Kernels]
[TensorMechanics]
displacements = 'disp_x disp_y disp_z'
[]
[]
[AuxVariables]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[intnl]
order = CONSTANT
family = MONOMIAL
[]
[vm_stress]
order = CONSTANT
family = MONOMIAL
[]
[eq_pl_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[]
[intnl]
type = MaterialStdVectorAux
index = 0
property = plastic_internal_parameter
variable = intnl
[]
[eq_pl_strain]
type = RankTwoScalarAux
rank_two_tensor = plastic_strain
scalar_type = EffectiveStrain
variable = eq_pl_strain
[]
[vm_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
scalar_type = VonMisesStress
variable = vm_stress
[]
[]
[BCs]
[left]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[bottom]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[]
[back]
type = DirichletBC
variable = disp_z
boundary = back
value = 0.0
[]
[z]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = 't/60'
[]
[]
[UserObjects]
[str]
type = TensorMechanicsHardeningConstant
value = 2.4e2
[]
[j2]
type = TensorMechanicsPlasticJ2
yield_strength = str
yield_function_tolerance = 1E-3
internal_constraint_tolerance = 1E-9
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensor
block = 0
fill_method = symmetric_isotropic
#with E = 2.1e5 and nu = 0.3
#Hooke's law: E-nu to Lambda-G
C_ijkl = '121154 80769.2'
[]
[strain]
type = ComputeIncrementalStrain
block = 0
displacements = 'disp_x disp_y disp_z'
[]
[mc]
type = ComputeMultiPlasticityStress
block = 0
ep_plastic_tolerance = 1E-9
plastic_models = j2
perform_finite_strain_rotations = false
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
#Preconditioned JFNK (default)
solve_type = NEWTON
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
#line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-6
nl_abs_tol = 1e-10
l_tol = 1e-4
start_time = 0.0
end_time = 0.5
dt = 0.5
[]
[Postprocessors]
[stress_zz]
type = ElementAverageValue
variable = stress_zz
[]
[intnl]
type = ElementAverageValue
variable = intnl
[]
[eq_pl_strain]
type = PointValue
point = '0 0 0'
variable = eq_pl_strain
[]
[vm_stress]
type = PointValue
point = '0 0 0'
variable = vm_stress
[]
[]
[Outputs]
csv = true
print_linear_residuals = false
perf_graph = true
[]
(modules/solid_mechanics/test/tests/visco/gen_maxwell_driving.i)
# Represents a unique Maxwell module with E = 10GPa and eta = 10 days with an imposed eigenstrain alpha = 0.001.
# The behavior is set up so that the creep strain is driven by both the elastic stress and the internal
# stress induced by the eigenstrain (E * alpha).
#
# In this test, the specimen is free of external stress (sigma = 0) so the creep deformation only derives from
# the eigenstrain. The total strain to be expected is:
# epsilon = alpha * (1 + t / eta)
# Both the stress and the elastic strain are 0.
#
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
elem_type = HEX8
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./creep_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[SolidMechanics]
displacements = 'disp_x disp_y disp_z'
use_displaced_mesh = true
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
variable = stress_xx
rank_two_tensor = stress
index_j = 0
index_i = 0
execute_on = timestep_end
[../]
[./strain_xx]
type = RankTwoAux
variable = strain_xx
rank_two_tensor = total_strain
index_j = 0
index_i = 0
execute_on = timestep_end
[../]
[./creep_strain_xx]
type = RankTwoAux
variable = creep_strain_xx
rank_two_tensor = creep_strain
index_j = 0
index_i = 0
execute_on = timestep_end
[../]
[]
[BCs]
[./symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[../]
[]
[Materials]
[./eigen]
type = ComputeEigenstrain
eigenstrain_name = eigen_true
eigen_base = '1e-3 1e-3 1e-3 0 0 0'
[../]
[./maxwell]
type = GeneralizedMaxwellModel
creep_modulus = '10e9'
creep_viscosity = '10'
poisson_ratio = 0.2
young_modulus = 10e9
driving_eigenstrain = eigen_true
[../]
[./stress]
type = ComputeMultipleInelasticStress
inelastic_models = 'creep'
[../]
[./creep]
type = LinearViscoelasticStressUpdate
[../]
[./strain]
type = ComputeIncrementalStrain
displacements = 'disp_x disp_y disp_z'
eigenstrain_names = 'eigen_true'
[../]
[]
[UserObjects]
[./update]
type = LinearViscoelasticityManager
viscoelastic_model = maxwell
[../]
[]
[Postprocessors]
[./stress_xx]
type = ElementAverageValue
variable = stress_xx
block = 'ANY_BLOCK_ID 0'
[../]
[./strain_xx]
type = ElementAverageValue
variable = strain_xx
block = 'ANY_BLOCK_ID 0'
[../]
[./creep_strain_xx]
type = ElementAverageValue
variable = creep_strain_xx
block = 'ANY_BLOCK_ID 0'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
l_max_its = 50
l_tol = 1e-8
nl_max_its = 20
nl_rel_tol = 1e-11
nl_abs_tol = 1e-8
dtmin = 0.01
end_time = 100
[./TimeStepper]
type = LogConstantDT
first_dt = 0.1
log_dt = 0.1
[../]
[]
[Outputs]
file_base = gen_maxwell_driving_out
exodus = true
[]
(modules/contact/test/tests/verification/patch_tests/plane_1/plane1_template1.i)
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Mesh]
file = plane1_mesh.e
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./penetration]
[../]
[./saved_x]
[../]
[./saved_y]
[../]
[./diag_saved_x]
[../]
[./diag_saved_y]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
save_in = 'saved_x saved_y'
extra_vector_tags = 'ref'
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./zeroslip_x]
type = ConstantAux
variable = inc_slip_x
boundary = 4
execute_on = timestep_begin
value = 0.0
[../]
[./zeroslip_y]
type = ConstantAux
variable = inc_slip_y
boundary = 4
execute_on = timestep_begin
value = 0.0
[../]
[./accum_slip_x]
type = AccumulateAux
variable = accum_slip_x
accumulate_from_variable = inc_slip_x
execute_on = timestep_end
[../]
[./accum_slip_y]
type = AccumulateAux
variable = accum_slip_y
accumulate_from_variable = inc_slip_y
execute_on = timestep_end
[../]
[./penetration]
type = PenetrationAux
variable = penetration
boundary = 4
paired_boundary = 3
[../]
[]
[Postprocessors]
[./bot_react_x]
type = NodalSum
variable = saved_x
boundary = 1
[../]
[./bot_react_y]
type = NodalSum
variable = saved_y
boundary = 1
[../]
[./top_react_x]
type = NodalSum
variable = saved_x
boundary = 5
[../]
[./top_react_y]
type = NodalSum
variable = saved_y
boundary = 5
[../]
[./ref_resid_x]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_x
[../]
[./ref_resid_y]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_y
[../]
[./sigma_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./sigma_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./disp_x2]
type = NodalVariableValue
nodeid = 1
variable = disp_x
[../]
[./disp_x7]
type = NodalVariableValue
nodeid = 6
variable = disp_x
[../]
[./disp_y2]
type = NodalVariableValue
nodeid = 1
variable = disp_y
[../]
[./disp_y7]
type = NodalVariableValue
nodeid = 6
variable = disp_y
[../]
[./_dt]
type = TimestepSize
[../]
[./num_lin_it]
type = NumLinearIterations
[../]
[./num_nonlin_it]
type = NumNonlinearIterations
[../]
[]
[BCs]
[./bot_y]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[../]
[./side_x]
type = DirichletBC
variable = disp_x
boundary = 2
value = 0.0
[../]
[./top_press]
type = Pressure
variable = disp_y
boundary = 5
factor = 109.89
[../]
[]
[Materials]
[./bot_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./bot_strain]
type = ComputeIncrementalStrain
block = '1'
[../]
[./bot_stress]
type = ComputeFiniteStrainElasticStress
block = '1'
[../]
[./top_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '2'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./top_strain]
type = ComputeIncrementalStrain
block = '2'
[../]
[./top_stress]
type = ComputeFiniteStrainElasticStress
block = '2'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-9
l_max_its = 50
nl_max_its = 100
dt = 1.0
end_time = 1.0
num_steps = 10
dtmin = 1.0
l_tol = 1e-3
[]
[VectorPostprocessors]
[./x_disp]
type = NodalValueSampler
variable = disp_x
boundary = '1 3 4 5'
sort_by = x
[../]
[./cont_press]
type = NodalValueSampler
variable = contact_pressure
boundary = '3'
sort_by = x
[../]
[]
[Outputs]
print_linear_residuals = true
perf_graph = true
[./exodus]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[./chkfile]
type = CSV
show = 'bot_react_x bot_react_y disp_x2 disp_y2 disp_x7 disp_y7 sigma_yy sigma_zz top_react_x top_react_y x_disp cont_press'
execute_vector_postprocessors_on = timestep_end
[../]
[./outfile]
type = CSV
delimiter = ' '
execute_vector_postprocessors_on = none
[../]
[]
[Contact]
[./leftright]
secondary = 3
primary = 4
normalize_penalty = true
tangential_tolerance = 1e-3
penalty = 1e+9
[../]
[]
(modules/porous_flow/test/tests/plastic_heating/tensile01.i)
# Tensile heating, using capped weak-plane plasticity
# z_disp(z=1) = t
# totalstrain_zz = t
# with C_ijkl = 0.5 0.25
# stress_zz = t, but with tensile_strength = 1, stress_zz = min(t, 1)
# so plasticstrain_zz = t - 1
# heat_energy_rate = coeff * (t - 1)
# Heat capacity of rock = specific_heat_cap * density = 4
# So temperature of rock should be:
# (1 - porosity) * 4 * T = (1 - porosity) * coeff * (t - 1)
[Mesh]
type = GeneratedMesh
dim = 3
xmin = -10
xmax = 10
zmin = 0
zmax = 1
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
PorousFlowDictator = dictator
[]
[Variables]
[temperature]
[]
[]
[Kernels]
[energy_dot]
type = PorousFlowEnergyTimeDerivative
variable = temperature
base_name = non_existent
[]
[phe]
type = PorousFlowPlasticHeatEnergy
variable = temperature
[]
[]
[AuxVariables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[AuxKernels]
[disp_z]
type = FunctionAux
variable = disp_z
function = z*t
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = temperature
number_fluid_phases = 0
number_fluid_components = 0
[]
[coh]
type = TensorMechanicsHardeningConstant
value = 100
[]
[tanphi]
type = TensorMechanicsHardeningConstant
value = 1.0
[]
[t_strength]
type = TensorMechanicsHardeningConstant
value = 1
[]
[c_strength]
type = TensorMechanicsHardeningConstant
value = 1
[]
[]
[Materials]
[rock_internal_energy]
type = PorousFlowMatrixInternalEnergy
specific_heat_capacity = 2
density = 2
[]
[temp]
type = PorousFlowTemperature
temperature = temperature
[]
[porosity]
type = PorousFlowPorosityConst
porosity = 0.2
[]
[phe]
type = ComputePlasticHeatEnergy
[]
[elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric_isotropic
C_ijkl = '0.5 0.25'
[]
[strain]
type = ComputeIncrementalStrain
displacements = 'disp_x disp_y disp_z'
[]
[admissible]
type = ComputeMultipleInelasticStress
inelastic_models = mc
perform_finite_strain_rotations = false
[]
[mc]
type = CappedWeakPlaneStressUpdate
cohesion = coh
tan_friction_angle = tanphi
tan_dilation_angle = tanphi
tensile_strength = t_strength
compressive_strength = c_strength
tip_smoother = 0
smoothing_tol = 1
yield_function_tol = 1E-10
perfect_guess = true
[]
[]
[Postprocessors]
[temp]
type = PointValue
point = '0 0 0'
variable = temperature
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_atol -snes_rtol -snes_max_it'
petsc_options_value = 'bcgs bjacobi 1E-15 1E-10 10000'
[]
[]
[Executioner]
type = Transient
solve_type = Newton
dt = 1
end_time = 10
[]
[Outputs]
file_base = tensile01
csv = true
[]
(modules/contact/test/tests/verification/patch_tests/plane_3/plane3_mu_0_2_pen.i)
[GlobalParams]
order = SECOND
displacements = 'disp_x disp_y'
[]
[Mesh]
file = plane3_mesh.e
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./penetration]
[../]
[./saved_x]
[../]
[./saved_y]
[../]
[./diag_saved_x]
[../]
[./diag_saved_y]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[./tang_force_x]
[../]
[./tang_force_y]
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
save_in = 'saved_x saved_y'
extra_vector_tags = 'ref'
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./inc_slip_x]
type = PenetrationAux
variable = inc_slip_x
execute_on = timestep_end
boundary = 3
paired_boundary = 4
[../]
[./inc_slip_y]
type = PenetrationAux
variable = inc_slip_y
execute_on = timestep_end
boundary = 3
paired_boundary = 4
[../]
[./accum_slip_x]
type = PenetrationAux
variable = accum_slip_x
execute_on = timestep_end
boundary = 3
paired_boundary = 4
[../]
[./accum_slip_y]
type = PenetrationAux
variable = accum_slip_y
execute_on = timestep_end
boundary = 3
paired_boundary = 4
[../]
[./penetration]
type = PenetrationAux
variable = penetration
boundary = 3
paired_boundary = 4
[../]
[./tang_force_x]
type = PenetrationAux
variable = tang_force_x
quantity = tangential_force_x
boundary = 3
paired_boundary = 4
[../]
[./tang_force_y]
type = PenetrationAux
variable = tang_force_y
quantity = tangential_force_y
boundary = 3
paired_boundary = 4
[../]
[]
[Postprocessors]
[./bot_react_x]
type = NodalSum
variable = saved_x
boundary = 1
[../]
[./bot_react_y]
type = NodalSum
variable = saved_y
boundary = 1
[../]
[./top_react_x]
type = NodalSum
variable = saved_x
boundary = 5
[../]
[./top_react_y]
type = NodalSum
variable = saved_y
boundary = 5
[../]
[./ref_resid_x]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_x
[../]
[./ref_resid_y]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_y
[../]
[./sigma_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./sigma_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./disp_x2]
type = NodalVariableValue
nodeid = 1
variable = disp_x
[../]
[./disp_x11]
type = NodalVariableValue
nodeid = 10
variable = disp_x
[../]
[./disp_y2]
type = NodalVariableValue
nodeid = 1
variable = disp_y
[../]
[./disp_y11]
type = NodalVariableValue
nodeid = 10
variable = disp_y
[../]
[./_dt]
type = TimestepSize
[../]
[./num_lin_it]
type = NumLinearIterations
[../]
[./num_nonlin_it]
type = NumNonlinearIterations
[../]
[]
[BCs]
[./bot_y]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[../]
[./side_x]
type = DirichletBC
variable = disp_x
boundary = 2
value = 0.0
[../]
[./top_press]
type = Pressure
variable = disp_y
boundary = 5
factor = 109.89
[../]
[]
[Materials]
[./bot_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./bot_strain]
type = ComputeIncrementalStrain
block = '1'
[../]
[./bot_stress]
type = ComputeFiniteStrainElasticStress
block = '1'
[../]
[./top_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '2'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./top_strain]
type = ComputeIncrementalStrain
block = '2'
[../]
[./top_stress]
type = ComputeFiniteStrainElasticStress
block = '2'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-7
l_max_its = 100
nl_max_its = 200
dt = 1.0
end_time = 1.0
num_steps = 10
dtmin = 1.0
l_tol = 1e-3
[]
[VectorPostprocessors]
[./x_disp]
type = NodalValueSampler
variable = disp_x
boundary = '1 3 4 5'
sort_by = x
[../]
[./cont_press]
type = NodalValueSampler
variable = contact_pressure
boundary = '3'
sort_by = x
[../]
[]
[Outputs]
file_base = plane3_mu_0_2_pen_out
print_linear_residuals = true
perf_graph = true
[./exodus]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[./chkfile]
type = CSV
file_base = plane3_mu_0_2_pen_check
show = 'bot_react_x bot_react_y disp_x2 disp_y2 disp_x11 disp_y11 sigma_yy sigma_zz top_react_x top_react_y x_disp cont_press'
execute_vector_postprocessors_on = timestep_end
[../]
[./outfile]
type = CSV
delimiter = ' '
execute_vector_postprocessors_on = none
[../]
[]
[Contact]
[./leftright]
secondary = 3
primary = 4
model = coulomb
formulation = penalty
normalize_penalty = true
friction_coefficient = 0.2
penalty = 1e+9
[../]
[]
(modules/combined/test/tests/thermo_mech/youngs_modulus_function_temp.i)
# ---------------------------------------------------------------------------
# This test is designed to verify the variable elasticity tensor functionality in the
# ComputeFiniteStrainElasticStress 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 ComputeIncrementalStrain. 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 = Diffusion
variable = temp
[../]
[./TensorMechanics]
use_displaced_mesh = 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 = FunctionDirichletBC
variable = temp
preset = false
boundary = '1 2 3 4'
function = temperature_function
[../]
[]
[Materials]
[./youngs_modulus]
type = PiecewiseLinearInterpolationMaterial
xy_data = '0 10e+6
599.9999 10e+6
600 9.94e+6
99900 10e3'
property = youngs_modulus
variable = temp
[../]
[./elasticity_tensor]
type = ComputeVariableIsotropicElasticityTensor
args = temp
youngs_modulus = youngs_modulus
poissons_ratio = 0.0
[../]
[./strain]
type = ComputeIncrementalStrain
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
[../]
[]
[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/porous_flow/test/tests/dirackernels/injection_with_plasticity.i)
# Example: Injection into a uniform aquifer 10 x 10 x 5 km
# Drucker-Prager deformation
# Darcy flow
gravity = -9.81
solid_density = 2350
fluid_density = 1000
porosity0 = 0.1
[Mesh]
type = GeneratedMesh
dim = 3
xmin = 0
xmax = 1e4
ymin = 0
ymax = 1e4
zmax = 0
zmin = -5e3
nx = 2
ny = 2
nz = 2
[]
[GlobalParams]
PorousFlowDictator = dictator
gravity = '0 0 ${gravity}'
displacements = 'disp_x disp_y disp_z'
strain_at_nearest_qp = true
[]
[FluidProperties]
[simple_fluid]
type = SimpleFluidProperties
thermal_expansion = 0 # Not doing a thermal simulation
bulk_modulus = 2E9
density0 = ${fluid_density}
viscosity = 5E-4
[]
[]
[PorousFlowFullySaturated]
coupling_type = HydroMechanical
porepressure = pp
dictator_name = dictator
fp = simple_fluid
add_darcy_aux = false
add_stress_aux = false
stabilization = none
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[pp]
scaling = 1E6
[InitialCondition]
type = FunctionIC
function = ini_pp
[]
[]
[]
[Functions]
[ini_stress]
type = ParsedFunction
expression = '-${gravity} * z * (${solid_density} - ${fluid_density}) * (1.0 - ${porosity0})' # initial effective stress that should result from weight force
[]
[ini_pp]
type = ParsedFunction
expression = '${gravity} * z * ${fluid_density} + 1E5'
[]
[]
[BCs]
[p_top]
type = FunctionDirichletBC
variable = pp
boundary = front
function = ini_pp
[]
[x_roller]
type = DirichletBC
variable = disp_x
boundary = 'left right'
value = 0
[]
[y_roller]
type = DirichletBC
variable = disp_y
boundary = 'top bottom'
value = 0
[]
[z_confined]
type = DirichletBC
variable = disp_z
boundary = 'back front'
value = 0
[]
[]
[UserObjects]
[pls_total_outflow_mass]
type = PorousFlowSumQuantity
[]
# Cohesion
[mc_coh]
type = TensorMechanicsHardeningConstant
value = 6.0E6
[]
# Friction angle
[mc_phi]
type = TensorMechanicsHardeningConstant
value = 35.0
convert_to_radians = true
[]
# Dilation angle
[mc_psi]
type = TensorMechanicsHardeningConstant
value = 2
convert_to_radians = true
[]
# Drucker-Prager objects
[dp]
type = TensorMechanicsPlasticDruckerPragerHyperbolic
mc_cohesion = mc_coh
mc_friction_angle = mc_phi
mc_dilation_angle = mc_psi
yield_function_tolerance = 1E-3
internal_constraint_tolerance = 1E-6
[]
# Tensile strength
[tens]
type = TensorMechanicsHardeningConstant
value = 3.0E6
[]
# Compressive strength (cap on yield envelope)
[compr_all]
type = TensorMechanicsHardeningConstant
value = 1E10
[]
[]
[Materials]
[strain]
type = ComputeIncrementalStrain
eigenstrain_names = eigenstrain_all
[]
[eigenstrain_all]
type = ComputeEigenstrainFromInitialStress
initial_stress = 'ini_stress 0 0 0 ini_stress 0 0 0 ini_stress'
eigenstrain_name = eigenstrain_all
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
bulk_modulus = 3.3333E9
shear_modulus = 2.5E9
[]
[dp_mat]
type = CappedDruckerPragerStressUpdate
DP_model = dp
tensile_strength = tens
compressive_strength = compr_all
smoothing_tol = 1E5
yield_function_tol = 1E-3
tip_smoother = 0
[]
[stress]
type = ComputeMultipleInelasticStress
inelastic_models = dp_mat
[]
# Permeability
[permeability]
type = PorousFlowPermeabilityConst
permeability = '1E-13 0 0 0 1E-13 0 0 0 1E-13'
[]
# Porosity
[porosity]
type = PorousFlowPorosity
porosity_zero = ${porosity0}
biot_coefficient = 1.0
solid_bulk = 1.0 # Required but irrelevant when biot_coefficient is unity
mechanical = true
fluid = true
[]
# Density of saturated rock
[density]
type = PorousFlowTotalGravitationalDensityFullySaturatedFromPorosity
rho_s = ${solid_density}
[]
[]
[DiracKernels]
[pls]
type = PorousFlowPolyLineSink
variable = pp
SumQuantityUO = pls_total_outflow_mass
point_file = two_nodes.bh
function_of = pressure
fluid_phase = 0
p_or_t_vals = '0 1E7'
fluxes = '-1.59 -1.59'
[]
[]
[Preconditioning]
[usual]
type = SMP
full = true
[]
[]
[Executioner]
solve_type = Newton
type = Transient
dt = 1E6
end_time = 1E6
nl_rel_tol = 1E-7
[]
[Outputs]
exodus = true
[]
(modules/porous_flow/test/tests/plastic_heating/compressive01.i)
# Tensile heating, using capped weak-plane plasticity
# z_disp(z=1) = -t
# totalstrain_zz = -t
# with C_ijkl = 0.5 0.25
# stress_zz = -t, but with compressive_strength = 1, stress_zz = max(-t, -1)
# so plasticstrain_zz = -(t - 1)
# heat_energy_rate = coeff * (t - 1)
# Heat capacity of rock = specific_heat_cap * density = 4
# So temperature of rock should be:
# (1 - porosity) * 4 * T = (1 - porosity) * coeff * (t - 1)
[Mesh]
type = GeneratedMesh
dim = 3
xmin = -10
xmax = 10
zmin = 0
zmax = 1
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
PorousFlowDictator = dictator
[]
[Variables]
[temperature]
[]
[]
[Kernels]
[energy_dot]
type = PorousFlowEnergyTimeDerivative
variable = temperature
base_name = non_existent
[]
[phe]
type = PorousFlowPlasticHeatEnergy
variable = temperature
[]
[]
[AuxVariables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[AuxKernels]
[disp_z]
type = FunctionAux
variable = disp_z
function = '-z*t'
[]
[]
[UserObjects]
[dictator]
type = PorousFlowDictator
porous_flow_vars = temperature
number_fluid_phases = 0
number_fluid_components = 0
[]
[coh]
type = TensorMechanicsHardeningConstant
value = 100
[]
[tanphi]
type = TensorMechanicsHardeningConstant
value = 1.0
[]
[t_strength]
type = TensorMechanicsHardeningConstant
value = 1
[]
[c_strength]
type = TensorMechanicsHardeningConstant
value = 1
[]
[]
[Materials]
[rock_internal_energy]
type = PorousFlowMatrixInternalEnergy
specific_heat_capacity = 2
density = 2
[]
[temp]
type = PorousFlowTemperature
temperature = temperature
[]
[porosity]
type = PorousFlowPorosityConst
porosity = 0.2
[]
[phe]
type = ComputePlasticHeatEnergy
[]
[elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric_isotropic
C_ijkl = '0.5 0.25'
[]
[strain]
type = ComputeIncrementalStrain
displacements = 'disp_x disp_y disp_z'
[]
[admissible]
type = ComputeMultipleInelasticStress
inelastic_models = mc
perform_finite_strain_rotations = false
[]
[mc]
type = CappedWeakPlaneStressUpdate
cohesion = coh
tan_friction_angle = tanphi
tan_dilation_angle = tanphi
tensile_strength = t_strength
compressive_strength = c_strength
tip_smoother = 0
smoothing_tol = 1
yield_function_tol = 1E-10
perfect_guess = true
[]
[]
[Postprocessors]
[temp]
type = PointValue
point = '0 0 0'
variable = temperature
[]
[]
[Preconditioning]
[andy]
type = SMP
full = true
petsc_options_iname = '-ksp_type -pc_type -snes_atol -snes_rtol -snes_max_it'
petsc_options_value = 'bcgs bjacobi 1E-15 1E-10 10000'
[]
[]
[Executioner]
type = Transient
solve_type = Newton
dt = 1
end_time = 10
[]
[Outputs]
file_base = compressive01
csv = true
[]
(modules/contact/test/tests/verification/patch_tests/plane_4/plane4_template1.i)
[GlobalParams]
order = SECOND
displacements = 'disp_x disp_y'
[]
[Mesh]
file = plane4_mesh.e
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./penetration]
[../]
[./saved_x]
[../]
[./saved_y]
[../]
[./diag_saved_x]
[../]
[./diag_saved_y]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[./tang_force_x]
[../]
[./tang_force_y]
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
save_in = 'saved_x saved_y'
extra_vector_tags = 'ref'
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./zeroslip_x]
type = ConstantAux
variable = inc_slip_x
boundary = 4
execute_on = timestep_begin
value = 0.0
[../]
[./zeroslip_y]
type = ConstantAux
variable = inc_slip_y
boundary = 4
execute_on = timestep_begin
value = 0.0
[../]
[./accum_slip_x]
type = AccumulateAux
variable = accum_slip_x
accumulate_from_variable = inc_slip_x
execute_on = timestep_end
[../]
[./accum_slip_y]
type = AccumulateAux
variable = accum_slip_y
accumulate_from_variable = inc_slip_y
execute_on = timestep_end
[../]
[./penetration]
type = PenetrationAux
variable = penetration
boundary = 4
paired_boundary = 3
[../]
[]
[Postprocessors]
[./bot_react_x]
type = NodalSum
variable = saved_x
boundary = 1
[../]
[./bot_react_y]
type = NodalSum
variable = saved_y
boundary = 1
[../]
[./top_react_x]
type = NodalSum
variable = saved_x
boundary = 5
[../]
[./top_react_y]
type = NodalSum
variable = saved_y
boundary = 5
[../]
[./ref_resid_x]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_x
[../]
[./ref_resid_y]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_y
[../]
[./sigma_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./sigma_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./disp_x9]
type = NodalVariableValue
nodeid = 8
variable = disp_x
[../]
[./disp_x16]
type = NodalVariableValue
nodeid = 15
variable = disp_x
[../]
[./disp_y9]
type = NodalVariableValue
nodeid = 8
variable = disp_y
[../]
[./disp_y16]
type = NodalVariableValue
nodeid = 15
variable = disp_y
[../]
[./_dt]
type = TimestepSize
[../]
[./num_lin_it]
type = NumLinearIterations
[../]
[./num_nonlin_it]
type = NumNonlinearIterations
[../]
[]
[BCs]
[./bot_y]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[../]
[./side_x]
type = DirichletBC
variable = disp_x
boundary = 2
value = 0.0
[../]
[./top_press]
type = Pressure
variable = disp_y
boundary = 5
factor = 109.89
[../]
[]
[Materials]
[./bot_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./bot_strain]
type = ComputeIncrementalStrain
block = '1'
[../]
[./bot_stress]
type = ComputeFiniteStrainElasticStress
block = '1'
[../]
[./top_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '2'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./top_strain]
type = ComputeIncrementalStrain
block = '2'
[../]
[./top_stress]
type = ComputeFiniteStrainElasticStress
block = '2'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-7
l_max_its = 100
nl_max_its = 200
dt = 1.0
end_time = 1.0
num_steps = 10
dtmin = 1.0
l_tol = 1e-3
[]
[VectorPostprocessors]
[./x_disp]
type = NodalValueSampler
variable = disp_x
boundary = '1 3 4 5'
sort_by = x
[../]
[./cont_press]
type = NodalValueSampler
variable = contact_pressure
boundary = '3'
sort_by = x
[../]
[]
[Outputs]
print_linear_residuals = true
perf_graph = true
[./exodus]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[./chkfile]
type = CSV
show = 'bot_react_x bot_react_y disp_x9 disp_y9 disp_x16 disp_y16 sigma_yy sigma_zz top_react_x top_react_y x_disp cont_press'
execute_vector_postprocessors_on = timestep_end
[../]
[./outfile]
type = CSV
delimiter = ' '
execute_vector_postprocessors_on = none
[../]
[]
[Contact]
[./leftright]
secondary = 3
primary = 4
normalize_penalty = true
tangential_tolerance = 1e-3
penalty = 1e+9
[../]
[]
(modules/contact/test/tests/verification/patch_tests/plane_4/plane4_template2.i)
[GlobalParams]
order = SECOND
displacements = 'disp_x disp_y'
[]
[Mesh]
file = plane4_mesh.e
[]
[Problem]
type = AugmentedLagrangianContactProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
maximum_lagrangian_update_iterations = 200
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./penetration]
[../]
[./saved_x]
[../]
[./saved_y]
[../]
[./diag_saved_x]
[../]
[./diag_saved_y]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[./tang_force_x]
[../]
[./tang_force_y]
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
save_in = 'saved_x saved_y'
extra_vector_tags = 'ref'
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./zeroslip_x]
type = ConstantAux
variable = inc_slip_x
boundary = 4
execute_on = timestep_begin
value = 0.0
[../]
[./zeroslip_y]
type = ConstantAux
variable = inc_slip_y
boundary = 4
execute_on = timestep_begin
value = 0.0
[../]
[./accum_slip_x]
type = AccumulateAux
variable = accum_slip_x
accumulate_from_variable = inc_slip_x
execute_on = timestep_end
[../]
[./accum_slip_y]
type = AccumulateAux
variable = accum_slip_y
accumulate_from_variable = inc_slip_y
execute_on = timestep_end
[../]
[./penetration]
type = PenetrationAux
variable = penetration
boundary = 4
paired_boundary = 3
[../]
[]
[Postprocessors]
[./bot_react_x]
type = NodalSum
variable = saved_x
boundary = 1
[../]
[./bot_react_y]
type = NodalSum
variable = saved_y
boundary = 1
[../]
[./top_react_x]
type = NodalSum
variable = saved_x
boundary = 5
[../]
[./top_react_y]
type = NodalSum
variable = saved_y
boundary = 5
[../]
[./ref_resid_x]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_x
[../]
[./ref_resid_y]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_y
[../]
[./sigma_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./sigma_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./disp_x9]
type = NodalVariableValue
nodeid = 8
variable = disp_x
[../]
[./disp_x16]
type = NodalVariableValue
nodeid = 15
variable = disp_x
[../]
[./disp_y9]
type = NodalVariableValue
nodeid = 8
variable = disp_y
[../]
[./disp_y16]
type = NodalVariableValue
nodeid = 15
variable = disp_y
[../]
[./_dt]
type = TimestepSize
[../]
[./num_lin_it]
type = NumLinearIterations
[../]
[./num_nonlin_it]
type = NumNonlinearIterations
[../]
[]
[BCs]
[./bot_y]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[../]
[./side_x]
type = DirichletBC
variable = disp_x
boundary = 2
value = 0.0
[../]
[./top_press]
type = Pressure
variable = disp_y
boundary = 5
factor = 109.89
[../]
[]
[Materials]
[./bot_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./bot_strain]
type = ComputeIncrementalStrain
block = '1'
[../]
[./bot_stress]
type = ComputeFiniteStrainElasticStress
block = '1'
[../]
[./top_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '2'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./top_strain]
type = ComputeIncrementalStrain
block = '2'
[../]
[./top_stress]
type = ComputeFiniteStrainElasticStress
block = '2'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_abs_tol = 1e-9
nl_rel_tol = 1e-7
l_max_its = 100
nl_max_its = 200
dt = 1.0
end_time = 1.0
num_steps = 10
dtmin = 1.0
l_tol = 1e-3
[]
[VectorPostprocessors]
[./x_disp]
type = NodalValueSampler
variable = disp_x
boundary = '1 3 4 5'
sort_by = x
[../]
[./cont_press]
type = NodalValueSampler
variable = contact_pressure
boundary = '3'
sort_by = x
[../]
[]
[Outputs]
print_linear_residuals = true
perf_graph = true
[./exodus]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[./chkfile]
type = CSV
show = 'bot_react_x bot_react_y disp_x9 disp_y9 disp_x16 disp_y16 sigma_yy sigma_zz top_react_x top_react_y x_disp cont_press'
execute_vector_postprocessors_on = timestep_end
[../]
[./outfile]
type = CSV
delimiter = ' '
execute_vector_postprocessors_on = none
[../]
[]
[Contact]
[./leftright]
secondary = 3
primary = 4
normalize_penalty = true
tangential_tolerance = 1e-3
penalty = 1e+9
al_penetration_tolerance = 1e-8
[../]
[]
(modules/solid_mechanics/test/tests/ad_elastic/incremental_small_elastic-noad.i)
[Mesh]
type = GeneratedMesh
dim = 3
nx = 3
ny = 3
nz = 3
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
# scale with one over Young's modulus
[./disp_x]
scaling = 1e-10
[../]
[./disp_y]
scaling = 1e-10
[../]
[./disp_z]
scaling = 1e-10
[../]
[]
[Kernels]
[./stress_x]
type = StressDivergenceTensors
component = 0
variable = disp_x
[../]
[./stress_y]
type = StressDivergenceTensors
component = 1
variable = disp_y
[../]
[./stress_z]
type = StressDivergenceTensors
component = 2
variable = disp_z
[../]
[]
[BCs]
[./symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[../]
[./tdisp]
type = DirichletBC
variable = disp_z
boundary = front
value = 0.1
[../]
[]
[Materials]
[./elasticity]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.3
youngs_modulus = 1e10
[../]
[./strain]
type = ComputeIncrementalStrain
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
dt = 0.05
solve_type = 'NEWTON'
petsc_options_iname = -pc_hypre_type
petsc_options_value = boomeramg
dtmin = 0.05
num_steps = 1
[]
[Outputs]
exodus = true
file_base = incremental_small_elastic_out
[]
(modules/solid_mechanics/test/tests/central_difference/lumped/1D/1d_nodalmass_explicit.i)
# Test for central difference integration for 1D elements
[Mesh]
[./generated_mesh]
type = GeneratedMeshGenerator
xmin = 0
xmax = 10
nx = 5
dim = 1
[../]
[./all_nodes]
type = BoundingBoxNodeSetGenerator
new_boundary = 'all'
input = 'generated_mesh'
top_right = '10 0 0'
bottom_left = '0 0 0'
[../]
[]
[Variables]
[./disp_x]
[../]
[]
[AuxVariables]
[./accel_x]
[../]
[./vel_x]
[../]
[]
[AuxKernels]
[./accel_x]
type = TestNewmarkTI
variable = accel_x
displacement = disp_x
first = false
[../]
[./vel_x]
type = TestNewmarkTI
variable = vel_x
displacement = disp_x
[../]
[]
[Kernels]
[./DynamicSolidMechanics]
displacements = 'disp_x'
[../]
[]
[NodalKernels]
[./force_x]
type = UserForcingFunctorNodalKernel
variable = disp_x
boundary = right
functor = force_x
[../]
[./nodal_masses]
type = NodalTranslationalInertia
nodal_mass_file = 'nodal_mass_file.csv'
variable = 'disp_x'
boundary = 'all'
[../]
[]
[Functions]
[./force_x]
type = PiecewiseLinear
x = '0.0 1.0 2.0 3.0 4.0' # time
y = '0.0 1.0 0.0 -1.0 0.0' # force
scale_factor = 1e3
[../]
[]
[BCs]
[./fixx1]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor_block]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.25
block = 0
[../]
[./strain_block]
type = ComputeIncrementalStrain
block = 0
displacements = 'disp_x'
implicit = false
[../]
[./stress_block]
type = ComputeFiniteStrainElasticStress
block = 0
[../]
[]
[Executioner]
type = Transient
start_time = -0.01
end_time = 0.1
dt = 0.005
timestep_tolerance = 2e-10
[./TimeIntegrator]
type = CentralDifference
[../]
[]
[Postprocessors]
[./accel_x]
type = PointValue
point = '10.0 0.0 0.0'
variable = accel_x
[../]
[]
[Outputs]
exodus = false
csv = true
[]
(modules/solid_mechanics/test/tests/central_difference/consistent/1D/1d_consistent_explicit.i)
# Test for central difference integration for a 1D element
# Consistent mass matrix
[Mesh]
type = GeneratedMesh
xmin = 0
xmax = 10
nx = 5
dim = 1
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./accel_x]
[../]
[./vel_x]
[../]
[]
[AuxKernels]
[./accel_x]
type = TestNewmarkTI
variable = accel_x
displacement = disp_x
first = false
[../]
[./vel_x]
type = TestNewmarkTI
variable = vel_x
displacement = disp_x
[../]
[]
[Kernels]
[./DynamicSolidMechanics]
displacements = 'disp_x'
[../]
[./inertia_x]
type = InertialForce
variable = disp_x
[../]
[]
[NodalKernels]
[./force_x]
type = UserForcingFunctorNodalKernel
variable = disp_x
boundary = right
functor = force_x
[../]
[]
[Functions]
[./force_x]
type = PiecewiseLinear
x = '0.0 1.0 2.0 3.0 4.0' # time
y = '0.0 1.0 0.0 -1.0 0.0' # force
scale_factor = 1e3
[../]
[]
[BCs]
[./fixx1]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor_block]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.25
block = 0
[../]
[./strain_block]
type = ComputeIncrementalStrain
block = 0
displacements = 'disp_x'
implicit = false
[../]
[./stress_block]
type = ComputeFiniteStrainElasticStress
block = 0
[../]
[./density]
type = GenericConstantMaterial
block = 0
prop_names = density
prop_values = 2500
[../]
[]
[Executioner]
type = Transient
start_time = -0.005
end_time = 0.1
dt = 0.005
timestep_tolerance = 1e-6
l_tol = 1e-10
[./TimeIntegrator]
type = CentralDifference
[../]
[]
[Postprocessors]
[./disp_x]
type = NodalVariableValue
nodeid = 1
variable = disp_x
[../]
[./vel_x]
type = NodalVariableValue
nodeid = 1
variable = vel_x
[../]
[./accel_x]
type = NodalVariableValue
nodeid = 1
variable = accel_x
[../]
[]
[Outputs]
exodus = false
csv = true
perf_graph = false
[]
(modules/solid_mechanics/test/tests/central_difference/consistent/2D/2d_consistent_explicit.i)
# Test for the central difference time integrator for a 2D mesh
[Mesh]
type = GeneratedMesh
dim = 2
nx = 1
ny = 2
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 2.0
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./vel_x]
[../]
[./accel_x]
[../]
[./vel_y]
[../]
[./accel_y]
[../]
[]
[Kernels]
[./DynamicSolidMechanics]
displacements = 'disp_x disp_y'
[../]
[./inertia_x]
type = InertialForce
variable = disp_x
[../]
[./inertia_y]
type = InertialForce
variable = disp_y
[../]
[]
[AuxKernels]
[./accel_x]
type = TestNewmarkTI
variable = accel_x
displacement = disp_x
first = false
[../]
[./vel_x]
type = TestNewmarkTI
variable = vel_x
displacement = disp_x
[../]
[./accel_y]
type = TestNewmarkTI
variable = accel_y
displacement = disp_y
first = false
[../]
[./vel_y]
type = TestNewmarkTI
variable = vel_y
displacement = disp_y
[../]
[]
[BCs]
[./y_bot]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./x_bot]
type = FunctionDirichletBC
boundary = bottom
variable = disp_x
function = disp
preset = false
[../]
[]
[Functions]
[./disp]
type = PiecewiseLinear
x = '0.0 1.0 2.0 3.0 4.0' # time
y = '0.0 1.0 0.0 -1.0 0.0' # displacement
[../]
[]
[Materials]
[./elasticity_tensor_block]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.25
block = 0
[../]
[./strain_block]
type = ComputeIncrementalStrain
block = 0
displacements = 'disp_x disp_y'
implicit = false
[../]
[./stress_block]
type = ComputeFiniteStrainElasticStress
block = 0
[../]
[./density]
type = GenericConstantMaterial
block = 0
prop_names = density
prop_values = 1e4
[../]
[]
[Executioner]
type = Transient
start_time = 0
end_time = 0.1
dt = 0.005
timestep_tolerance = 1e-6
[./TimeIntegrator]
type = CentralDifference
[../]
[]
[Postprocessors]
[./_dt]
type = TimestepSize
[../]
[./accel_2x]
type = PointValue
point = '1.0 2.0 0.0'
variable = accel_x
[../]
[./accel_2y]
type = PointValue
point = '1.0 2.0 0.0'
variable = accel_y
[../]
[]
[Outputs]
exodus = false
csv = true
[]
(modules/contact/test/tests/verification/patch_tests/plane_3/plane3_template2.i)
[GlobalParams]
order = SECOND
displacements = 'disp_x disp_y'
[]
[Mesh]
file = plane3_mesh.e
[]
[Problem]
type = AugmentedLagrangianContactProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
maximum_lagrangian_update_iterations = 200
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./penetration]
[../]
[./saved_x]
[../]
[./saved_y]
[../]
[./diag_saved_x]
[../]
[./diag_saved_y]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[./tang_force_x]
[../]
[./tang_force_y]
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
save_in = 'saved_x saved_y'
extra_vector_tags = 'ref'
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./zeroslip_x]
type = ConstantAux
variable = inc_slip_x
boundary = 4
execute_on = timestep_begin
value = 0.0
[../]
[./zeroslip_y]
type = ConstantAux
variable = inc_slip_y
boundary = 4
execute_on = timestep_begin
value = 0.0
[../]
[./accum_slip_x]
type = AccumulateAux
variable = accum_slip_x
accumulate_from_variable = inc_slip_x
execute_on = timestep_end
[../]
[./accum_slip_y]
type = AccumulateAux
variable = accum_slip_y
accumulate_from_variable = inc_slip_y
execute_on = timestep_end
[../]
[./penetration]
type = PenetrationAux
variable = penetration
boundary = 4
paired_boundary = 3
[../]
[]
[Postprocessors]
[./bot_react_x]
type = NodalSum
variable = saved_x
boundary = 1
[../]
[./bot_react_y]
type = NodalSum
variable = saved_y
boundary = 1
[../]
[./top_react_x]
type = NodalSum
variable = saved_x
boundary = 5
[../]
[./top_react_y]
type = NodalSum
variable = saved_y
boundary = 5
[../]
[./ref_resid_x]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_x
[../]
[./ref_resid_y]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_y
[../]
[./sigma_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./sigma_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./disp_x2]
type = NodalVariableValue
nodeid = 1
variable = disp_x
[../]
[./disp_x11]
type = NodalVariableValue
nodeid = 10
variable = disp_x
[../]
[./disp_y2]
type = NodalVariableValue
nodeid = 1
variable = disp_y
[../]
[./disp_y11]
type = NodalVariableValue
nodeid = 10
variable = disp_y
[../]
[./_dt]
type = TimestepSize
[../]
[./num_lin_it]
type = NumLinearIterations
[../]
[./num_nonlin_it]
type = NumNonlinearIterations
[../]
[]
[BCs]
[./bot_y]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[../]
[./side_x]
type = DirichletBC
variable = disp_x
boundary = 2
value = 0.0
[../]
[./top_press]
type = Pressure
variable = disp_y
boundary = 5
factor = 109.89
[../]
[]
[Materials]
[./bot_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./bot_strain]
type = ComputeIncrementalStrain
block = '1'
[../]
[./bot_stress]
type = ComputeFiniteStrainElasticStress
block = '1'
[../]
[./top_elas_tens]
type = ComputeIsotropicElasticityTensor
block = '2'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./top_strain]
type = ComputeIncrementalStrain
block = '2'
[../]
[./top_stress]
type = ComputeFiniteStrainElasticStress
block = '2'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-8
l_max_its = 100
nl_max_its = 200
dt = 1.0
end_time = 1.0
num_steps = 10
dtmin = 1.0
l_tol = 1e-3
[]
[VectorPostprocessors]
[./x_disp]
type = NodalValueSampler
variable = disp_x
boundary = '1 3 4 5'
sort_by = x
[../]
[./cont_press]
type = NodalValueSampler
variable = contact_pressure
boundary = '3'
sort_by = x
[../]
[]
[Outputs]
print_linear_residuals = true
perf_graph = true
[./exodus]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[./chkfile]
type = CSV
show = 'bot_react_x bot_react_y disp_x2 disp_y2 disp_x11 disp_y11 sigma_yy sigma_zz top_react_x top_react_y x_disp cont_press'
execute_vector_postprocessors_on = timestep_end
[../]
[./outfile]
type = CSV
delimiter = ' '
execute_vector_postprocessors_on = none
[../]
[]
[Contact]
[./leftright]
secondary = 3
primary = 4
normalize_penalty = true
tangential_tolerance = 1e-3
penalty = 1e+9
al_penetration_tolerance = 1e-8
[../]
[]
(modules/combined/test/tests/DiffuseCreep/stress_flux_n_gb_relax.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 50
ny = 2
xmin = 0
xmax = 10
ymin = 0
ymax = 2
[]
[Variables]
[./c]
[./InitialCondition]
type = FunctionIC
function = 'x0:=5.0;thk:=0.5;m:=2;r:=abs(x-x0);v:=exp(-(r/thk)^m);0.1+0.1*v'
[../]
[../]
[./mu]
[../]
[./jx]
[../]
[./jy]
[../]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[AuxVariables]
[./gb]
family = LAGRANGE
order = FIRST
[../]
[./creep_strain_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./creep_strain_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./creep_strain_xy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xx]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_yy]
family = MONOMIAL
order = CONSTANT
[../]
[./stress_xy]
family = MONOMIAL
order = CONSTANT
[../]
[]
[Kernels]
[./conc]
type = CHSplitConcentration
variable = c
mobility = mobility_prop
chemical_potential_var = mu
[../]
[./chempot]
type = CHSplitChemicalPotential
variable = mu
chemical_potential_prop = mu_prop
c = c
[../]
[./flux_x]
type = CHSplitFlux
variable = jx
component = 0
mobility_name = mobility_prop
mu = mu
c = c
[../]
[./flux_y]
type = CHSplitFlux
variable = jy
component = 1
mobility_name = mobility_prop
mu = mu
c = c
[../]
[./time]
type = TimeDerivative
variable = c
[../]
[./TensorMechanics]
displacements = 'disp_x disp_y'
[../]
[]
[AuxKernels]
[./gb]
type = FunctionAux
variable = gb
function = 'x0:=5.0;thk:=0.5;m:=2;r:=abs(x-x0);v:=exp(-(r/thk)^m);v'
[../]
[./creep_strain_xx]
type = RankTwoAux
variable = creep_strain_xx
rank_two_tensor = creep_strain
index_i = 0
index_j = 0
[../]
[./creep_strain_yy]
type = RankTwoAux
variable = creep_strain_yy
rank_two_tensor = creep_strain
index_i = 1
index_j = 1
[../]
[./creep_strain_xy]
type = RankTwoAux
variable = creep_strain_xy
rank_two_tensor = creep_strain
index_i = 0
index_j = 1
[../]
[./stress_xx]
type = RankTwoAux
variable = stress_xx
rank_two_tensor = stress
index_i = 0
index_j = 0
[../]
[./stress_yy]
type = RankTwoAux
variable = stress_yy
rank_two_tensor = stress
index_i = 1
index_j = 1
[../]
[./stress_xy]
type = RankTwoAux
variable = stress_xy
rank_two_tensor = stress
index_i = 0
index_j = 1
[../]
[]
[Materials]
[./chemical_potential]
type = DerivativeParsedMaterial
block = 0
property_name = mu_prop
coupled_variables = c
expression = 'c'
derivative_order = 1
[../]
[./var_dependence]
type = DerivativeParsedMaterial
block = 0
expression = 'c*(1.0-c)'
coupled_variables = c
property_name = var_dep
derivative_order = 1
[../]
[./mobility]
type = CompositeMobilityTensor
block = 0
M_name = mobility_prop
tensors = diffusivity
weights = var_dep
coupled_variables = c
[../]
[./phase_normal]
type = PhaseNormalTensor
phase = gb
normal_tensor_name = gb_normal
[../]
[./aniso_tensor]
type = GBDependentAnisotropicTensor
gb = gb
bulk_parameter = 0.1
gb_parameter = 1
gb_normal_tensor_name = gb_normal
gb_tensor_prop_name = aniso_tensor
[../]
[./diffusivity]
type = GBDependentDiffusivity
gb = gb
bulk_parameter = 0.1
gb_parameter = 1
gb_normal_tensor_name = gb_normal
gb_tensor_prop_name = diffusivity
[../]
[./diffuse_strain_increment]
type = FluxBasedStrainIncrement
xflux = jx
yflux = jy
gb = gb
property_name = diffuse
[../]
[./gb_relax_prefactor]
type = DerivativeParsedMaterial
block = 0
expression = '0.01*(c-0.15)*gb'
coupled_variables = 'c gb'
property_name = gb_relax_prefactor
derivative_order = 1
[../]
[./gb_relax]
type = GBRelaxationStrainIncrement
property_name = gb_relax
prefactor_name = gb_relax_prefactor
gb_normal_name = gb_normal
[../]
[./creep_strain]
type = SumTensorIncrements
tensor_name = creep_strain
coupled_tensor_increment_names = 'diffuse gb_relax'
[../]
[./strain]
type = ComputeIncrementalStrain
displacements = 'disp_x disp_y'
[../]
[./stress]
type = ComputeStrainIncrementBasedStress
inelastic_strain_names = creep_strain
[../]
[./elasticity_tensor]
type = ComputeElasticityTensor
C_ijkl = '120.0 80.0'
fill_method = symmetric_isotropic
[../]
[]
[BCs]
[./Periodic]
[./cbc]
auto_direction = 'x y'
variable = c
[../]
[../]
[./fix_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./fix_y]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
petsc_options_iname = '-pc_type -ksp_grmres_restart -sub_ksp_type -sub_pc_type -pc_asm_overlap'
petsc_options_value = 'asm 31 preonly lu 1'
nl_rel_tol = 1e-10
nl_max_its = 5
l_tol = 1e-4
l_max_its = 20
dt = 1
num_steps = 5
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/central_difference/consistent/3D/3d_consistent_explicit.i)
# One element test to test the central difference time integrator in 3D.
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 2
xmin = 0.0
xmax = 1
ymin = 0.0
ymax = 1
zmin = 0.0
zmax = 2
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[AuxVariables]
[./vel_x]
[../]
[./accel_x]
[../]
[./vel_y]
[../]
[./accel_y]
[../]
[./vel_z]
[../]
[./accel_z]
[../]
[]
[AuxKernels]
[./accel_x]
type = TestNewmarkTI
variable = accel_x
displacement = disp_x
first = false
[../]
[./vel_x]
type = TestNewmarkTI
variable = vel_x
displacement = disp_x
[../]
[./accel_y]
type = TestNewmarkTI
variable = accel_y
displacement = disp_y
first = false
[../]
[./vel_y]
type = TestNewmarkTI
variable = vel_y
displacement = disp_x
[../]
[./accel_z]
type = TestNewmarkTI
variable = accel_z
displacement = disp_z
first = false
[../]
[./vel_z]
type = TestNewmarkTI
variable = vel_z
displacement = disp_z
[../]
[]
[Kernels]
[./DynamicSolidMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[./inertia_x]
type = InertialForce
variable = disp_x
[../]
[./inertia_y]
type = InertialForce
variable = disp_y
[../]
[./inertia_z]
type = InertialForce
variable = disp_z
[../]
[]
[BCs]
[./x_bot]
type = FunctionDirichletBC
variable = disp_x
boundary = 'back'
function = dispx
preset = false
[../]
[./y_bot]
type = FunctionDirichletBC
variable = disp_y
boundary = 'back'
function = dispy
preset = false
[../]
[./z_bot]
type = FunctionDirichletBC
variable = disp_z
boundary = 'back'
function = dispz
preset = false
[../]
[./Periodic]
[./x_dir]
variable = 'disp_x disp_y disp_z'
primary = 'left'
secondary = 'right'
translation = '1.0 0.0 0.0'
[../]
[./y_dir]
variable = 'disp_x disp_y disp_z'
primary = 'bottom'
secondary = 'top'
translation = '0.0 1.0 0.0'
[../]
[../]
[]
[Functions]
[./dispx]
type = PiecewiseLinear
x = '0.0 1.0 2.0 3.0 4.0' # time
y = '0.0 1.0 0.0 -1.0 0.0' # displacement
[../]
[./dispy]
type = ParsedFunction
expression = 0.1*t*t*sin(10*t)
[../]
[./dispz]
type = ParsedFunction
expression = 0.1*t*t*sin(20*t)
[../]
[]
[Materials]
[./elasticity_tensor_block]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.25
block = 0
[../]
[./strain_block]
type = ComputeIncrementalStrain
block = 0
displacements = 'disp_x disp_y disp_z'
implicit = false
[../]
[./stress_block]
type = ComputeFiniteStrainElasticStress
block = 0
[../]
[./density]
type = GenericConstantMaterial
block = 0
prop_names = density
prop_values = 1e4
[../]
[]
[Executioner]
type = Transient
start_time = -0.01
end_time = 0.1
dt = 0.005
timestep_tolerance = 1e-6
[./TimeIntegrator]
type = CentralDifference
[../]
[]
[Postprocessors]
[./accel_6x]
type = NodalVariableValue
nodeid = 6
variable = accel_x
[../]
[]
[Outputs]
exodus = false
csv = true
[]
(modules/solid_mechanics/include/materials/ComputeRSphericalIncrementalStrain.h)
// This file is part of the MOOSE framework
// https://mooseframework.inl.gov
//
// 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 "ComputeIncrementalStrain.h"
/**
* ComputeRSphericalIncrementalStrain defines a strain increment only
* for small strains in 1D spherical symmetry geometries. The strains in the
* polar and azimuthal directions are functions of the radial displacement.
*/
class ComputeRSphericalIncrementalStrain : public ComputeIncrementalStrain
{
public:
static InputParameters validParams();
ComputeRSphericalIncrementalStrain(const InputParameters & parameters);
virtual void initialSetup() override;
protected:
/// Computes the current and old deformation gradients with the assumptions for
/// 1D spherical symmetry geometries: \f$ \epsilon_{\theta} = \epsilon_{\phi} = \frac{u_r}{r} \f$
virtual void computeTotalStrainIncrement(RankTwoTensor & total_strain_increment) override;
/// the old value of the first component of the displacements vector
const VariableValue & _disp_old_0;
};
(modules/solid_mechanics/include/materials/Compute2DIncrementalStrain.h)
// This file is part of the MOOSE framework
// https://mooseframework.inl.gov
//
// 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 "ComputeIncrementalStrain.h"
/**
* Compute2DIncrementalStrain defines a strain increment only for
* incremental strains in 2D geometries, handling the out of plane strains.
* Compute2DIncrementalStrain contains a virtual method to define the out-of-plane strain
* as a general nonzero value in the inherited classes ComputePlaneIncrementalStrain
* and ComputeAxisymmetricRZIncrementalStrain.
*/
class Compute2DIncrementalStrain : public ComputeIncrementalStrain
{
public:
static InputParameters validParams();
Compute2DIncrementalStrain(const InputParameters & parameters);
void initialSetup() override;
protected:
virtual void displacementIntegrityCheck() override;
/**
* Computes the current and old deformation gradients with the assumptions for
* 2D geometries, including plane strain, generalized plane strain, and axisymmetric,
* and returns the total strain increment tensor
*/
virtual void computeTotalStrainIncrement(RankTwoTensor & total_strain_increment) override;
/**
* Computes the current out-of-plane component of the displacement gradient; as a virtual
* function, this function is overwritten for the specific geometries defined by inheriting
* classes
*/
virtual Real computeOutOfPlaneGradDisp() = 0;
/**
* Computes the old out-of-plane component of the displacement gradient; as a virtual function,
* this function is overwritten for the specific geometries defined by inheriting classes
*/
virtual Real computeOutOfPlaneGradDispOld() = 0;
const unsigned int _out_of_plane_direction;
};
(modules/solid_mechanics/include/materials/Compute1DIncrementalStrain.h)
// This file is part of the MOOSE framework
// https://mooseframework.inl.gov
//
// 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 "ComputeIncrementalStrain.h"
/**
* Compute1DIncrementalStrain defines a strain increment only for incremental
* small strains in 1D problems, handling strains in other two directions.
* Compute1DIncrementalStrain contains virtual methods to define the displacement gradients
* as a general nonzero value.
*/
class Compute1DIncrementalStrain : public ComputeIncrementalStrain
{
public:
static InputParameters validParams();
Compute1DIncrementalStrain(const InputParameters & parameters);
protected:
/**
* Computes the current and old deformation gradients with the assumptions for
* axisymmetric 1D problems, and returns the total strain increment tensor
*/
void computeTotalStrainIncrement(RankTwoTensor & total_strain_increment) override;
/**
* Computes the current dUy/dY; as a virtual function, this function is
* overwritten for the specific geometries defined by inheriting classes
*/
virtual Real computeGradDispYY() = 0;
/**
* Computes the old dUy/dY; as a virtual function, this function is
* overwritten for the specific geometries defined by inheriting classes
*/
virtual Real computeGradDispYYOld() = 0;
/**
* Computes the current dUz/dZ; as a virtual function, this function is
* overwritten for the specific geometries defined by inheriting classes
*/
virtual Real computeGradDispZZ() = 0;
/**
* Computes the old dUz/dZ; as a virtual function, this function is
* overwritten for the specific geometries defined by inheriting classes
*/
virtual Real computeGradDispZZOld() = 0;
};