- scaleThe scale factor for the predictor (can range from 0 to 1)
C++ Type:double
Description:The scale factor for the predictor (can range from 0 to 1)
SimplePredictor
The SimplePredictor has not been documented. The content listed below should be used as a starting point for documenting the class, which includes the typical automatic documentation associated with a MooseObject; however, what is contained is ultimately determined by what is necessary to make the documentation clear for users.
# SimplePredictor
!syntax description /Executioner/Predictor/SimplePredictor
## Overview
!! Replace these lines with information regarding the SimplePredictor object.
## Example Input File Syntax
!! Describe and include an example of how to use the SimplePredictor object.
!syntax parameters /Executioner/Predictor/SimplePredictor
!syntax inputs /Executioner/Predictor/SimplePredictor
!syntax children /Executioner/Predictor/SimplePredictor
Algorithm that will predict the next solution based on previous solutions.
Input Parameters
- skip_after_failed_timestepFalseSkip prediction in a repeated time step after a failed time step
Default:False
C++ Type:bool
Options:
Description:Skip prediction in a repeated time step after a failed time step
- skip_timesSkip the predictor if the current solution time is in this list of times
C++ Type:std::vector<double>
Options:
Description:Skip the predictor if the current solution time is in this list of times
- skip_times_oldSkip the predictor if the previous solution time is in this list of times
C++ Type:std::vector<double>
Options:
Description:Skip the predictor if the previous solution time is in this list of times
Optional Parameters
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector<std::string>
Options:
Description:Adds user-defined labels for accessing object parameters via control logic.
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Options:
Description:Set the enabled status of the MooseObject.
Advanced Parameters
Input Files
- (modules/xfem/test/tests/mechanical_constraint/glued_penalty.i)
- (modules/xfem/test/tests/solid_mechanics_basic/penny_crack.i)
- (modules/xfem/test/tests/pressure_bc/edge_2d_pressure.i)
- (test/tests/predictors/simple/predictor_skip_old_test.i)
- (modules/xfem/test/tests/solid_mechanics_basic/penny_crack_cfp.i)
- (modules/contact/test/tests/mechanical_constraint/glued_kinematic.i)
- (modules/xfem/test/tests/solid_mechanics_basic/test.i)
- (modules/tensor_mechanics/test/tests/2D_geometries/2D-RZ_test.i)
- (modules/combined/examples/xfem/xfem_mechanics_prescribed_growth.i)
- (modules/xfem/test/tests/corner_nodes_cut/corner_edge_cut.i)
- (modules/contact/test/tests/sliding_block/sliding/frictionless_aug.i)
- (modules/contact/test/tests/bouncing-block-contact/frictional-nodal-min-normal-lm-mortar-fb-tangential-lm-mortar-disp.i)
- (modules/xfem/test/tests/solid_mechanics_basic/edge_crack_3d_fatigue.i)
- (modules/contact/test/tests/sliding_block/in_and_out/frictional_lm.i)
- (modules/tensor_mechanics/test/tests/isotropic_elasticity_tensor/2D-axisymmetric_rz_test.i)
- (modules/contact/test/tests/frictional/sliding_elastic_blocks_2d/sliding_elastic_blocks_2d_tp.i)
- (modules/xfem/test/tests/second_order_elements/square_branch_quad9_2d.i)
- (modules/contact/test/tests/frictional/sliding_elastic_blocks_2d/sliding_elastic_blocks_2d.i)
- (modules/xfem/test/tests/corner_nodes_cut/corner_node_cut.i)
- (test/tests/predictors/simple/predictor_reference_residual_test.i)
- (modules/contact/test/tests/normal-nodal-lm-tan-tolerance/normal-nodal-lm-tan-tolerance.i)
- (modules/contact/test/tests/sliding_block/in_and_out/frictionless_penalty.i)
- (modules/xfem/test/tests/pressure_bc/edge_3d_pressure.i)
- (modules/xfem/test/tests/corner_nodes_cut/notch.i)
- (modules/xfem/test/tests/second_order_elements/square_branch_quad8_2d.i)
- (modules/xfem/test/tests/corner_nodes_cut/corner_node_cut_twice.i)
- (modules/xfem/test/tests/crack_tip_enrichment/edge_crack_2d.i)
- (modules/xfem/test/tests/solid_mechanics_basic/crack_propagation_2d.i)
- (modules/xfem/test/tests/solid_mechanics_basic/edge_crack_3d.i)
- (modules/contact/test/tests/frictional/single_point_2d/single_point_2d_predictor.i)
- (modules/xfem/test/tests/solid_mechanics_basic/square_branch_quad_2d.i)
- (modules/tensor_mechanics/test/tests/ad_2D_geometries/2D-RZ_test.i)
- (modules/contact/test/tests/bouncing-block-contact/frictional-mortar-fb-lm-mortar-disp.i)
- (modules/contact/test/tests/mechanical_constraint/frictionless_penalty.i)
- (modules/xfem/test/tests/solid_mechanics_basic/edge_crack_3d_mhs.i)
- (modules/contact/test/tests/sliding_block/in_and_out/frictional_02_penalty.i)
- (modules/contact/test/tests/sliding_block/sliding/frictional_04_penalty.i)
- (modules/xfem/test/tests/pressure_bc/inclined_edge_2d_pressure.i)
- (modules/xfem/test/tests/pressure_bc/2d_pressure_displaced_mesh.i)
- (modules/contact/test/tests/tension_release/8ElemTensionRelease.i)
- (modules/xfem/test/tests/solid_mechanics_basic/edge_crack_3d_propagation.i)
- (modules/contact/test/tests/sliding_block/in_and_out/frictionless_kinematic.i)
- (modules/contact/test/tests/tension_release/4ElemTensionRelease_mechanical_constraint.i)
- (modules/contact/test/tests/mechanical_constraint/frictionless_kinematic.i)
- (test/tests/time_integrators/abort/abort.i)
- (modules/contact/test/tests/tension_release/4ElemTensionRelease.i)
- (modules/xfem/test/tests/solid_mechanics_basic/square_branch_tri_2d.i)
- (modules/combined/examples/xfem/xfem_thermomechanics_stress_growth.i)
- (modules/xfem/test/tests/second_order_elements/square_branch_tri6_2d.i)
- (modules/xfem/test/tests/solid_mechanics_basic/elliptical_crack.i)
- (test/tests/predictors/simple/predictor_test_skip_after_failed_tstep.i)
- (modules/contact/test/tests/sliding_block/sliding/frictionless_penalty.i)
- (modules/contact/test/tests/sliding_block/sliding/frictional_02_penalty.i)
- (modules/contact/test/tests/sliding_block/in_and_out/frictional_04_penalty.i)
- (modules/contact/test/tests/mechanical_constraint/glued_penalty.i)
- (test/tests/predictors/simple/predictor_test.i)
- (modules/contact/test/tests/sliding_block/sliding/frictionless_kinematic.i)
- (modules/tensor_mechanics/test/tests/ad_isotropic_elasticity_tensor/2D-axisymmetric_rz_test.i)
- (modules/contact/test/tests/glued/glued_contact_mechanical_constraint_test.i)
- (modules/xfem/test/tests/moment_fitting/solid_mechanics_moment_fitting.i)
- (modules/contact/test/tests/sliding_block/sliding/frictional_02_aug.i)
- (test/tests/predictors/simple/predictor_skip_test.i)
- (modules/contact/test/tests/mechanical_constraint/frictionless_kinematic_gap_offsets.i)
(modules/xfem/test/tests/mechanical_constraint/glued_penalty.i)
[GlobalParams]
displacements = 'disp_x disp_y'
volumetric_locking_correction = false
[]
[XFEM]
geometric_cut_userobjects = 'line_seg_cut_uo'
qrule = volfrac
output_cut_plane = true
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 11
ny = 11
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.0
elem_type = QUAD4
[]
[UserObjects]
[./line_seg_cut_uo]
type = LineSegmentCutUserObject
cut_data = '1.0 0.5 0.0 0.5'
time_start_cut = 0.0
time_end_cut = 0.0
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = FINITE
planar_formulation = plane_strain
add_variables = true
[../]
[]
[Functions]
[./pull]
type = PiecewiseLinear
x='0 50 100'
y='0 0.02 0.1'
[../]
[]
[BCs]
[./bottomx]
type = DirichletBC
boundary = bottom
variable = disp_x
value = 0.0
[../]
[./bottomy]
type = DirichletBC
boundary = bottom
variable = disp_y
value = 0.0
[../]
[./topx]
type = DirichletBC
boundary = top
variable = disp_x
value = 0.0
[../]
[./topy]
type = FunctionDirichletBC
boundary = top
variable = disp_y
function = pull
[../]
[]
[Constraints]
[./disp_x]
type = XFEMSingleVariableConstraint
variable = disp_x
use_penalty = true
alpha = 1.0e8
use_displaced_mesh = true
geometric_cut_userobject = 'line_seg_cut_uo'
[../]
[./disp_y]
type = XFEMSingleVariableConstraint
variable = disp_y
use_penalty = true
alpha = 1.0e8
use_displaced_mesh = true
geometric_cut_userobject = 'line_seg_cut_uo'
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.3
block = 0
[../]
[./_elastic_strain]
type = ComputeFiniteStrainElasticStress
block = 0
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 8'
line_search = 'none'
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
# controls for linear iterations
l_max_its = 100
l_tol = 1e-2
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-14
nl_abs_tol = 1e-9
# time control
start_time = 0.0
dt = 1.0
end_time = 2.0
num_steps = 5000
max_xfem_update = 1
[]
[Outputs]
exodus = true
execute_on = timestep_end
[./console]
type = Console
output_linear = true
[../]
[]
(modules/xfem/test/tests/solid_mechanics_basic/penny_crack.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[XFEM]
qrule = volfrac
output_cut_plane = true
[]
[Mesh]
file = quarter_sym.e
[]
[UserObjects]
[./circle_cut_uo]
type = CircleCutUserObject
cut_data = '-0.5 -0.5 0
0.0 -0.5 0
-0.5 0 0'
[../]
[]
[AuxVariables]
[./SED]
order = CONSTANT
family = MONOMIAL
[../]
[]
[DomainIntegral]
integrals = 'Jintegral'
crack_front_points = '-0.5 0.0 0.0
-0.25 -0.07 0
-0.15 -0.15 0
-0.07 -0.25 0
0 -0.5 0'
crack_end_direction_method = CrackDirectionVector
crack_direction_vector_end_1 = '0 1 0'
crack_direction_vector_end_2 = '1 0 0'
crack_direction_method = CurvedCrackFront
intersecting_boundary = '3 4' #It would be ideal to use this, but can't use with XFEM yet
radius_inner = '0.3'
radius_outer = '0.6'
poissons_ratio = 0.3
youngs_modulus = 207000
block = 1
incremental = true
[]
[Modules/TensorMechanics/Master]
[./all]
strain = FINITE
add_variables = true
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
[../]
[]
[AuxKernels]
[./SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 1
[../]
[]
[Functions]
[./top_trac_z]
type = ConstantFunction
value = 10
[../]
[]
[BCs]
[./top_z]
type = FunctionNeumannBC
boundary = 2
variable = disp_z
function = top_trac_z
[../]
[./bottom_x]
type = DirichletBC
boundary = 1
variable = disp_x
value = 0.0
[../]
[./bottom_y]
type = DirichletBC
boundary = 1
variable = disp_y
value = 0.0
[../]
[./bottom_z]
type = DirichletBC
boundary = 1
variable = disp_z
value = 0.0
[../]
[./sym_y]
type = DirichletBC
boundary = 3
variable = disp_y
value = 0.0
[../]
[./sym_x]
type = DirichletBC
boundary = 4
variable = disp_x
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 207000
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 8'
line_search = 'none'
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
# controls for linear iterations
l_max_its = 100
l_tol = 1e-2
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-10
nl_abs_tol = 1e-10
# time control
start_time = 0.0
dt = 1.0
end_time = 1.0
[]
[Outputs]
file_base = penny_crack_out
execute_on = timestep_end
exodus = true
[./console]
type = Console
output_linear = true
[../]
[]
(modules/xfem/test/tests/pressure_bc/edge_2d_pressure.i)
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y'
volumetric_locking_correction = False
[]
[XFEM]
qrule = volfrac
output_cut_plane = true
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 9
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.0
elem_type = QUAD4
[]
[UserObjects]
[./line_seg_cut_uo]
type = LineSegmentCutUserObject
cut_data = '0.0 0.5 0.5 0.5'
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
generate_output = 'stress_xx stress_yy'
[../]
[]
[Functions]
[./pressure]
type = PiecewiseLinear
x = '0 1.0 2.0'
y = '0 500 1000'
[../]
[]
[BCs]
[./bottom_y]
type = DirichletBC
boundary = 0
variable = disp_y
value = 0.0
[../]
[./top_y]
type = DirichletBC
boundary = 2
variable = disp_y
value = 0.0
[../]
[./bottom_x]
type = DirichletBC
boundary = 0
variable = disp_x
value = 0.0
[../]
[]
[DiracKernels]
[./pressure_x]
type = XFEMPressure
variable = disp_x
component = 0
function = pressure
[../]
[./pressure_y]
type = XFEMPressure
variable = disp_y
component = 1
function = pressure
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 8'
line_search = 'none'
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
# controls for linear iterations
l_max_its = 100
l_tol = 1e-2
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-10
nl_abs_tol = 1e-12
# time control
start_time = 0.0
dt = 1
end_time = 2
[]
[Outputs]
file_base = edge_2d_pressure_out
exodus = true
[./console]
type = Console
output_linear = true
[../]
[]
(test/tests/predictors/simple/predictor_skip_old_test.i)
# The purpose of this test is to test the simple predictor. This is a very
# small, monotonically loaded block of material. If things are working right,
# the predictor should come very close to exactly nailing the solution on steps
# after the first step.
#This test checks to see that the predictor is skipped in the last step.
[Mesh]
type = GeneratedMesh
dim = 2
xmin = 0
xmax = 1
ymin = 0
ymax = 1
nx = 3
ny = 3
[]
[Functions]
[./ramp1]
type = ParsedFunction
value = 't'
[../]
[]
[Variables]
[./u]
order = FIRST
family = LAGRANGE
[../]
[]
[Kernels]
[./diff_u]
type = Diffusion
variable = u
[../]
[]
[BCs]
[./bot]
type = DirichletBC
variable = u
boundary = bottom
value = 0.0
[../]
[./ss2_x]
type = FunctionDirichletBC
variable = u
boundary = top
function = ramp1
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
nl_max_its = 15
nl_rel_tol = 1e-14
nl_abs_tol = 1e-14
start_time = 0.0
dt = 0.5
end_time = 1.5
[./Predictor]
type = SimplePredictor
scale = 1.0
skip_times_old = '1.0'
[../]
[]
[Postprocessors]
[./final_residual]
type = Residual
residual_type = final
[../]
[./initial_residual_before]
type = Residual
residual_type = initial_before_preset
[../]
[./initial_residual_after]
type = Residual
residual_type = initial_after_preset
[../]
[]
[Outputs]
csv = true
[]
(modules/xfem/test/tests/solid_mechanics_basic/penny_crack_cfp.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[XFEM]
qrule = volfrac
output_cut_plane = true
[]
[Mesh]
type = GeneratedMesh
dim = 3
nx = 3
ny = 3
nz = 3
xmin = -1.1
xmax = 1.1
ymin = -1.1
ymax = 1.1
zmin = -1.1
zmax = 1.1
elem_type = HEX8
displacements = 'disp_x disp_y disp_z'
[]
[UserObjects]
[./circle_cut_uo]
type = CircleCutUserObject
cut_data = '0 0 0
0 -0.5 0
-0.5 0 0'
[../]
[]
[AuxVariables]
[./SED]
order = CONSTANT
family = MONOMIAL
[../]
[]
[DomainIntegral]
integrals = 'KfromJIntegral'
crack_direction_method = CurvedCrackFront
radius_inner = '0.3'
radius_outer = '0.6'
poissons_ratio = 0.3
youngs_modulus = 207000
block = 0
crack_front_points_provider = circle_cut_uo
number_points_from_provider = 10
closed_loop = true
incremental = true
[]
[Modules/TensorMechanics/Master]
[./all]
strain = FINITE
add_variables = true
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
[../]
[]
[AuxKernels]
[./SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 0
[../]
[]
[Functions]
[./top_trac_z]
type = ConstantFunction
value = 10
[../]
[]
[BCs]
[./top_z]
type = FunctionNeumannBC
boundary = front
variable = disp_z
function = top_trac_z
[../]
[./bottom_x]
type = DirichletBC
boundary = back
variable = disp_x
value = 0.0
[../]
[./bottom_y]
type = DirichletBC
boundary = back
variable = disp_y
value = 0.0
[../]
[./bottom_z]
type = DirichletBC
boundary = back
variable = disp_z
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 207000
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 8'
line_search = 'none'
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
# controls for linear iterations
l_max_its = 100
l_tol = 1e-2
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-10
nl_abs_tol = 1e-10
# time control
start_time = 0.0
dt = 1.0
end_time = 1.0
[]
[Outputs]
execute_on = timestep_end
exodus = true
[./console]
type = Console
output_linear = true
[../]
[]
(modules/contact/test/tests/mechanical_constraint/glued_kinematic.i)
[Mesh]
file = blocks_2d_nogap.e
[]
[GlobalParams]
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[AuxVariables]
[./penetration]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[]
[Functions]
[./vertical_movement]
type = ParsedFunction
value = -t
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
add_variables = true
strain = FINITE
[../]
[]
[AuxKernels]
[./zeroslip_x]
type = ConstantAux
variable = inc_slip_x
boundary = 3
execute_on = timestep_begin
value = 0.0
[../]
[./zeroslip_y]
type = ConstantAux
variable = inc_slip_y
boundary = 3
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 = 3
paired_boundary = 2
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[../]
[./right_x]
type = DirichletBC
variable = disp_x
boundary = 4
#Initial gap is 0.01
value = -0.01
[../]
[./right_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 4
function = vertical_movement
[../]
[]
[Materials]
[./left]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1e7
poissons_ratio = 0.3
[../]
[./right]
type = ComputeIsotropicElasticityTensor
block = '2'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
block = '1 2'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
line_search = 'none'
l_max_its = 100
nl_max_its = 1000
dt = 0.01
end_time = 0.10
num_steps = 1000
l_tol = 1e-6
nl_rel_tol = 1e-10
nl_abs_tol = 1e-8
dtmin = 0.01
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
[]
[Outputs]
[./out]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[]
[Contact]
[./leftright]
primary = 2
secondary = 3
model = glued
penalty = 1e+6
[../]
[]
(modules/xfem/test/tests/solid_mechanics_basic/test.i)
[GlobalParams]
#displacements = 'disp_x disp_y'
volumetric_locking_correction = true
[]
[XFEM]
qrule = volfrac
output_cut_plane = true
use_crack_growth_increment = true
crack_growth_increment = 0.2
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 5
ny = 5
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.0
elem_type = QUAD4
[]
[UserObjects]
[./line_seg_cut_uo]
type = LineSegmentCutUserObject
cut_data = '1.0 0.5 0.3 0.5'
time_start_cut = 0.0
time_end_cut = 2.0
heal_always = true
[../]
[]
[Modules/TensorMechanics/Master]
displacements = 'disp_x disp_y'
[./all]
strain = FINITE
planar_formulation = plane_strain
add_variables = true
displacements = 'disp_x disp_y'
[../]
[]
[Functions]
[./pull]
type = PiecewiseLinear
x='0 50 100'
y='0 0.02 0.1'
[../]
[]
[BCs]
[./bottomx]
type = DirichletBC
boundary = bottom
variable = disp_x
value = 0.0
[../]
[./bottomy]
type = DirichletBC
boundary = bottom
variable = disp_y
value = 0.0
[../]
[./topx]
type = DirichletBC
boundary = top
variable = disp_x
value = 0.0
[../]
[./topy]
type = FunctionDirichletBC
boundary = top
variable = disp_y
function = pull
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.3
block = 0
[../]
[./_elastic_strain]
type = ComputeFiniteStrainElasticStress
block = 0
displacements = 'disp_x disp_y'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 8'
line_search = 'none'
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
# controls for linear iterations
l_max_its = 100
l_tol = 1e-2
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-14
nl_abs_tol = 1e-9
# time control
start_time = 0.0
dt = 1.0
end_time = 2.0
num_steps = 5000
max_xfem_update = 1
[]
[Outputs]
file_base = crack_propagation_2d_out
exodus = true
execute_on = timestep_end
[./console]
type = Console
output_linear = true
[../]
[]
(modules/tensor_mechanics/test/tests/2D_geometries/2D-RZ_test.i)
# Considers the mechanics solution for a thick spherical shell that is uniformly
# pressurized on the inner and outer surfaces, using 2D axisymmetric geometry.
# This test uses the strain calculators ComputeAxisymmetricRZSmallStrain
# and ComputeAxisymmetricRZIncrementalStrain which are generated by the
# TensorMechanics MasterAction depending on the cli_args given in the tests file.
#
# From Roark (Formulas for Stress and Strain, McGraw-Hill, 1975), the radially-dependent
# circumferential stress in a uniformly pressurized thick spherical shell is given by:
#
# S(r) = [ Pi[ri^3(2r^3+ro^3)] - Po[ro^3(2r^3+ri^3)] ] / [2r^3(ro^3-ri^3)]
#
# where:
# Pi = inner pressure
# Po = outer pressure
# ri = inner radius
# ro = outer radius
#
# The tests assume an inner and outer radii of 5 and 10, with internal and external
# pressures of 100000 and 200000, respectively. The resulting compressive tangential
# stress is largest at the inner wall and, from the above equation, has a value
# of -271429.
[Mesh]
file = 2D-RZ_mesh.e
[]
[GlobalParams]
displacements = 'disp_r disp_z'
[]
[Problem]
coord_type = RZ
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
add_variables = true
generate_output = 'stress_zz'
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e10
poissons_ratio = 0.345
[../]
[./stress]
[../]
[]
[BCs]
# pin particle along symmetry planes
[./no_disp_r]
type = DirichletBC
variable = disp_r
boundary = xzero
value = 0.0
[../]
[./no_disp_z]
type = DirichletBC
variable = disp_z
boundary = yzero
value = 0.0
[../]
# exterior and internal pressures
[./exterior_pressure_r]
type = Pressure
variable = disp_r
boundary = outer
component = 0
factor = 200000
[../]
[./exterior_pressure_z]
type = Pressure
variable = disp_z
boundary = outer
component = 1
factor = 200000
[../]
[./interior_pressure_r]
type = Pressure
variable = disp_r
boundary = inner
component = 0
factor = 100000
[../]
[./interior_pressure_z]
type = Pressure
variable = disp_z
boundary = inner
component = 1
factor = 100000
[../]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = ' 201 hypre boomeramg 10'
line_search = 'none'
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
nl_rel_tol = 5e-9
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
end_time = 1
# num_steps = 1000
dtmax = 5e6
dtmin = 1
[./TimeStepper]
type = IterationAdaptiveDT
dt = 1
optimal_iterations = 6
iteration_window = 0
linear_iteration_ratio = 100
[../]
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
[]
[Postprocessors]
[./dt]
type = TimestepSize
[../]
[]
[Outputs]
exodus = true
[]
(modules/combined/examples/xfem/xfem_mechanics_prescribed_growth.i)
# This is a demonstration of a simple mechanics simulation using XFEM
# to represent a single crack that is prescribed to propagate along
# a line over time.
[GlobalParams]
displacements = 'disp_x disp_y'
volumetric_locking_correction = true
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 11
ny = 11
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.0
elem_type = QUAD4
[]
[XFEM]
geometric_cut_userobjects = 'line_seg_cut_uo'
qrule = volfrac
output_cut_plane = true
[]
[UserObjects]
[./line_seg_cut_uo]
type = LineSegmentCutUserObject
cut_data = '1.0 0.5 0.1 0.5'
time_start_cut = 0.0
time_end_cut = 8.0
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = FINITE
planar_formulation = plane_strain
add_variables = true
[../]
[]
[Functions]
[./pull]
type = PiecewiseLinear
x='0 50'
y='0 0.02'
[../]
[]
[BCs]
[./bottomx]
type = DirichletBC
boundary = bottom
variable = disp_x
value = 0.0
[../]
[./bottomy]
type = DirichletBC
boundary = bottom
variable = disp_y
value = 0.0
[../]
[./topx]
type = DirichletBC
boundary = top
variable = disp_x
value = 0.0
[../]
[./topy]
type = FunctionDirichletBC
boundary = top
variable = disp_y
function = pull
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./_elastic_strain]
type = ComputeFiniteStrainElasticStress
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 8'
line_search = 'none'
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
# controls for linear iterations
l_max_its = 100
l_tol = 1e-2
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-14
nl_abs_tol = 1e-9
# time control
start_time = 0.0
dt = 1.0
end_time = 10.0
max_xfem_update = 5
[]
[Outputs]
exodus = true
execute_on = timestep_end
[./console]
type = Console
output_linear = true
[../]
[]
(modules/xfem/test/tests/corner_nodes_cut/corner_edge_cut.i)
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y'
volumetric_locking_correction = true
[]
[XFEM]
qrule = volfrac
output_cut_plane = true
[]
[UserObjects]
[./line_seg_cut_uo1]
type = LineSegmentCutUserObject
cut_data = '-0.0 0.5 0.5 0.5'
time_start_cut = 0.0
time_end_cut = 0.0
[../]
[./line_seg_cut_uo2]
type = LineSegmentCutUserObject
cut_data = '0.5 0.5 1.0 0.7'
time_start_cut = 0.0
time_end_cut = 0.0
[../]
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.0
elem_type = QUAD4
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
[../]
[]
[BCs]
[./top_x]
type = DirichletBC
boundary = 2
variable = disp_x
value = 0.0
[../]
[./top_y]
type = DirichletBC
boundary = 2
variable = disp_y
value = 0.1
[../]
[./bottom_y]
type = DirichletBC
boundary = 0
variable = disp_y
value = -0.1
[../]
[./bottom_x]
type = DirichletBC
boundary = 0
variable = disp_x
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 8'
line_search = 'none'
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
# controls for linear iterations
l_max_its = 100
l_tol = 1e-2
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-16
nl_abs_tol = 1e-10
# time control
start_time = 0.0
dt = 1.0
end_time = 1.0
[]
[Outputs]
exodus = true
[./console]
type = Console
output_linear = true
[../]
[]
(modules/contact/test/tests/sliding_block/sliding/frictionless_aug.i)
# This is a benchmark test that checks constraint based frictionless
# contact using the augmented lagrangian method. In this test a constant
# displacement is applied in the horizontal direction to simulate
# a small block come sliding down a larger block.
#
# The gold file is run on one processor
# and the benchmark case is run on a minimum of 4 processors to ensure no
# parallel variability in the contact pressure and penetration results.
#
[Mesh]
file = sliding_elastic_blocks_2d.e
patch_size = 80
[]
[GlobalParams]
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[AuxVariables]
[./saved_x]
[../]
[./saved_y]
[../]
[./contact_traction]
[../]
[./penetration]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[]
[Functions]
[./vertical_movement]
type = ParsedFunction
value = -t
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
add_variables = true
strain = FINITE
save_in = 'saved_x saved_y'
extra_vector_tags = 'ref'
[../]
[]
[AuxKernels]
[./zeroslip_x]
type = ConstantAux
variable = inc_slip_x
boundary = 3
execute_on = timestep_begin
value = 0.0
[../]
[./zeroslip_y]
type = ConstantAux
variable = inc_slip_y
boundary = 3
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 = 3
paired_boundary = 2
[../]
[]
[Postprocessors]
[./nonlinear_its]
type = NumNonlinearIterations
execute_on = timestep_end
[../]
[./penetration]
type = NodalVariableValue
variable = penetration
nodeid = 222
[../]
[./contact_pressure]
type = NodalVariableValue
variable = contact_pressure
nodeid = 222
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[../]
[./right_x]
type = DirichletBC
variable = disp_x
boundary = 4
value = -0.02
[../]
[./right_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 4
function = vertical_movement
[../]
[]
[Materials]
[./left]
type = ComputeIsotropicElasticityTensor
block = '1 2'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
block = '1 2'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
dt = 0.1
end_time = 15
num_steps = 200
l_tol = 1e-6
nl_rel_tol = 1e-7
nl_abs_tol = 1e-6
dtmin = 0.01
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
[]
[Outputs]
interval = 10
[./out]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[]
[Problem]
type = AugmentedLagrangianContactProblem
solution_variables = 'disp_x disp_y'
extra_tag_vectors = 'ref'
reference_vector = 'ref'
maximum_lagrangian_update_iterations = 25
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Contact]
[./leftright]
secondary = 3
primary = 2
model = frictionless
penalty = 1e+7
normalize_penalty = true
formulation = augmented_lagrange
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
al_penetration_tolerance = 1e-9
[../]
[]
(modules/contact/test/tests/bouncing-block-contact/frictional-nodal-min-normal-lm-mortar-fb-tangential-lm-mortar-disp.i)
starting_point = 2e-1
# We offset slightly so we avoid the case where the bottom of the secondary block and the top of the
# primary block are perfectly vertically aligned which can cause the backtracking line search some
# issues for a coarse mesh (basic line search handles that fine)
offset = 1e-2
[GlobalParams]
displacements = 'disp_x disp_y'
diffusivity = 1e0
scaling = 1e0
[]
[Mesh]
[./file_mesh]
type = FileMeshGenerator
file = long-bottom-block-1elem-blocks-coarse.e
[../]
[]
[Variables]
[./disp_x]
block = '1 2'
# order = SECOND
[../]
[./disp_y]
block = '1 2'
# order = SECOND
[../]
[./frictional_normal_lm]
block = 3
# family = MONOMIAL
# order = CONSTANT
[../]
[./frictional_tangential_lm]
block = 3
family = MONOMIAL
order = CONSTANT
[../]
[]
[ICs]
[./disp_y]
block = 2
variable = disp_y
value = ${fparse starting_point + offset}
type = ConstantIC
[../]
[]
[Kernels]
[./disp_x]
type = MatDiffusion
variable = disp_x
[../]
[./disp_y]
type = MatDiffusion
variable = disp_y
[../]
[]
[Constraints]
[frictional_normal_lm]
type = NormalNodalLMMechanicalContact
secondary = 10
primary = 20
variable = frictional_normal_lm
primary_variable = disp_x
disp_y = disp_y
ncp_function_type = min
[../]
[normal_x]
type = NormalMortarMechanicalContact
primary_boundary = 20
secondary_boundary = 10
primary_subdomain = 4
secondary_subdomain = 3
variable = frictional_normal_lm
secondary_variable = disp_x
component = x
use_displaced_mesh = true
compute_lm_residuals = false
[]
[normal_y]
type = NormalMortarMechanicalContact
primary_boundary = 20
secondary_boundary = 10
primary_subdomain = 4
secondary_subdomain = 3
variable = frictional_normal_lm
secondary_variable = disp_y
component = y
use_displaced_mesh = true
compute_lm_residuals = false
[]
[frictional_tangential_lm]
type = TangentialMortarLMMechanicalContact
primary_boundary = 20
secondary_boundary = 10
primary_subdomain = 4
secondary_subdomain = 3
variable = frictional_tangential_lm
secondary_variable = disp_x
secondary_disp_y = disp_y
use_displaced_mesh = true
compute_primal_residuals = false
contact_pressure = frictional_normal_lm
friction_coefficient = .1
ncp_function_type = fb
[]
[tangential_x]
type = TangentialMortarMechanicalContact
primary_boundary = 20
secondary_boundary = 10
primary_subdomain = 4
secondary_subdomain = 3
variable = frictional_tangential_lm
secondary_variable = disp_x
component = x
use_displaced_mesh = true
compute_lm_residuals = false
[]
[tangential_y]
type = TangentialMortarMechanicalContact
primary_boundary = 20
secondary_boundary = 10
primary_subdomain = 4
secondary_subdomain = 3
variable = frictional_tangential_lm
secondary_variable = disp_y
component = y
use_displaced_mesh = true
compute_lm_residuals = false
[]
[]
[BCs]
[./botx]
type = DirichletBC
variable = disp_x
boundary = 40
value = 0.0
[../]
[./boty]
type = DirichletBC
variable = disp_y
boundary = 40
value = 0.0
[../]
[./topy]
type = FunctionDirichletBC
variable = disp_y
boundary = 30
function = '${starting_point} * cos(2 * pi / 40 * t) + ${offset}'
[../]
[./leftx]
type = FunctionDirichletBC
variable = disp_x
boundary = 50
function = '1e-2 * t'
[../]
[]
[Executioner]
type = Transient
end_time = 200
dt = 5
dtmin = .1
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason -pc_svd_monitor -snes_linesearch_monitor -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -mat_mffd_err'
petsc_options_value = 'lu NONZERO 1e-15 1e-5'
l_max_its = 30
nl_max_its = 20
line_search = 'none'
snesmf_reuse_base = false
# [./Predictor]
# type = SimplePredictor
# scale = 1.0
# [../]
[]
[Debug]
show_var_residual_norms = true
[]
[Outputs]
exodus = true
# checkpoint = true
# [./dofmap]
# type = DOFMap
# execute_on = 'initial'
# [../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Postprocessors]
[./num_nl]
type = NumNonlinearIterations
[../]
[./cumulative]
type = CumulativeValuePostprocessor
postprocessor = num_nl
[../]
[contact]
type = ContactDOFSetSize
variable = frictional_normal_lm
subdomain = '3'
execute_on = 'nonlinear timestep_end'
[]
[]
(modules/xfem/test/tests/solid_mechanics_basic/edge_crack_3d_fatigue.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[XFEM]
geometric_cut_userobjects = 'cut_mesh'
qrule = volfrac
output_cut_plane = true
[]
[Mesh]
type = GeneratedMesh
dim = 3
nx = 5
ny = 5
nz = 2
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.0
zmin = 0.0
zmax = 0.2
elem_type = HEX8
[]
[UserObjects]
[./cut_mesh]
type = CrackMeshCut3DUserObject
mesh_file = mesh_edge_crack.xda
growth_dir_method = 'function'
size_control = 1
n_step_growth = 1
growth_speed_method = 'fatigue'
function_x = growth_func_x
function_y = growth_func_y
function_z = growth_func_z
function_v = growth_func_v
crack_front_nodes = '7 6 5 4'
[../]
[]
[Functions]
[./growth_func_x]
type = ParsedFunction
value = 1
[../]
[./growth_func_y]
type = ParsedFunction
value = 0
[../]
[./growth_func_z]
type = ParsedFunction
value = 0
[../]
[./growth_func_v]
type = ParsedFunction
vars = 'dN'
vals = 'fatigue'
value = dN
[../]
[]
[Postprocessors]
[./fatigue]
type = ParisLaw
max_growth_size = 0.1
paris_law_c = 1e-13
paris_law_m = 2.5
[../]
[]
[DomainIntegral]
integrals = 'Jintegral InteractionIntegralKI InteractionIntegralKII'
displacements = 'disp_x disp_y disp_z'
crack_front_points_provider = cut_mesh
number_points_from_provider = 4
crack_direction_method = CurvedCrackFront
radius_inner = '0.15'
radius_outer = '0.45'
poissons_ratio = 0.3
youngs_modulus = 207000
block = 0
incremental = true
[]
[Modules/TensorMechanics/Master]
[./all]
strain = FINITE
add_variables = true
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
[../]
[]
[Functions]
[./top_trac_y]
type = ConstantFunction
value = 10
[../]
[]
[BCs]
[./top_y]
type = FunctionNeumannBC
boundary = top
variable = disp_y
function = top_trac_y
[../]
[./bottom_x]
type = DirichletBC
boundary = bottom
variable = disp_x
value = 0.0
[../]
[./bottom_y]
type = DirichletBC
boundary = bottom
variable = disp_y
value = 0.0
[../]
[./bottom_z]
type = DirichletBC
boundary = bottom
variable = disp_z
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 207000
poissons_ratio = 0.3
block = 0
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
block = 0
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 8'
line_search = 'none'
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
# controls for linear iterations
l_max_its = 100
l_tol = 1e-2
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-12
nl_abs_tol = 1e-10
# time control
start_time = 0.0
dt = 1.0
end_time = 4.0
max_xfem_update = 1
[]
[Outputs]
file_base = edge_crack_3d_fatigue_out
execute_on = 'timestep_end'
exodus = true
[./console]
type = Console
output_linear = true
[../]
[]
(modules/contact/test/tests/sliding_block/in_and_out/frictional_lm.i)
[Mesh]
patch_size = 80
[file]
type = FileMeshGenerator
file = sliding_elastic_blocks_2d.e
[]
[secondary]
input = file
type = LowerDBlockFromSidesetGenerator
sidesets = '3'
new_block_id = '30'
[]
[primary]
input = secondary
type = LowerDBlockFromSidesetGenerator
sidesets = '2'
new_block_id = '20'
[]
[]
[GlobalParams]
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Variables]
[normal_lm]
block = '30'
[]
[tangential_lm]
block = '30'
family = MONOMIAL
order = CONSTANT
[]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[../]
[./right_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 4
function = horizontal_movement
[../]
[./right_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 4
function = vertical_movement
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
add_variables = true
strain = FINITE
block = '1 2'
[../]
[]
[Materials]
[./tensor]
type = ComputeIsotropicElasticityTensor
block = '1 2'
youngs_modulus = 1e6
poissons_ratio = 0.3
constant_on = SUBDOMAIN
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
block = '1 2'
[../]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15'
end_time = 15
dt = 0.1
dtmin = 0.01
l_max_its = 30
nl_max_its = 20
nl_abs_tol = 1e-9
nl_rel_tol = 1e-9
line_search = 'none'
timestep_tolerance = 1e-6
snesmf_reuse_base = false
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
[]
[Debug]
show_var_residual_norms = true
[]
[Outputs]
sync_times = '1 2 3 4 5 6 7 8 9 10 11 12 13 14 15'
[out]
type = Exodus
sync_only = true
[]
[dof]
execute_on = 'initial'
type = DOFMap
[]
[csv]
type = CSV
execute_on = 'nonlinear timestep_end'
[]
[]
[Functions]
[./vertical_movement]
type = ParsedFunction
value = -t
[../]
[./horizontal_movement]
type = ParsedFunction
value = -0.04*sin(4*t)+0.02
[../]
[]
[Constraints]
[./lm]
type = NormalNodalLMMechanicalContact
secondary = 3
primary = 2
variable = normal_lm
primary_variable = disp_x
disp_y = disp_y
ncp_function_type = min
use_displaced_mesh = true
c = 1e6 # relative scale difference between pressure and gap
[../]
[normal_x]
type = NormalMortarMechanicalContact
primary_boundary = '2'
secondary_boundary = '3'
primary_subdomain = '20'
secondary_subdomain = '30'
variable = normal_lm
secondary_variable = disp_x
component = x
use_displaced_mesh = true
compute_lm_residuals = false
[]
[normal_y]
type = NormalMortarMechanicalContact
primary_boundary = '2'
secondary_boundary = '3'
primary_subdomain = '20'
secondary_subdomain = '30'
variable = normal_lm
secondary_variable = disp_y
component = y
use_displaced_mesh = true
compute_lm_residuals = false
[]
[tangential_lm]
type = TangentialMortarLMMechanicalContact
primary_boundary = '2'
secondary_boundary = '3'
primary_subdomain = '20'
secondary_subdomain = '30'
variable = tangential_lm
secondary_variable = disp_x
secondary_disp_y = disp_y
use_displaced_mesh = true
compute_primal_residuals = false
contact_pressure = normal_lm
friction_coefficient = .4
ncp_function_type = fb
c = 1000 # relative scale difference between pressure and velocity
[]
[tangential_x]
type = TangentialMortarMechanicalContact
primary_boundary = '2'
secondary_boundary = '3'
primary_subdomain = '20'
secondary_subdomain = '30'
variable = tangential_lm
secondary_variable = disp_x
component = x
use_displaced_mesh = true
compute_lm_residuals = false
[]
[tangential_y]
type = TangentialMortarMechanicalContact
primary_boundary = '2'
secondary_boundary = '3'
primary_subdomain = '20'
secondary_subdomain = '30'
variable = tangential_lm
secondary_variable = disp_y
component = y
use_displaced_mesh = true
compute_lm_residuals = false
[]
[]
[Postprocessors]
[./num_nl]
type = NumNonlinearIterations
[../]
[./cumulative]
type = CumulativeValuePostprocessor
postprocessor = num_nl
[../]
[lin]
type = NumLinearIterations
[]
[cum_lin]
type = CumulativeValuePostprocessor
postprocessor = lin
[]
[contact]
type = ContactDOFSetSize
variable = normal_lm
subdomain = '30'
execute_on = 'nonlinear timestep_end'
[]
[]
(modules/tensor_mechanics/test/tests/isotropic_elasticity_tensor/2D-axisymmetric_rz_test.i)
[Mesh]
type = GeneratedMesh
dim = 2
elem_type = QUAD8
[]
[GlobalParams]
displacements = 'disp_r disp_z'
[]
[Problem]
coord_type = RZ
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
add_variables = true
[../]
[]
[AuxVariables]
[./stress_theta]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./stress_theta]
type = RankTwoAux
rank_two_tensor = stress
index_i = 2
index_j = 2
variable = stress_theta
execute_on = timestep_end
[../]
[]
[Materials]
[./elasticity_tensor]
#Material constants selected to match isotropic lambda and shear modulus case
type = ComputeElasticityTensor
C_ijkl = '1022726 113636 113636 1022726 454545'
fill_method = axisymmetric_rz
[../]
[./elastic_stress]
type = ComputeLinearElasticStress
[../]
[]
[BCs]
# pin particle along symmetry planes
[./no_disp_r]
type = DirichletBC
variable = disp_r
boundary = left
value = 0.0
[../]
[./no_disp_z]
type = DirichletBC
variable = disp_z
boundary = bottom
value = 0.0
[../]
# exterior and internal pressures
[./exterior_pressure_r]
type = Pressure
variable = disp_r
boundary = right
component = 0
factor = 200000
[../]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = ' 201 hypre boomeramg 10'
line_search = 'none'
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
nl_rel_tol = 5e-9
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
end_time = 1
num_steps = 1000
dtmax = 5e6
dtmin = 1
[./TimeStepper]
type = IterationAdaptiveDT
dt = 1
optimal_iterations = 6
iteration_window = 0
linear_iteration_ratio = 100
[../]
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
[]
[Postprocessors]
[./dt]
type = TimestepSize
[../]
[]
[Outputs]
file_base = 2D-axisymmetric_rz_test_out
exodus = true
[]
(modules/contact/test/tests/frictional/sliding_elastic_blocks_2d/sliding_elastic_blocks_2d_tp.i)
[Mesh]
file = sliding_elastic_blocks_2d.e
[]
[GlobalParams]
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[AuxVariables]
[./penetration]
[../]
[./saved_x]
[../]
[./saved_y]
[../]
[./diag_saved_x]
[../]
[./diag_saved_y]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[./accum_slip]
[../]
[./tang_force_x]
[../]
[./tang_force_y]
[../]
[]
[Functions]
[./vertical_movement]
type = ParsedFunction
value = -t
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
add_variables = true
strain = FINITE
save_in = 'saved_x saved_y'
diag_save_in = 'diag_saved_x diag_saved_y'
[../]
[]
[AuxKernels]
[./inc_slip_x]
type = PenetrationAux
variable = inc_slip_x
quantity = incremental_slip_x
boundary = 3
paired_boundary = 2
[../]
[./inc_slip_y]
type = PenetrationAux
variable = inc_slip_y
quantity = incremental_slip_y
boundary = 3
paired_boundary = 2
[../]
[./accum_slip]
type = PenetrationAux
variable = accum_slip
execute_on = timestep_end
quantity = accumulated_slip
boundary = 3
paired_boundary = 2
[../]
[./tangential_force_x]
type = PenetrationAux
variable = tang_force_x
execute_on = timestep_end
quantity = tangential_force_x
boundary = 3
paired_boundary = 2
[../]
[./tangential_force_y]
type = PenetrationAux
variable = tang_force_y
execute_on = timestep_end
quantity = tangential_force_y
boundary = 3
paired_boundary = 2
[../]
[./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 = 3
paired_boundary = 2
[../]
[]
[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 = 4
[../]
[./top_react_y]
type = NodalSum
variable = saved_y
boundary = 4
[../]
[./ref_resid_x]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_x
[../]
[./ref_resid_y]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_y
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[../]
[./right_x]
type = DirichletBC
variable = disp_x
boundary = 4
value = -0.005
[../]
[./right_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 4
function = vertical_movement
[../]
[]
[Materials]
[./left]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1.0e7
poissons_ratio = 0.3
[../]
[./right]
type = ComputeIsotropicElasticityTensor
block = '2'
youngs_modulus = 1.0e6
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
block = '1 2'
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 100
nl_max_its = 1000
dt = 0.01
end_time = 0.05
num_steps = 1000
nl_rel_tol = 1e-16
nl_abs_tol = 1e-09
dtmin = 0.01
l_tol = 1e-3
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
[]
[Outputs]
print_linear_residuals = true
perf_graph = true
[./out]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[]
[Contact]
[./leftright]
secondary = 3
primary = 2
model = coulomb
formulation = tangential_penalty
friction_coefficient = '0.25'
penalty = 1e6
[../]
[]
[Dampers]
[./contact_slip]
type = ContactSlipDamper
secondary = 3
primary = 2
[../]
[]
(modules/xfem/test/tests/second_order_elements/square_branch_quad9_2d.i)
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
volumetric_locking_correction = false
[]
[XFEM]
qrule = volfrac
output_cut_plane = true
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.0
elem_type = QUAD9
[]
[UserObjects]
[./line_seg_cut_set_uo]
type = LineSegmentCutSetUserObject
cut_data = '-1.0000e-10 6.6340e-01 6.6340e-01 -1.0000e-10 0.0 1.0
3.3120e-01 3.3200e-01 1.0001e+00 3.3200e-01 1.0 2.0'
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
[../]
[]
[Functions]
[./right_disp_x]
type = PiecewiseLinear
x = '0 1.0 2.0 3.0'
y = '0 0.005 0.01 0.01'
[../]
[./top_disp_y]
type = PiecewiseLinear
x = '0 1.0 2.0 3.0'
y = '0 0.005 0.01 0.01'
[../]
[]
[BCs]
[./right_x]
type = FunctionDirichletBC
boundary = 1
variable = disp_x
function = right_disp_x
[../]
[./top_y]
type = FunctionDirichletBC
boundary = 2
variable = disp_y
function = top_disp_y
[../]
[./bottom_y]
type = DirichletBC
boundary = 0
variable = disp_y
value = 0.0
[../]
[./left_x]
type = DirichletBC
boundary = 3
variable = disp_x
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 8'
line_search = 'none'
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
# controls for linear iterations
l_max_its = 100
l_tol = 1e-2
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-16
nl_abs_tol = 1e-10
# time control
start_time = 0.0
dt = 1.0
end_time = 2.2
num_steps = 5000
[]
[Outputs]
exodus = true
[./console]
type = Console
output_linear = true
[../]
[]
(modules/contact/test/tests/frictional/sliding_elastic_blocks_2d/sliding_elastic_blocks_2d.i)
[Mesh]
file = sliding_elastic_blocks_2d.e
[]
[GlobalParams]
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[AuxVariables]
[./penetration]
[../]
[./saved_x]
[../]
[./saved_y]
[../]
[./diag_saved_x]
[../]
[./diag_saved_y]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[./accum_slip]
[../]
[./tang_force_x]
[../]
[./tang_force_y]
[../]
[]
[Functions]
[./vertical_movement]
type = ParsedFunction
value = -t
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
add_variables = true
strain = FINITE
save_in = 'saved_x saved_y'
diag_save_in = 'diag_saved_x diag_saved_y'
[../]
[]
[AuxKernels]
[./inc_slip_x]
type = PenetrationAux
variable = inc_slip_x
quantity = incremental_slip_x
boundary = 3
paired_boundary = 2
[../]
[./inc_slip_y]
type = PenetrationAux
variable = inc_slip_y
quantity = incremental_slip_y
boundary = 3
paired_boundary = 2
[../]
[./accum_slip]
type = PenetrationAux
variable = accum_slip
execute_on = timestep_end
quantity = accumulated_slip
boundary = 3
paired_boundary = 2
[../]
[./tangential_force_x]
type = PenetrationAux
variable = tang_force_x
execute_on = timestep_end
quantity = tangential_force_x
boundary = 3
paired_boundary = 2
[../]
[./tangential_force_y]
type = PenetrationAux
variable = tang_force_y
execute_on = timestep_end
quantity = tangential_force_y
boundary = 3
paired_boundary = 2
[../]
[./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 = 3
paired_boundary = 2
[../]
[]
[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 = 4
[../]
[./top_react_y]
type = NodalSum
variable = saved_y
boundary = 4
[../]
[./ref_resid_x]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_x
[../]
[./ref_resid_y]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_y
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[../]
[./right_x]
type = DirichletBC
variable = disp_x
boundary = 4
value = -0.005
[../]
[./right_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 4
function = vertical_movement
[../]
[]
[Materials]
[./left]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1.0e7
poissons_ratio = 0.3
[../]
[./right]
type = ComputeIsotropicElasticityTensor
block = '2'
youngs_modulus = 1.0e6
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
block = '1 2'
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 100
nl_max_its = 1000
dt = 0.01
end_time = 0.05
num_steps = 1000
nl_rel_tol = 1e-16
nl_abs_tol = 1e-09
dtmin = 0.01
l_tol = 1e-3
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
[]
[Outputs]
file_base = sliding_elastic_blocks_2d_out
print_linear_residuals = true
perf_graph = true
[./exodus]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[]
[Contact]
[./leftright]
secondary = 3
primary = 2
model = coulomb
friction_coefficient = '0.25'
penalty = 1e6
[../]
[]
[Dampers]
[./contact_slip]
type = ContactSlipDamper
secondary = 3
primary = 2
[../]
[]
(modules/xfem/test/tests/corner_nodes_cut/corner_node_cut.i)
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y'
volumetric_locking_correction = true
[]
[XFEM]
qrule = volfrac
output_cut_plane = true
[]
[UserObjects]
[./line_seg_cut_uo]
type = LineSegmentCutUserObject
cut_data = '0.0 0.5 0.5 0.5'
time_start_cut = 0.0
time_end_cut = 0.0
[../]
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 4
ny = 4
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.0
elem_type = QUAD4
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
[../]
[]
[BCs]
[./top_x]
type = DirichletBC
boundary = 2
variable = disp_x
value = 0.0
[../]
[./top_y]
type = DirichletBC
boundary = 2
variable = disp_y
value = 0.1
[../]
[./bottom_y]
type = DirichletBC
boundary = 0
variable = disp_y
value = 0.0
[../]
[./bottom_x]
type = DirichletBC
boundary = 0
variable = disp_x
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 8'
line_search = 'none'
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
# max_xfem_update = 1
# controls for linear iterations
l_max_its = 100
l_tol = 1e-2
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-16
nl_abs_tol = 1e-10
# time control
start_time = 0.0
dt = 1.0
end_time = 1.0
[]
[Outputs]
exodus = true
[./console]
type = Console
output_linear = true
[../]
[]
(test/tests/predictors/simple/predictor_reference_residual_test.i)
# The purpose of this test is to ensure the SimplePredictor resets the std::precision
[Mesh]
type = GeneratedMesh
dim = 2
nx = 3
ny = 3
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[./u]
[../]
[]
[Kernels]
[./diff_u]
type = Diffusion
variable = u
extra_vector_tags = 'ref'
[../]
[]
[BCs]
[./bot]
type = DirichletBC
variable = u
boundary = bottom
value = 0.0
[../]
[./top]
type = FunctionDirichletBC
variable = u
boundary = top
function = 't'
[../]
[]
[Executioner]
type = Transient
start_time = 0.0
dt = 0.5
end_time = 1.0
[./Predictor]
type = SimplePredictor
scale = 1.0e-10
[../]
[]
(modules/contact/test/tests/normal-nodal-lm-tan-tolerance/normal-nodal-lm-tan-tolerance.i)
[GlobalParams]
displacements = 'disp_x disp_y'
preset = false
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 2blk-gap_no1000.e
[]
[primary]
type = LowerDBlockFromSidesetGenerator
input = file
sidesets = '100'
new_block_id = '3'
[]
[secondary]
type = LowerDBlockFromSidesetGenerator
input = primary
sidesets = '101'
new_block_id = '4'
[]
[]
[Modules/TensorMechanics/Master]
[all]
displacements = 'disp_x disp_y'
strain = FINITE
add_variables = true
block = '1 2'
use_automatic_differentiation = true
scaling = 1e-4
[]
[]
[Materials]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1e5
poissons_ratio = 0.345
block = '1 2'
[]
[_elastic_strain]
type = ADComputeFiniteStrainElasticStress
block = '1 2'
[]
[]
[Variables]
[mortar_normal_lm]
scaling = 1.0e-3
block = '4'
[]
[]
[Constraints]
[frictional_normal_lm]
type = NormalNodalLMMechanicalContact
secondary = 101
primary = 100
variable = mortar_normal_lm
primary_variable = disp_x
disp_y = disp_y
ncp_function_type = min
c = 1.0e4
tangential_tolerance = .05
[]
[normal_x]
type = NormalMortarMechanicalContact
primary_boundary = 100
secondary_boundary = 101
primary_subdomain = 3
secondary_subdomain = 4
variable = mortar_normal_lm
secondary_variable = disp_x
component = x
use_displaced_mesh = true
compute_lm_residuals = false
[]
[normal_y]
type = NormalMortarMechanicalContact
primary_boundary = 100
secondary_boundary = 101
primary_subdomain = 3
secondary_subdomain = 4
variable = mortar_normal_lm
secondary_variable = disp_y
component = y
use_displaced_mesh = true
compute_lm_residuals = false
[]
[]
[Functions]
[disp_bc]
type = PiecewiseLinear
x = '0 10.0'
y = '0 -0.30'
[]
[]
[BCs]
[left_x]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0.0
[]
[left_y]
type = DirichletBC
variable = disp_y
boundary = 'left'
value = 0.0
[]
[right_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 'right'
function = disp_bc # '-30e-3 * t'
[]
[right_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 'right'
function = 0
[]
[]
[Preconditioning]
[fmp]
type = FDP
full = true
finite_difference_type = standard
[]
[]
[Executioner]
solve_type = NEWTON
type = Transient
num_steps = 10
dt = 1
dtmin = 1
nl_rel_tol = 1e-12
nl_abs_tol = 1e-13
petsc_options = '-ksp_monitor_true_residual -snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -snes_linesearch_type -pc_factor_shift_type -snes_max_it '
'-ksp_max_it'
petsc_options_value = 'lu basic NONZERO 20 30'
[Predictor]
type = SimplePredictor
scale = 1
[]
[]
[Outputs]
checkpoint = true
exodus = true
print_linear_residuals = false
[dof]
type = DOFMap
execute_on = 'initial'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/contact/test/tests/sliding_block/in_and_out/frictionless_penalty.i)
# This is a benchmark test that checks constraint based frictionless
# contact using the penalty method. In this test a sinusoidal
# displacement is applied in the horizontal direction to simulate
# a small block come in and out of contact as it slides down a larger block.
#
# The sinusoid is of the form 0.4sin(4t)+0.2. The gold file is run
# on one processor and the benchmark
# case is run on a minimum of 4 processors to ensure no parallel variability
# in the contact pressure and penetration results. Further documentation can
# found in moose/modules/contact/doc/sliding_block/
#
[Mesh]
file = sliding_elastic_blocks_2d.e
patch_size = 80
[]
[GlobalParams]
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[AuxVariables]
[./penetration]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[]
[Functions]
[./vertical_movement]
type = ParsedFunction
value = -t
[../]
[./horizontal_movement]
type = ParsedFunction
value = -0.04*sin(4*t)+0.02
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
add_variables = true
strain = FINITE
[../]
[]
[AuxKernels]
[./zeroslip_x]
type = ConstantAux
variable = inc_slip_x
boundary = 3
execute_on = timestep_begin
value = 0.0
[../]
[./zeroslip_y]
type = ConstantAux
variable = inc_slip_y
boundary = 3
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 = 3
paired_boundary = 2
[../]
[]
[Postprocessors]
[./nonlinear_its]
type = NumNonlinearIterations
execute_on = timestep_end
[../]
[./penetration]
type = NodalVariableValue
variable = penetration
nodeid = 222
[../]
[./contact_pressure]
type = NodalVariableValue
variable = contact_pressure
nodeid = 222
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[../]
[./right_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 4
function = horizontal_movement
[../]
[./right_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 4
function = vertical_movement
[../]
[]
[Materials]
[./left]
type = ComputeIsotropicElasticityTensor
block = '1 2'
youngs_modulus = 1e6
poissons_ratio = 0.3
constant_on = SUBDOMAIN
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
block = '1 2'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 100
nl_max_its = 1000
dt = 0.1
end_time = 15
num_steps = 1000
l_tol = 1e-6
nl_rel_tol = 1e-10
nl_abs_tol = 1e-6
dtmin = 0.01
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
[]
[Outputs]
interval = 10
[./out]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[]
[Contact]
[./leftright]
secondary = 3
primary = 2
model = frictionless
penalty = 1e+7
formulation = penalty
normal_smoothing_distance = 0.1
[../]
[]
(modules/xfem/test/tests/pressure_bc/edge_3d_pressure.i)
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = false
[]
[XFEM]
qrule = volfrac
output_cut_plane = true
[]
[Mesh]
type = GeneratedMesh
dim = 3
nx = 2
ny = 9
nz = 10
xmin = -0.1
xmax = 0.1
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
elem_type = HEX8
[]
[UserObjects]
[./square_planar_cut_uo]
type = RectangleCutUserObject
cut_data = '-0.2 0.0 -0.5
-0.2 0.0 0.0
0.2 0.0 0.0
0.2 0.0 -0.5'
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = FINITE
add_variables = true
generate_output = 'stress_xx stress_yy stress_zz'
[../]
[]
[Functions]
[./pressure]
type = PiecewiseLinear
x = '0 2.0 4.0 6.0 8.0'
y = '0 1000 0 1000 0'
[../]
[]
[DiracKernels]
[./p_x]
type = XFEMPressure
variable = disp_x
component = 0
function = pressure
[../]
[./p_y]
type = XFEMPressure
variable = disp_y
component = 1
function = pressure
[../]
[./p_z]
type = XFEMPressure
variable = disp_z
component = 2
function = pressure
[../]
[]
[BCs]
[./bottom_x]
type = DirichletBC
boundary = 'bottom top'
variable = disp_x
value = 0.0
[../]
[./bottom_y]
type = DirichletBC
boundary = 'bottom top'
variable = disp_y
value = 0.0
[../]
[./bottom_z]
type = DirichletBC
boundary = 'bottom top'
variable = disp_z
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 207000
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 8'
line_search = 'none'
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
# controls for linear iterations
l_max_its = 100
l_tol = 1e-2
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-10
nl_abs_tol = 1e-12
# time control
start_time = 0.0
dt = 1.0
end_time = 2.0
[]
[Outputs]
file_base = edge_3d_pressure_out
exodus = true
[./console]
type = Console
output_linear = true
[../]
[]
(modules/xfem/test/tests/corner_nodes_cut/notch.i)
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y'
volumetric_locking_correction = true
[]
[XFEM]
qrule = volfrac
output_cut_plane = true
[]
[UserObjects]
[./line_seg_cut_uo]
type = LineSegmentCutUserObject
cut_data = '-0.26 0.0 0.0 0.1'
time_start_cut = 0.0
time_end_cut = 0.0
[../]
[]
[Mesh]
file = notch.e
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
[../]
[]
[BCs]
[./top_x]
type = DirichletBC
boundary = 102
variable = disp_x
value = 0.0
[../]
[./top_y]
type = DirichletBC
boundary = 102
variable = disp_y
value = 0.1
[../]
[./bottom_y]
type = DirichletBC
boundary = 101
variable = disp_y
value = -0.1
[../]
[./bottom_x]
type = DirichletBC
boundary = 101
variable = disp_x
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 8'
line_search = 'none'
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
# controls for linear iterations
l_max_its = 100
l_tol = 1e-2
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-10
nl_abs_tol = 1e-9
# time control
start_time = 0.0
dt = 1.0
end_time = 1.0
[]
[Outputs]
exodus = true
[./console]
type = Console
output_linear = true
[../]
[]
(modules/xfem/test/tests/second_order_elements/square_branch_quad8_2d.i)
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
volumetric_locking_correction = false
[]
[XFEM]
qrule = volfrac
output_cut_plane = true
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.0
elem_type = QUAD8
[]
[UserObjects]
[./line_seg_cut_set_uo]
type = LineSegmentCutSetUserObject
cut_data = '-1.0000e-10 6.6340e-01 6.6340e-01 -1.0000e-10 0.0 1.0
3.3120e-01 3.3200e-01 1.0001e+00 3.3200e-01 1.0 2.0'
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
planar_formulation = PLANE_STRAIN
[../]
[]
[Functions]
[./right_disp_x]
type = PiecewiseLinear
x = '0 1.0 2.0 3.0'
y = '0 0.005 0.01 0.01'
[../]
[./top_disp_y]
type = PiecewiseLinear
x = '0 1.0 2.0 3.0'
y = '0 0.005 0.01 0.01'
[../]
[]
[BCs]
[./right_x]
type = FunctionDirichletBC
boundary = 1
variable = disp_x
function = right_disp_x
[../]
[./top_y]
type = FunctionDirichletBC
boundary = 2
variable = disp_y
function = top_disp_y
[../]
[./bottom_y]
type = DirichletBC
boundary = 0
variable = disp_y
value = 0.0
[../]
[./left_x]
type = DirichletBC
boundary = 3
variable = disp_x
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 8'
line_search = 'none'
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
# controls for linear iterations
l_max_its = 100
l_tol = 1e-2
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-16
nl_abs_tol = 1e-10
# time control
start_time = 0.0
dt = 1.0
end_time = 2.2
num_steps = 5000
[]
[Outputs]
exodus = true
[./console]
type = Console
output_linear = true
[../]
[]
(modules/xfem/test/tests/corner_nodes_cut/corner_node_cut_twice.i)
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y'
volumetric_locking_correction = true
[]
[XFEM]
qrule = volfrac
output_cut_plane = true
[]
[UserObjects]
[./line_seg_cut_uo]
type = LineSegmentCutUserObject
cut_data = '-0.0 0.3 1.0 0.7'
time_start_cut = 0.0
time_end_cut = 0.0
[../]
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 4
ny = 10
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.0
elem_type = QUAD4
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
[../]
[]
[BCs]
[./top_x]
type = DirichletBC
boundary = 2
variable = disp_x
value = 0.0
[../]
[./top_y]
type = DirichletBC
boundary = 2
variable = disp_y
value = 0.1
[../]
[./bottom_y]
type = DirichletBC
boundary = 0
variable = disp_y
value = -0.1
[../]
[./bottom_x]
type = DirichletBC
boundary = 0
variable = disp_x
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 8'
line_search = 'none'
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
# controls for linear iterations
l_max_its = 100
l_tol = 1e-2
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-16
nl_abs_tol = 1e-9
# time control
start_time = 0.0
dt = 1.0
end_time = 1.0
[]
[Outputs]
exodus = true
[./console]
type = Console
output_linear = true
[../]
[]
(modules/xfem/test/tests/crack_tip_enrichment/edge_crack_2d.i)
[XFEM]
qrule = volfrac
output_cut_plane = true
use_crack_tip_enrichment = true
crack_front_definition = crack_tip
enrichment_displacements = 'enrich1_x enrich2_x enrich3_x enrich4_x enrich1_y enrich2_y enrich3_y enrich4_y'
displacements = 'disp_x disp_y'
cut_off_boundary = all
cut_off_radius = 0.2
[]
[UserObjects]
[./line_seg_cut_uo]
type = LineSegmentCutUserObject
cut_data = '0.0 1.0 0.5 1.0'
time_start_cut = 0.0
time_end_cut = 0.0
[../]
[./crack_tip]
type = CrackFrontDefinition
crack_direction_method = CrackDirectionVector
crack_front_points = '0.5 1.0 0'
crack_direction_vector = '1 0 0'
2d = true
axis_2d = 2
[../]
[]
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 2
nx = 5
ny = 9
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 2.0
elem_type = QUAD4
[]
[./all_node]
type = BoundingBoxNodeSetGenerator
new_boundary = 'all'
top_right = '1 2 0'
bottom_left = '0 0 0'
input = gen
[../]
[./right_bottom_node]
type = ExtraNodesetGenerator
new_boundary = 'right_bottom_node'
coord = '1.0 0.0'
input = all_node
[../]
[./right_top_node]
type = ExtraNodesetGenerator
new_boundary = 'right_top_node'
coord = '1.0 2.0'
input = right_bottom_node
[../]
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./saved_x]
[../]
[./saved_y]
[../]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./vonmises]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[./TensorMechanics]
displacements = 'disp_x disp_y'
[../]
[]
[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
[../]
[./vonmises]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = vonmises
scalar_type = vonmisesStress
execute_on = timestep_end
[../]
[]
[BCs]
[./top_y]
type = Pressure
variable = disp_y
boundary = top
component = 1
factor = -1
[../]
[./bottom_y]
type = Pressure
variable = disp_y
boundary = bottom
component = 1
factor = -1
[../]
[./fix_y]
type = DirichletBC
boundary = right_bottom_node
variable = disp_y
value = 0.0
[../]
[./fix_x]
type = DirichletBC
boundary = right_bottom_node
variable = disp_x
value = 0.0
[../]
[./fix_x2]
type = DirichletBC
boundary = right_top_node
variable = disp_x
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./strain]
type = ComputeCrackTipEnrichmentSmallStrain
displacements = 'disp_x disp_y'
crack_front_definition = crack_tip
enrichment_displacements = 'enrich1_x enrich2_x enrich3_x enrich4_x enrich1_y enrich2_y enrich3_y enrich4_y'
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
# Since we do not sub-triangularize the tip element,
# we need to use higher order quadrature rule to improve
# integration accuracy.
# Here second = SECOND is for regression test only.
# However, order = SIXTH is recommended.
[./Quadrature]
type = GAUSS
order = SECOND
[../]
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
# controls for linear iterations
l_max_its = 10
l_tol = 1e-4
# controls for nonlinear iterations
nl_max_its = 100
nl_rel_tol = 1e-12 #11
nl_abs_tol = 1e-12 #12
# time control
start_time = 0.0
dt = 1.0
end_time = 1.0
dtmin = 1.0
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Outputs]
file_base = edge_crack_2d_out
exodus = true
[./console]
type = Console
output_linear = true
[../]
[]
(modules/xfem/test/tests/solid_mechanics_basic/crack_propagation_2d.i)
[GlobalParams]
displacements = 'disp_x disp_y'
volumetric_locking_correction = true
[]
[XFEM]
qrule = volfrac
output_cut_plane = true
use_crack_growth_increment = true
crack_growth_increment = 0.2
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 11
ny = 11
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.0
elem_type = QUAD4
[]
[UserObjects]
[./line_seg_cut_uo]
type = LineSegmentCutUserObject
cut_data = '1.0 0.5 0.7 0.5'
time_start_cut = 0.0
time_end_cut = 0.0
[../]
[./xfem_marker_uo]
type = XFEMRankTwoTensorMarkerUserObject
execute_on = timestep_end
tensor = stress
scalar_type = MaxPrincipal
threshold = 5e+1
average = true
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = FINITE
planar_formulation = plane_strain
add_variables = true
[../]
[]
[Functions]
[./pull]
type = PiecewiseLinear
x='0 50 100'
y='0 0.02 0.1'
[../]
[]
[BCs]
[./bottomx]
type = DirichletBC
boundary = bottom
variable = disp_x
value = 0.0
[../]
[./bottomy]
type = DirichletBC
boundary = bottom
variable = disp_y
value = 0.0
[../]
[./topx]
type = DirichletBC
boundary = top
variable = disp_x
value = 0.0
[../]
[./topy]
type = FunctionDirichletBC
boundary = top
variable = disp_y
function = pull
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.3
block = 0
[../]
[./_elastic_strain]
type = ComputeFiniteStrainElasticStress
block = 0
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 8'
line_search = 'none'
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
# controls for linear iterations
l_max_its = 100
l_tol = 1e-2
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-14
nl_abs_tol = 1e-9
# time control
start_time = 0.0
dt = 1.0
end_time = 2.0
num_steps = 5000
max_xfem_update = 1
[]
[Outputs]
file_base = crack_propagation_2d_out
exodus = true
execute_on = timestep_end
[./console]
type = Console
output_linear = true
[../]
[]
(modules/xfem/test/tests/solid_mechanics_basic/edge_crack_3d.i)
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[XFEM]
qrule = volfrac
output_cut_plane = true
[]
[Mesh]
type = GeneratedMesh
dim = 3
nx = 5
ny = 5
nz = 2
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.0
zmin = 0.0
zmax = 0.2
elem_type = HEX8
[]
[UserObjects]
[./square_cut_uo]
type = RectangleCutUserObject
cut_data = ' -0.001 0.5 -0.001
0.401 0.5 -0.001
0.401 0.5 0.201
-0.001 0.5 0.201'
[../]
[]
[AuxVariables]
[./SED]
order = CONSTANT
family = MONOMIAL
[../]
[]
[DomainIntegral]
integrals = 'Jintegral InteractionIntegralKI'
crack_front_points = '0.4 0.5 0.0
0.4 0.5 0.1
0.4 0.5 0.2'
crack_direction_method = CrackDirectionVector
crack_direction_vector = '1 0 0'
radius_inner = '0.2'
radius_outer = '0.4'
poissons_ratio = 0.3
youngs_modulus = 207000
block = 0
incremental = true
[]
[Modules/TensorMechanics/Master]
[./all]
strain = FINITE
add_variables = true
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
[../]
[]
[AuxKernels]
[./SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 0
[../]
[]
[Functions]
[./top_trac_y]
type = ConstantFunction
value = 10
[../]
[]
[BCs]
[./top_y]
type = FunctionNeumannBC
boundary = top
variable = disp_y
function = top_trac_y
[../]
[./bottom_x]
type = DirichletBC
boundary = bottom
variable = disp_x
value = 0.0
[../]
[./bottom_y]
type = DirichletBC
boundary = bottom
variable = disp_y
value = 0.0
[../]
[./bottom_z]
type = DirichletBC
boundary = bottom
variable = disp_z
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 207000
poissons_ratio = 0.3
block = 0
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
block = 0
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 8'
line_search = 'none'
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
# controls for linear iterations
l_max_its = 100
l_tol = 1e-2
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-12
nl_abs_tol = 1e-10
# time control
start_time = 0.0
dt = 1.0
end_time = 1.0
[]
[Outputs]
file_base = edge_crack_3d_out
execute_on = 'timestep_end'
exodus = true
[./console]
type = Console
output_linear = true
[../]
[]
(modules/contact/test/tests/frictional/single_point_2d/single_point_2d_predictor.i)
[Mesh]
file = single_point_2d.e
[]
[GlobalParams]
displacements = 'disp_x disp_y'
volumetric_locking_correction = false
[]
[AuxVariables]
[./penetration]
[../]
[./saved_x]
[../]
[./saved_y]
[../]
[./diag_saved_x]
[../]
[./diag_saved_y]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[]
[Functions]
[./horizontal_movement]
type = ParsedFunction
value = t
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
add_variables = true
strain = FINITE
save_in = 'saved_x saved_y'
diag_save_in = 'diag_saved_x diag_saved_y'
[../]
[]
[AuxKernels]
[./incslip_x]
type = PenetrationAux
variable = inc_slip_x
quantity = incremental_slip_x
boundary = 3
paired_boundary = 2
[../]
[./incslip_y]
type = PenetrationAux
variable = inc_slip_y
quantity = incremental_slip_y
boundary = 3
paired_boundary = 2
[../]
[./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 = 3
paired_boundary = 2
[../]
[]
[BCs]
[./botx]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[../]
[./boty]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[../]
[./botx2]
type = DirichletBC
variable = disp_x
boundary = 2
value = 0.0
[../]
[./boty2]
type = DirichletBC
variable = disp_y
boundary = 2
value = 0.0
[../]
[./topx]
type = FunctionDirichletBC
variable = disp_x
boundary = 4
function = horizontal_movement
[../]
[./topy]
type = DirichletBC
variable = disp_y
boundary = 4
value = -0.005
[../]
[]
[Materials]
[./bottom]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1.0e9
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
block = '1 2'
[../]
[./top]
type = ComputeIsotropicElasticityTensor
block = '2'
youngs_modulus = 1.0e6
poissons_ratio = 0.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 = 4
[../]
[./top_react_y]
type = NodalSum
variable = saved_y
boundary = 4
[../]
[./ref_resid_x]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_x
[../]
[./ref_resid_y]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_y
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 100
nl_max_its = 200
dt = 0.001
end_time = 0.01
num_steps = 1000
nl_rel_tol = 1e-8
nl_abs_tol = 1e-8
dtmin = 0.001
l_tol = 1e-3
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
[]
[Outputs]
exodus = true
print_linear_residuals = true
perf_graph = true
[./console]
type = Console
max_rows = 5
[../]
[]
[Contact]
[./leftright]
primary = 2
secondary = 3
model = coulomb
friction_coefficient = '0.25'
[../]
[]
[Dampers]
[./contact_slip]
type = ContactSlipDamper
primary = '2'
secondary = '3'
[../]
[]
(modules/xfem/test/tests/solid_mechanics_basic/square_branch_quad_2d.i)
[GlobalParams]
displacements = 'disp_x disp_y'
volumetric_locking_correction = true
[]
[XFEM]
qrule = volfrac
output_cut_plane = true
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.0
elem_type = QUAD4
[]
[UserObjects]
[./line_seg_cut_uo0]
type = LineSegmentCutUserObject
cut_data = '-1.0000e-10 6.6340e-01 6.6340e-01 -1.0000e-10'
time_start_cut = 0.0
time_end_cut = 1.0
[../]
[./line_seg_cut_uo1]
type = LineSegmentCutUserObject
cut_data = '3.3120e-01 3.3200e-01 1.0001e+00 3.3200e-01'
time_start_cut = 1.0
time_end_cut = 2.0
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
planar_formulation = PLANE_STRAIN
add_variables = true
[../]
[]
[Functions]
[./right_disp_x]
type = PiecewiseLinear
x = '0 1.0 2.0 3.0'
y = '0 0.005 0.01 0.01'
[../]
[./top_disp_y]
type = PiecewiseLinear
x = '0 1.0 2.0 3.0'
y = '0 0.005 0.01 0.01'
[../]
[]
[BCs]
[./right_x]
type = FunctionDirichletBC
boundary = 1
variable = disp_x
function = right_disp_x
[../]
[./top_y]
type = FunctionDirichletBC
boundary = 2
variable = disp_y
function = top_disp_y
[../]
[./bottom_y]
type = DirichletBC
boundary = 0
variable = disp_y
value = 0.0
[../]
[./left_x]
type = DirichletBC
boundary = 3
variable = disp_x
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 8'
line_search = 'none'
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
# controls for linear iterations
l_max_its = 100
l_tol = 1e-2
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-16
nl_abs_tol = 1e-10
# time control
start_time = 0.0
dt = 1.0
end_time = 2.2
num_steps = 5000
[]
[Outputs]
file_base = square_branch_quad_2d_out
exodus = true
[./console]
type = Console
output_linear = true
[../]
[]
(modules/tensor_mechanics/test/tests/ad_2D_geometries/2D-RZ_test.i)
# Considers the mechanics solution for a thick spherical shell that is uniformly
# pressurized on the inner and outer surfaces, using 2D axisymmetric geometry.
# This test uses the strain calculators ComputeAxisymmetricRZSmallStrain
# and ComputeAxisymmetricRZIncrementalStrain which are generated by the
# TensorMechanics MasterAction depending on the cli_args given in the tests file.
#
# From Roark (Formulas for Stress and Strain, McGraw-Hill, 1975), the radially-dependent
# circumferential stress in a uniformly pressurized thick spherical shell is given by:
#
# S(r) = [ Pi[ri^3(2r^3+ro^3)] - Po[ro^3(2r^3+ri^3)] ] / [2r^3(ro^3-ri^3)]
#
# where:
# Pi = inner pressure
# Po = outer pressure
# ri = inner radius
# ro = outer radius
#
# The tests assume an inner and outer radii of 5 and 10, with internal and external
# pressures of 100000 and 200000, respectively. The resulting compressive tangential
# stress is largest at the inner wall and, from the above equation, has a value
# of -271429.
[Mesh]
file = 2D-RZ_mesh.e
[]
[GlobalParams]
displacements = 'disp_r disp_z'
[]
[Problem]
coord_type = RZ
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
add_variables = true
generate_output = 'stress_zz'
use_automatic_differentiation = true
[../]
[]
[Materials]
[./elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1e10
poissons_ratio = 0.345
[../]
[./stress]
[../]
[]
[BCs]
# pin particle along symmetry planes
[./no_disp_r]
type = DirichletBC
variable = disp_r
boundary = xzero
value = 0.0
[../]
[./no_disp_z]
type = DirichletBC
variable = disp_z
boundary = yzero
value = 0.0
[../]
# exterior and internal pressures
[./exterior_pressure_r]
type = ADPressure
variable = disp_r
boundary = outer
component = 0
constant = 200000
[../]
[./exterior_pressure_z]
type = ADPressure
variable = disp_z
boundary = outer
component = 1
constant = 200000
[../]
[./interior_pressure_r]
type = ADPressure
variable = disp_r
boundary = inner
component = 0
constant = 100000
[../]
[./interior_pressure_z]
type = ADPressure
variable = disp_z
boundary = inner
component = 1
constant = 100000
[../]
[]
[Debug]
show_var_residual_norms = true
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = ' 201 hypre boomeramg 10'
line_search = 'none'
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
nl_rel_tol = 5e-9
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
end_time = 1
# num_steps = 1000
dtmax = 5e6
dtmin = 1
[./TimeStepper]
type = IterationAdaptiveDT
dt = 1
optimal_iterations = 6
iteration_window = 0
linear_iteration_ratio = 100
[../]
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
[]
[Postprocessors]
[./dt]
type = TimestepSize
[../]
[]
[Outputs]
exodus = true
[]
(modules/contact/test/tests/bouncing-block-contact/frictional-mortar-fb-lm-mortar-disp.i)
starting_point = 2e-1
# We offset slightly so we avoid the case where the bottom of the secondary block and the top of the
# primary block are perfectly vertically aligned which can cause the backtracking line search some
# issues for a coarse mesh (basic line search handles that fine)
offset = 1e-2
[GlobalParams]
displacements = 'disp_x disp_y'
diffusivity = 1e0
scaling = 1e0
[]
[Mesh]
file = long-bottom-block-1elem-blocks.e
[]
[Variables]
[./disp_x]
block = '1 2'
# order = SECOND
[../]
[./disp_y]
block = '1 2'
# order = SECOND
[../]
[./normal_lm]
block = 3
family = MONOMIAL
order = CONSTANT
[../]
[./tangential_lm]
block = 3
family = MONOMIAL
order = CONSTANT
[../]
[]
[ICs]
[./disp_y]
block = 2
variable = disp_y
value = ${fparse starting_point + offset}
type = ConstantIC
[../]
[]
[Kernels]
[./disp_x]
type = MatDiffusion
variable = disp_x
[../]
[./disp_y]
type = MatDiffusion
variable = disp_y
[../]
[]
[Constraints]
[normal_lm]
type = NormalMortarLMMechanicalContact
primary_boundary = 20
secondary_boundary = 10
primary_subdomain = 4
secondary_subdomain = 3
variable = normal_lm
secondary_variable = disp_x
secondary_disp_y = disp_y
use_displaced_mesh = true
compute_primal_residuals = false
ncp_function_type = fb
[]
[normal_x]
type = NormalMortarMechanicalContact
primary_boundary = 20
secondary_boundary = 10
primary_subdomain = 4
secondary_subdomain = 3
variable = normal_lm
secondary_variable = disp_x
component = x
use_displaced_mesh = true
compute_lm_residuals = false
[]
[normal_y]
type = NormalMortarMechanicalContact
primary_boundary = 20
secondary_boundary = 10
primary_subdomain = 4
secondary_subdomain = 3
variable = normal_lm
secondary_variable = disp_y
component = y
use_displaced_mesh = true
compute_lm_residuals = false
[]
[tangential_lm]
type = TangentialMortarLMMechanicalContact
primary_boundary = 20
secondary_boundary = 10
primary_subdomain = 4
secondary_subdomain = 3
variable = tangential_lm
secondary_variable = disp_x
secondary_disp_y = disp_y
use_displaced_mesh = true
compute_primal_residuals = false
contact_pressure = normal_lm
friction_coefficient = .1
ncp_function_type = fb
[]
[tangential_x]
type = TangentialMortarMechanicalContact
primary_boundary = 20
secondary_boundary = 10
primary_subdomain = 4
secondary_subdomain = 3
variable = tangential_lm
secondary_variable = disp_x
component = x
use_displaced_mesh = true
compute_lm_residuals = false
[]
[tangential_y]
type = TangentialMortarMechanicalContact
primary_boundary = 20
secondary_boundary = 10
primary_subdomain = 4
secondary_subdomain = 3
variable = tangential_lm
secondary_variable = disp_y
component = y
use_displaced_mesh = true
compute_lm_residuals = false
[]
[]
[BCs]
[./botx]
type = DirichletBC
variable = disp_x
boundary = 40
value = 0.0
[../]
[./boty]
type = DirichletBC
variable = disp_y
boundary = 40
value = 0.0
[../]
[./topy]
type = FunctionDirichletBC
variable = disp_y
boundary = 30
function = '${starting_point} * cos(2 * pi / 40 * t) + ${offset}'
[../]
[./leftx]
type = FunctionDirichletBC
variable = disp_x
boundary = 50
function = '1e-2 * t'
[../]
[]
[Executioner]
type = Transient
end_time = 200
dt = 5
dtmin = .1
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason -pc_svd_monitor -snes_linesearch_monitor -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -mat_mffd_err'
petsc_options_value = 'lu NONZERO 1e-15 1e-5'
l_max_its = 30
nl_max_its = 20
line_search = 'none'
snesmf_reuse_base = false
# [./Predictor]
# type = SimplePredictor
# scale = 1.0
# [../]
[]
[Debug]
show_var_residual_norms = true
[]
[Outputs]
exodus = true
# checkpoint = true
# [./dofmap]
# type = DOFMap
# execute_on = 'initial'
# [../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Postprocessors]
[./num_nl]
type = NumNonlinearIterations
[../]
[./cumulative]
type = CumulativeValuePostprocessor
postprocessor = num_nl
[../]
[contact]
type = ContactDOFSetSize
variable = normal_lm
subdomain = '3'
execute_on = 'nonlinear timestep_end'
[]
[]
(modules/contact/test/tests/mechanical_constraint/frictionless_penalty.i)
[Mesh]
file = blocks_2d.e
[]
[GlobalParams]
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[AuxVariables]
[./penetration]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[]
[Functions]
[./vertical_movement]
type = ParsedFunction
value = -t
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
add_variables = true
strain = FINITE
[../]
[]
[AuxKernels]
[./zeroslip_x]
type = ConstantAux
variable = inc_slip_x
boundary = 3
execute_on = timestep_begin
value = 0.0
[../]
[./zeroslip_y]
type = ConstantAux
variable = inc_slip_y
boundary = 3
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 = 3
paired_boundary = 2
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[../]
[./right_x]
type = DirichletBC
variable = disp_x
boundary = 4
#Initial gap is 0.01
value = -0.02
[../]
[./right_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 4
function = vertical_movement
[../]
[]
[Materials]
[./left]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1e7
poissons_ratio = 0.3
[../]
[./right]
type = ComputeIsotropicElasticityTensor
block = '2'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
block = '1 2'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
line_search = 'none'
l_max_its = 100
nl_max_its = 1000
dt = 0.01
end_time = 0.10
num_steps = 1000
l_tol = 1e-6
nl_rel_tol = 1e-10
nl_abs_tol = 1e-8
dtmin = 0.01
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
[]
[Outputs]
[./out]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[]
[Contact]
[./leftright]
primary = 2
secondary = 3
model = frictionless
formulation = penalty
penalty = 1e+7
[../]
[]
(modules/xfem/test/tests/solid_mechanics_basic/edge_crack_3d_mhs.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[XFEM]
geometric_cut_userobjects = 'cut_mesh'
qrule = volfrac
output_cut_plane = true
[]
[Mesh]
type = GeneratedMesh
dim = 3
nx = 5
ny = 5
nz = 2
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.0
zmin = 0.0
zmax = 0.2
elem_type = HEX8
[]
[UserObjects]
[./cut_mesh]
type = CrackMeshCut3DUserObject
mesh_file = mesh_edge_crack.xda
growth_dir_method = 'max_hoop_stress'
size_control = 1
n_step_growth = 1
function_v = growth_func_v
crack_front_nodes = '7 6 5 4'
[../]
[]
[Functions]
[./growth_func_v]
type = ParsedFunction
value = 0.15
[../]
[]
[DomainIntegral]
integrals = 'Jintegral InteractionIntegralKI InteractionIntegralKII'
displacements = 'disp_x disp_y disp_z'
crack_front_points_provider = cut_mesh
number_points_from_provider = 4
crack_direction_method = CurvedCrackFront
radius_inner = '0.15'
radius_outer = '0.45'
poissons_ratio = 0.3
youngs_modulus = 207000
block = 0
incremental = true
[]
[Modules/TensorMechanics/Master]
[./all]
strain = FINITE
add_variables = true
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
[../]
[]
[Functions]
[./top_trac_x]
type = ConstantFunction
value = 100
[../]
[./top_trac_y]
type = ConstantFunction
value = 0
[../]
[]
[BCs]
[./top_x]
type = FunctionNeumannBC
boundary = top
variable = disp_x
function = top_trac_x
[../]
[./top_y]
type = FunctionNeumannBC
boundary = top
variable = disp_y
function = top_trac_y
[../]
[./bottom_x]
type = DirichletBC
boundary = bottom
variable = disp_x
value = 0.0
[../]
[./bottom_y]
type = DirichletBC
boundary = bottom
variable = disp_y
value = 0.0
[../]
[./bottom_z]
type = DirichletBC
boundary = bottom
variable = disp_z
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 207000
poissons_ratio = 0.3
block = 0
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
block = 0
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 8'
line_search = 'none'
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
# controls for linear iterations
l_max_its = 100
l_tol = 1e-2
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-12
nl_abs_tol = 1e-10
# time control
start_time = 0.0
dt = 1.0
end_time = 4.0
max_xfem_update = 1
[]
[Outputs]
file_base = edge_crack_3d_mhs_out
execute_on = 'timestep_end'
exodus = true
[./console]
type = Console
output_linear = true
[../]
[]
(modules/contact/test/tests/sliding_block/in_and_out/frictional_02_penalty.i)
# This is a benchmark test that checks constraint based frictional
# contact using the penalty method. In this test a sinusoidal
# displacement is applied in the horizontal direction to simulate
# a small block come in and out of contact as it slides down a larger block.
#
# The sinusoid is of the form 0.4sin(4t)+0.2 and a friction coefficient
# of 0.2 is used. The gold file is run on one processor and the benchmark
# case is run on a minimum of 4 processors to ensure no parallel variability
# in the contact pressure and penetration results. Further documentation can
# found in moose/modules/contact/doc/sliding_block/
#
[Mesh]
file = sliding_elastic_blocks_2d.e
patch_size = 80
[]
[GlobalParams]
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[AuxVariables]
[./penetration]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[]
[Functions]
[./vertical_movement]
type = ParsedFunction
value = -t
[../]
[./horizontal_movement]
type = ParsedFunction
value = -0.04*sin(4*t)+0.02
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
add_variables = true
strain = FINITE
[../]
[]
[AuxKernels]
[./zeroslip_x]
type = ConstantAux
variable = inc_slip_x
boundary = 3
execute_on = timestep_begin
value = 0.0
[../]
[./zeroslip_y]
type = ConstantAux
variable = inc_slip_y
boundary = 3
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 = 3
paired_boundary = 2
[../]
[]
[Postprocessors]
[./nonlinear_its]
type = NumNonlinearIterations
execute_on = timestep_end
[../]
[./penetration]
type = NodalVariableValue
variable = penetration
nodeid = 222
[../]
[./contact_pressure]
type = NodalVariableValue
variable = contact_pressure
nodeid = 222
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[../]
[./right_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 4
function = horizontal_movement
[../]
[./right_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 4
function = vertical_movement
[../]
[]
[Materials]
[./left]
type = ComputeIsotropicElasticityTensor
block = '1 2'
youngs_modulus = 1e6
poissons_ratio = 0.3
constant_on = SUBDOMAIN
[../]
[./left_stress]
type = ComputeFiniteStrainElasticStress
block = '1 2'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -sub_pc_type -pc_asm_overlap -ksp_gmres_restart'
petsc_options_value = 'asm lu 20 101'
line_search = 'none'
l_max_its = 100
nl_max_its = 1000
dt = 0.1
end_time = 15
num_steps = 1000
l_tol = 1e-3
nl_rel_tol = 1e-10
nl_abs_tol = 1e-6
dtmin = 0.01
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
[]
[Outputs]
interval = 10
[./out]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[]
[Contact]
[./leftright]
secondary = 3
primary = 2
model = coulomb
penalty = 1e+7
friction_coefficient = 0.2
formulation = penalty
normal_smoothing_distance = 0.1
[../]
[]
(modules/contact/test/tests/sliding_block/sliding/frictional_04_penalty.i)
# This is a benchmark test that checks constraint based frictional
# contact using the penalty method. In this test a constant
# displacement is applied in the horizontal direction to simulate
# a small block come sliding down a larger block.
#
# A friction coefficient of 0.4 is used. The gold file is run on one processor
# and the benchmark case is run on a minimum of 4 processors to ensure no
# parallel variability in the contact pressure and penetration results.
#
[Mesh]
file = sliding_elastic_blocks_2d.e
patch_size = 80
[]
[GlobalParams]
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[AuxVariables]
[./penetration]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[]
[Functions]
[./vertical_movement]
type = ParsedFunction
value = -t
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
add_variables = true
strain = FINITE
[../]
[]
[AuxKernels]
[./zeroslip_x]
type = ConstantAux
variable = inc_slip_x
boundary = 3
execute_on = timestep_begin
value = 0.0
[../]
[./zeroslip_y]
type = ConstantAux
variable = inc_slip_y
boundary = 3
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 = 3
paired_boundary = 2
[../]
[]
[Postprocessors]
[./nonlinear_its]
type = NumNonlinearIterations
execute_on = timestep_end
[../]
[./penetration]
type = NodalVariableValue
variable = penetration
nodeid = 222
[../]
[./contact_pressure]
type = NodalVariableValue
variable = contact_pressure
nodeid = 222
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[../]
[./right_x]
type = DirichletBC
variable = disp_x
boundary = 4
value = -0.02
[../]
[./right_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 4
function = vertical_movement
[../]
[]
[Materials]
[./left]
type = ComputeIsotropicElasticityTensor
block = '1 2'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
block = '1 2'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 100
nl_max_its = 1000
dt = 0.1
end_time = 14.99999
num_steps = 1000
l_tol = 1e-6
nl_rel_tol = 1e-10
nl_abs_tol = 1e-6
dtmin = 0.01
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
[]
[Outputs]
interval = 10
[./out]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[]
[Contact]
[./leftright]
secondary = 3
primary = 2
model = coulomb
penalty = 1e+7
friction_coefficient = 0.4
formulation = penalty
normal_smoothing_distance = 0.1
[../]
[]
(modules/xfem/test/tests/pressure_bc/inclined_edge_2d_pressure.i)
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y'
volumetric_locking_correction = False
[]
[XFEM]
qrule = volfrac
output_cut_plane = true
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 9
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.0
elem_type = QUAD4
[]
[UserObjects]
[./line_seg_cut_uo]
type = LineSegmentCutUserObject
cut_data = '0.0 0.33 0.5 0.67'
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
generate_output = 'stress_xx stress_yy'
[../]
[]
[Functions]
[./pressure]
type = PiecewiseLinear
x = '0 1.0 2.0'
y = '0 500 1000'
[../]
[]
[BCs]
[./bottom_y]
type = DirichletBC
boundary = 0
variable = disp_y
value = 0.0
[../]
[./top_y]
type = DirichletBC
boundary = 2
variable = disp_y
value = 0.0
[../]
[./bottom_x]
type = DirichletBC
boundary = 0
variable = disp_x
value = 0.0
[../]
[]
[DiracKernels]
[./pressure_x]
type = XFEMPressure
variable = disp_x
component = 0
function = pressure
[../]
[./pressure_y]
type = XFEMPressure
variable = disp_y
component = 1
function = pressure
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 8'
line_search = 'none'
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
# controls for linear iterations
l_max_its = 100
l_tol = 1e-2
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-10
nl_abs_tol = 1e-12
# time control
start_time = 0.0
dt = 1
end_time = 2
[]
[Outputs]
file_base = inclined_edge_2d_pressure_out
exodus = true
[./console]
type = Console
output_linear = true
[../]
[]
(modules/xfem/test/tests/pressure_bc/2d_pressure_displaced_mesh.i)
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y'
volumetric_locking_correction = false
[]
[XFEM]
qrule = volfrac
output_cut_plane = true
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 4
ny = 5
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.0
elem_type = QUAD4
[]
[UserObjects]
[./line_seg_cut_uo]
type = LineSegmentCutUserObject
cut_data = '0.0 0.5 1.0 0.5'
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = FINITE
add_variables = true
planar_formulation = PLANE_STRAIN
generate_output = 'stress_xx stress_yy'
[../]
[]
[Functions]
[./pressure]
type = PiecewiseLinear
x = '0 1.0'
y = '500 500'
[../]
[./bc_func_tx]
type = ParsedFunction
value = '0.5-(0.5-x)*cos(pi*t/2.0)-x'
[../]
[./bc_func_ty]
type = ParsedFunction
value = '(0.5-x)*sin(pi*t/2.0)+0.5'
[../]
[]
[BCs]
[./bottom_y]
type = DirichletBC
boundary = 0
preset = false
variable = disp_y
value = 0.0
[../]
[./bottom_x]
type = DirichletBC
boundary = 0
preset = false
variable = disp_x
value = 0.0
[../]
[./top_right_y]
type = FunctionDirichletBC
boundary = 2
preset = false
variable = disp_y
function = bc_func_ty
[../]
[./top_right_x]
type = FunctionDirichletBC
boundary = 2
preset = false
variable = disp_x
function = bc_func_tx
[../]
[]
[DiracKernels]
[./pressure_x]
type = XFEMPressure
variable = disp_x
component = 0
function = pressure
use_displaced_mesh = true
[../]
[./pressure_y]
type = XFEMPressure
variable = disp_y
component = 1
function = pressure
use_displaced_mesh = true
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 8'
line_search = 'none'
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
# controls for linear iterations
l_max_its = 100
l_tol = 1e-2
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-10
nl_abs_tol = 1e-14
# time control
start_time = 0.0
dt = 0.1
end_time = 1.0
[]
[Outputs]
file_base = 2d_pressure_displaced_mesh_out
exodus = true
[./console]
type = Console
output_linear = true
[../]
[]
(modules/contact/test/tests/tension_release/8ElemTensionRelease.i)
[Mesh]
file = 8ElemTensionRelease.e
partitioner = centroid
centroid_partitioner_direction = x
[]
[GlobalParams]
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Functions]
[./up]
type = PiecewiseLinear
x = '0 1 2 3'
y = '0 0.0001 0 -.0001'
[../]
[]
[AuxVariables]
[./status]
[../]
[./pid]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
add_variables = true
strain = FINITE
[]
[]
[Contact]
[./dummy_name]
primary = 2
secondary = 3
penalty = 1e6
model = frictionless
tangential_tolerance = 0.01
[../]
[]
[AuxKernels]
[./pid]
type = ProcessorIDAux
variable = pid
execute_on = 'initial timestep_end'
[../]
[./status]
type = PenetrationAux
quantity = mechanical_status
variable = status
boundary = 3
paired_boundary = 2
execute_on = timestep_end
[../]
[]
[BCs]
[./lateral]
type = DirichletBC
variable = disp_x
boundary = '1 4'
value = 0
[../]
[./bottom_up]
type = FunctionDirichletBC
variable = disp_y
boundary = 1
function = up
[../]
[./top]
type = DirichletBC
variable = disp_y
boundary = 4
value = 0.0
[../]
[]
[Materials]
[./stiffStuff1]
type = ComputeIsotropicElasticityTensor
block = '1 2'
youngs_modulus = 1.0e6
poissons_ratio = 0.3
[../]
[./stiffStuff1_stress]
type = ComputeFiniteStrainElasticStress
block = '1 2'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_hypre_type -ksp_gmres_restart'
petsc_options_value = 'hypre boomeramg 101'
line_search = 'none'
nl_rel_tol = 1e-8
nl_abs_tol = 1e-9
l_tol = 1e-4
l_max_its = 100
nl_max_its = 10
dt = 0.1
num_steps = 30
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
[]
[Outputs]
exodus = true
[]
(modules/xfem/test/tests/solid_mechanics_basic/edge_crack_3d_propagation.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[XFEM]
geometric_cut_userobjects = 'cut_mesh'
qrule = volfrac
output_cut_plane = true
[]
[Mesh]
type = GeneratedMesh
dim = 3
nx = 5
ny = 5
nz = 2
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.0
zmin = 0.0
zmax = 0.2
elem_type = HEX8
[]
[UserObjects]
[./cut_mesh]
type = CrackMeshCut3DUserObject
mesh_file = mesh_edge_crack.xda
growth_dir_method = 'function'
size_control = 0.1
n_step_growth = 1
function_x = growth_func_x
function_y = growth_func_y
function_z = growth_func_z
function_v = growth_func_v
[../]
[]
[Functions]
[./growth_func_x]
type = ParsedFunction
value = 1
[../]
[./growth_func_y]
type = ParsedFunction
value = 0
[../]
[./growth_func_z]
type = ParsedFunction
value = 0
[../]
[./growth_func_v]
type = ParsedFunction
value = 0.15
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = FINITE
add_variables = true
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
[../]
[]
[Functions]
[./top_trac_y]
type = ConstantFunction
value = 10
[../]
[]
[BCs]
[./top_y]
type = FunctionNeumannBC
boundary = top
variable = disp_y
function = top_trac_y
[../]
[./bottom_x]
type = DirichletBC
boundary = bottom
variable = disp_x
value = 0.0
[../]
[./bottom_y]
type = DirichletBC
boundary = bottom
variable = disp_y
value = 0.0
[../]
[./bottom_z]
type = DirichletBC
boundary = bottom
variable = disp_z
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 207000
poissons_ratio = 0.3
block = 0
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
block = 0
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 8'
line_search = 'none'
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
# controls for linear iterations
l_max_its = 100
l_tol = 1e-2
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-12
nl_abs_tol = 1e-10
# time control
start_time = 0.0
dt = 1.0
end_time = 3.0
max_xfem_update = 1
[]
[Outputs]
file_base = edge_crack_3d_propagation_out
execute_on = 'timestep_end'
exodus = true
[./console]
type = Console
output_linear = true
[../]
[]
(modules/contact/test/tests/sliding_block/in_and_out/frictionless_kinematic.i)
# This is a benchmark test that checks constraint based frictionless
# contact using the kinematic method. In this test a sinusoidal
# displacement is applied in the horizontal direction to simulate
# a small block come in and out of contact as it slides down a larger block.
#
# The sinusoid is of the form 0.4sin(4t)+0.2. The gold file is run
# on one processor and the benchmark
# case is run on a minimum of 4 processors to ensure no parallel variability
# in the contact pressure and penetration results. Further documentation can
# found in moose/modules/contact/doc/sliding_block/
#
[Mesh]
file = sliding_elastic_blocks_2d.e
patch_size = 80
[]
[GlobalParams]
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[AuxVariables]
[./penetration]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[]
[Functions]
[./vertical_movement]
type = ParsedFunction
value = -t
[../]
[./horizontal_movement]
type = ParsedFunction
value = -0.04*sin(4*t)+0.02
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
add_variables = true
strain = FINITE
[../]
[]
[AuxKernels]
[./zeroslip_x]
type = ConstantAux
variable = inc_slip_x
boundary = 3
execute_on = timestep_begin
value = 0.0
[../]
[./zeroslip_y]
type = ConstantAux
variable = inc_slip_y
boundary = 3
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 = 3
paired_boundary = 2
[../]
[]
[Postprocessors]
[./nonlinear_its]
type = NumNonlinearIterations
execute_on = timestep_end
[../]
[./penetration]
type = NodalVariableValue
variable = penetration
nodeid = 222
[../]
[./contact_pressure]
type = NodalVariableValue
variable = contact_pressure
nodeid = 222
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[../]
[./right_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 4
function = horizontal_movement
[../]
[./right_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 4
function = vertical_movement
[../]
[]
[Materials]
[./left]
type = ComputeIsotropicElasticityTensor
block = '1 2'
youngs_modulus = 1e6
poissons_ratio = 0.3
constant_on = SUBDOMAIN
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
block = '1 2'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -sub_pc_type -pc_asm_overlap -ksp_gmres_restart'
petsc_options_value = 'asm lu 20 101'
line_search = 'none'
l_max_its = 100
nl_max_its = 1000
dt = 0.1
end_time = 15
num_steps = 1000
l_tol = 1e-6
nl_rel_tol = 1e-10
nl_abs_tol = 1e-6
dtmin = 0.01
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
[]
[Outputs]
interval = 10
[./out]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[]
[Contact]
[./leftright]
secondary = 3
primary = 2
model = frictionless
penalty = 1e+6
normal_smoothing_distance = 0.1
[../]
[]
(modules/contact/test/tests/tension_release/4ElemTensionRelease_mechanical_constraint.i)
# This is a mechanical constraint (contact formulation) version of 4ElemTensionRelease.i
[Mesh]
file = 4ElemTensionRelease.e
[]
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Functions]
[./up]
type = PiecewiseLinear
x = '0 1 2 3'
y = '0 0.0001 0 -.0001'
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
add_variables = true
strain = SMALL
generate_output = 'stress_yy'
[]
[]
[Contact]
[./dummy_name]
primary = 2
secondary = 3
penalty = 1e6
model = frictionless
tangential_tolerance = 0.01
[../]
[]
[BCs]
[./lateral]
type = DirichletBC
variable = disp_x
boundary = '1 4'
value = 0
[../]
[./bottom_up]
type = FunctionDirichletBC
variable = disp_y
boundary = 1
function = up
[../]
[./top]
type = DirichletBC
variable = disp_y
boundary = 4
value = 0.0
[../]
[]
[Materials]
[./stiffStuff1]
type = ComputeIsotropicElasticityTensor
block = '1 2'
youngs_modulus = 1.0e6
poissons_ratio = 0.3
[../]
[./stiffStuff1_stress]
type = ComputeLinearElasticStress
block = '1 2'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_hypre_type -ksp_gmres_restart'
petsc_options_value = 'hypre boomeramg 101'
line_search = 'none'
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
l_tol = 1e-4
l_max_its = 100
nl_max_its = 10
dt = 0.2
dtmin = 0.2
end_time = 3
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
[]
[Outputs]
exodus = true
[]
(modules/contact/test/tests/mechanical_constraint/frictionless_kinematic.i)
[Mesh]
file = blocks_2d.e
[]
[GlobalParams]
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[AuxVariables]
[./penetration]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[]
[Functions]
[./vertical_movement]
type = ParsedFunction
value = -t
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
add_variables = true
strain = FINITE
[../]
[]
[AuxKernels]
[./zeroslip_x]
type = ConstantAux
variable = inc_slip_x
boundary = 3
execute_on = timestep_begin
value = 0.0
[../]
[./zeroslip_y]
type = ConstantAux
variable = inc_slip_y
boundary = 3
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 = 3
paired_boundary = 2
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[../]
[./right_x]
type = DirichletBC
variable = disp_x
boundary = 4
#Initial gap is 0.01
value = -0.02
[../]
[./right_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 4
function = vertical_movement
[../]
[]
[Materials]
[./left]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1e7
poissons_ratio = 0.3
[../]
[./right]
type = ComputeIsotropicElasticityTensor
block = '2'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
block = '1 2'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
line_search = 'none'
l_max_its = 100
nl_max_its = 1000
dt = 0.01
end_time = 0.10
num_steps = 1000
l_tol = 1e-6
nl_rel_tol = 1e-10
nl_abs_tol = 1e-8
dtmin = 0.01
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
[]
[Outputs]
[./out]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[]
[Contact]
[./leftright]
primary = 2
secondary = 3
model = frictionless
penalty = 1e+6
[../]
[]
(test/tests/time_integrators/abort/abort.i)
[Mesh]
type = GeneratedMesh
dim = 1
nx = 10
xmin = 0.0
xmax = 1.0
[]
#still need BC for Energy, IC's for both.
[Variables]
active = 'Time'
[./Time]
order = FIRST
family = LAGRANGE
initial_condition = 0.0
[../]
[]
[Functions]
active = 'func'
[./func]
type = ParsedFunction
value = 2.0*t
[../]
[]
[Kernels]
active = 't_time func_time'
[./t_time]
type = TimeDerivative
variable = Time
[../]
[./func_time]
type = BodyForce
variable = Time
function = func
[../]
[]
[BCs]
active = 'Top_Temperature'
[./Top_Temperature]
type = NeumannBC
variable = Time
boundary = 'left right'
[../]
[]
[Executioner]
type = Transient
#scheme = 'BDF2'
#scheme = 'crank-nicolson'
start_time = 0
num_steps = 4
dt = 1000000000
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
steady_state_tolerance = .00000000000000001
steady_state_detection = true
nl_abs_tol = 1e-15
petsc_options = '-snes_converged_reason'
abort_on_solve_fail = true
[]
[Outputs]
file_base = out
exodus = true
[]
(modules/contact/test/tests/tension_release/4ElemTensionRelease.i)
[Mesh]
file = 4ElemTensionRelease.e
[]
[GlobalParams]
displacements = 'disp_x disp_y'
volumetric_locking_correction = false
[]
[Functions]
[./up]
type = PiecewiseLinear
x = '0 1 2 3'
y = '0 0.0001 0 -.0001'
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
add_variables = true
strain = FINITE
[]
[]
[Contact]
[./dummy_name]
primary = 2
secondary = 3
penalty = 1e6
model = frictionless
tangential_tolerance = 0.01
[../]
[]
[BCs]
[./lateral]
type = DirichletBC
variable = disp_x
boundary = '1 4'
value = 0
[../]
[./bottom_up]
type = FunctionDirichletBC
variable = disp_y
boundary = 1
function = up
[../]
[./top]
type = DirichletBC
variable = disp_y
boundary = 4
value = 0.0
[../]
[]
[Materials]
[./stiffStuff1]
type = ComputeIsotropicElasticityTensor
block = '1 2'
youngs_modulus = 1.0e6
poissons_ratio = 0.3
[../]
[./stiffStuff1_stress]
type = ComputeFiniteStrainElasticStress
block = '1 2'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_hypre_type -ksp_gmres_restart'
petsc_options_value = 'hypre boomeramg 101'
line_search = 'none'
nl_rel_tol = 1e-8
nl_abs_tol = 1e-8
l_tol = 1e-4
l_max_its = 100
nl_max_its = 10
dt = 0.2
dtmin = 0.2
end_time = 3
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
[]
[Outputs]
exodus = true
[]
(modules/xfem/test/tests/solid_mechanics_basic/square_branch_tri_2d.i)
[GlobalParams]
displacements = 'disp_x disp_y'
volumetric_locking_correction = true
[]
[XFEM]
qrule = volfrac
output_cut_plane = true
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.0
elem_type = TRI3
[]
[UserObjects]
[./line_seg_cut_uo0]
type = LineSegmentCutUserObject
cut_data = '-1.0000e-10 6.6340e-01 6.6340e-01 -1.0000e-10'
time_start_cut = 0.0
time_end_cut = 1.0
[../]
[./line_seg_cut_uo1]
type = LineSegmentCutUserObject
cut_data = '3.3120e-01 3.3200e-01 1.0001e+00 3.3200e-01'
time_start_cut = 1.0
time_end_cut = 2.0
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
planar_formulation = PLANE_STRAIN
add_variables = true
[../]
[]
[Functions]
[./right_disp_x]
type = PiecewiseLinear
x = '0 1.0 2.0 3.0'
y = '0 0.005 0.01 0.01'
[../]
[./top_disp_y]
type = PiecewiseLinear
x = '0 1.0 2.0 3.0'
y = '0 0.005 0.01 0.01'
[../]
[]
[BCs]
[./right_x]
type = FunctionDirichletBC
boundary = 1
variable = disp_x
function = right_disp_x
[../]
[./top_y]
type = FunctionDirichletBC
boundary = 2
variable = disp_y
function = top_disp_y
[../]
[./bottom_y]
type = DirichletBC
boundary = 0
variable = disp_y
value = 0.0
[../]
[./left_x]
type = DirichletBC
boundary = 3
variable = disp_x
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 8'
line_search = 'none'
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
# controls for linear iterations
l_max_its = 100
l_tol = 1e-2
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-16
nl_abs_tol = 1e-10
# time control
start_time = 0.0
dt = 1.0
end_time = 2.2
num_steps = 5000
[]
[Outputs]
file_base = square_branch_tri_2d_out
exodus = true
[./console]
type = Console
output_linear = true
[../]
[]
(modules/combined/examples/xfem/xfem_thermomechanics_stress_growth.i)
# This is a demonstration of a simple thermomechanics simulation using
# XFEM in which a single crack propagates based on a principal stress
# criterion.
#
# The top and bottom of the plate are fixed in the y direction, and the
# top of the plate is cooled down over time. The thermal contraction
# causes tensile stresses, which lead to crack propagation. The crack
# propagates in a curved path because of the changinging nature of
# the thermal gradient as a result of the crack. There is no heat
# conduction across the crack as soon as it forms.
[GlobalParams]
displacements = 'disp_x disp_y'
volumetric_locking_correction = true
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 11
ny = 11
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.0
elem_type = QUAD4
[]
[Variables]
# Solve for the temperature and the displacements
# Displacements are not specified because the TensorMechanics/Master Action sets them up
[./temp]
initial_condition = 300
[../]
[]
[XFEM]
geometric_cut_userobjects = 'line_seg_cut_uo'
qrule = volfrac
output_cut_plane = true
[]
[UserObjects]
[./line_seg_cut_uo]
type = LineSegmentCutUserObject
cut_data = '1.0 0.5 0.8 0.5'
time_start_cut = 0.0
time_end_cut = 0.0
[../]
[./xfem_marker_uo]
type = XFEMRankTwoTensorMarkerUserObject
execute_on = timestep_end
tensor = stress
scalar_type = MaxPrincipal
threshold = 5e+1
average = true
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = FINITE
planar_formulation = plane_strain
add_variables = true
eigenstrain_names = eigenstrain
[../]
[]
[Kernels]
[./htcond]
type = HeatConduction
variable = temp
[../]
[]
[BCs]
[./bottomx]
type = DirichletBC
boundary = bottom
variable = disp_x
value = 0.0
[../]
[./bottomy]
type = DirichletBC
boundary = bottom
variable = disp_y
value = 0.0
[../]
[./topx]
type = DirichletBC
boundary = top
variable = disp_x
value = 0.0
[../]
[./topy]
type = DirichletBC
boundary = top
variable = disp_y
value = 0.0
[../]
[./topt]
type = FunctionDirichletBC
boundary = top
variable = temp
function = 273-t*27.3
[../]
[./bott]
type = FunctionDirichletBC
boundary = bottom
variable = temp
function = 273
# value = 273.0
[../]
[]
[Materials]
[./thcond]
type = GenericConstantMaterial
prop_names = 'thermal_conductivity'
prop_values = '5e-6'
[../]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./_elastic_strain]
type = ComputeFiniteStrainElasticStress
[../]
[./thermal_strain]
type= ComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 10e-6
temperature = temp
stress_free_temperature = 273
eigenstrain_name = eigenstrain
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 8'
line_search = 'none'
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
# controls for linear iterations
l_max_its = 100
l_tol = 1e-2
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-14
nl_abs_tol = 1e-9
# time control
start_time = 0.0
dt = 1.0
end_time = 10.0
max_xfem_update = 5
[]
[Outputs]
exodus = true
execute_on = timestep_end
[./console]
type = Console
output_linear = true
[../]
[]
(modules/xfem/test/tests/second_order_elements/square_branch_tri6_2d.i)
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
volumetric_locking_correction = false
[]
[XFEM]
qrule = volfrac
output_cut_plane = true
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.0
elem_type = TRI6
[]
[UserObjects]
[./line_seg_cut_set_uo]
type = LineSegmentCutSetUserObject
cut_data = '-1.0000e-10 6.6340e-01 6.6340e-01 -1.0000e-10 0.0 1.0
3.3120e-01 3.3200e-01 1.0001e+00 3.3200e-01 1.0 2.0'
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
[../]
[]
[Functions]
[./right_disp_x]
type = PiecewiseLinear
x = '0 1.0 2.0 3.0'
y = '0 0.005 0.01 0.01'
[../]
[./top_disp_y]
type = PiecewiseLinear
x = '0 1.0 2.0 3.0'
y = '0 0.005 0.01 0.01'
[../]
[]
[BCs]
[./right_x]
type = FunctionDirichletBC
boundary = 1
variable = disp_x
function = right_disp_x
[../]
[./top_y]
type = FunctionDirichletBC
boundary = 2
variable = disp_y
function = top_disp_y
[../]
[./bottom_y]
type = DirichletBC
boundary = 0
variable = disp_y
value = 0.0
[../]
[./left_x]
type = DirichletBC
boundary = 3
variable = disp_x
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 8'
line_search = 'none'
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
# controls for linear iterations
l_max_its = 100
l_tol = 1e-2
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-16
nl_abs_tol = 1e-10
# time control
start_time = 0.0
dt = 1.0
end_time = 2.2
num_steps = 5000
[]
[Outputs]
exodus = true
[./console]
type = Console
output_linear = true
[../]
[]
(modules/xfem/test/tests/solid_mechanics_basic/elliptical_crack.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[XFEM]
qrule = volfrac
output_cut_plane = true
[]
[Mesh]
file = quarter_sym.e
[]
[UserObjects]
[./ellip_cut_uo]
type = EllipseCutUserObject
cut_data = '-0.5 -0.5 0
-0.5 -0.1 0
0.1 -0.5 0'
[../]
[]
[DomainIntegral]
integrals = 'InteractionIntegralKI'
crack_direction_method = CurvedCrackFront
radius_inner = '0.1'
radius_outer = '0.2'
poissons_ratio = 0.3
youngs_modulus = 207000
block = 1
crack_front_points_provider = ellip_cut_uo
number_points_from_provider = 12
closed_loop = true
incremental = true
[]
[Modules/TensorMechanics/Master]
[./all]
strain = FINITE
add_variables = true
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
[../]
[]
[Functions]
[./top_trac_z]
type = ConstantFunction
value = 10
[../]
[]
[BCs]
[./top_z]
type = FunctionNeumannBC
boundary = 2
variable = disp_z
function = top_trac_z
[../]
[./bottom_x]
type = DirichletBC
boundary = 1
variable = disp_x
value = 0.0
[../]
[./bottom_y]
type = DirichletBC
boundary = 1
variable = disp_y
value = 0.0
[../]
[./bottom_z]
type = DirichletBC
boundary = 1
variable = disp_z
value = 0.0
[../]
[./sym_y]
type = DirichletBC
boundary = 3
variable = disp_y
value = 0.0
[../]
[./sym_x]
type = DirichletBC
boundary = 4
variable = disp_x
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 207000
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 8'
line_search = 'none'
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
# controls for linear iterations
l_max_its = 100
l_tol = 1e-2
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-10
nl_abs_tol = 1e-10
# time control
start_time = 0.0
dt = 1.0
end_time = 1.0
[]
[Outputs]
file_base = elliptical_crack_out
exodus = true
execute_on = timestep_end
[./console]
type = Console
output_linear = true
[../]
[]
(test/tests/predictors/simple/predictor_test_skip_after_failed_tstep.i)
# The purpose of this test is to test the simple predictor.
# The test is adjusted to produce a failed time step.
# The predictor option 'skip_after_failed_timestep' should suppress a prediction
# after the failed time step.
[Mesh]
type = GeneratedMesh
dim = 2
xmin = 0
xmax = 1
ymin = 0
ymax = 1
nx = 3
ny = 3
[]
[Functions]
[./ramp1]
type = PiecewiseLinear
x = '0 0.5 1'
y = '0 1 4'
[../]
[]
[Variables]
[./u]
order = FIRST
family = LAGRANGE
[../]
[]
[Kernels]
[./diff_u]
type = Diffusion
variable = u
[../]
[]
[BCs]
[./bot]
type = DirichletBC
variable = u
boundary = bottom
value = 0.0
[../]
[./ss2_x]
type = FunctionDirichletBC
variable = u
boundary = top
function = ramp1
[../]
[]
[Problem]
type = FailingProblem
fail_step = 6
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
nl_max_its = 15
nl_rel_tol = 1e-14
nl_abs_tol = 1e-14
l_tol = 1e-14
start_time = 0.0
end_time = 1.0
[./TimeStepper]
type = ConstantDT
dt = 0.1
cutback_factor_at_failure = 0.5
[../]
[./Predictor]
type = SimplePredictor
scale = 1.0
skip_after_failed_timestep = true
[../]
[]
[Postprocessors]
[./final_residual]
type = Residual
residual_type = final
[../]
[./initial_residual_before]
type = Residual
residual_type = initial_before_preset
[../]
[./initial_residual_after]
type = Residual
residual_type = initial_after_preset
[../]
[]
[Outputs]
csv = true
[]
(modules/contact/test/tests/sliding_block/sliding/frictionless_penalty.i)
# This is a benchmark test that checks constraint based frictionless
# contact using the penalty method. In this test a constant
# displacement is applied in the horizontal direction to simulate
# a small block come sliding down a larger block.
#
# The gold file is run on one processor
# and the benchmark case is run on a minimum of 4 processors to ensure no
# parallel variability in the contact pressure and penetration results.
#
[Mesh]
file = sliding_elastic_blocks_2d.e
patch_size = 80
[]
[GlobalParams]
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[AuxVariables]
[./penetration]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[]
[Functions]
[./vertical_movement]
type = ParsedFunction
value = -t
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
add_variables = true
strain = FINITE
[../]
[]
[AuxKernels]
[./zeroslip_x]
type = ConstantAux
variable = inc_slip_x
boundary = 3
execute_on = timestep_begin
value = 0.0
[../]
[./zeroslip_y]
type = ConstantAux
variable = inc_slip_y
boundary = 3
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 = 3
paired_boundary = 2
[../]
[]
[Postprocessors]
[./nonlinear_its]
type = NumNonlinearIterations
execute_on = timestep_end
[../]
[./penetration]
type = NodalVariableValue
variable = penetration
nodeid = 222
[../]
[./contact_pressure]
type = NodalVariableValue
variable = contact_pressure
nodeid = 222
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[../]
[./right_x]
type = DirichletBC
variable = disp_x
boundary = 4
value = -0.02
[../]
[./right_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 4
function = vertical_movement
[../]
[]
[Materials]
[./left]
type = ComputeIsotropicElasticityTensor
block = '1 2'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./left_stress]
type = ComputeFiniteStrainElasticStress
block = '1 2'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 100
nl_max_its = 1000
dt = 0.1
end_time = 15
num_steps = 1000
l_tol = 1e-6
nl_rel_tol = 1e-10
nl_abs_tol = 1e-6
dtmin = 0.01
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
[]
[Outputs]
interval = 10
[./out]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[]
[Contact]
[./leftright]
secondary = 3
primary = 2
model = frictionless
penalty = 1e+7
formulation = penalty
normal_smoothing_distance = 0.1
[../]
[]
(modules/contact/test/tests/sliding_block/sliding/frictional_02_penalty.i)
# This is a benchmark test that checks constraint based frictional
# contact using the penalty method. In this test a constant
# displacement is applied in the horizontal direction to simulate
# a small block come sliding down a larger block.
#
# A friction coefficient of 0.2 is used. The gold file is run on one processor
# and the benchmark case is run on a minimum of 4 processors to ensure no
# parallel variability in the contact pressure and penetration results.
#
[Mesh]
file = sliding_elastic_blocks_2d.e
patch_size = 80
[]
[GlobalParams]
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[AuxVariables]
[./penetration]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[]
[Functions]
[./vertical_movement]
type = ParsedFunction
value = -t
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
add_variables = true
strain = FINITE
[../]
[]
[AuxKernels]
[./zeroslip_x]
type = ConstantAux
variable = inc_slip_x
boundary = 3
execute_on = timestep_begin
value = 0.0
[../]
[./zeroslip_y]
type = ConstantAux
variable = inc_slip_y
boundary = 3
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 = 3
paired_boundary = 2
[../]
[]
[Postprocessors]
[./nonlinear_its]
type = NumNonlinearIterations
execute_on = timestep_end
[../]
[./penetration]
type = NodalVariableValue
variable = penetration
nodeid = 222
[../]
[./contact_pressure]
type = NodalVariableValue
variable = contact_pressure
nodeid = 222
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[../]
[./right_x]
type = DirichletBC
variable = disp_x
boundary = 4
value = -0.02
[../]
[./right_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 4
function = vertical_movement
[../]
[]
[Materials]
[./left]
type = ComputeIsotropicElasticityTensor
block = '1 2'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
block = '1 2'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 100
nl_max_its = 1000
dt = 0.1
end_time = 15
num_steps = 1000
l_tol = 1e-6
nl_rel_tol = 1e-10
nl_abs_tol = 1e-6
dtmin = 0.01
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
[]
[Outputs]
interval = 10
[./out]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[]
[Contact]
[./leftright]
secondary = 3
primary = 2
model = coulomb
penalty = 1e+7
friction_coefficient = 0.2
formulation = penalty
normal_smoothing_distance = 0.1
[../]
[]
(modules/contact/test/tests/sliding_block/in_and_out/frictional_04_penalty.i)
# This is a benchmark test that checks constraint based frictional
# contact using the penalty method. In this test a sinusoidal
# displacement is applied in the horizontal direction to simulate
# a small block come in and out of contact as it slides down a larger block.
#
# The sinusoid is of the form 0.4sin(4t)+0.2 and a friction coefficient
# of 0.4 is used. The gold file is run on one processor and the benchmark
# case is run on a minimum of 4 processors to ensure no parallel variability
# in the contact pressure and penetration results. Further documentation can
# found in moose/modules/contact/doc/sliding_block/
#
[Mesh]
file = sliding_elastic_blocks_2d.e
patch_size = 80
[]
[GlobalParams]
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[AuxVariables]
[./penetration]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[]
[Functions]
[./vertical_movement]
type = ParsedFunction
value = -t
[../]
[./horizontal_movement]
type = ParsedFunction
value = -0.04*sin(4*t)+0.02
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
add_variables = true
strain = FINITE
[../]
[]
[AuxKernels]
[./zeroslip_x]
type = ConstantAux
variable = inc_slip_x
boundary = 3
execute_on = timestep_begin
value = 0.0
[../]
[./zeroslip_y]
type = ConstantAux
variable = inc_slip_y
boundary = 3
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 = 3
paired_boundary = 2
[../]
[]
[Postprocessors]
[./nonlinear_its]
type = NumNonlinearIterations
execute_on = timestep_end
[../]
[./penetration]
type = NodalVariableValue
variable = penetration
nodeid = 222
[../]
[./contact_pressure]
type = NodalVariableValue
variable = contact_pressure
nodeid = 222
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[../]
[./right_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 4
function = horizontal_movement
[../]
[./right_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 4
function = vertical_movement
[../]
[]
[Materials]
[./left]
type = ComputeIsotropicElasticityTensor
block = '1 2'
youngs_modulus = 1e6
poissons_ratio = 0.3
constant_on = SUBDOMAIN
[../]
[./left_stress]
type = ComputeFiniteStrainElasticStress
block = '1 2'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -sub_pc_type -pc_asm_overlap -ksp_gmres_restart'
petsc_options_value = 'asm lu 20 101'
line_search = 'none'
l_max_its = 100
nl_max_its = 1000
dt = 0.1
end_time = 15
num_steps = 1000
l_tol = 1e-3
nl_rel_tol = 1e-10
nl_abs_tol = 1e-6
dtmin = 0.01
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
[]
[Outputs]
# csv = true
interval = 10
[./out]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[]
[Contact]
[./leftright]
secondary = 3
primary = 2
model = coulomb
penalty = 1e+7
friction_coefficient = 0.4
formulation = penalty
normal_smoothing_distance = 0.1
[../]
[]
(modules/contact/test/tests/mechanical_constraint/glued_penalty.i)
[Mesh]
file = blocks_2d_nogap.e
[]
[GlobalParams]
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[AuxVariables]
[./penetration]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[]
[Functions]
[./vertical_movement]
type = ParsedFunction
value = -t
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
add_variables = true
strain = FINITE
[../]
[]
[AuxKernels]
[./zeroslip_x]
type = ConstantAux
variable = inc_slip_x
boundary = 3
execute_on = timestep_begin
value = 0.0
[../]
[./zeroslip_y]
type = ConstantAux
variable = inc_slip_y
boundary = 3
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 = 3
paired_boundary = 2
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[../]
[./right_x]
type = DirichletBC
variable = disp_x
boundary = 4
#Initial gap is 0.01
value = -0.01
[../]
[./right_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 4
function = vertical_movement
[../]
[]
[Materials]
[./left]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1e7
poissons_ratio = 0.3
[../]
[./right]
type = ComputeIsotropicElasticityTensor
block = '2'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
block = '1 2'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
line_search = 'none'
l_max_its = 100
nl_max_its = 1000
dt = 0.01
end_time = 0.10
num_steps = 1000
l_tol = 1e-6
nl_rel_tol = 1e-10
nl_abs_tol = 1e-8
dtmin = 0.01
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
[]
[Outputs]
[./out]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[]
[Contact]
[./leftright]
primary = 2
secondary = 3
model = glued
formulation = penalty
penalty = 1e+7
[../]
[]
(test/tests/predictors/simple/predictor_test.i)
# The purpose of this test is to test the simple predictor. This is a very
# small, monotonically loaded block of material. If things are working right,
# the predictor should come very close to exactly nailing the solution on steps
# after the first step.
# The main thing to check here is that when the predictor is applied in the
# second step, the initial residual is almost zero.
[Mesh]
type = GeneratedMesh
dim = 2
xmin = 0
xmax = 1
ymin = 0
ymax = 1
nx = 3
ny = 3
[]
[Functions]
[./ramp1]
type = ParsedFunction
value = 't'
[../]
[]
[Variables]
[./u]
order = FIRST
family = LAGRANGE
[../]
[]
[Kernels]
[./diff_u]
type = Diffusion
variable = u
[../]
[]
[BCs]
[./bot]
type = DirichletBC
variable = u
boundary = bottom
value = 0.0
[../]
[./ss2_x]
type = FunctionDirichletBC
variable = u
boundary = top
function = ramp1
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
nl_max_its = 15
nl_rel_tol = 1e-14
nl_abs_tol = 1e-14
start_time = 0.0
dt = 0.5
end_time = 1.0
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
[]
[Postprocessors]
[./final_residual]
type = Residual
residual_type = final
[../]
[./initial_residual_before]
type = Residual
residual_type = initial_before_preset
[../]
[./initial_residual_after]
type = Residual
residual_type = initial_after_preset
[../]
[]
[Outputs]
csv = true
[]
(modules/contact/test/tests/sliding_block/sliding/frictionless_kinematic.i)
# This is a benchmark test that checks constraint based frictionless
# contact using the kinematic method. In this test a constant
# displacement is applied in the horizontal direction to simulate
# a small block come sliding down a larger block.
#
# The gold file is run on one processor
# and the benchmark case is run on a minimum of 4 processors to ensure no
# parallel variability in the contact pressure and penetration results.
#
[Mesh]
file = sliding_elastic_blocks_2d.e
patch_size = 80
[]
[GlobalParams]
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[AuxVariables]
[./penetration]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[]
[Functions]
[./vertical_movement]
type = ParsedFunction
value = -t
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
add_variables = true
strain = FINITE
[../]
[]
[AuxKernels]
[./zeroslip_x]
type = ConstantAux
variable = inc_slip_x
boundary = 3
execute_on = timestep_begin
value = 0.0
[../]
[./zeroslip_y]
type = ConstantAux
variable = inc_slip_y
boundary = 3
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 = 3
paired_boundary = 2
[../]
[]
[Postprocessors]
[./nonlinear_its]
type = NumNonlinearIterations
execute_on = timestep_end
[../]
[./penetration]
type = NodalVariableValue
variable = penetration
nodeid = 222
[../]
[./contact_pressure]
type = NodalVariableValue
variable = contact_pressure
nodeid = 222
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[../]
[./right_x]
type = DirichletBC
variable = disp_x
boundary = 4
value = -0.02
[../]
[./right_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 4
function = vertical_movement
[../]
[]
[Materials]
[./left]
type = ComputeIsotropicElasticityTensor
block = '1 2'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./left_stress]
type = ComputeFiniteStrainElasticStress
block = '1 2'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -sub_pc_type -pc_asm_overlap -ksp_gmres_restart'
petsc_options_value = 'asm lu 20 101'
line_search = 'none'
l_max_its = 100
nl_max_its = 1000
dt = 0.1
end_time = 15
num_steps = 1000
l_tol = 1e-6
nl_rel_tol = 1e-10
nl_abs_tol = 1e-6
dtmin = 0.01
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
[]
[Outputs]
interval = 10
[./out]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[]
[Contact]
[./leftright]
secondary = 3
primary = 2
model = frictionless
penalty = 1e+6
normal_smoothing_distance = 0.1
[../]
[]
(modules/tensor_mechanics/test/tests/ad_isotropic_elasticity_tensor/2D-axisymmetric_rz_test.i)
[Mesh]
type = GeneratedMesh
dim = 2
elem_type = QUAD8
[]
[GlobalParams]
displacements = 'disp_r disp_z'
[]
[Problem]
coord_type = RZ
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
add_variables = true
use_automatic_differentiation = true
[../]
[]
[AuxVariables]
[./stress_theta]
order = CONSTANT
family = MONOMIAL
[../]
[]
[AuxKernels]
[./stress_theta]
type = ADRankTwoAux
rank_two_tensor = stress
index_i = 2
index_j = 2
variable = stress_theta
execute_on = timestep_end
[../]
[]
[Materials]
[./elasticity_tensor]
#Material constants selected to match isotropic lambda and shear modulus case
type = ADComputeElasticityTensor
C_ijkl = '1022726 113636 113636 1022726 454545'
fill_method = axisymmetric_rz
[../]
[./elastic_stress]
type = ADComputeLinearElasticStress
[../]
[]
[BCs]
# pin particle along symmetry planes
[./no_disp_r]
type = DirichletBC
variable = disp_r
boundary = left
value = 0.0
[../]
[./no_disp_z]
type = DirichletBC
variable = disp_z
boundary = bottom
value = 0.0
[../]
# exterior and internal pressures
[./exterior_pressure_r]
type = ADPressure
variable = disp_r
boundary = right
component = 0
constant = 200000
[../]
[]
[Debug]
show_var_residual_norms = true
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = ' 201 hypre boomeramg 10'
line_search = 'none'
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
nl_rel_tol = 5e-9
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
end_time = 1
num_steps = 1000
dtmax = 5e6
dtmin = 1
[./TimeStepper]
type = IterationAdaptiveDT
dt = 1
optimal_iterations = 6
iteration_window = 0
linear_iteration_ratio = 100
[../]
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
[]
[Postprocessors]
[./dt]
type = TimestepSize
[../]
[]
[Outputs]
file_base = 2D-axisymmetric_rz_test_out
exodus = true
[]
(modules/contact/test/tests/glued/glued_contact_mechanical_constraint_test.i)
# This is a mechanical constraint (contact formulation) version of glued_contact_mechanical_constraint.i
[Mesh]
file = glued_contact_test.e
[]
[GlobalParams]
volumetric_locking_correction = true
displacements = 'disp_x disp_y disp_z'
[]
[Functions]
[./up]
type = PiecewiseLinear
x = '0 1'
y = '0 0.5001'
[../]
[./lateral]
type = PiecewiseLinear
x = '0 1 2 3'
y = '0 0 1 0'
scale_factor = 0.5
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
[../]
[]
[Contact]
[./dummy_name]
primary = 2
secondary = 3
penalty = 1e6
model = glued
formulation = kinematic
[../]
[]
[BCs]
[./bottom_lateral]
type = FunctionDirichletBC
variable = disp_x
boundary = 1
function = lateral
[../]
[./bottom_up]
type = FunctionDirichletBC
variable = disp_y
boundary = 1
function = up
[../]
[./bottom_out]
type = DirichletBC
variable = disp_z
boundary = 1
value = 0.0
[../]
[./top]
type = DirichletBC
variable = disp_y
boundary = 4
value = 0.0
[../]
[]
[Materials]
[./stiffStuff1]
type = ComputeIsotropicElasticityTensor
block = '1'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stiffStuff1_strain]
type= ComputeFiniteStrain
block = '1'
[../]
[./stiffStuff1_stress]
type = ComputeFiniteStrainElasticStress
block = '1'
[../]
[./stiffStuff2]
type = ComputeIsotropicElasticityTensor
block = '2'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stiffStuff2_strain]
type= ComputeFiniteStrain
block = '2'
[../]
[./stiffStuff2_stress]
type = ComputeFiniteStrainElasticStress
block = '2'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
#petsc_options_iname = '-pc_type -pc_hypre_type -snes_type -snes_ls -snes_linesearch_type -ksp_gmres_restart'
#petsc_options_value = 'hypre boomeramg ls basic basic 101'
petsc_options_iname = '-pc_type -ksp_gmres_restart'
petsc_options_value = 'ilu 101'
line_search = 'none'
nl_abs_tol = 1e-8
nl_rel_tol = 1e-8
l_tol = 1e-4
l_max_its = 100
nl_max_its = 10
dt = 0.1
num_steps = 30
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
[]
[Postprocessors]
active = ''
[./resid]
type = Residual
[../]
[./iters]
type = NumNonlinearIterations
[../]
[]
[Outputs]
file_base = mechanical_constraint_out
exodus = true
[]
(modules/xfem/test/tests/moment_fitting/solid_mechanics_moment_fitting.i)
# Test for a mechanics problem which uses four points moment_fitting approach.
# See this paper (https://doi.org/10.1007/s00466-018-1544-2) for more details about moment_fitting approach.
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y'
volumetric_locking_correction = true
[]
[XFEM]
qrule = moment_fitting
output_cut_plane = true
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.0
elem_type = QUAD4
[]
[UserObjects]
[./line_seg_cut_uo0]
type = LineSegmentCutUserObject
cut_data = '0.0000e+00 6.3330e-01 3.9000e-01 6.3330e-01'
time_start_cut = 0.0
time_end_cut = 0.0
[../]
[./line_seg_cut_uo1]
type = LineSegmentCutUserObject
cut_data = '3.9000e-01 6.3330e-01 6.8000e-01 6.3330e-01'
time_start_cut = 0.0
time_end_cut = 0.0
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = SMALL
[../]
[]
[Functions]
[./right_trac_x]
type = ParsedFunction
value = '-(t*M*y)/I'
vars = 'M E I'
vals = '2e4 1e6 0.666666667'
[../]
[./bottom_disp_y]
type = ParsedFunction
value = '((t*M)/(2*E*I))*(1-nu*nu)*(x*x-0.25*l*l)'
vars = 'M E I l nu'
vals = '2e4 1e6 0.666666667 2.0 0.3'
[../]
[./soln_x]
type = ParsedFunction
value = '-(M/(E*I))*(1-nu*nu)*x*y'
vars = 'M E I nu'
vals = '2e4 1e6 0.666666667 0.3'
[../]
[./soln_y]
type = ParsedFunction
value = '(M/(2*E*I))*(1-nu*nu)*(x*x-0.25*l*l+(nu/(1-nu))*y*y)'
vars = 'M E I l nu'
vals = '2e4 1e6 0.666666667 2.0 0.3'
[../]
[]
[BCs]
[./right_x]
type = FunctionNeumannBC
boundary = 1
variable = disp_x
function = right_trac_x
[../]
[./bottom_y]
type = FunctionDirichletBC
boundary = 0
variable = disp_y
function = bottom_disp_y
[../]
[./left_x]
type = DirichletBC
boundary = 3
variable = disp_x
value = 0.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 8'
line_search = 'none'
# [./Quadrature]
# order = FOURTH
# type = MONOMIAL
# [../]
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
# controls for linear iterations
l_max_its = 100
l_tol = 1e-2
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-16
nl_abs_tol = 1e-10
# time control
start_time = 0.0
dt = 0.5
end_time = 1.0
num_steps = 5000
[]
[Postprocessors]
[./numel]
type = NumElems
execute_on = timestep_end
[../]
[./integral]
type = ElementVectorL2Error
var_x = disp_x
var_y = disp_y
function_x = soln_x
function_y = soln_y
execute_on = timestep_end
[../]
[]
[Outputs]
exodus = true
[./console]
type = Console
output_linear = true
[../]
[]
(modules/contact/test/tests/sliding_block/sliding/frictional_02_aug.i)
# This is a benchmark test that checks constraint based frictional
# contact using the augmented lagrangian method. In this test a constant
# displacement is applied in the horizontal direction to simulate
# a small block come sliding down a larger block.
#
# A friction coefficient of 0.2 is used. The gold file is run on one processor
# and the benchmark case is run on a minimum of 4 processors to ensure no
# parallel variability in the contact pressure and penetration results.
#
[Mesh]
file = sliding_elastic_blocks_2d.e
patch_size = 80
[]
[GlobalParams]
displacements = 'disp_x disp_y'
volumetric_locking_correction = false
[]
[AuxVariables]
[./contact_traction]
[../]
[./penetration]
[../]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[./saved_x]
[../]
[./saved_y]
[../]
[./diag_saved_x]
[../]
[./diag_saved_y]
[../]
[./tang_force_x]
[../]
[./tang_force_y]
[../]
[]
[Functions]
[./vertical_movement]
type = ParsedFunction
value = -t
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
add_variables = true
strain = FINITE
save_in = 'saved_x saved_y'
extra_vector_tags = 'ref'
[../]
[]
[AuxKernels]
[./zeroslip_x]
type = ConstantAux
variable = inc_slip_x
boundary = 3
execute_on = timestep_begin
value = 0.0
[../]
[./zeroslip_y]
type = ConstantAux
variable = inc_slip_y
boundary = 3
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 = 3
paired_boundary = 2
[../]
[]
[Postprocessors]
[./nonlinear_its]
type = NumNonlinearIterations
execute_on = timestep_end
[../]
[./penetration]
type = NodalVariableValue
variable = penetration
nodeid = 222
[../]
[./contact_pressure]
type = NodalVariableValue
variable = contact_pressure
nodeid = 222
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[../]
[./right_x]
type = DirichletBC
variable = disp_x
boundary = 4
value = -0.02
[../]
[./right_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 4
function = vertical_movement
[../]
[]
[Materials]
[./left]
type = ComputeIsotropicElasticityTensor
block = '1 2'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
block = '1 2'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 20
nl_max_its = 200
dt = 0.1
end_time = 15
num_steps = 200
l_tol = 1e-6
nl_rel_tol = 1e-8
nl_abs_tol = 1e-8
dtmin = 0.01
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
[]
[Outputs]
interval = 10
[./out]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[]
[Problem]
type = AugmentedLagrangianContactProblem
solution_variables = 'disp_x disp_y'
extra_tag_vectors = 'ref'
reference_vector = 'ref'
maximum_lagrangian_update_iterations = 100
[]
[Contact]
[./leftright]
secondary = 3
primary = 2
model = coulomb
penalty = 1e+7
friction_coefficient = 0.2
formulation = augmented_lagrange
normalize_penalty = true
al_penetration_tolerance = 1e-6
al_incremental_slip_tolerance = 1.0e-2
al_frictional_force_tolerance = 1e-3
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
(test/tests/predictors/simple/predictor_skip_test.i)
# The purpose of this test is to test the simple predictor. This is a very
# small, monotonically loaded block of material. If things are working right,
# the predictor should come very close to exactly nailing the solution on steps
# after the first step.
#This test checks to see that the predictor is skipped in the last step.
[Mesh]
type = GeneratedMesh
dim = 2
xmin = 0
xmax = 1
ymin = 0
ymax = 1
nx = 3
ny = 3
[]
[Functions]
[./ramp1]
type = ParsedFunction
value = 't'
[../]
[]
[Variables]
[./u]
order = FIRST
family = LAGRANGE
[../]
[]
[Kernels]
[./diff_u]
type = Diffusion
variable = u
[../]
[]
[BCs]
[./bot]
type = DirichletBC
variable = u
boundary = bottom
value = 0.0
[../]
[./ss2_x]
type = FunctionDirichletBC
variable = u
boundary = top
function = ramp1
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
nl_max_its = 15
nl_rel_tol = 1e-14
nl_abs_tol = 1e-14
start_time = 0.0
dt = 0.5
end_time = 1.0
[./Predictor]
type = SimplePredictor
scale = 1.0
skip_times = '1.0'
[../]
[]
[Postprocessors]
[./final_residual]
type = Residual
residual_type = final
[../]
[./initial_residual_before]
type = Residual
residual_type = initial_before_preset
[../]
[./initial_residual_after]
type = Residual
residual_type = initial_after_preset
[../]
[]
[Outputs]
csv = true
[]
(modules/contact/test/tests/mechanical_constraint/frictionless_kinematic_gap_offsets.i)
# this test is the same as frictionless_kinematic test but designed to test the gap offset capability
# gap offsets with value of 0.01 were introduced to both primary and secondary sides in the initial mesh
# these values were accounted using the gap offset capability to produce the same result as if no gap offsets were introduced
[Mesh]
file = blocks_2d_gap_offset.e
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[AuxVariables]
[./inc_slip_x]
[../]
[./inc_slip_y]
[../]
[./accum_slip_x]
[../]
[./accum_slip_y]
[../]
[./primary_gap_offset]
[../]
[./secondary_gap_offset]
[../]
[./mapped_primary_gap_offset]
[../]
[]
[Functions]
[./vertical_movement]
type = ParsedFunction
value = -t
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
add_variables = true
strain = FINITE
[../]
[]
[AuxKernels]
[./zeroslip_x]
type = ConstantAux
variable = inc_slip_x
boundary = 3
execute_on = timestep_begin
value = 0.0
[../]
[./zeroslip_y]
type = ConstantAux
variable = inc_slip_y
boundary = 3
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
[../]
[./primary_gap_offset]
type = ConstantAux
variable = primary_gap_offset
value = -0.01
boundary = 2
[../]
[./mapped_primary_gap_offset]
type = GapValueAux
variable = mapped_primary_gap_offset
paired_variable = primary_gap_offset
boundary = 3
paired_boundary = 2
[../]
[./secondary_gap_offset]
type = ConstantAux
variable = secondary_gap_offset
value = -0.01
boundary = 3
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[../]
[./right_x]
type = DirichletBC
variable = disp_x
boundary = 4
value = -0.02
[../]
[./right_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 4
function = vertical_movement
[../]
[]
[Materials]
[./left]
type = ComputeIsotropicElasticityTensor
block = 1
poissons_ratio = 0.3
youngs_modulus = 1e7
[../]
[./right]
type = ComputeIsotropicElasticityTensor
block = 2
poissons_ratio = 0.3
youngs_modulus = 1e6
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
block = '1 2'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
line_search = 'none'
l_max_its = 100
nl_max_its = 1000
dt = 0.01
end_time = 0.10
num_steps = 1000
l_tol = 1e-6
nl_rel_tol = 1e-10
nl_abs_tol = 1e-8
dtmin = 0.01
[./Predictor]
type = SimplePredictor
scale = 1.0
[../]
[]
[Outputs]
file_base = frictionless_kinematic_gap_offsets_out
[./exodus]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 5
[../]
[]
[Contact]
[./leftright]
primary = 2
secondary = 3
model = frictionless
penalty = 1e+6
secondary_gap_offset = secondary_gap_offset
mapped_primary_gap_offset = mapped_primary_gap_offset
[../]
[]