- inputsThe input MeshGenerators.
C++ Type:std::vector<MeshGeneratorName>
Description:The input MeshGenerators.
MeshCollectionGenerator
Collects multiple meshes into a single (unconnected) mesh.
Overview
The MeshCollectionGenerator
creates a new mesh that is a collection of sub-meshes (provided in the inputs
parameter). The sub-meshes are not linked in any way and interaction between them only occurs due to contact or other constraints.
Input Parameters
- show_infoFalseWhether or not to show mesh info after generating the mesh (bounding box, element types, sidesets, nodesets, subdomains, etc)
Default:False
C++ Type:bool
Options:
Description:Whether or not to show mesh info after generating the mesh (bounding box, element types, sidesets, nodesets, subdomains, etc)
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/contact/test/tests/mortar_tm/2d/ad_frictionless_sec/small.i)
- (test/tests/mortar/convergence-studies/gap-conductance/gap-conductance.i)
- (modules/contact/test/tests/mortar_tm/2drz/ad_frictionless_first/small.i)
- (modules/combined/test/tests/gap_heat_transfer_mortar/small-2d/small.i)
- (modules/contact/test/tests/mortar_tm/2d/frictionless_second/finite_noaction.i)
- (modules/contact/test/tests/mortar_tm/2drz/frictionless_second/small.i)
- (modules/combined/test/tests/gap_heat_transfer_mortar/finite-2d-rz/finite.i)
- (modules/contact/test/tests/mortar_tm/2d/ad_frictionless_fir/finite.i)
- (modules/contact/test/tests/mortar_tm/2d/frictionless_first/finite.i)
- (modules/contact/test/tests/mortar_tm/2drz/ad_frictionless_second/finite.i)
- (modules/combined/test/tests/gap_heat_transfer_mortar/small-2d-rz/small.i)
- (modules/contact/test/tests/mortar_tm/2d/frictionless_second/finite_rr.i)
- (test/tests/meshgenerators/mesh_collection_generator/mesh_collection_generator.i)
- (modules/contact/test/tests/mortar_tm/2d/frictionless_first/small.i)
- (modules/combined/test/tests/gap_heat_transfer_mortar/finite-2d/finite.i)
- (modules/contact/test/tests/mortar_tm/2drz/ad_frictionless_first/finite.i)
- (modules/contact/test/tests/mortar_tm/2drz/frictionless_first/finite.i)
- (modules/contact/test/tests/mortar_tm/2d/frictionless_second/small.i)
- (modules/contact/test/tests/mortar_tm/horizontal_blocks_mortar_TM.i)
- (test/tests/mortar/convergence-studies/solution-continuity/continuity.i)
- (modules/contact/test/tests/mortar_tm/2drz/frictionless_second/finite_rr.i)
- (modules/contact/test/tests/mortar_tm/2d/frictionless_second/finite.i)
- (modules/contact/test/tests/mortar_tm/2d/ad_frictionless_sec/finite_rr.i)
- (modules/heat_conduction/test/tests/heat_conduction/min_gap/min_gap.i)
- (modules/contact/test/tests/mortar_tm/2drz/ad_frictionless_first/finite_rr.i)
- (modules/contact/test/tests/mortar_tm/2drz/frictionless_first/finite_rr.i)
- (modules/contact/test/tests/mortar_tm/2drz/ad_frictionless_second/small.i)
- (modules/heat_conduction/test/tests/radiative_bcs/function_radiative_bc.i)
- (modules/contact/test/tests/mortar_tm/2drz/frictionless_first/finite_noaction.i)
- (modules/contact/test/tests/mortar_tm/2d/ad_frictionless_fir/small.i)
- (modules/contact/test/tests/mortar_tm/2drz/frictionless_second/finite_noaction.i)
- (modules/contact/test/tests/mortar_tm/2d/frictionless_first/finite_rr.i)
- (modules/contact/test/tests/mortar_tm/2d/frictionless_first/finite_noaction.i)
- (modules/contact/test/tests/mortar_tm/2d/ad_frictionless_sec/finite.i)
- (modules/contact/test/tests/mortar_tm/2drz/frictionless_second/finite.i)
- (modules/contact/test/tests/mortar_tm/2drz/frictionless_first/small.i)
- (modules/contact/test/tests/mortar_tm/2d/ad_frictionless_fir/finite_rr.i)
- (modules/contact/test/tests/mortar_tm/2drz/ad_frictionless_second/finite_rr.i)
(modules/contact/test/tests/mortar_tm/2d/ad_frictionless_sec/small.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD9
order = SECOND
name = 'small'
[Mesh]
patch_size = 80
patch_update_strategy = auto
[./plank]
type = GeneratedMeshGenerator
dim = 2
xmin = -0.3
xmax = 0.3
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
boundary_name_prefix = plank
[../]
[./plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[../]
[./block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.31
xmax = 0.91
ymin = 7.7
ymax = 8.5
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[../]
[./block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[../]
[./combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[../]
[./block_rename]
type = RenameBlockGenerator
input = combined
old_block_id = '1 2'
new_block_name = 'plank block'
[../]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[./disp_x]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[./disp_y]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[]
[Modules/TensorMechanics/Master]
[./action]
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank block'
use_automatic_differentiation = true
[../]
[]
[Contact]
[./frictionless]
mesh = block_rename
primary = plank_right
secondary = block_left
formulation = mortar
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = plank_left
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
boundary = plank_bottom
value = 0.0
[../]
[./right_x]
type = ADFunctionDirichletBC
variable = disp_x
boundary = block_right
function = '-0.04*sin(4*(t+1.5))+0.02'
[../]
[./right_y]
type = ADFunctionDirichletBC
variable = disp_y
boundary = block_right
function = '-t'
[../]
[]
[Materials]
[./plank]
type = ADComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[../]
[./block]
type = ADComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[../]
[./stress]
type = ADComputeLinearElasticStress
block = 'plank block'
[../]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15'
end_time = 13.5
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'contact'
[]
[Postprocessors]
[./nl_its]
type = NumNonlinearIterations
[../]
[./total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[../]
[./l_its]
type = NumLinearIterations
[../]
[./total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[../]
[./contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[../]
[./avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[../]
[./max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[../]
[./min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[../]
[./avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[../]
[./max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[../]
[./min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[../]
[]
[Outputs]
exodus = true
file_base = ${name}
[./comp]
type = CSV
show = 'contact'
[../]
[./out]
type = CSV
file_base = '${name}_out'
[../]
[]
[Debug]
show_var_residual_norms = true
[]
(test/tests/mortar/convergence-studies/gap-conductance/gap-conductance.i)
[Problem]
error_on_jacobian_nonzero_reallocation = true
[]
[Mesh]
second_order = true
[./left_block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 1
ymin = 0
ymax = 1
nx = 2
ny = 2
elem_type = QUAD4
[../]
[./left_block_sidesets]
type = RenameBoundaryGenerator
input = left_block
old_boundary_id = '0 1 2 3'
new_boundary_name = 'lb_bottom lb_right lb_top lb_left'
[../]
[./left_block_id]
type = SubdomainIDGenerator
input = left_block_sidesets
subdomain_id = 1
[../]
[./right_block]
type = GeneratedMeshGenerator
dim = 2
xmin = 2
xmax = 3
ymin = 0
ymax = 1
nx = 2
ny = 2
elem_type = QUAD4
[../]
[./right_block_id]
type = SubdomainIDGenerator
input = right_block
subdomain_id = 2
[../]
[right_block_change_boundary_id]
type = RenameBoundaryGenerator
input = right_block_id
old_boundary_id = '0 1 2 3'
new_boundary_id = '100 101 102 103'
[]
[./combined]
type = MeshCollectionGenerator
inputs = 'left_block_id right_block_change_boundary_id'
[../]
[./block_rename]
type = RenameBlockGenerator
input = combined
old_block_id = '1 2'
new_block_name = 'left_block right_block'
[../]
[right_right_sideset]
type = SideSetsAroundSubdomainGenerator
input = block_rename
new_boundary = rb_right
block = right_block
normal = '1 0 0'
[]
[right_left_sideset]
type = SideSetsAroundSubdomainGenerator
input = right_right_sideset
new_boundary = rb_left
block = right_block
normal = '-1 0 0'
[]
[right_top_sideset]
type = SideSetsAroundSubdomainGenerator
input = right_left_sideset
new_boundary = rb_top
block = right_block
normal = '0 1 0'
[]
[right_bottom_sideset]
type = SideSetsAroundSubdomainGenerator
input = right_top_sideset
new_boundary = rb_bottom
block = right_block
normal = '0 -1 0'
[]
[secondary]
input = right_bottom_sideset
type = LowerDBlockFromSidesetGenerator
sidesets = 'lb_right'
new_block_id = '10001'
new_block_name = 'secondary_lower'
[]
[primary]
input = secondary
type = LowerDBlockFromSidesetGenerator
sidesets = 'rb_left'
new_block_id = '10000'
new_block_name = 'primary_lower'
[]
[]
[Variables]
[./T]
block = 'left_block right_block'
order = SECOND
[../]
[./lambda]
block = 'secondary_lower'
family = MONOMIAL
order = CONSTANT
[../]
[]
[BCs]
[./neumann]
type = FunctionGradientNeumannBC
exact_solution = exact_soln_primal
variable = T
boundary = 'lb_bottom lb_top lb_left rb_bottom rb_right rb_top'
[../]
[]
[Kernels]
[./conduction]
type = Diffusion
variable = T
block = 'left_block right_block'
[../]
[./sink]
type = Reaction
variable = T
block = 'left_block right_block'
[../]
[./forcing_function]
type = BodyForce
variable = T
function = forcing_function
block = 'left_block right_block'
[../]
[]
[Functions]
[./forcing_function]
type = ParsedFunction
value = ''
[../]
[./exact_soln_primal]
type = ParsedFunction
value = ''
[../]
[exact_soln_lambda]
type = ParsedFunction
value = ''
[]
[mms_secondary]
type = ParsedFunction
value = ''
[]
[mms_primary]
type = ParsedFunction
value = ''
[]
[]
[Debug]
show_var_residual_norms = 1
[]
[Constraints]
[./mortar]
type = GapHeatConductanceTest
primary_boundary = rb_left
secondary_boundary = lb_right
primary_subdomain = primary_lower
secondary_subdomain = secondary_lower
secondary_variable = T
variable = lambda
secondary_gap_conductance = 1
primary_gap_conductance = 1
secondary_mms_function = mms_secondary
primary_mms_function = mms_primary
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
solve_type = NEWTON
type = Steady
petsc_options = '-snes_converged_reason'
# petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
# petsc_options_value = 'lu superlu_dist'
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
exodus = true
csv = true
[dofmap]
type = DOFMap
execute_on = 'initial'
[]
[]
[Postprocessors]
[L2lambda]
type = ElementL2Error
variable = lambda
function = exact_soln_lambda
execute_on = 'timestep_end'
block = 'secondary_lower'
[]
[L2u]
type = ElementL2Error
variable = T
function = exact_soln_primal
execute_on = 'timestep_end'
block = 'left_block right_block'
[]
[h]
type = AverageElementSize
block = 'left_block right_block'
[]
[]
(modules/contact/test/tests/mortar_tm/2drz/ad_frictionless_first/small.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD4
order = FIRST
name = 'small'
[Problem]
coord_type = RZ
[]
[Mesh]
patch_size = 80
patch_update_strategy = auto
[./plank]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 0.6
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
boundary_name_prefix = plank
[../]
[./plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[../]
[./block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.61
xmax = 1.21
ymin = 9.2
ymax = 10.0
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[../]
[./block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[../]
[./combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[../]
[./block_rename]
type = RenameBlockGenerator
input = combined
old_block_id = '1 2'
new_block_name = 'plank block'
[../]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[./disp_x]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[./disp_y]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[]
[Modules/TensorMechanics/Master]
[./block]
use_automatic_differentiation = true
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'block'
[../]
[./plank]
use_automatic_differentiation = true
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank'
eigenstrain_names = 'swell'
[../]
[]
[Contact]
[./frictionless]
mesh = block_rename
primary = plank_right
secondary = block_left
formulation = mortar
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = plank_left
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
boundary = plank_bottom
value = 0.0
[../]
[./right_x]
type = DirichletBC
variable = disp_x
boundary = block_right
value = 0
[../]
[./right_y]
type = ADFunctionDirichletBC
variable = disp_y
boundary = block_right
function = '-t'
[../]
[]
[Materials]
[./plank]
type = ADComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[../]
[./block]
type = ADComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[../]
[./stress]
type = ADComputeLinearElasticStress
block = 'plank block'
[../]
[./swell]
type = ADComputeEigenstrain
block = 'plank'
eigenstrain_name = swell
eigen_base = '1 0 0 0 0 0 0 0 0'
prefactor = swell_mat
[../]
[./swell_mat]
type = ADGenericFunctionMaterial
prop_names = 'swell_mat'
prop_values = '7e-2*(1-cos(4*t))'
block = 'plank'
[../]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15'
end_time = 10
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'contact'
[]
[Postprocessors]
[./nl_its]
type = NumNonlinearIterations
[../]
[./total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[../]
[./l_its]
type = NumLinearIterations
[../]
[./total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[../]
[./contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[../]
[./avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[../]
[./max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[../]
[./min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[../]
[./avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[../]
[./max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[../]
[./min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[../]
[]
[Outputs]
exodus = true
file_base = ${name}
[./comp]
type = CSV
show = 'contact'
[../]
[./out]
type = CSV
file_base = '${name}_out'
[../]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/combined/test/tests/gap_heat_transfer_mortar/small-2d/small.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD4
order = FIRST
name = 'small'
[Mesh]
patch_size = 80
patch_update_strategy = auto
[plank]
type = GeneratedMeshGenerator
dim = 2
xmin = -0.3
xmax = 0.3
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
boundary_name_prefix = plank
[]
[plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[]
[block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.31
xmax = 0.91
ymin = 7.7
ymax = 8.5
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[]
[block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[]
[combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[]
[block_rename]
type = RenameBlockGenerator
input = combined
old_block_id = '1 2'
new_block_name = 'plank block'
[]
[secondary]
input = block_rename
type = LowerDBlockFromSidesetGenerator
sidesets = 'block_left'
new_block_id = '30'
new_block_name = 'frictionless_secondary_subdomain'
[]
[primary]
input = secondary
type = LowerDBlockFromSidesetGenerator
sidesets = 'plank_right'
new_block_id = '20'
new_block_name = 'frictionless_primary_subdomain'
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[disp_x]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[]
[disp_y]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[]
[temp]
order = ${order}
block = 'plank block'
scaling = 1e-1
[]
[thermal_lm]
order = ${order}
block = 'frictionless_secondary_subdomain'
scaling = 1e-7
[]
[frictionless_normal_lm]
order = FIRST
block = 'frictionless_secondary_subdomain'
scaling = 1e3
use_dual = true
[]
[]
[Modules/TensorMechanics/Master]
[action]
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank block'
use_automatic_differentiation = true
[]
[]
[Kernels]
[hc]
type = ADHeatConduction
variable = temp
use_displaced_mesh = true
block = 'plank block'
[]
[]
[Constraints]
[weighted_gap_lm]
type = ComputeWeightedGapLMMechanicalContact
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
variable = frictionless_normal_lm
disp_x = disp_x
disp_y = disp_y
use_displaced_mesh = true
[]
[ncp_lm]
type = ApplyPenetrationConstraintLMMechanicalContact
secondary = block_left
primary = plank_right
variable = frictionless_normal_lm
primary_variable = disp_x
[]
[normal_x]
type = NormalMortarMechanicalContact
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
variable = frictionless_normal_lm
secondary_variable = disp_x
component = x
use_displaced_mesh = true
compute_lm_residuals = false
[]
[normal_y]
type = NormalMortarMechanicalContact
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
variable = frictionless_normal_lm
secondary_variable = disp_y
component = y
use_displaced_mesh = true
compute_lm_residuals = false
[]
[thermal_contact]
type = GapConductanceConstraint
variable = thermal_lm
secondary_variable = temp
k = 1
use_displaced_mesh = true
primary_boundary = plank_right
primary_subdomain = frictionless_primary_subdomain
secondary_boundary = block_left
secondary_subdomain = frictionless_secondary_subdomain
displacements = 'disp_x disp_y'
[]
[]
[BCs]
[left_temp]
type = DirichletBC
variable = temp
boundary = 'plank_left'
value = 400
[]
[right_temp]
type = DirichletBC
variable = temp
boundary = 'block_right'
value = 300
[]
[left_x]
type = DirichletBC
variable = disp_x
boundary = plank_left
value = 0.0
[]
[left_y]
type = DirichletBC
variable = disp_y
boundary = plank_bottom
value = 0.0
[]
[right_x]
type = ADFunctionDirichletBC
variable = disp_x
boundary = block_right
function = '-0.04*sin(4*(t+1.5))+0.02'
[]
[right_y]
type = ADFunctionDirichletBC
variable = disp_y
boundary = block_right
function = '-t'
[]
[]
[Materials]
[plank]
type = ADComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[]
[block]
type = ADComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[]
[stress]
type = ADComputeLinearElasticStress
block = 'plank block'
[]
[heat_plank]
type = ADHeatConductionMaterial
block = plank
thermal_conductivity = 2
specific_heat = 1
[]
[heat_block]
type = ADHeatConductionMaterial
block = block
thermal_conductivity = 1
specific_heat = 1
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount -snes_max_it'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15 20'
end_time = 13.5
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'none'
[]
[Postprocessors]
[nl_its]
type = NumNonlinearIterations
[]
[total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[]
[l_its]
type = NumLinearIterations
[]
[total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[]
[contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[]
[avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[]
[avg_temp]
type = ElementAverageValue
variable = temp
block = 'block'
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[]
[avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[]
[max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[]
[min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[]
[]
[Outputs]
exodus = true
file_base = ${name}
checkpoint = true
[comp]
type = CSV
show = 'contact avg_temp'
[]
[out]
type = CSV
file_base = '${name}_out'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/contact/test/tests/mortar_tm/2d/frictionless_second/finite_noaction.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD9
order = SECOND
name = 'finite_noaction'
[Mesh]
patch_size = 80
patch_update_strategy = auto
[./plank]
type = GeneratedMeshGenerator
dim = 2
xmin = -0.3
xmax = 0.3
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
boundary_name_prefix = plank
[../]
[./plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[../]
[./block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.31
xmax = 0.91
ymin = 7.7
ymax = 8.5
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[../]
[./block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[../]
[./combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[../]
[./block_rename]
type = RenameBlockGenerator
input = combined
old_block_id = '1 2'
new_block_name = 'plank block'
[../]
[./secondary]
input = block_rename
type = LowerDBlockFromSidesetGenerator
sidesets = 'block_left'
new_block_id = '30'
new_block_name = 'frictionless_secondary_subdomain'
[../]
[./primary]
input = secondary
type = LowerDBlockFromSidesetGenerator
sidesets = 'plank_right'
new_block_id = '20'
new_block_name = 'frictionless_primary_subdomain'
[../]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[./disp_x]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[./disp_y]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[./frictionless_normal_lm]
order = ${order}
block = 'frictionless_secondary_subdomain'
[../]
[]
[Modules/TensorMechanics/Master]
[./action]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank block'
[../]
[]
[Constraints]
[./lm]
type = NormalNodalLMMechanicalContact
secondary = block_left
primary = plank_right
variable = frictionless_normal_lm
primary_variable = disp_x
disp_y = disp_y
ncp_function_type = min
use_displaced_mesh = true
[../]
[./normal_x]
type = NormalMortarMechanicalContact
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
variable = frictionless_normal_lm
secondary_variable = disp_x
component = x
use_displaced_mesh = true
compute_lm_residuals = false
[../]
[./normal_y]
type = NormalMortarMechanicalContact
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
variable = frictionless_normal_lm
secondary_variable = disp_y
component = y
use_displaced_mesh = true
compute_lm_residuals = false
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
preset = false
boundary = plank_left
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
preset = false
boundary = plank_bottom
value = 0.0
[../]
[./right_x]
type = FunctionDirichletBC
variable = disp_x
preset = false
boundary = block_right
function = '-0.04*sin(4*(t+1.5))+0.02'
[../]
[./right_y]
type = FunctionDirichletBC
variable = disp_y
preset = false
boundary = block_right
function = '-t'
[../]
[]
[Materials]
[./plank]
type = ComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[../]
[./block]
type = ComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
block = 'plank block'
[../]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15'
end_time = 13.5
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'contact'
snesmf_reuse_base = false
[]
[Postprocessors]
[./nl_its]
type = NumNonlinearIterations
[../]
[./total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[../]
[./l_its]
type = NumLinearIterations
[../]
[./total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[../]
[./contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[../]
[./avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[../]
[./max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[../]
[./min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[../]
[./avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[../]
[./max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[../]
[./min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[../]
[]
[Outputs]
exodus = true
file_base = ${name}
[./comp]
type = CSV
show = 'contact'
[../]
[./out]
type = CSV
file_base = '${name}_out'
[../]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/contact/test/tests/mortar_tm/2drz/frictionless_second/small.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD9
order = SECOND
name = 'small'
[Problem]
coord_type = RZ
[]
[Mesh]
patch_size = 80
patch_update_strategy = auto
[./plank]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 0.6
ymin = 0
ymax = 10
nx = 2
ny = 33
elem_type = ${elem}
boundary_name_prefix = plank
[../]
[./plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[../]
[./block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.61
xmax = 1.21
ymin = 9.2
ymax = 10.0
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[../]
[./block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[../]
[./combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[../]
[./block_rename]
type = RenameBlockGenerator
input = combined
old_block_id = '1 2'
new_block_name = 'plank block'
[../]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[./disp_x]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[./disp_y]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[]
[Modules/TensorMechanics/Master]
[./block]
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'block'
[../]
[./plank]
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank'
eigenstrain_names = 'swell'
[../]
[]
[Contact]
[./frictionless]
mesh = block_rename
primary = plank_right
secondary = block_left
formulation = mortar
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = plank_left
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
boundary = plank_bottom
value = 0.0
[../]
[./right_x]
type = DirichletBC
variable = disp_x
boundary = block_right
value = 0
[../]
[./right_y]
type = FunctionDirichletBC
variable = disp_y
boundary = block_right
function = '-t'
[../]
[]
[Materials]
[./plank]
type = ComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[../]
[./block]
type = ComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[../]
[./stress]
type = ComputeLinearElasticStress
block = 'plank block'
[../]
[./swell]
type = ComputeEigenstrain
block = 'plank'
eigenstrain_name = swell
eigen_base = '1 0 0 0 0 0 0 0 0'
prefactor = swell_mat
[../]
[./swell_mat]
type = GenericFunctionMaterial
prop_names = 'swell_mat'
prop_values = '7e-2*(1-cos(4*t))'
block = 'plank'
[../]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15'
end_time = 5
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'contact'
[]
[Postprocessors]
[./nl_its]
type = NumNonlinearIterations
[../]
[./total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[../]
[./l_its]
type = NumLinearIterations
[../]
[./total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[../]
[./contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[../]
[./avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[../]
[./max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[../]
[./min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[../]
[./avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[../]
[./max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[../]
[./min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[../]
[]
[Outputs]
exodus = true
file_base = ${name}
[./comp]
type = CSV
show = 'contact'
[../]
[./out]
type = CSV
file_base = '${name}_out'
[../]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/combined/test/tests/gap_heat_transfer_mortar/finite-2d-rz/finite.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD4
order = FIRST
name = 'finite'
[Mesh]
patch_size = 80
patch_update_strategy = auto
[plank]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 0.6
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
boundary_name_prefix = plank
[]
[plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[]
[block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.61
xmax = 1.21
ymin = 7.7
ymax = 8.5
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[]
[block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[]
[combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[]
[block_rename]
type = RenameBlockGenerator
input = combined
old_block_id = '1 2'
new_block_name = 'plank block'
[]
[secondary]
input = block_rename
type = LowerDBlockFromSidesetGenerator
sidesets = 'block_left'
new_block_id = '30'
new_block_name = 'frictionless_secondary_subdomain'
[]
[primary]
input = secondary
type = LowerDBlockFromSidesetGenerator
sidesets = 'plank_right'
new_block_id = '20'
new_block_name = 'frictionless_primary_subdomain'
[]
[]
[Problem]
coord_type = RZ
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[disp_x]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[]
[disp_y]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[]
[temp]
order = ${order}
block = 'plank block'
scaling = 1e-1
[]
[thermal_lm]
order = ${order}
block = 'frictionless_secondary_subdomain'
scaling = 1e-7
[]
[frictionless_normal_lm]
order = FIRST
block = 'frictionless_secondary_subdomain'
scaling = 1e3
use_dual = true
[]
[]
[Modules/TensorMechanics/Master]
[action]
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank block'
use_automatic_differentiation = true
strain = FINITE
[]
[]
[Kernels]
[hc]
type = ADHeatConduction
variable = temp
use_displaced_mesh = true
block = 'plank block'
[]
[]
[Constraints]
[weighted_gap_lm]
type = ComputeWeightedGapLMMechanicalContact
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
variable = frictionless_normal_lm
disp_x = disp_x
disp_y = disp_y
use_displaced_mesh = true
[]
[ncp_lm]
type = ApplyPenetrationConstraintLMMechanicalContact
secondary = block_left
primary = plank_right
variable = frictionless_normal_lm
primary_variable = disp_x
[]
[normal_x]
type = NormalMortarMechanicalContact
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
variable = frictionless_normal_lm
secondary_variable = disp_x
component = x
use_displaced_mesh = true
compute_lm_residuals = false
[]
[normal_y]
type = NormalMortarMechanicalContact
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
variable = frictionless_normal_lm
secondary_variable = disp_y
component = y
use_displaced_mesh = true
compute_lm_residuals = false
[]
[thermal_contact]
type = GapConductanceConstraint
variable = thermal_lm
secondary_variable = temp
k = 1
use_displaced_mesh = true
primary_boundary = plank_right
primary_subdomain = frictionless_primary_subdomain
secondary_boundary = block_left
secondary_subdomain = frictionless_secondary_subdomain
displacements = 'disp_x disp_y'
[]
[]
[BCs]
[left_temp]
type = DirichletBC
variable = temp
boundary = 'plank_left'
value = 400
[]
[right_temp]
type = DirichletBC
variable = temp
boundary = 'block_right'
value = 300
[]
[left_x]
type = DirichletBC
variable = disp_x
boundary = plank_left
value = 0.0
[]
[left_y]
type = DirichletBC
variable = disp_y
boundary = plank_bottom
value = 0.0
[]
[right_x]
type = ADFunctionDirichletBC
variable = disp_x
boundary = block_right
function = '-0.04*sin(4*(t+1.5))+0.02'
preset = false
[]
[right_y]
type = ADFunctionDirichletBC
variable = disp_y
boundary = block_right
function = '-t'
preset = false
[]
[]
[Materials]
[plank]
type = ADComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[]
[block]
type = ADComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[]
[stress]
type = ADComputeFiniteStrainElasticStress
block = 'plank block'
[]
[heat_plank]
type = ADHeatConductionMaterial
block = plank
thermal_conductivity = 2
specific_heat = 1
[]
[heat_block]
type = ADHeatConductionMaterial
block = block
thermal_conductivity = 1
specific_heat = 1
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount -snes_max_it'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15 20'
end_time = 13.5
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'none'
[]
[Postprocessors]
[nl_its]
type = NumNonlinearIterations
[]
[total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[]
[l_its]
type = NumLinearIterations
[]
[total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[]
[contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[]
[avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[]
[avg_temp]
type = ElementAverageValue
variable = temp
block = 'block'
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[]
[avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[]
[max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[]
[min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[]
[]
[Outputs]
exodus = true
file_base = ${name}
checkpoint = true
[comp]
type = CSV
show = 'contact avg_temp'
[]
[out]
type = CSV
file_base = '${name}_out'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/contact/test/tests/mortar_tm/2d/ad_frictionless_fir/finite.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD4
order = FIRST
name = 'finite'
[Mesh]
patch_size = 80
patch_update_strategy = auto
[./plank]
type = GeneratedMeshGenerator
dim = 2
xmin = -0.3
xmax = 0.3
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
boundary_name_prefix = plank
[../]
[./plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[../]
[./block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.31
xmax = 0.91
ymin = 7.7
ymax = 8.5
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[../]
[./block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[../]
[./combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[../]
[./block_rename]
type = RenameBlockGenerator
input = combined
old_block_id = '1 2'
new_block_name = 'plank block'
[../]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[./disp_x]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[./disp_y]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[]
[Modules/TensorMechanics/Master]
[./action]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank block'
use_automatic_differentiation = true
[../]
[]
[Contact]
[./frictionless]
mesh = block_rename
primary = plank_right
secondary = block_left
formulation = mortar
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = plank_left
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
boundary = plank_bottom
value = 0.0
[../]
[./right_x]
type = ADFunctionDirichletBC
variable = disp_x
boundary = block_right
function = '-0.04*sin(4*(t+1.5))+0.02'
[../]
[./right_y]
type = ADFunctionDirichletBC
variable = disp_y
boundary = block_right
function = '-t'
[../]
[]
[Materials]
[./plank]
type = ADComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[../]
[./block]
type = ADComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[../]
[./stress]
type = ADComputeFiniteStrainElasticStress
block = 'plank block'
[../]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15'
end_time = 13.5
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'contact'
[]
[Postprocessors]
[./nl_its]
type = NumNonlinearIterations
[../]
[./total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[../]
[./l_its]
type = NumLinearIterations
[../]
[./total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[../]
[./contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[../]
[./avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[../]
[./max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[../]
[./min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[../]
[./avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[../]
[./max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[../]
[./min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[../]
[]
[Outputs]
exodus = true
file_base = ${name}
[./comp]
type = CSV
show = 'contact'
[../]
[./out]
type = CSV
file_base = '${name}_out'
[../]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/contact/test/tests/mortar_tm/2d/frictionless_first/finite.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD4
order = FIRST
name = 'finite'
[Mesh]
patch_size = 80
patch_update_strategy = auto
[./plank]
type = GeneratedMeshGenerator
dim = 2
xmin = -0.3
xmax = 0.3
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
boundary_name_prefix = plank
[../]
[./plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[../]
[./block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.31
xmax = 0.91
ymin = 7.7
ymax = 8.5
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[../]
[./block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[../]
[./combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[../]
[./block_rename]
type = RenameBlockGenerator
input = combined
old_block_id = '1 2'
new_block_name = 'plank block'
[../]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[./disp_x]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[./disp_y]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[]
[Modules/TensorMechanics/Master]
[./action]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank block'
[../]
[]
[Contact]
[./frictionless]
mesh = block_rename
primary = plank_right
secondary = block_left
formulation = mortar
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
preset = false
boundary = plank_left
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
preset = false
boundary = plank_bottom
value = 0.0
[../]
[./right_x]
type = FunctionDirichletBC
variable = disp_x
preset = false
boundary = block_right
function = '-0.04*sin(4*(t+1.5))+0.02'
[../]
[./right_y]
type = FunctionDirichletBC
variable = disp_y
preset = false
boundary = block_right
function = '-t'
[../]
[]
[Materials]
[./plank]
type = ComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[../]
[./block]
type = ComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
block = 'plank block'
[../]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15'
end_time = 13.5
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'contact'
[]
[Postprocessors]
[./nl_its]
type = NumNonlinearIterations
[../]
[./total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[../]
[./l_its]
type = NumLinearIterations
[../]
[./total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[../]
[./contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[../]
[./avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[../]
[./max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[../]
[./min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[../]
[./avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[../]
[./max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[../]
[./min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[../]
[]
[Outputs]
exodus = true
file_base = ${name}
[./comp]
type = CSV
show = 'contact'
[../]
[./out]
type = CSV
file_base = '${name}_out'
[../]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/contact/test/tests/mortar_tm/2drz/ad_frictionless_second/finite.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD9
order = SECOND
name = 'finite'
[Problem]
coord_type = RZ
[]
[Mesh]
patch_size = 80
patch_update_strategy = auto
[./plank]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 0.6
ymin = 0
ymax = 10
nx = 2
ny = 33
elem_type = ${elem}
boundary_name_prefix = plank
[../]
[./plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[../]
[./block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.61
xmax = 1.21
ymin = 9.2
ymax = 10.0
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[../]
[./block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[../]
[./combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[../]
[./block_rename]
type = RenameBlockGenerator
input = combined
old_block_id = '1 2'
new_block_name = 'plank block'
[../]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[./disp_x]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[./disp_y]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[]
[Modules/TensorMechanics/Master]
[./block]
use_automatic_differentiation = true
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'block'
[../]
[./plank]
use_automatic_differentiation = true
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank'
eigenstrain_names = 'swell'
[../]
[]
[Contact]
[./frictionless]
mesh = block_rename
primary = plank_right
secondary = block_left
formulation = mortar
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
preset = false
boundary = plank_left
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
preset = false
boundary = plank_bottom
value = 0.0
[../]
[./right_x]
type = DirichletBC
variable = disp_x
preset = false
boundary = block_right
value = 0
[../]
[./right_y]
type = ADFunctionDirichletBC
variable = disp_y
preset = false
boundary = block_right
function = '-t'
[../]
[]
[Materials]
[./plank]
type = ADComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[../]
[./block]
type = ADComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[../]
[./stress]
type = ADComputeFiniteStrainElasticStress
block = 'plank block'
[../]
[./swell]
type = ADComputeEigenstrain
block = 'plank'
eigenstrain_name = swell
eigen_base = '1 0 0 0 0 0 0 0 0'
prefactor = swell_mat
[../]
[./swell_mat]
type = ADGenericFunctionMaterial
prop_names = 'swell_mat'
prop_values = '7e-2*(1-cos(4*t))'
block = 'plank'
[../]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15'
end_time = 5
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'contact'
[]
[Postprocessors]
[./nl_its]
type = NumNonlinearIterations
[../]
[./total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[../]
[./l_its]
type = NumLinearIterations
[../]
[./total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[../]
[./contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[../]
[./avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[../]
[./max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[../]
[./min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[../]
[./avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[../]
[./max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[../]
[./min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[../]
[]
[Outputs]
exodus = true
file_base = ${name}
[./comp]
type = CSV
show = 'contact'
[../]
[./out]
type = CSV
file_base = '${name}_out'
[../]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/combined/test/tests/gap_heat_transfer_mortar/small-2d-rz/small.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD4
order = FIRST
name = 'small'
[Mesh]
patch_size = 80
patch_update_strategy = auto
[plank]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 0.6
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
boundary_name_prefix = plank
[]
[plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[]
[block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.61
xmax = 1.21
ymin = 7.7
ymax = 8.5
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[]
[block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[]
[combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[]
[block_rename]
type = RenameBlockGenerator
input = combined
old_block_id = '1 2'
new_block_name = 'plank block'
[]
[secondary]
input = block_rename
type = LowerDBlockFromSidesetGenerator
sidesets = 'block_left'
new_block_id = '30'
new_block_name = 'frictionless_secondary_subdomain'
[]
[primary]
input = secondary
type = LowerDBlockFromSidesetGenerator
sidesets = 'plank_right'
new_block_id = '20'
new_block_name = 'frictionless_primary_subdomain'
[]
[]
[Problem]
coord_type = RZ
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[disp_x]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[]
[disp_y]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[]
[temp]
order = ${order}
block = 'plank block'
scaling = 1e-1
[]
[thermal_lm]
order = ${order}
block = 'frictionless_secondary_subdomain'
scaling = 1e-7
[]
[frictionless_normal_lm]
order = FIRST
block = 'frictionless_secondary_subdomain'
scaling = 1e3
use_dual = true
[]
[]
[Modules/TensorMechanics/Master]
[action]
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank block'
use_automatic_differentiation = true
[]
[]
[Kernels]
[hc]
type = ADHeatConduction
variable = temp
use_displaced_mesh = true
block = 'plank block'
[]
[]
[Constraints]
[weighted_gap_lm]
type = ComputeWeightedGapLMMechanicalContact
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
variable = frictionless_normal_lm
disp_x = disp_x
disp_y = disp_y
use_displaced_mesh = true
[]
[ncp_lm]
type = ApplyPenetrationConstraintLMMechanicalContact
secondary = block_left
primary = plank_right
variable = frictionless_normal_lm
primary_variable = disp_x
[]
[normal_x]
type = NormalMortarMechanicalContact
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
variable = frictionless_normal_lm
secondary_variable = disp_x
component = x
use_displaced_mesh = true
compute_lm_residuals = false
[]
[normal_y]
type = NormalMortarMechanicalContact
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
variable = frictionless_normal_lm
secondary_variable = disp_y
component = y
use_displaced_mesh = true
compute_lm_residuals = false
[]
[thermal_contact]
type = GapConductanceConstraint
variable = thermal_lm
secondary_variable = temp
k = 1
use_displaced_mesh = true
primary_boundary = plank_right
primary_subdomain = frictionless_primary_subdomain
secondary_boundary = block_left
secondary_subdomain = frictionless_secondary_subdomain
displacements = 'disp_x disp_y'
[]
[]
[BCs]
[left_temp]
type = DirichletBC
variable = temp
boundary = 'plank_left'
value = 400
[]
[right_temp]
type = DirichletBC
variable = temp
boundary = 'block_right'
value = 300
[]
[left_x]
type = DirichletBC
variable = disp_x
boundary = plank_left
value = 0.0
[]
[left_y]
type = DirichletBC
variable = disp_y
boundary = plank_bottom
value = 0.0
[]
[right_x]
type = ADFunctionDirichletBC
variable = disp_x
boundary = block_right
function = '-0.04*sin(4*(t+1.5))+0.02'
preset = false
[]
[right_y]
type = ADFunctionDirichletBC
variable = disp_y
boundary = block_right
function = '-t'
preset = false
[]
[]
[Materials]
[plank]
type = ADComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[]
[block]
type = ADComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[]
[stress]
type = ADComputeLinearElasticStress
block = 'plank block'
[]
[heat_plank]
type = ADHeatConductionMaterial
block = plank
thermal_conductivity = 2
specific_heat = 1
[]
[heat_block]
type = ADHeatConductionMaterial
block = block
thermal_conductivity = 1
specific_heat = 1
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount -snes_max_it'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15 20'
end_time = 13.5
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'none'
[]
[Postprocessors]
[nl_its]
type = NumNonlinearIterations
[]
[total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[]
[l_its]
type = NumLinearIterations
[]
[total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[]
[contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[]
[avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[]
[avg_temp]
type = ElementAverageValue
variable = temp
block = 'block'
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[]
[avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[]
[max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[]
[min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[]
[]
[Outputs]
exodus = true
file_base = ${name}
checkpoint = true
[comp]
type = CSV
show = 'contact avg_temp'
[]
[out]
type = CSV
file_base = '${name}_out'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/contact/test/tests/mortar_tm/2d/frictionless_second/finite_rr.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD9
order = SECOND
name = 'finite_rr'
[Mesh]
patch_size = 80
patch_update_strategy = auto
[./plank]
type = GeneratedMeshGenerator
dim = 2
xmin = -0.3
xmax = 0.3
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
boundary_name_prefix = plank
[../]
[./plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[../]
[./block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.31
xmax = 0.91
ymin = 7.7
ymax = 8.5
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[../]
[./block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[../]
[./combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[../]
[./block_rename]
type = RenameBlockGenerator
input = combined
old_block_id = '1 2'
new_block_name = 'plank block'
[../]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[./disp_x]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[./disp_y]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[]
[Modules/TensorMechanics/Master]
[./action]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank block'
extra_vector_tags = 'ref'
[../]
[]
[Contact]
[./frictionless]
mesh = block_rename
primary = plank_right
secondary = block_left
formulation = mortar
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
preset = false
boundary = plank_left
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
preset = false
boundary = plank_bottom
value = 0.0
[../]
[./right_x]
type = FunctionDirichletBC
variable = disp_x
preset = false
boundary = block_right
function = '-0.04*sin(4*(t+1.5))+0.02'
[../]
[./right_y]
type = FunctionDirichletBC
variable = disp_y
preset = false
boundary = block_right
function = '-t'
[../]
[]
[Materials]
[./plank]
type = ComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[../]
[./block]
type = ComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
block = 'plank block'
[../]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15'
end_time = 13.5
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'contact'
nl_abs_tol = 1e-7
[]
[Postprocessors]
[./nl_its]
type = NumNonlinearIterations
[../]
[./total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[../]
[./l_its]
type = NumLinearIterations
[../]
[./total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[../]
[./contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[../]
[./avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[../]
[./max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[../]
[./min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[../]
[./avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[../]
[./max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[../]
[./min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[../]
[]
[Outputs]
exodus = true
file_base = ${name}
[./comp]
type = CSV
show = 'contact'
[../]
[./out]
type = CSV
file_base = '${name}_out'
[../]
[]
[Debug]
show_var_residual_norms = true
[]
(test/tests/meshgenerators/mesh_collection_generator/mesh_collection_generator.i)
[Mesh]
[./left]
type = GeneratedMeshGenerator
dim = 2
nx = 3
ny = 3
xmin = -3
xmax = 0
ymin = -5
ymax = 5
[../]
[./right]
type = GeneratedMeshGenerator
dim = 2
nx = 3
ny = 3
xmin = 3
xmax = 6
ymin = -5
ymax = 5
[../]
[./left_and_right]
type = MeshCollectionGenerator
inputs = 'left right'
[../]
[]
[Outputs]
exodus = true
[]
(modules/contact/test/tests/mortar_tm/2d/frictionless_first/small.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD4
order = FIRST
name = 'small'
[Mesh]
patch_size = 80
patch_update_strategy = auto
[./plank]
type = GeneratedMeshGenerator
dim = 2
xmin = -0.3
xmax = 0.3
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
boundary_name_prefix = plank
[../]
[./plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[../]
[./block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.31
xmax = 0.91
ymin = 7.7
ymax = 8.5
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[../]
[./block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[../]
[./combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[../]
[./block_rename]
type = RenameBlockGenerator
input = combined
old_block_id = '1 2'
new_block_name = 'plank block'
[../]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[./disp_x]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[./disp_y]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[]
[Modules/TensorMechanics/Master]
[./action]
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank block'
[../]
[]
[Contact]
[./frictionless]
mesh = block_rename
primary = plank_right
secondary = block_left
formulation = mortar
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = plank_left
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
boundary = plank_bottom
value = 0.0
[../]
[./right_x]
type = FunctionDirichletBC
variable = disp_x
boundary = block_right
function = '-0.04*sin(4*(t+1.5))+0.02'
[../]
[./right_y]
type = FunctionDirichletBC
variable = disp_y
boundary = block_right
function = '-t'
[../]
[]
[Materials]
[./plank]
type = ComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[../]
[./block]
type = ComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[../]
[./stress]
type = ComputeLinearElasticStress
block = 'plank block'
[../]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15'
end_time = 13.5
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'contact'
[]
[Postprocessors]
[./nl_its]
type = NumNonlinearIterations
[../]
[./total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[../]
[./l_its]
type = NumLinearIterations
[../]
[./total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[../]
[./contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[../]
[./avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[../]
[./max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[../]
[./min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[../]
[./avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[../]
[./max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[../]
[./min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[../]
[]
[Outputs]
exodus = true
file_base = ${name}
[./comp]
type = CSV
show = 'contact'
[../]
[./out]
type = CSV
file_base = '${name}_out'
[../]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/combined/test/tests/gap_heat_transfer_mortar/finite-2d/finite.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD4
order = FIRST
name = 'finite'
[Mesh]
patch_size = 80
patch_update_strategy = auto
[plank]
type = GeneratedMeshGenerator
dim = 2
xmin = -0.3
xmax = 0.3
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
boundary_name_prefix = plank
[]
[plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[]
[block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.31
xmax = 0.91
ymin = 7.7
ymax = 8.5
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[]
[block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[]
[combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[]
[block_rename]
type = RenameBlockGenerator
input = combined
old_block_id = '1 2'
new_block_name = 'plank block'
[]
[secondary]
input = block_rename
type = LowerDBlockFromSidesetGenerator
sidesets = 'block_left'
new_block_id = '30'
new_block_name = 'frictionless_secondary_subdomain'
[]
[primary]
input = secondary
type = LowerDBlockFromSidesetGenerator
sidesets = 'plank_right'
new_block_id = '20'
new_block_name = 'frictionless_primary_subdomain'
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[disp_x]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[]
[disp_y]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[]
[temp]
order = ${order}
block = 'plank block'
scaling = 1e-1
[]
[thermal_lm]
order = ${order}
block = 'frictionless_secondary_subdomain'
scaling = 1e-7
[]
[frictionless_normal_lm]
order = FIRST
block = 'frictionless_secondary_subdomain'
scaling = 1e3
use_dual = true
[]
[]
[Modules/TensorMechanics/Master]
[action]
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank block'
use_automatic_differentiation = true
strain = FINITE
[]
[]
[Kernels]
[hc]
type = ADHeatConduction
variable = temp
use_displaced_mesh = true
block = 'plank block'
[]
[]
[Constraints]
[weighted_gap_lm]
type = ComputeWeightedGapLMMechanicalContact
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
variable = frictionless_normal_lm
disp_x = disp_x
disp_y = disp_y
use_displaced_mesh = true
[]
[ncp_lm]
type = ApplyPenetrationConstraintLMMechanicalContact
secondary = block_left
primary = plank_right
variable = frictionless_normal_lm
primary_variable = disp_x
[]
[normal_x]
type = NormalMortarMechanicalContact
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
variable = frictionless_normal_lm
secondary_variable = disp_x
component = x
use_displaced_mesh = true
compute_lm_residuals = false
[]
[normal_y]
type = NormalMortarMechanicalContact
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
variable = frictionless_normal_lm
secondary_variable = disp_y
component = y
use_displaced_mesh = true
compute_lm_residuals = false
[]
[thermal_contact]
type = GapConductanceConstraint
variable = thermal_lm
secondary_variable = temp
k = 1
use_displaced_mesh = true
primary_boundary = plank_right
primary_subdomain = frictionless_primary_subdomain
secondary_boundary = block_left
secondary_subdomain = frictionless_secondary_subdomain
displacements = 'disp_x disp_y'
[]
[]
[BCs]
[left_temp]
type = DirichletBC
variable = temp
boundary = 'plank_left'
value = 400
[]
[right_temp]
type = DirichletBC
variable = temp
boundary = 'block_right'
value = 300
[]
[left_x]
type = DirichletBC
variable = disp_x
boundary = plank_left
value = 0.0
[]
[left_y]
type = DirichletBC
variable = disp_y
boundary = plank_bottom
value = 0.0
[]
[right_x]
type = ADFunctionDirichletBC
variable = disp_x
boundary = block_right
function = '-0.04*sin(4*(t+1.5))+0.02'
preset = false
[]
[right_y]
type = ADFunctionDirichletBC
variable = disp_y
boundary = block_right
function = '-t'
preset = false
[]
[]
[Materials]
[plank]
type = ADComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[]
[block]
type = ADComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[]
[stress]
type = ADComputeFiniteStrainElasticStress
block = 'plank block'
[]
[heat_plank]
type = ADHeatConductionMaterial
block = plank
thermal_conductivity = 2
specific_heat = 1
[]
[heat_block]
type = ADHeatConductionMaterial
block = block
thermal_conductivity = 1
specific_heat = 1
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount -snes_max_it'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15 20'
end_time = 13.5
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'none'
[]
[Postprocessors]
[nl_its]
type = NumNonlinearIterations
[]
[total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[]
[l_its]
type = NumLinearIterations
[]
[total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[]
[contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[]
[avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[]
[avg_temp]
type = ElementAverageValue
variable = temp
block = 'block'
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[]
[avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[]
[max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[]
[min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[]
[]
[Outputs]
exodus = true
file_base = ${name}
checkpoint = true
[comp]
type = CSV
show = 'contact avg_temp'
[]
[out]
type = CSV
file_base = '${name}_out'
[]
[dof]
type = DOFMap
execute_on = 'initial'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/contact/test/tests/mortar_tm/2drz/ad_frictionless_first/finite.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD4
order = FIRST
name = 'finite'
[Problem]
coord_type = RZ
[]
[Mesh]
patch_size = 80
patch_update_strategy = auto
[./plank]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 0.6
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
boundary_name_prefix = plank
[../]
[./plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[../]
[./block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.61
xmax = 1.21
ymin = 9.2
ymax = 10.0
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[../]
[./block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[../]
[./combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[../]
[./block_rename]
type = RenameBlockGenerator
input = combined
old_block_id = '1 2'
new_block_name = 'plank block'
[../]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[./disp_x]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[./disp_y]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[]
[Modules/TensorMechanics/Master]
[./block]
use_automatic_differentiation = true
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'block'
[../]
[./plank]
use_automatic_differentiation = true
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank'
eigenstrain_names = 'swell'
[../]
[]
[Contact]
[./frictionless]
mesh = block_rename
primary = plank_right
secondary = block_left
formulation = mortar
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = plank_left
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
boundary = plank_bottom
value = 0.0
[../]
[./right_x]
type = DirichletBC
variable = disp_x
boundary = block_right
value = 0
[../]
[./right_y]
type = ADFunctionDirichletBC
variable = disp_y
preset = false
boundary = block_right
function = '-t'
[../]
[]
[Materials]
[./plank]
type = ADComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[../]
[./block]
type = ADComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[../]
[./stress]
type = ADComputeFiniteStrainElasticStress
block = 'plank block'
[../]
[./swell]
type = ADComputeEigenstrain
block = 'plank'
eigenstrain_name = swell
eigen_base = '1 0 0 0 0 0 0 0 0'
prefactor = swell_mat
[../]
[./swell_mat]
type = ADGenericFunctionMaterial
prop_names = 'swell_mat'
prop_values = '7e-2*(1-cos(4*t))'
block = 'plank'
[../]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15'
end_time = 10
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'contact'
[]
[Postprocessors]
[./nl_its]
type = NumNonlinearIterations
[../]
[./total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[../]
[./l_its]
type = NumLinearIterations
[../]
[./total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[../]
[./contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[../]
[./avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[../]
[./max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[../]
[./min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[../]
[./avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[../]
[./max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[../]
[./min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[../]
[]
[Outputs]
exodus = true
file_base = ${name}
[./comp]
type = CSV
show = 'contact'
[../]
[./out]
type = CSV
file_base = '${name}_out'
[../]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/contact/test/tests/mortar_tm/2drz/frictionless_first/finite.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD4
order = FIRST
name = 'finite'
[Problem]
coord_type = RZ
[]
[Mesh]
patch_size = 80
patch_update_strategy = auto
[./plank]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 0.6
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
boundary_name_prefix = plank
[../]
[./plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[../]
[./block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.61
xmax = 1.21
ymin = 9.2
ymax = 10.0
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[../]
[./block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[../]
[./combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[../]
[./block_rename]
type = RenameBlockGenerator
input = combined
old_block_id = '1 2'
new_block_name = 'plank block'
[../]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[./disp_x]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[./disp_y]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[]
[Modules/TensorMechanics/Master]
[./block]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'block'
[../]
[./plank]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank'
eigenstrain_names = 'swell'
[../]
[]
[Contact]
[./frictionless]
mesh = block_rename
primary = plank_right
secondary = block_left
formulation = mortar
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = plank_left
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
boundary = plank_bottom
value = 0.0
[../]
[./right_x]
type = DirichletBC
variable = disp_x
boundary = block_right
value = 0
[../]
[./right_y]
type = FunctionDirichletBC
variable = disp_y
preset = false
boundary = block_right
function = '-t'
[../]
[]
[Materials]
[./plank]
type = ComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[../]
[./block]
type = ComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
block = 'plank block'
[../]
[./swell]
type = ComputeEigenstrain
block = 'plank'
eigenstrain_name = swell
eigen_base = '1 0 0 0 0 0 0 0 0'
prefactor = swell_mat
[../]
[./swell_mat]
type = GenericFunctionMaterial
prop_names = 'swell_mat'
prop_values = '7e-2*(1-cos(4*t))'
block = 'plank'
[../]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15'
end_time = 10
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'contact'
[]
[Postprocessors]
[./nl_its]
type = NumNonlinearIterations
[../]
[./total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[../]
[./l_its]
type = NumLinearIterations
[../]
[./total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[../]
[./contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[../]
[./avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[../]
[./max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[../]
[./min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[../]
[./avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[../]
[./max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[../]
[./min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[../]
[]
[Outputs]
exodus = true
file_base = ${name}
[./comp]
type = CSV
show = 'contact'
[../]
[./out]
type = CSV
file_base = '${name}_out'
[../]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/contact/test/tests/mortar_tm/2d/frictionless_second/small.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD9
order = SECOND
name = 'small'
[Mesh]
patch_size = 80
patch_update_strategy = auto
[./plank]
type = GeneratedMeshGenerator
dim = 2
xmin = -0.3
xmax = 0.3
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
boundary_name_prefix = plank
[../]
[./plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[../]
[./block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.31
xmax = 0.91
ymin = 7.7
ymax = 8.5
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[../]
[./block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[../]
[./combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[../]
[./block_rename]
type = RenameBlockGenerator
input = combined
old_block_id = '1 2'
new_block_name = 'plank block'
[../]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[./disp_x]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[./disp_y]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[]
[Modules/TensorMechanics/Master]
[./action]
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank block'
[../]
[]
[Contact]
[./frictionless]
mesh = block_rename
primary = plank_right
secondary = block_left
formulation = mortar
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = plank_left
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
boundary = plank_bottom
value = 0.0
[../]
[./right_x]
type = FunctionDirichletBC
variable = disp_x
boundary = block_right
function = '-0.04*sin(4*(t+1.5))+0.02'
[../]
[./right_y]
type = FunctionDirichletBC
variable = disp_y
boundary = block_right
function = '-t'
[../]
[]
[Materials]
[./plank]
type = ComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[../]
[./block]
type = ComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[../]
[./stress]
type = ComputeLinearElasticStress
block = 'plank block'
[../]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15'
end_time = 13.5
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'contact'
[]
[Postprocessors]
[./nl_its]
type = NumNonlinearIterations
[../]
[./total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[../]
[./l_its]
type = NumLinearIterations
[../]
[./total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[../]
[./contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[../]
[./avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[../]
[./max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[../]
[./min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[../]
[./avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[../]
[./max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[../]
[./min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[../]
[]
[Outputs]
exodus = true
file_base = ${name}
[./comp]
type = CSV
show = 'contact'
[../]
[./out]
type = CSV
file_base = '${name}_out'
[../]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/contact/test/tests/mortar_tm/horizontal_blocks_mortar_TM.i)
offset = 0.01
[GlobalParams]
displacements = 'disp_x disp_y'
volumetric_locking_correction = true
[]
[Mesh]
[./left_block]
type = GeneratedMeshGenerator
dim = 2
xmin = -1.0
xmax = 0.0
ymin = -0.5
ymax = 0.5
nx = 1
ny = 1
elem_type = QUAD4
boundary_name_prefix = lb
[../]
[./left_block_id]
type = SubdomainIDGenerator
input = left_block
subdomain_id = 1
[../]
[./right_block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.0
xmax = 1.0
ymin = -0.6
ymax = 0.6
nx = 1
ny = 1
elem_type = QUAD4
boundary_name_prefix = rb
boundary_id_offset = 10
[../]
[./right_block_id]
type = SubdomainIDGenerator
input = right_block
subdomain_id = 2
[../]
[./combined]
type = MeshCollectionGenerator
inputs = 'left_block_id right_block_id'
[../]
[./block_rename]
type = RenameBlockGenerator
input = combined
old_block_id = '1 2'
new_block_name = 'left_block right_block'
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = FINITE
incremental = true
add_variables = true
block = '1 2'
[../]
[]
[Functions]
[./horizontal_movement]
type = ParsedFunction
value = t/10.0
[../]
[]
[BCs]
[./push_x]
type = FunctionDirichletBC
preset = true
variable = disp_x
boundary = lb_left
function = horizontal_movement
[../]
[./fix_x]
type = DirichletBC
preset = true
variable = disp_x
boundary = rb_right
value = 0.0
[../]
[./fix_y]
type = DirichletBC
preset = true
variable = disp_y
boundary = rb_right
value = 0.0
[../]
[./fix_y_offset]
type = DirichletBC
preset = true
variable = disp_y
boundary = lb_left
value = ${offset}
[../]
[]
[Materials]
[./elasticity_tensor_left]
type = ComputeIsotropicElasticityTensor
block = left_block
youngs_modulus = 1.0e6
poissons_ratio = 0.3
[../]
[./stress_left]
type = ComputeFiniteStrainElasticStress
block = 1
[../]
[./elasticity_tensor_right]
type = ComputeIsotropicElasticityTensor
block = right_block
youngs_modulus = 1.0e6
poissons_ratio = 0.3
[../]
[./stress_right]
type = ComputeFiniteStrainElasticStress
block = right_block
[../]
[]
[Contact]
[./leftright]
mesh = block_rename
secondary = lb_right
primary = rb_left
model = frictionless
formulation = mortar
friction_coefficient = 0.0
normal_smoothing_distance = 0.1
penalty = 1e+8
normalize_penalty = true
[../]
[]
[ICs]
[./disp_x]
type = ConstantIC
block = left_block
variable = disp_x
value = -${offset}
[../]
[./disp_y]
block = left_block
variable = disp_y
value = ${offset}
type = ConstantIC
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount -snes_max_it'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15 20'
dt = 0.1
dtmin = 0.1
end_time = 0.1
l_tol = 1e-4
l_max_its = 100
nl_rel_tol = 1e-10
nl_abs_tol = 1e-6
nl_max_its = 100
[]
[Outputs]
exodus = true
[]
(test/tests/mortar/convergence-studies/solution-continuity/continuity.i)
[Mesh]
second_order = true
[./left_block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 1
ymin = 0
ymax = 1
nx = 2
ny = 2
elem_type = QUAD4
[../]
[./left_block_sidesets]
type = RenameBoundaryGenerator
input = left_block
old_boundary_id = '0 1 2 3'
new_boundary_name = 'lb_bottom lb_right lb_top lb_left'
[../]
[./left_block_id]
type = SubdomainIDGenerator
input = left_block_sidesets
subdomain_id = 1
[../]
[./right_block]
type = GeneratedMeshGenerator
dim = 2
xmin = 1
xmax = 2
ymin = 0
ymax = 1
nx = 2
ny = 2
elem_type = QUAD4
[../]
[./right_block_id]
type = SubdomainIDGenerator
input = right_block
subdomain_id = 2
[../]
[right_block_change_boundary_id]
type = RenameBoundaryGenerator
input = right_block_id
old_boundary_id = '0 1 2 3'
new_boundary_id = '100 101 102 103'
[]
[./combined]
type = MeshCollectionGenerator
inputs = 'left_block_id right_block_change_boundary_id'
[../]
[./block_rename]
type = RenameBlockGenerator
input = combined
old_block_id = '1 2'
new_block_name = 'left_block right_block'
[../]
[right_right_sideset]
type = SideSetsAroundSubdomainGenerator
input = block_rename
new_boundary = rb_right
block = right_block
normal = '1 0 0'
[]
[right_left_sideset]
type = SideSetsAroundSubdomainGenerator
input = right_right_sideset
new_boundary = rb_left
block = right_block
normal = '-1 0 0'
[]
[right_top_sideset]
type = SideSetsAroundSubdomainGenerator
input = right_left_sideset
new_boundary = rb_top
block = right_block
normal = '0 1 0'
[]
[right_bottom_sideset]
type = SideSetsAroundSubdomainGenerator
input = right_top_sideset
new_boundary = rb_bottom
block = right_block
normal = '0 -1 0'
[]
[secondary]
input = right_bottom_sideset
type = LowerDBlockFromSidesetGenerator
sidesets = 'lb_right'
new_block_id = '10001'
new_block_name = 'secondary_lower'
[]
[primary]
input = secondary
type = LowerDBlockFromSidesetGenerator
sidesets = 'rb_left'
new_block_id = '10000'
new_block_name = 'primary_lower'
[]
[]
[Variables]
[./T]
block = 'left_block right_block'
order = SECOND
[../]
[./lambda]
block = 'secondary_lower'
[../]
[]
[BCs]
[./neumann]
type = FunctionGradientNeumannBC
exact_solution = exact_soln_primal
variable = T
boundary = 'lb_bottom lb_top lb_left rb_bottom rb_right rb_top'
[../]
[]
[Kernels]
[./conduction]
type = Diffusion
variable = T
block = 'left_block right_block'
[../]
[./sink]
type = Reaction
variable = T
block = 'left_block right_block'
[../]
[./forcing_function]
type = BodyForce
variable = T
function = forcing_function
block = 'left_block right_block'
[../]
[]
[Functions]
[./forcing_function]
type = ParsedFunction
value = ''
[../]
[./exact_soln_primal]
type = ParsedFunction
value = ''
[../]
[exact_soln_lambda]
type = ParsedFunction
value = ''
[]
[]
[Debug]
show_var_residual_norms = 1
[]
[Constraints]
[./mortar]
type = EqualValueConstraint
primary_boundary = rb_left
secondary_boundary = lb_right
primary_subdomain = primary_lower
secondary_subdomain = secondary_lower
secondary_variable = T
variable = lambda
delta = 0.4
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
solve_type = NEWTON
type = Steady
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -snes_linesearch_type -pc_factor_mat_solver_type'
petsc_options_value = 'lu basic mumps'
[]
[Outputs]
exodus = true
csv = true
[dofmap]
type = DOFMap
execute_on = 'initial'
[]
[]
[Postprocessors]
[L2lambda]
type = ElementL2Error
variable = lambda
function = exact_soln_lambda
execute_on = 'timestep_end'
block = 'secondary_lower'
[]
[L2u]
type = ElementL2Error
variable = T
function = exact_soln_primal
execute_on = 'timestep_end'
block = 'left_block right_block'
[]
[h]
type = AverageElementSize
block = 'left_block right_block'
[]
[]
(modules/contact/test/tests/mortar_tm/2drz/frictionless_second/finite_rr.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD9
order = SECOND
name = 'finite_rr'
[Problem]
coord_type = RZ
[]
[Mesh]
patch_size = 80
patch_update_strategy = auto
[./plank]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 0.6
ymin = 0
ymax = 10
nx = 2
ny = 33
elem_type = ${elem}
boundary_name_prefix = plank
[../]
[./plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[../]
[./block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.61
xmax = 1.21
ymin = 9.2
ymax = 10.0
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[../]
[./block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[../]
[./combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[../]
[./block_rename]
type = RenameBlockGenerator
input = combined
old_block_id = '1 2'
new_block_name = 'plank block'
[../]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[./disp_x]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[./disp_y]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[]
[Modules/TensorMechanics/Master]
[./block]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'block'
extra_vector_tags = 'ref'
[../]
[./plank]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank'
eigenstrain_names = 'swell'
extra_vector_tags = 'ref'
[../]
[]
[Contact]
[./frictionless]
mesh = block_rename
primary = plank_right
secondary = block_left
formulation = mortar
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
preset = false
boundary = plank_left
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
preset = false
boundary = plank_bottom
value = 0.0
[../]
[./right_x]
type = DirichletBC
variable = disp_x
preset = false
boundary = block_right
value = 0
[../]
[./right_y]
type = FunctionDirichletBC
variable = disp_y
preset = false
boundary = block_right
function = '-t'
[../]
[]
[Materials]
[./plank]
type = ComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[../]
[./block]
type = ComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
block = 'plank block'
[../]
[./swell]
type = ComputeEigenstrain
block = 'plank'
eigenstrain_name = swell
eigen_base = '1 0 0 0 0 0 0 0 0'
prefactor = swell_mat
[../]
[./swell_mat]
type = GenericFunctionMaterial
prop_names = 'swell_mat'
prop_values = '7e-2*(1-cos(4*t))'
block = 'plank'
[../]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15'
end_time = 5
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'contact'
nl_abs_tol = 1e-12
[]
[Postprocessors]
[./nl_its]
type = NumNonlinearIterations
[../]
[./total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[../]
[./l_its]
type = NumLinearIterations
[../]
[./total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[../]
[./contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[../]
[./avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[../]
[./max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[../]
[./min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[../]
[./avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[../]
[./max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[../]
[./min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[../]
[]
[Outputs]
exodus = true
file_base = ${name}
[./comp]
type = CSV
show = 'contact'
[../]
[./out]
type = CSV
file_base = '${name}_out'
[../]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/contact/test/tests/mortar_tm/2d/frictionless_second/finite.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD9
order = SECOND
name = 'finite'
[Mesh]
patch_size = 80
patch_update_strategy = auto
[./plank]
type = GeneratedMeshGenerator
dim = 2
xmin = -0.3
xmax = 0.3
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
boundary_name_prefix = plank
[../]
[./plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[../]
[./block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.31
xmax = 0.91
ymin = 7.7
ymax = 8.5
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[../]
[./block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[../]
[./combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[../]
[./block_rename]
type = RenameBlockGenerator
input = combined
old_block_id = '1 2'
new_block_name = 'plank block'
[../]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[./disp_x]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[./disp_y]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[]
[Modules/TensorMechanics/Master]
[./action]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank block'
[../]
[]
[Contact]
[./frictionless]
mesh = block_rename
primary = plank_right
secondary = block_left
formulation = mortar
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
preset = false
boundary = plank_left
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
preset = false
boundary = plank_bottom
value = 0.0
[../]
[./right_x]
type = FunctionDirichletBC
variable = disp_x
preset = false
boundary = block_right
function = '-0.04*sin(4*(t+1.5))+0.02'
[../]
[./right_y]
type = FunctionDirichletBC
variable = disp_y
preset = false
boundary = block_right
function = '-t'
[../]
[]
[Materials]
[./plank]
type = ComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[../]
[./block]
type = ComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
block = 'plank block'
[../]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15'
end_time = 13.5
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'contact'
l_max_its = 30
[]
[Postprocessors]
[./nl_its]
type = NumNonlinearIterations
[../]
[./total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[../]
[./l_its]
type = NumLinearIterations
[../]
[./total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[../]
[./contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[../]
[./avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[../]
[./max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[../]
[./min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[../]
[./avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[../]
[./max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[../]
[./min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[../]
[]
[Outputs]
exodus = true
file_base = ${name}
[./comp]
type = CSV
show = 'contact'
[../]
[./out]
type = CSV
file_base = '${name}_out'
[../]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/contact/test/tests/mortar_tm/2d/ad_frictionless_sec/finite_rr.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD9
order = SECOND
name = 'finite_rr'
[Mesh]
patch_size = 80
patch_update_strategy = auto
[./plank]
type = GeneratedMeshGenerator
dim = 2
xmin = -0.3
xmax = 0.3
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
boundary_name_prefix = plank
[../]
[./plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[../]
[./block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.31
xmax = 0.91
ymin = 7.7
ymax = 8.5
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[../]
[./block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[../]
[./combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[../]
[./block_rename]
type = RenameBlockGenerator
input = combined
old_block_id = '1 2'
new_block_name = 'plank block'
[../]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[./disp_x]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[./disp_y]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[]
[Modules/TensorMechanics/Master]
[./action]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank block'
extra_vector_tags = 'ref'
use_automatic_differentiation = true
[../]
[]
[Contact]
[./frictionless]
mesh = block_rename
primary = plank_right
secondary = block_left
formulation = mortar
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
preset = false
boundary = plank_left
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
preset = false
boundary = plank_bottom
value = 0.0
[../]
[./right_x]
type = ADFunctionDirichletBC
variable = disp_x
preset = false
boundary = block_right
function = '-0.04*sin(4*(t+1.5))+0.02'
[../]
[./right_y]
type = ADFunctionDirichletBC
variable = disp_y
preset = false
boundary = block_right
function = '-t'
[../]
[]
[Materials]
[./plank]
type = ADComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[../]
[./block]
type = ADComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[../]
[./stress]
type = ADComputeFiniteStrainElasticStress
block = 'plank block'
[../]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15'
end_time = 13.5
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'contact'
nl_abs_tol = 1e-7
[]
[Postprocessors]
[./nl_its]
type = NumNonlinearIterations
[../]
[./total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[../]
[./l_its]
type = NumLinearIterations
[../]
[./total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[../]
[./contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[../]
[./avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[../]
[./max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[../]
[./min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[../]
[./avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[../]
[./max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[../]
[./min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[../]
[]
[Outputs]
exodus = true
file_base = ${name}
[./comp]
type = CSV
show = 'contact'
[../]
[./out]
type = CSV
file_base = '${name}_out'
[../]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/heat_conduction/test/tests/heat_conduction/min_gap/min_gap.i)
[Mesh]
type = MeshGeneratorMesh
displacements = 'disp_x disp_y'
[./left_gen]
type = GeneratedMeshGenerator
dim = 2
nx = 2
ny = 3
xmin = -3
xmax = 0
ymin = -5
ymax = 5
[../]
[./right_gen]
type = GeneratedMeshGenerator
dim = 2
nx = 2
ny = 3
xmin = 3
xmax = 6
ymin = -5
ymax = 5
[../]
[./left_and_right]
type = MeshCollectionGenerator
inputs = 'left_gen right_gen'
[../]
[./leftleft]
type = SideSetsAroundSubdomainGenerator
block = 0
new_boundary = leftleft
normal = '-1 0 0'
input = left_and_right
[../]
[./leftright]
type = SideSetsAroundSubdomainGenerator
block = 0
new_boundary = leftright
normal = '1 0 0'
input = leftleft
[../]
[./right]
type = SubdomainBoundingBoxGenerator
top_right = '6 5 0'
bottom_left = '3 -5 0'
block_id = 1
input = leftright
[../]
[./rightleft]
type = SideSetsAroundSubdomainGenerator
block = 1
new_boundary = rightleft
normal = '-1 0 0'
input = right
[../]
[./rightright]
type = SideSetsAroundSubdomainGenerator
block = 1
new_boundary = rightright
normal = '1 0 0'
input = rightleft
[../]
[]
[Variables]
[./temp]
[../]
[]
[AuxVariables]
[./disp_x]
[../]
[./disp_y]
[../]
[./gap_conductance]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Functions]
[./disp_x]
type = ParsedFunction
value = -3+t
[../]
[./left_temp]
type = ParsedFunction
value = 1000+t
[../]
[]
[Kernels]
[./hc]
type = HeatConduction
variable = temp
[../]
[]
[AuxKernels]
[./disp_x]
type = FunctionAux
block = 1
variable = disp_x
function = disp_x
execute_on = 'INITIAL TIMESTEP_END'
[../]
[./gap_conductivity]
type = MaterialRealAux
boundary = leftright
property = gap_conductance
variable = gap_conductance
execute_on = 'INITIAL TIMESTEP_END'
[../]
[]
[BCs]
[./left]
type = FunctionDirichletBC
variable = temp
boundary = leftleft
function = left_temp
[../]
[./right]
type = DirichletBC
variable = temp
boundary = rightright
value = 400
[../]
[]
[ThermalContact]
[./left_to_right]
secondary = leftright
quadrature = true
primary = rightleft
variable = temp
min_gap = 1
min_gap_order = 1
emissivity_primary = 0
emissivity_secondary = 0
type = GapHeatTransfer
[../]
[]
[Materials]
[./hcm]
type = HeatConductionMaterial
block = '0 1'
specific_heat = 1
thermal_conductivity = 1
use_displaced_mesh = true
[../]
[]
[Postprocessors]
[./gap_conductance]
type = PointValue
point = '0 0 0'
variable = gap_conductance
[../]
[]
[Executioner]
type = Transient
dt = 0.25
end_time = 3.0
solve_type = 'PJFNK'
[]
[Outputs]
csv = true
execute_on = 'TIMESTEP_END'
[]
(modules/contact/test/tests/mortar_tm/2drz/ad_frictionless_first/finite_rr.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD4
order = FIRST
name = 'finite_rr'
[Problem]
coord_type = RZ
[]
[Mesh]
patch_size = 80
patch_update_strategy = auto
[./plank]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 0.6
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
boundary_name_prefix = plank
[../]
[./plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[../]
[./block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.61
xmax = 1.21
ymin = 9.2
ymax = 10.0
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[../]
[./block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[../]
[./combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[../]
[./block_rename]
type = RenameBlockGenerator
input = combined
old_block_id = '1 2'
new_block_name = 'plank block'
[../]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[./disp_x]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[./disp_y]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[]
[Modules/TensorMechanics/Master]
[./block]
use_automatic_differentiation = true
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'block'
extra_vector_tags = 'ref'
[../]
[./plank]
use_automatic_differentiation = true
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank'
eigenstrain_names = 'swell'
extra_vector_tags = 'ref'
[../]
[]
[Contact]
[./frictionless]
mesh = block_rename
primary = plank_right
secondary = block_left
formulation = mortar
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = plank_left
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
boundary = plank_bottom
value = 0.0
[../]
[./right_x]
type = DirichletBC
variable = disp_x
boundary = block_right
value = 0
[../]
[./right_y]
type = ADFunctionDirichletBC
variable = disp_y
boundary = block_right
function = '-t'
[../]
[]
[Materials]
[./plank]
type = ADComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[../]
[./block]
type = ADComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[../]
[./stress]
type = ADComputeFiniteStrainElasticStress
block = 'plank block'
[../]
[./swell]
type = ADComputeEigenstrain
block = 'plank'
eigenstrain_name = swell
eigen_base = '1 0 0 0 0 0 0 0 0'
prefactor = swell_mat
[../]
[./swell_mat]
type = ADGenericFunctionMaterial
prop_names = 'swell_mat'
prop_values = '7e-2*(1-cos(4*t))'
block = 'plank'
[../]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15'
end_time = 10
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'contact'
nl_abs_tol = 1e-12
[]
[Postprocessors]
[./nl_its]
type = NumNonlinearIterations
[../]
[./total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[../]
[./l_its]
type = NumLinearIterations
[../]
[./total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[../]
[./contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[../]
[./avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[../]
[./max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[../]
[./min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[../]
[./avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[../]
[./max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[../]
[./min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[../]
[]
[Outputs]
exodus = true
file_base = ${name}
[./comp]
type = CSV
show = 'contact'
[../]
[./out]
type = CSV
file_base = '${name}_out'
[../]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/contact/test/tests/mortar_tm/2drz/frictionless_first/finite_rr.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD4
order = FIRST
name = 'finite_rr'
[Problem]
coord_type = RZ
[]
[Mesh]
patch_size = 80
patch_update_strategy = auto
[./plank]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 0.6
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
boundary_name_prefix = plank
[../]
[./plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[../]
[./block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.61
xmax = 1.21
ymin = 9.2
ymax = 10.0
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[../]
[./block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[../]
[./combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[../]
[./block_rename]
type = RenameBlockGenerator
input = combined
old_block_id = '1 2'
new_block_name = 'plank block'
[../]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[./disp_x]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[./disp_y]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[]
[Modules/TensorMechanics/Master]
[./block]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'block'
extra_vector_tags = 'ref'
[../]
[./plank]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank'
eigenstrain_names = 'swell'
extra_vector_tags = 'ref'
[../]
[]
[Contact]
[./frictionless]
mesh = block_rename
primary = plank_right
secondary = block_left
formulation = mortar
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = plank_left
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
boundary = plank_bottom
value = 0.0
[../]
[./right_x]
type = DirichletBC
variable = disp_x
boundary = block_right
value = 0
[../]
[./right_y]
type = FunctionDirichletBC
variable = disp_y
boundary = block_right
function = '-t'
[../]
[]
[Materials]
[./plank]
type = ComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[../]
[./block]
type = ComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
block = 'plank block'
[../]
[./swell]
type = ComputeEigenstrain
block = 'plank'
eigenstrain_name = swell
eigen_base = '1 0 0 0 0 0 0 0 0'
prefactor = swell_mat
[../]
[./swell_mat]
type = GenericFunctionMaterial
prop_names = 'swell_mat'
prop_values = '7e-2*(1-cos(4*t))'
block = 'plank'
[../]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15'
end_time = 10
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'contact'
nl_abs_tol = 1e-12
[]
[Postprocessors]
[./nl_its]
type = NumNonlinearIterations
[../]
[./total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[../]
[./l_its]
type = NumLinearIterations
[../]
[./total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[../]
[./contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[../]
[./avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[../]
[./max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[../]
[./min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[../]
[./avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[../]
[./max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[../]
[./min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[../]
[]
[Outputs]
exodus = true
file_base = ${name}
[./comp]
type = CSV
show = 'contact'
[../]
[./out]
type = CSV
file_base = '${name}_out'
[../]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/contact/test/tests/mortar_tm/2drz/ad_frictionless_second/small.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD9
order = SECOND
name = 'small'
[Problem]
coord_type = RZ
[]
[Mesh]
patch_size = 80
patch_update_strategy = auto
[./plank]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 0.6
ymin = 0
ymax = 10
nx = 2
ny = 33
elem_type = ${elem}
boundary_name_prefix = plank
[../]
[./plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[../]
[./block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.61
xmax = 1.21
ymin = 9.2
ymax = 10.0
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[../]
[./block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[../]
[./combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[../]
[./block_rename]
type = RenameBlockGenerator
input = combined
old_block_id = '1 2'
new_block_name = 'plank block'
[../]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[./disp_x]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[./disp_y]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[]
[Modules/TensorMechanics/Master]
[./block]
use_automatic_differentiation = true
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'block'
[../]
[./plank]
use_automatic_differentiation = true
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank'
eigenstrain_names = 'swell'
[../]
[]
[Contact]
[./frictionless]
mesh = block_rename
primary = plank_right
secondary = block_left
formulation = mortar
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = plank_left
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
boundary = plank_bottom
value = 0.0
[../]
[./right_x]
type = DirichletBC
variable = disp_x
boundary = block_right
value = 0
[../]
[./right_y]
type = ADFunctionDirichletBC
variable = disp_y
boundary = block_right
function = '-t'
[../]
[]
[Materials]
[./plank]
type = ADComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[../]
[./block]
type = ADComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[../]
[./stress]
type = ADComputeLinearElasticStress
block = 'plank block'
[../]
[./swell]
type = ADComputeEigenstrain
block = 'plank'
eigenstrain_name = swell
eigen_base = '1 0 0 0 0 0 0 0 0'
prefactor = swell_mat
[../]
[./swell_mat]
type = ADGenericFunctionMaterial
prop_names = 'swell_mat'
prop_values = '7e-2*(1-cos(4*t))'
block = 'plank'
[../]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15'
end_time = 5
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'contact'
[]
[Postprocessors]
[./nl_its]
type = NumNonlinearIterations
[../]
[./total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[../]
[./l_its]
type = NumLinearIterations
[../]
[./total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[../]
[./contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[../]
[./avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[../]
[./max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[../]
[./min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[../]
[./avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[../]
[./max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[../]
[./min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[../]
[]
[Outputs]
exodus = true
file_base = ${name}
[./comp]
type = CSV
show = 'contact'
[../]
[./out]
type = CSV
file_base = '${name}_out'
[../]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/heat_conduction/test/tests/radiative_bcs/function_radiative_bc.i)
#
# If we assume that epsilon*sigma*(T_inf^4-T_s^4) is approximately equal to
# epsilon*sigma*4*T_inf^3*(T_inf-T_s), that form is equivalent to
# h*(T_inf-T_s), the convective flux bc. So, the radiative and convective
# flux bcs should give nearly the same answer if the leading terms are equal.
#
[Mesh]
[top]
type = GeneratedMeshGenerator
dim = 3
nx = 10
bias_x = 0.8
ymin = 1.2
ymax = 2.2
boundary_name_prefix = top
[]
[bottom]
type = GeneratedMeshGenerator
dim = 3
nx = 10
bias_x = 0.8
boundary_name_prefix = bot
boundary_id_offset = 6
[]
[two_blocks]
type = MeshCollectionGenerator
inputs = 'top bottom'
[]
[]
[Variables]
[temp]
initial_condition = 600.0
[]
[]
[Kernels]
[heat_dt]
type = TimeDerivative
variable = temp
[]
[heat_conduction]
type = HeatConduction
variable = temp
[]
[]
[BCs]
[./top_right]
type = ConvectiveHeatFluxBC
variable = temp
boundary = top_right
T_infinity = 300.0
heat_transfer_coefficient = 3.0
heat_transfer_coefficient_dT = 0
[../]
[./bot_right]
type = FunctionRadiativeBC
variable = temp
boundary = bot_right
# htc/(stefan-boltzmann*4*T_inf^3)
emissivity_function = '3/(5.670367e-8*4*300*300*300)'
[../]
[]
[Materials]
[./thermal]
type = GenericConstantMaterial
prop_names = 'density thermal_conductivity specific_heat'
prop_values = '1 10 100'
[../]
[]
[Postprocessors]
[./top_left_temp]
type = SideAverageValue
variable = temp
boundary = top_left
execute_on = 'TIMESTEP_END initial'
[../]
[./bot_left_temp]
type = SideAverageValue
variable = temp
boundary = bot_left
execute_on = 'TIMESTEP_END initial'
[../]
[./top_right_temp]
type = SideAverageValue
variable = temp
boundary = top_right
[../]
[./bot_right_temp]
type = SideAverageValue
variable = temp
boundary = bot_right
[../]
[]
[Executioner]
type = Transient
num_steps = 10
dt = 1e1
nl_abs_tol = 1e-12
[]
[Outputs]
exodus = true
[]
(modules/contact/test/tests/mortar_tm/2drz/frictionless_first/finite_noaction.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD4
order = FIRST
name = 'finite_noaction'
[Problem]
coord_type = RZ
[]
[Mesh]
patch_size = 80
patch_update_strategy = auto
[./plank]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 0.6
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
boundary_name_prefix = plank
[../]
[./plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[../]
[./block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.61
xmax = 1.21
ymin = 9.2
ymax = 10.0
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[../]
[./block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[../]
[./combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[../]
[./block_rename]
type = RenameBlockGenerator
input = combined
old_block_id = '1 2'
new_block_name = 'plank block'
[../]
[./secondary]
input = block_rename
type = LowerDBlockFromSidesetGenerator
sidesets = 'block_left'
new_block_id = '30'
new_block_name = 'frictionless_secondary_subdomain'
[../]
[./primary]
input = secondary
type = LowerDBlockFromSidesetGenerator
sidesets = 'plank_right'
new_block_id = '20'
new_block_name = 'frictionless_primary_subdomain'
[../]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[./disp_x]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[./disp_y]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[./frictionless_normal_lm]
order = ${order}
block = 'frictionless_secondary_subdomain'
[../]
[]
[Modules/TensorMechanics/Master]
[./block]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'block'
[../]
[./plank]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank'
eigenstrain_names = 'swell'
[../]
[]
[Constraints]
[./lm]
type = NormalNodalLMMechanicalContact
secondary = block_left
primary = plank_right
variable = frictionless_normal_lm
primary_variable = disp_x
disp_y = disp_y
ncp_function_type = min
use_displaced_mesh = true
[../]
[./normal_x]
type = NormalMortarMechanicalContact
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
variable = frictionless_normal_lm
secondary_variable = disp_x
component = x
use_displaced_mesh = true
compute_lm_residuals = false
[../]
[./normal_y]
type = NormalMortarMechanicalContact
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
variable = frictionless_normal_lm
secondary_variable = disp_y
component = y
use_displaced_mesh = true
compute_lm_residuals = false
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = plank_left
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
boundary = plank_bottom
value = 0.0
[../]
[./right_x]
type = DirichletBC
variable = disp_x
boundary = block_right
value = 0
[../]
[./right_y]
type = FunctionDirichletBC
variable = disp_y
boundary = block_right
function = '-t'
[../]
[]
[Materials]
[./plank]
type = ComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[../]
[./block]
type = ComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
block = 'plank block'
[../]
[./swell]
type = ComputeEigenstrain
block = 'plank'
eigenstrain_name = swell
eigen_base = '1 0 0 0 0 0 0 0 0'
prefactor = swell_mat
[../]
[./swell_mat]
type = GenericFunctionMaterial
prop_names = 'swell_mat'
prop_values = '7e-2*(1-cos(4*t))'
block = 'plank'
[../]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15'
end_time = 10
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'contact'
snesmf_reuse_base = false
[]
[Postprocessors]
[./nl_its]
type = NumNonlinearIterations
[../]
[./total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[../]
[./l_its]
type = NumLinearIterations
[../]
[./total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[../]
[./contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[../]
[./avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[../]
[./max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[../]
[./min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[../]
[./avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[../]
[./max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[../]
[./min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[../]
[]
[Outputs]
exodus = true
file_base = ${name}
[./comp]
type = CSV
show = 'contact'
[../]
[./out]
type = CSV
file_base = '${name}_out'
[../]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/contact/test/tests/mortar_tm/2d/ad_frictionless_fir/small.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD4
order = FIRST
name = 'small'
[Mesh]
patch_size = 80
patch_update_strategy = auto
[./plank]
type = GeneratedMeshGenerator
dim = 2
xmin = -0.3
xmax = 0.3
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
boundary_name_prefix = plank
[../]
[./plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[../]
[./block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.31
xmax = 0.91
ymin = 7.7
ymax = 8.5
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[../]
[./block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[../]
[./combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[../]
[./block_rename]
type = RenameBlockGenerator
input = combined
old_block_id = '1 2'
new_block_name = 'plank block'
[../]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[./disp_x]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[./disp_y]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[]
[Modules/TensorMechanics/Master]
[./action]
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank block'
use_automatic_differentiation = true
[../]
[]
[Contact]
[./frictionless]
mesh = block_rename
primary = plank_right
secondary = block_left
formulation = mortar
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = plank_left
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
boundary = plank_bottom
value = 0.0
[../]
[./right_x]
type = ADFunctionDirichletBC
variable = disp_x
boundary = block_right
function = '-0.04*sin(4*(t+1.5))+0.02'
[../]
[./right_y]
type = ADFunctionDirichletBC
variable = disp_y
boundary = block_right
function = '-t'
[../]
[]
[Materials]
[./plank]
type = ADComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[../]
[./block]
type = ADComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[../]
[./stress]
type = ADComputeLinearElasticStress
block = 'plank block'
[../]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15'
end_time = 13.5
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'contact'
[]
[Postprocessors]
[./nl_its]
type = NumNonlinearIterations
[../]
[./total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[../]
[./l_its]
type = NumLinearIterations
[../]
[./total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[../]
[./contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[../]
[./avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[../]
[./max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[../]
[./min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[../]
[./avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[../]
[./max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[../]
[./min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[../]
[]
[Outputs]
exodus = true
file_base = ${name}
[./comp]
type = CSV
show = 'contact'
[../]
[./out]
type = CSV
file_base = '${name}_out'
[../]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/contact/test/tests/mortar_tm/2drz/frictionless_second/finite_noaction.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD9
order = SECOND
name = 'finite_noaction'
[Problem]
coord_type = RZ
[]
[Mesh]
patch_size = 80
patch_update_strategy = auto
[./plank]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 0.6
ymin = 0
ymax = 10
nx = 2
ny = 33
elem_type = ${elem}
boundary_name_prefix = plank
[../]
[./plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[../]
[./block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.61
xmax = 1.21
ymin = 9.2
ymax = 10.0
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[../]
[./block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[../]
[./combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[../]
[./block_rename]
type = RenameBlockGenerator
input = combined
old_block_id = '1 2'
new_block_name = 'plank block'
[../]
[./secondary]
input = block_rename
type = LowerDBlockFromSidesetGenerator
sidesets = 'block_left'
new_block_id = '30'
new_block_name = 'frictionless_secondary_subdomain'
[../]
[./primary]
input = secondary
type = LowerDBlockFromSidesetGenerator
sidesets = 'plank_right'
new_block_id = '20'
new_block_name = 'frictionless_primary_subdomain'
[../]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[./disp_x]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[./disp_y]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[./frictionless_normal_lm]
order = ${order}
block = 'frictionless_secondary_subdomain'
[../]
[]
[Modules/TensorMechanics/Master]
[./block]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'block'
[../]
[./plank]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank'
eigenstrain_names = 'swell'
[../]
[]
[Constraints]
[./lm]
type = NormalNodalLMMechanicalContact
secondary = block_left
primary = plank_right
variable = frictionless_normal_lm
primary_variable = disp_x
disp_y = disp_y
ncp_function_type = min
use_displaced_mesh = true
[../]
[./normal_x]
type = NormalMortarMechanicalContact
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
variable = frictionless_normal_lm
secondary_variable = disp_x
component = x
use_displaced_mesh = true
compute_lm_residuals = false
[../]
[./normal_y]
type = NormalMortarMechanicalContact
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
variable = frictionless_normal_lm
secondary_variable = disp_y
component = y
use_displaced_mesh = true
compute_lm_residuals = false
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
preset = false
boundary = plank_left
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
preset = false
boundary = plank_bottom
value = 0.0
[../]
[./right_x]
type = DirichletBC
variable = disp_x
preset = false
boundary = block_right
value = 0
[../]
[./right_y]
type = FunctionDirichletBC
variable = disp_y
preset = false
boundary = block_right
function = '-t'
[../]
[]
[Materials]
[./plank]
type = ComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[../]
[./block]
type = ComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
block = 'plank block'
[../]
[./swell]
type = ComputeEigenstrain
block = 'plank'
eigenstrain_name = swell
eigen_base = '1 0 0 0 0 0 0 0 0'
prefactor = swell_mat
[../]
[./swell_mat]
type = GenericFunctionMaterial
prop_names = 'swell_mat'
prop_values = '7e-2*(1-cos(4*t))'
block = 'plank'
[../]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15'
end_time = 5
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'contact'
snesmf_reuse_base = false
[]
[Postprocessors]
[./nl_its]
type = NumNonlinearIterations
[../]
[./total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[../]
[./l_its]
type = NumLinearIterations
[../]
[./total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[../]
[./contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[../]
[./avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[../]
[./max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[../]
[./min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[../]
[./avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[../]
[./max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[../]
[./min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[../]
[]
[Outputs]
exodus = true
file_base = ${name}
[./comp]
type = CSV
show = 'contact'
[../]
[./out]
type = CSV
file_base = '${name}_out'
[../]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/contact/test/tests/mortar_tm/2d/frictionless_first/finite_rr.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD4
order = FIRST
name = 'finite_rr'
[Mesh]
patch_size = 80
patch_update_strategy = auto
[./plank]
type = GeneratedMeshGenerator
dim = 2
xmin = -0.3
xmax = 0.3
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
boundary_name_prefix = plank
[../]
[./plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[../]
[./block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.31
xmax = 0.91
ymin = 7.7
ymax = 8.5
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[../]
[./block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[../]
[./combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[../]
[./block_rename]
type = RenameBlockGenerator
input = combined
old_block_id = '1 2'
new_block_name = 'plank block'
[../]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[./disp_x]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[./disp_y]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[]
[Modules/TensorMechanics/Master]
[./action]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank block'
extra_vector_tags = 'ref'
[../]
[]
[Contact]
[./frictionless]
mesh = block_rename
primary = plank_right
secondary = block_left
formulation = mortar
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = plank_left
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
boundary = plank_bottom
value = 0.0
[../]
[./right_x]
type = FunctionDirichletBC
variable = disp_x
boundary = block_right
function = '-0.04*sin(4*(t+1.5))+0.02'
[../]
[./right_y]
type = FunctionDirichletBC
variable = disp_y
boundary = block_right
function = '-t'
[../]
[]
[Materials]
[./plank]
type = ComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[../]
[./block]
type = ComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
block = 'plank block'
[../]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15'
end_time = 13.5
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'contact'
nl_abs_tol = 1e-7
[]
[Postprocessors]
[./nl_its]
type = NumNonlinearIterations
[../]
[./total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[../]
[./l_its]
type = NumLinearIterations
[../]
[./total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[../]
[./contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[../]
[./avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[../]
[./max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[../]
[./min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[../]
[./avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[../]
[./max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[../]
[./min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[../]
[]
[Outputs]
exodus = true
file_base = ${name}
[./comp]
type = CSV
show = 'contact'
[../]
[./out]
type = CSV
file_base = '${name}_out'
[../]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/contact/test/tests/mortar_tm/2d/frictionless_first/finite_noaction.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD4
order = FIRST
name = 'finite_noaction'
[Mesh]
patch_size = 80
patch_update_strategy = auto
[./plank]
type = GeneratedMeshGenerator
dim = 2
xmin = -0.3
xmax = 0.3
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
boundary_name_prefix = plank
[../]
[./plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[../]
[./block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.31
xmax = 0.91
ymin = 7.7
ymax = 8.5
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[../]
[./block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[../]
[./combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[../]
[./block_rename]
type = RenameBlockGenerator
input = combined
old_block_id = '1 2'
new_block_name = 'plank block'
[../]
[./secondary]
input = block_rename
type = LowerDBlockFromSidesetGenerator
sidesets = 'block_left'
new_block_id = '30'
new_block_name = 'frictionless_secondary_subdomain'
[../]
[./primary]
input = secondary
type = LowerDBlockFromSidesetGenerator
sidesets = 'plank_right'
new_block_id = '20'
new_block_name = 'frictionless_primary_subdomain'
[../]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[./disp_x]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[./disp_y]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[./frictionless_normal_lm]
order = ${order}
block = 'frictionless_secondary_subdomain'
[../]
[]
[Modules/TensorMechanics/Master]
[./action]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank block'
[../]
[]
[Constraints]
[./lm]
type = NormalNodalLMMechanicalContact
secondary = block_left
primary = plank_right
variable = frictionless_normal_lm
primary_variable = disp_x
disp_y = disp_y
ncp_function_type = min
use_displaced_mesh = true
[../]
[./normal_x]
type = NormalMortarMechanicalContact
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
variable = frictionless_normal_lm
secondary_variable = disp_x
component = x
use_displaced_mesh = true
compute_lm_residuals = false
[../]
[./normal_y]
type = NormalMortarMechanicalContact
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
variable = frictionless_normal_lm
secondary_variable = disp_y
component = y
use_displaced_mesh = true
compute_lm_residuals = false
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = plank_left
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
boundary = plank_bottom
value = 0.0
[../]
[./right_x]
type = FunctionDirichletBC
variable = disp_x
boundary = block_right
function = '-0.04*sin(4*(t+1.5))+0.02'
[../]
[./right_y]
type = FunctionDirichletBC
variable = disp_y
boundary = block_right
function = '-t'
[../]
[]
[Materials]
[./plank]
type = ComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[../]
[./block]
type = ComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
block = 'plank block'
[../]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15'
end_time = 13.5
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'contact'
snesmf_reuse_base = false
[]
[Postprocessors]
[./nl_its]
type = NumNonlinearIterations
[../]
[./total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[../]
[./l_its]
type = NumLinearIterations
[../]
[./total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[../]
[./contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[../]
[./avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[../]
[./max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[../]
[./min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[../]
[./avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[../]
[./max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[../]
[./min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[../]
[]
[Outputs]
exodus = true
file_base = ${name}
[./comp]
type = CSV
show = 'contact'
[../]
[./out]
type = CSV
file_base = '${name}_out'
[../]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/contact/test/tests/mortar_tm/2d/ad_frictionless_sec/finite.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD9
order = SECOND
name = 'finite'
[Mesh]
patch_size = 80
patch_update_strategy = auto
[./plank]
type = GeneratedMeshGenerator
dim = 2
xmin = -0.3
xmax = 0.3
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
boundary_name_prefix = plank
[../]
[./plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[../]
[./block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.31
xmax = 0.91
ymin = 7.7
ymax = 8.5
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[../]
[./block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[../]
[./combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[../]
[./block_rename]
type = RenameBlockGenerator
input = combined
old_block_id = '1 2'
new_block_name = 'plank block'
[../]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[./disp_x]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[./disp_y]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[]
[Modules/TensorMechanics/Master]
[./action]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank block'
use_automatic_differentiation = true
[../]
[]
[Contact]
[./frictionless]
mesh = block_rename
primary = plank_right
secondary = block_left
formulation = mortar
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
preset = false
boundary = plank_left
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
preset = false
boundary = plank_bottom
value = 0.0
[../]
[./right_x]
type = ADFunctionDirichletBC
variable = disp_x
preset = false
boundary = block_right
function = '-0.04*sin(4*(t+1.5))+0.02'
[../]
[./right_y]
type = ADFunctionDirichletBC
variable = disp_y
preset = false
boundary = block_right
function = '-t'
[../]
[]
[Materials]
[./plank]
type = ADComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[../]
[./block]
type = ADComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[../]
[./stress]
type = ADComputeFiniteStrainElasticStress
block = 'plank block'
[../]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15'
end_time = 13.5
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'contact'
[]
[Postprocessors]
[./nl_its]
type = NumNonlinearIterations
[../]
[./total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[../]
[./l_its]
type = NumLinearIterations
[../]
[./total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[../]
[./contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[../]
[./avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[../]
[./max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[../]
[./min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[../]
[./avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[../]
[./max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[../]
[./min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[../]
[]
[Outputs]
exodus = true
file_base = ${name}
[./comp]
type = CSV
show = 'contact'
[../]
[./out]
type = CSV
file_base = '${name}_out'
[../]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/contact/test/tests/mortar_tm/2drz/frictionless_second/finite.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD9
order = SECOND
name = 'finite'
[Problem]
coord_type = RZ
[]
[Mesh]
patch_size = 80
patch_update_strategy = auto
[./plank]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 0.6
ymin = 0
ymax = 10
nx = 2
ny = 33
elem_type = ${elem}
boundary_name_prefix = plank
[../]
[./plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[../]
[./block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.61
xmax = 1.21
ymin = 9.2
ymax = 10.0
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[../]
[./block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[../]
[./combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[../]
[./block_rename]
type = RenameBlockGenerator
input = combined
old_block_id = '1 2'
new_block_name = 'plank block'
[../]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[./disp_x]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[./disp_y]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[]
[Modules/TensorMechanics/Master]
[./block]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'block'
[../]
[./plank]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank'
eigenstrain_names = 'swell'
[../]
[]
[Contact]
[./frictionless]
mesh = block_rename
primary = plank_right
secondary = block_left
formulation = mortar
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
preset = false
boundary = plank_left
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
preset = false
boundary = plank_bottom
value = 0.0
[../]
[./right_x]
type = DirichletBC
variable = disp_x
preset = false
boundary = block_right
value = 0
[../]
[./right_y]
type = FunctionDirichletBC
variable = disp_y
preset = false
boundary = block_right
function = '-t'
[../]
[]
[Materials]
[./plank]
type = ComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[../]
[./block]
type = ComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
block = 'plank block'
[../]
[./swell]
type = ComputeEigenstrain
block = 'plank'
eigenstrain_name = swell
eigen_base = '1 0 0 0 0 0 0 0 0'
prefactor = swell_mat
[../]
[./swell_mat]
type = GenericFunctionMaterial
prop_names = 'swell_mat'
prop_values = '7e-2*(1-cos(4*t))'
block = 'plank'
[../]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15'
end_time = 5
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'contact'
[]
[Postprocessors]
[./nl_its]
type = NumNonlinearIterations
[../]
[./total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[../]
[./l_its]
type = NumLinearIterations
[../]
[./total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[../]
[./contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[../]
[./avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[../]
[./max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[../]
[./min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[../]
[./avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[../]
[./max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[../]
[./min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[../]
[]
[Outputs]
exodus = true
file_base = ${name}
[./comp]
type = CSV
show = 'contact'
[../]
[./out]
type = CSV
file_base = '${name}_out'
[../]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/contact/test/tests/mortar_tm/2drz/frictionless_first/small.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD4
order = FIRST
name = 'small'
[Problem]
coord_type = RZ
[]
[Mesh]
patch_size = 80
patch_update_strategy = auto
[./plank]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 0.6
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
boundary_name_prefix = plank
[../]
[./plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[../]
[./block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.61
xmax = 1.21
ymin = 9.2
ymax = 10.0
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[../]
[./block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[../]
[./combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[../]
[./block_rename]
type = RenameBlockGenerator
input = combined
old_block_id = '1 2'
new_block_name = 'plank block'
[../]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[./disp_x]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[./disp_y]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[]
[Modules/TensorMechanics/Master]
[./block]
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'block'
[../]
[./plank]
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank'
eigenstrain_names = 'swell'
[../]
[]
[Contact]
[./frictionless]
mesh = block_rename
primary = plank_right
secondary = block_left
formulation = mortar
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = plank_left
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
boundary = plank_bottom
value = 0.0
[../]
[./right_x]
type = DirichletBC
variable = disp_x
boundary = block_right
value = 0
[../]
[./right_y]
type = FunctionDirichletBC
variable = disp_y
boundary = block_right
function = '-t'
[../]
[]
[Materials]
[./plank]
type = ComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[../]
[./block]
type = ComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[../]
[./stress]
type = ComputeLinearElasticStress
block = 'plank block'
[../]
[./swell]
type = ComputeEigenstrain
block = 'plank'
eigenstrain_name = swell
eigen_base = '1 0 0 0 0 0 0 0 0'
prefactor = swell_mat
[../]
[./swell_mat]
type = GenericFunctionMaterial
prop_names = 'swell_mat'
prop_values = '7e-2*(1-cos(4*t))'
block = 'plank'
[../]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15'
end_time = 10
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'contact'
[]
[Postprocessors]
[./nl_its]
type = NumNonlinearIterations
[../]
[./total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[../]
[./l_its]
type = NumLinearIterations
[../]
[./total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[../]
[./contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[../]
[./avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[../]
[./max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[../]
[./min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[../]
[./avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[../]
[./max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[../]
[./min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[../]
[]
[Outputs]
exodus = true
file_base = ${name}
[./comp]
type = CSV
show = 'contact'
[../]
[./out]
type = CSV
file_base = '${name}_out'
[../]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/contact/test/tests/mortar_tm/2d/ad_frictionless_fir/finite_rr.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD4
order = FIRST
name = 'finite_rr'
[Mesh]
patch_size = 80
patch_update_strategy = auto
[./plank]
type = GeneratedMeshGenerator
dim = 2
xmin = -0.3
xmax = 0.3
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
boundary_name_prefix = plank
[../]
[./plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[../]
[./block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.31
xmax = 0.91
ymin = 7.7
ymax = 8.5
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[../]
[./block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[../]
[./combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[../]
[./block_rename]
type = RenameBlockGenerator
input = combined
old_block_id = '1 2'
new_block_name = 'plank block'
[../]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[./disp_x]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[./disp_y]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[]
[Modules/TensorMechanics/Master]
[./action]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank block'
extra_vector_tags = 'ref'
use_automatic_differentiation = true
[../]
[]
[Contact]
[./frictionless]
mesh = block_rename
primary = plank_right
secondary = block_left
formulation = mortar
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = plank_left
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
boundary = plank_bottom
value = 0.0
[../]
[./right_x]
type = ADFunctionDirichletBC
variable = disp_x
boundary = block_right
function = '-0.04*sin(4*(t+1.5))+0.02'
[../]
[./right_y]
type = ADFunctionDirichletBC
variable = disp_y
boundary = block_right
function = '-t'
[../]
[]
[Materials]
[./plank]
type = ADComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[../]
[./block]
type = ADComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[../]
[./stress]
type = ADComputeFiniteStrainElasticStress
block = 'plank block'
[../]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15'
end_time = 13.5
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'contact'
nl_abs_tol = 1e-7
[]
[Postprocessors]
[./nl_its]
type = NumNonlinearIterations
[../]
[./total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[../]
[./l_its]
type = NumLinearIterations
[../]
[./total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[../]
[./contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[../]
[./avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[../]
[./max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[../]
[./min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[../]
[./avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[../]
[./max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[../]
[./min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[../]
[]
[Outputs]
exodus = true
file_base = ${name}
[./comp]
type = CSV
show = 'contact'
[../]
[./out]
type = CSV
file_base = '${name}_out'
[../]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/contact/test/tests/mortar_tm/2drz/ad_frictionless_second/finite_rr.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD9
order = SECOND
name = 'finite_rr'
[Problem]
coord_type = RZ
[]
[Mesh]
patch_size = 80
patch_update_strategy = auto
[./plank]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 0.6
ymin = 0
ymax = 10
nx = 2
ny = 33
elem_type = ${elem}
boundary_name_prefix = plank
[../]
[./plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[../]
[./block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.61
xmax = 1.21
ymin = 9.2
ymax = 10.0
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[../]
[./block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[../]
[./combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[../]
[./block_rename]
type = RenameBlockGenerator
input = combined
old_block_id = '1 2'
new_block_name = 'plank block'
[../]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[./disp_x]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[./disp_y]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[../]
[]
[Modules/TensorMechanics/Master]
[./block]
use_automatic_differentiation = true
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'block'
extra_vector_tags = 'ref'
[../]
[./plank]
use_automatic_differentiation = true
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank'
eigenstrain_names = 'swell'
extra_vector_tags = 'ref'
[../]
[]
[Contact]
[./frictionless]
mesh = block_rename
primary = plank_right
secondary = block_left
formulation = mortar
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
preset = false
boundary = plank_left
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
preset = false
boundary = plank_bottom
value = 0.0
[../]
[./right_x]
type = DirichletBC
variable = disp_x
preset = false
boundary = block_right
value = 0
[../]
[./right_y]
type = ADFunctionDirichletBC
variable = disp_y
preset = false
boundary = block_right
function = '-t'
[../]
[]
[Materials]
[./plank]
type = ADComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[../]
[./block]
type = ADComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[../]
[./stress]
type = ADComputeFiniteStrainElasticStress
block = 'plank block'
[../]
[./swell]
type = ADComputeEigenstrain
block = 'plank'
eigenstrain_name = swell
eigen_base = '1 0 0 0 0 0 0 0 0'
prefactor = swell_mat
[../]
[./swell_mat]
type = ADGenericFunctionMaterial
prop_names = 'swell_mat'
prop_values = '7e-2*(1-cos(4*t))'
block = 'plank'
[../]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu 1e-5 NONZERO 1e-15'
end_time = 5
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'contact'
nl_abs_tol = 1e-12
[]
[Postprocessors]
[./nl_its]
type = NumNonlinearIterations
[../]
[./total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[../]
[./l_its]
type = NumLinearIterations
[../]
[./total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[../]
[./contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[../]
[./avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[../]
[./max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[../]
[./min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[../]
[./avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[../]
[./max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[../]
[./min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[../]
[]
[Outputs]
exodus = true
file_base = ${name}
[./comp]
type = CSV
show = 'contact'
[../]
[./out]
type = CSV
file_base = '${name}_out'
[../]
[]
[Debug]
show_var_residual_norms = true
[]