- inputThe mesh we want to modify
C++ Type:MeshGeneratorName
Controllable:No
Description:The mesh we want to modify
BreakMeshByBlockGenerator
Break the mesh at interfaces between blocks. New nodes will be generated so elements on each side of the break are no longer connected.
Description
This class implements a MeshGenerator to split a monolithic mesh by blocks similar to what is proposed by VP Nguyen Nguyen (2014).
To split the mesh, nodes shared by multiple blocks are duplicated N-1 times (where N is the number of blocks sharing a particular node). Each duplicated node is assigned to one block and all the elements sharing that node are updated. Separate directional sidesets are always created on both sides of each cut. Their names are formed from the adjacent block names, and each direction has its own boundary ID. These boundary pairs allow libMesh to reconstruct disjoint neighbors on distributed meshes.
Two block restriction options are provided: "surrounding_blocks" and "block_pairs". The "surrounding_blocks" option creates interfaces both between the listed blocks and between the listed blocks and the rest of the mesh. The "block_pairs" option creates interfaces only between the specified block pairs. Multiple block pairs are separated by semicolons (;). These two options cannot be used together. When neither is specified, interfaces are generated between all adjacent blocks.
Example Input File Syntax
Mesh Splitting
[Mesh<<<{"href": "../../syntax/Mesh/index.html"}>>>]
[./fmg]
type = FileMeshGenerator<<<{"description": "Read a mesh from a file.", "href": "FileMeshGenerator.html"}>>>
file<<<{"description": "The filename to read."}>>> = 4ElementJunction.e
[]
[./breakmesh]
type = BreakMeshByBlockGenerator<<<{"description": "Break the mesh at interfaces between blocks. New nodes will be generated so elements on each side of the break are no longer connected.", "href": "BreakMeshByBlockGenerator.html"}>>>
input<<<{"description": "The mesh we want to modify"}>>> = fmg
[]
[](test/tests/meshgenerators/break_mesh_by_block_generator/break_mesh_2DJunction_auto.i)Interface Naming
Each interface is named by joining the block names in the order of the side's block followed by its neighbor's block. For neighboring blocks named wood and steel, wood_steel contains sides on wood and steel_wood contains sides on steel. If a block is unnamed, its name defaults to Block plus its block ID; for example, wood_Block2 and Block2_wood.
Specify the desired directional block-pair names in the boundary parameter of interface kernels and cohesive zone models. For example, boundary = wood_steel selects the sides on wood facing steel. An interface kernel integrates its weak form on these selected sides, treating the elements in wood as the element side and those in steel as the neighbor side. Selecting steel_wood reverses these roles.
block_pairs option
The "block_pairs" option restricts splitting to the specified block pairs. Nodes shared by more than two blocks are left connected at junctions. In the example below, three different cases are shown, where one, two and three new nodes are created, respectively.

[Mesh<<<{"href": "../../syntax/Mesh/index.html"}>>>]
[msh]
type = CartesianMeshGenerator<<<{"description": "This CartesianMeshGenerator creates a non-uniform Cartesian mesh.", "href": "CartesianMeshGenerator.html"}>>>
dim<<<{"description": "The dimension of the mesh to be generated"}>>> = 2
dx<<<{"description": "Intervals in the X direction"}>>> = '1 1 1 1'
dy<<<{"description": "Intervals in the Y direction (required when dim>1 otherwise ignored)"}>>> = '1 1 1'
subdomain_id<<<{"description": "Block IDs (default to all zero)"}>>> = '0 0 0 0 1 2 2 1 1 1 1 1'
[]
[split]
input<<<{"description": "The mesh we want to modify"}>>> = msh
type = BreakMeshByBlockGenerator<<<{"description": "Break the mesh at interfaces between blocks. New nodes will be generated so elements on each side of the break are no longer connected.", "href": "BreakMeshByBlockGenerator.html"}>>>
[]
[](test/tests/meshgenerators/break_mesh_by_block_generator/break_mesh_block_pairs_restricted_3blocks.i)Input Parameters
- block_pairsThe list of subdomain pairs between which interfaces will be generated.
C++ Type:std::vector<std::vector<SubdomainName>>
Controllable:No
Description:The list of subdomain pairs between which interfaces will be generated.
- surrounding_blocksThe list of subdomain names surrounding which interfaces will be generated.
C++ Type:std::vector<SubdomainName>
Controllable:No
Description:The list of subdomain names surrounding which interfaces will be generated.
Optional Parameters
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Controllable:No
Description:Set the enabled status of the MooseObject.
- save_with_nameKeep the mesh from this mesh generator in memory with the name specified
C++ Type:std::string
Controllable:No
Description:Keep the mesh from this mesh generator in memory with the name specified
Advanced Parameters
- nemesisFalseWhether or not to output the mesh file in the nemesisformat (only if output = true)
Default:False
C++ Type:bool
Controllable:No
Description:Whether or not to output the mesh file in the nemesisformat (only if output = true)
- outputFalseWhether or not to output the mesh file after generating the mesh
Default:False
C++ Type:bool
Controllable:No
Description:Whether or not to output the mesh file after generating the mesh
- 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
Controllable:No
Description:Whether or not to show mesh info after generating the mesh (bounding box, element types, sidesets, nodesets, subdomains, etc)
Debugging Parameters
Input Files
- (modules/heat_transfer/test/tests/thin_layer_heat_transfer/transient_2d.i)
- (test/tests/meshgenerators/break_mesh_by_block_generator/break_mesh_block_pairs_restricted.i)
- (modules/solid_mechanics/test/tests/cohesive_zone_model/czm_multiple_action_and_materials.i)
- (modules/shifted_boundary_method/test/tests/shifted_cohesive_zone/angled_sczm_ad_elastic.i)
- (modules/solid_mechanics/test/tests/cohesive_zone_model/czm_traction_separation_base.i)
- (test/tests/meshgenerators/stitch_boundary_mesh_generator/stitch_2d.i)
- (test/tests/meshgenerators/break_mesh_by_block_generator/break_mesh_2DJunction_polycrystal.i)
- (modules/solid_mechanics/test/tests/cohesive_zone_model/bilinear_mixed_jacobian.i)
- (test/tests/meshgenerators/break_mesh_by_block_generator/break_mesh_block_pairs_restricted_3blocks.i)
- (test/tests/materials/interface_material/interface_value_material_split_mesh_stateful.i)
- (modules/shifted_boundary_method/test/tests/grain_boundary_case/grain_boundary_sczm_coarse_lambda1.i)
- (modules/solid_mechanics/test/tests/cohesive_zone_model/bilinear_mixed_scale_strength.i)
- (modules/combined/test/tests/break_mesh_interface_contact/break_mesh_interface_contact.i)
- (modules/solid_mechanics/test/tests/cohesive_zone_model/bilinear_mixed_rotation_3d.i)
- (test/tests/meshgenerators/break_mesh_by_block_generator/break_mesh_2DJunction_auto.i)
- (modules/shifted_boundary_method/test/tests/shifted_cohesive_zone/sczm_triangle_mms.i)
- (modules/heat_transfer/test/tests/thin_layer_heat_transfer/transient_3d.i)
- (modules/solid_mechanics/test/tests/cohesive_zone_model/stretch_rotate_large_deformation.i)
- (modules/solid_mechanics/test/tests/cohesive_zone_model/czm_patch_test_base.i)
- (test/tests/meshgenerators/break_mesh_by_block_generator/break_mesh_3D_auto.i)
- (modules/shifted_boundary_method/test/tests/grain_boundary_case/grain_boundary_sczm_separate_interfaces.i)
- (modules/heat_transfer/test/tests/thin_layer_heat_transfer/steady_3d.i)
- (modules/solid_mechanics/test/tests/cohesive_zone_model/bilinear_mixed_energy.i)
- (modules/contact/test/tests/cohesive_zone_model/bilinear_mixed.i)
- (test/tests/meshgenerators/break_mesh_by_block_generator/break_mesh_block_restricted.i)
- (modules/solid_mechanics/test/tests/cohesive_zone_model/bilinear_mixed.i)
- (modules/shifted_boundary_method/test/tests/shifted_cohesive_zone/rectangle_czm_only_quad_material_mimic.i)
- (modules/heat_transfer/test/tests/thin_layer_heat_transfer/steady_2d.i)
- (modules/shifted_boundary_method/test/tests/shifted_cohesive_zone/rectangle_sczm_tri_material.i)
- (test/tests/meshgenerators/break_mesh_by_block_generator/hanging_nodes_parallel.i)
- (test/tests/materials/interface_material/interface_value_material_split_mesh.i)
- (test/tests/meshgenerators/stitch_boundary_mesh_generator/stitch_3d.i)
- (test/tests/constraints/equal_value_boundary_constraint/break_mesh_with_evbc.i)
- (modules/shifted_boundary_method/test/tests/shifted_cohesive_zone/angled_sczm_nonad_salehani.i)
- (modules/shifted_boundary_method/test/tests/shifted_cohesive_zone/angled_sczm_common.i)
- (test/tests/meshgenerators/break_mesh_by_block_generator/break_mesh_3D_polycrystal.i)
- (modules/solid_mechanics/test/tests/cohesive_zone_model/ad_czm.i)
- (modules/solid_mechanics/test/tests/cohesive_zone_model/czm_multiple_dimension_base.i)
- (test/tests/interfacekernels/1d_interface/no-failed-point-inversions.i)
References
- Vinh Phu Nguyen.
An open source program to generate zero-thickness cohesive interface elements.
Advances in Engineering Software, 74:27–39, 2014.
doi:10.1016/j.advengsoft.2014.04.002.[Export]
BibTeX
@article{Nguyen2014, author = "Nguyen, Vinh Phu", abstract = "An open source program to generate zero-thickness cohesive interface elements in existing finite element discretizations is presented. This contribution fills the gap in the literature that, to the best of the author's knowledge, there is no such program exists. The program is useful in numerical modeling of material/structure failure using cohesive interface elements. The program is able to generate one/two dimensional, linear/quadratic cohesive elements (i) at all inter-element boundaries, (ii) at material interfaces and (iii) at grain boundaries in polycrystalline materials. Algorithms and utilization of the program is discussed. Several two dimensional and three dimensional fracture mechanics problems are given including debonding process of material interfaces, multiple delamination of composite structures, crack propagation in polycrystalline structures.", doi = "10.1016/j.advengsoft.2014.04.002", issn = "09659978", journal = "Advances in Engineering Software", mendeley-groups = "Moose", pages = "27--39", title = "{An open source program to generate zero-thickness cohesive interface elements}", volume = "74", year = "2014" }RIS
TY - JOUR AU - Nguyen, Vinh Phu TI - An open source program to generate zero-thickness cohesive interface elements JO - Advances in Engineering Software PY - 2014 VL - 74 DO - 10.1016/j.advengsoft.2014.04.002 SP - 27 EP - 39 ER -Plain Text
Vinh Phu Nguyen. An open source program to generate zero-thickness cohesive interface elements. Advances in Engineering Software, 74:27–39, 2014. doi:10.1016/j.advengsoft.2014.04.002.
surrounding_blocks
C++ Type:std::vector<SubdomainName>
Controllable:No
Description:The list of subdomain names surrounding which interfaces will be generated.
block_pairs
C++ Type:std::vector<std::vector<SubdomainName>>
Controllable:No
Description:The list of subdomain pairs between which interfaces will be generated.
surrounding_blocks
C++ Type:std::vector<SubdomainName>
Controllable:No
Description:The list of subdomain names surrounding which interfaces will be generated.
block_pairs
C++ Type:std::vector<std::vector<SubdomainName>>
Controllable:No
Description:The list of subdomain pairs between which interfaces will be generated.
(test/tests/meshgenerators/break_mesh_by_block_generator/break_mesh_2DJunction_auto.i)
[Mesh]
[./fmg]
type = FileMeshGenerator
file = 4ElementJunction.e
[]
[./breakmesh]
type = BreakMeshByBlockGenerator
input = fmg
[]
[]
[Outputs]
exodus = true
[]
block_pairs
C++ Type:std::vector<std::vector<SubdomainName>>
Controllable:No
Description:The list of subdomain pairs between which interfaces will be generated.
(test/tests/meshgenerators/break_mesh_by_block_generator/break_mesh_block_pairs_restricted_3blocks.i)
[Mesh]
[msh]
type = CartesianMeshGenerator
dim = 2
dx = '1 1 1 1'
dy = '1 1 1'
subdomain_id = '0 0 0 0 1 2 2 1 1 1 1 1'
[]
[split]
input = msh
type = BreakMeshByBlockGenerator
[]
[]
[AuxVariables]
[proc]
[AuxKernel]
type = ProcessorIDAux
execute_on = initial
[]
[]
[proc_elem]
family = MONOMIAL
order = CONSTANT
[AuxKernel]
type = ProcessorIDAux
execute_on = initial
[]
[]
[]
(modules/heat_transfer/test/tests/thin_layer_heat_transfer/transient_2d.i)
[Mesh]
[gen]
type = GeneratedMeshGenerator
nx = 10
ny = 10
dim = 2
[]
[block1]
type = SubdomainBoundingBoxGenerator
block_id = 1
bottom_left = '0 0 0'
top_right = '0.5 1 0'
input = gen
[]
[block2]
type = SubdomainBoundingBoxGenerator
block_id = 2
bottom_left = '0.5 0 0'
top_right = '1 1 0'
input = block1
[]
[breakmesh]
input = block2
type = BreakMeshByBlockGenerator
block_pairs = '1 2'
[]
[]
[Variables]
[temperature]
[]
[]
[Kernels]
[time]
type = HeatConductionTimeDerivative
variable = temperature
[]
[thermal_cond]
type = HeatConduction
variable = temperature
[]
[]
[InterfaceKernels]
[thin_layer]
type = ThinLayerHeatTransfer
thermal_conductivity = thermal_conductivity_layer
specific_heat = specific_heat_layer
density = density_layer
heat_source = heat_source_layer
thickness = 0.01
variable = temperature
neighbor_var = temperature
boundary = Block1_Block2
[]
[]
[BCs]
[left_temp]
type = DirichletBC
value = 0
variable = temperature
boundary = left
[]
[right_temp]
type = DirichletBC
value = 0
variable = temperature
boundary = right
[]
[]
[Materials]
[thermal_cond]
type = GenericConstantMaterial
prop_names = 'thermal_conductivity specific_heat density'
prop_values = '1 1 1'
[]
[thermal_cond_layer]
type = GenericConstantMaterial
prop_names = 'thermal_conductivity_layer specific_heat_layer heat_source_layer density_layer'
prop_values = '0.05 1 10000 1'
boundary = Block1_Block2
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
nl_rel_tol = 1e-10
nl_abs_tol = 1e-10
dt = 0.05
num_steps = 2
[]
[Outputs]
print_linear_residuals = false
exodus = true
[]
(test/tests/meshgenerators/break_mesh_by_block_generator/break_mesh_block_pairs_restricted.i)
[Mesh]
[msh]
type = CartesianMeshGenerator
dim = 2
dx = '1 1 1 1'
dy = '1'
ix = '1 1 1 1'
iy = 1
subdomain_id = '0 1 2 3'
[]
[split]
input = msh
type = BreakMeshByBlockGenerator
block_pairs = '0 1;
2 3'
[]
[]
(modules/solid_mechanics/test/tests/cohesive_zone_model/czm_multiple_action_and_materials.i)
[Mesh]
use_displaced_mesh = false
[./msh]
type = GeneratedMeshGenerator
dim = 3
nx = 1
ny = 1
nz = 4
zmin = 0
zmax = 4
subdomain_ids = '0 1 2 3'
[../]
[./split]
type = BreakMeshByBlockGenerator
input = msh
[]
[add_side_sets]
input = split
type = SideSetsFromNormalsGenerator
normals = '0 -1 0
0 1 0
-1 0 0
1 0 0
0 0 -1
0 0 1'
fixed_normal = true
new_boundary = 'y0 y1 x0 x1 z0 z1'
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Functions]
[./stretch]
type = PiecewiseLinear
x = '0 1'
y = '0 100'
[../]
[]
[Constraints]
[x1]
type = EqualValueBoundaryConstraint
variable = disp_x
secondary = 'x1' # boundary
penalty = 1e6
[]
[y1]
type = EqualValueBoundaryConstraint
variable = disp_y
secondary = 'y1' # boundary
penalty = 1e6
[]
[]
[BCs]
[./fix_x]
type = DirichletBC
preset = true
value = 0.0
boundary = x0
variable = disp_x
[../]
[./fix_y]
type = DirichletBC
preset = true
value = 0.0
boundary = y0
variable = disp_y
[../]
[./fix_z]
type = DirichletBC
preset = true
value = 0.0
boundary = z0
variable = disp_z
[../]
[./back_z]
type = FunctionNeumannBC
boundary = z1
variable = disp_z
use_displaced_mesh = false
function = stretch
[../]
[]
[Physics/SolidMechanics/CohesiveZone]
[./czm_ik_012]
boundary = 'Block0_Block1 Block1_Block2'
base_name = 'czm_b012'
[../]
[./czm_ik_23]
boundary = 'Block2_Block3'
base_name = 'czm_b23'
[../]
[]
[Materials]
# cohesive materials
[./czm_3dc]
type = SalehaniIrani3DCTraction
boundary = 'Block0_Block1 Block1_Block2'
normal_gap_at_maximum_normal_traction = 1
tangential_gap_at_maximum_shear_traction = 0.5
maximum_normal_traction = 500
maximum_shear_traction = 300
base_name = 'czm_b012'
[../]
[./czm_elastic_incremental]
type = PureElasticTractionSeparationIncremental
boundary = 'Block2_Block3'
normal_stiffness = 500
tangent_stiffness = 300
base_name = 'czm_b23'
[../]
# bulk materials
[./stress]
type = ComputeLagrangianLinearElasticStress
objective_rate = rashid
[../]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 200e4
poissons_ratio = 0.3
[../]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[./all]
strain = FINITE
add_variables = true
new_system = true
kinematic_approximation = rashid_eigen
generate_output = 'cauchy_stress_xx cauchy_stress_yy cauchy_stress_zz cauchy_stress_xy cauchy_stress_yz cauchy_stress_xz'
[../]
[../]
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
# Executioner
type = Transient
solve_type = 'NEWTON'
line_search = none
petsc_options_iname = '-pc_type '
petsc_options_value = 'lu'
nl_rel_tol = 1e-10
nl_abs_tol = 1e-6
l_max_its = 20
start_time = 0.0
dt = 0.25
dtmin = 0.25
num_steps =1
[]
[Outputs]
exodus = true
[]
(modules/shifted_boundary_method/test/tests/shifted_cohesive_zone/angled_sczm_ad_elastic.i)
nx = 8
nx_half = '${fparse nx / 2}'
E = 1e3
poi = 0.3
theta = 60
theta_rad = '${fparse theta * pi / 180}'
x0 = 0.5
[GlobalParams]
displacements = 'disp_x disp_y'
use_displaced_mesh = false
sbm_distance_uo = sbm_distance_uo
[]
[Problem]
extra_tag_vectors = 'ref'
[]
[Mesh]
[gen]
type = CartesianMeshGenerator
dim = 2
dx = '${x0} ${x0}'
dy = 1
ix = '${nx_half} ${nx_half}'
iy = '${nx}'
subdomain_id = '1 2'
[]
[intercepted]
type = SubdomainInterceptedGenerator
input = gen
subdomain_id_inside = 2
subdomain_id_outside = 1
lambda = 0.5
is_domain_inside_surface = true
signed_dist_function = '(x-${x0})*sin(${theta_rad}) - cos(${theta_rad})*(y-${x0})'
[]
[break]
type = BreakMeshByBlockGenerator
input = intercepted
split_interface = true
add_interface_on_two_sides = true
[]
[]
[UserObjects]
[sbm_distance_uo]
type = BoundaryShortestDistanceToSurface
surfaces = signed_dist_func
boundary = 'Block1_Block2'
execution_order_group = 0
execute_on = INITIAL
[]
[]
[Functions]
[displacement_with_time]
type = ParsedFunction
expression = '1e-2*t'
[]
[signed_dist_func]
type = ParsedFunction
expression = '(x-${x0})*sin(${theta_rad}) - cos(${theta_rad})*(y-${x0})'
[]
[]
[AuxVariables]
[react_x]
[]
[]
[AuxKernels]
[react_x]
type = TagVectorAux
vector_tag = ref
v = disp_x
variable = react_x
remove_variable_scaling = true
[]
[]
[BCs]
[anchor_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[]
[anchor_y]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[]
[pull]
type = FunctionDirichletBC
variable = disp_x
boundary = right
function = displacement_with_time
preset = false
[]
[]
[Postprocessors]
[react_x]
type = NodalSum
variable = react_x
boundary = right
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
petsc_options_value = 'lu superlu_dist'
automatic_scaling = true
line_search = none
nl_max_its = 50
nl_abs_tol = 1e-12
nl_rel_tol = 1e-10
dt = 1
end_time = 5
[]
[Outputs]
[csv]
type = CSV
precision = 15
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[all]
strain = SMALL
extra_vector_tags = ref
add_variables = true
use_automatic_differentiation = true
[]
[]
[]
[]
[Physics/SolidMechanics/ShiftedCohesiveZone]
[czm]
use_automatic_differentiation = true
boundary = Block1_Block2
[]
[]
[Materials]
[elastic_stress]
type = ADComputeLinearElasticStress
[]
[elasticity_tensor_1]
type = ADComputeIsotropicElasticityTensor
poissons_ratio = ${poi}
youngs_modulus = ${E}
block = 1
[]
[elasticity_tensor_2]
type = ADComputeIsotropicElasticityTensor
poissons_ratio = ${poi}
youngs_modulus = ${E}
block = 2
[]
[czm]
type = ADPureElasticTractionSeparation
normal_stiffness = 5000
tangent_stiffness = 5000
boundary = Block1_Block2
[]
[]
(modules/solid_mechanics/test/tests/cohesive_zone_model/czm_traction_separation_base.i)
# base test to check the implemantation traction separation laws
# Loads are expressed using functions. See the czm_materials/3DC section in the
# test file for examples.
[Mesh]
use_displaced_mesh = false
[./msh]
type = GeneratedMeshGenerator
dim = 3
nx = 2
ny = 1
nz = 1
[]
[./subdomain_1]
type = SubdomainBoundingBoxGenerator
input = msh
bottom_left = '0 0 0'
block_id = 1
top_right = '0.5 1 1'
[]
[./subdomain_2]
type = SubdomainBoundingBoxGenerator
input = subdomain_1
bottom_left = '0.5 0 0'
block_id = 2
top_right = '1 1 1'
[]
[./breakmesh]
input = subdomain_2
type = BreakMeshByBlockGenerator
[../]
[add_side_sets]
input = breakmesh
type = SideSetsFromNormalsGenerator
normals = '0 -1 0
0 1 0
-1 0 0
1 0 0
0 0 -1
0 0 1'
fixed_normal = true
new_boundary = 'y0 y1 x0 x1 z0 z1'
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Physics/SolidMechanics/QuasiStatic]
[./all]
strain = SMALL
add_variables = true
generate_output = 'stress_xx stress_yy stress_zz stress_yz stress_xz stress_xy'
[../]
[]
[Physics/SolidMechanics/CohesiveZone]
[./czm1]
strain = SMALL
boundary = 'Block1_Block2'
generate_output = 'traction_x traction_y traction_z normal_traction tangent_traction jump_x jump_y jump_z normal_jump tangent_jump'
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
preset = false
boundary = x0
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
preset = false
boundary = x0
value = 0.0
[../]
[./left_z]
type = DirichletBC
variable = disp_z
preset = false
boundary = x0
value = 0.0
[../]
[./right_x]
type = FunctionDirichletBC
variable = disp_x
preset = false
boundary = x1
[../]
[./right_y]
type = FunctionDirichletBC
variable = disp_y
preset = false
boundary = x1
[../]
[./right_z]
type = FunctionDirichletBC
variable = disp_z
preset = false
boundary = x1
[../]
[]
[Materials]
[./Elasticity_tensor]
type = ComputeElasticityTensor
block = '1 2'
fill_method = symmetric_isotropic
C_ijkl = '0.3 0.5e8'
[../]
[./stress]
type = ComputeLinearElasticStress
block = '1 2'
[../]
[./czm_mat]
boundary = 'Block1_Block2'
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
solve_type = NEWTON
nl_abs_tol = 1e-8
nl_rel_tol = 1e-6
nl_max_its = 5
l_tol = 1e-10
l_max_its = 50
start_time = 0.0
dt = 0.2
end_time = 3
dtmin = 0.2
line_search = none
[]
[Outputs]
[./out]
type = Exodus
[../]
[]
(test/tests/meshgenerators/stitch_boundary_mesh_generator/stitch_2d.i)
[Mesh]
[gen]
type = GeneratedMeshGenerator
nx = 4
ny = 4
dim = 2
[]
[block1]
type = SubdomainBoundingBoxGenerator
block_id = 1
bottom_left = '0 0 0'
top_right = '0.5 1 0'
input = gen
[]
[block2]
type = SubdomainBoundingBoxGenerator
block_id = 2
bottom_left = '0.5 0 0'
top_right = '1 1 0'
input = block1
[]
[breakmesh]
input = block2
type = BreakMeshByBlockGenerator
block_pairs = '1 2'
[]
[block1_block2_top]
type = SideSetsFromBoundingBoxGenerator
input = breakmesh
included_boundaries = 'Block1_Block2'
boundary_new = '103'
bottom_left = '0 0.5 0'
top_right = '1 1 0'
[]
[block1_block2_bottom]
type = SideSetsFromBoundingBoxGenerator
input = block1_block2_top
included_boundaries = 'Block1_Block2'
boundary_new = '102'
bottom_left = '0 0.5 0'
top_right = '1 1 0'
location = OUTSIDE
[]
[block2_block1_top]
type = SideSetsFromBoundingBoxGenerator
input = block1_block2_bottom
included_boundaries = 'Block2_Block1'
boundary_new = '101'
bottom_left = '0 0.5 0'
top_right = '1 1 0'
[]
[block2_block1_bottom]
type = SideSetsFromBoundingBoxGenerator
input = block2_block1_top
included_boundaries = 'Block2_Block1'
boundary_new = '100'
bottom_left = '0 0.5 0'
top_right = '1 1 0'
location = OUTSIDE
[]
[stitch]
type = StitchBoundaryMeshGenerator
input = block2_block1_bottom
clear_stitched_boundary_ids = false
stitch_boundaries_pair = '101 103'
[]
parallel_type = REPLICATED
[]
[Outputs]
exodus = true
[]
(test/tests/meshgenerators/break_mesh_by_block_generator/break_mesh_2DJunction_polycrystal.i)
[Mesh]
[./fmg]
type = FileMeshGenerator
file = poly.msh
#parallel_type = replicated
[]
[./breakmesh]
type = BreakMeshByBlockGenerator
input = fmg
[]
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/cohesive_zone_model/bilinear_mixed_jacobian.i)
[Mesh]
use_displaced_mesh = false
[msh]
type = GeneratedMeshGenerator
dim = 2
xmax = 1
ymax = 2
nx = 1
ny = 2
[]
[block1]
type = SubdomainBoundingBoxGenerator
input = msh
bottom_left = '0 0 0'
top_right = '1 1 0'
block_id = 1
block_name = Block1
[]
[block2]
type = SubdomainBoundingBoxGenerator
input = block1
bottom_left = '0 1 0'
top_right = '1 2 0'
block_id = 2
block_name = Block2
[]
[split]
type = BreakMeshByBlockGenerator
input = block2
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[all]
add_variables = true
strain = SMALL
[]
[]
[CohesiveZone]
[czm_ik]
boundary = 'Block1_Block2'
strain = SMALL
[]
[]
[]
[]
[ICs]
[disp_x_ic]
type = ConstantIC
variable = disp_x
value = 0.005
block = Block2
[]
[disp_y_ic]
type = ConstantIC
variable = disp_y
value = 0.015
block = Block2
[]
[]
[BCs]
[bottom_x]
type = DirichletBC
boundary = bottom
variable = disp_x
value = 0
[]
[bottom_y]
type = DirichletBC
boundary = bottom
variable = disp_y
value = 0
[]
[top_x]
type = DirichletBC
boundary = top
variable = disp_x
value = 0.005
[]
[top_y]
type = DirichletBC
boundary = top
variable = disp_y
value = 0.015
[]
[]
[Materials]
[elasticity]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.3
[]
[stress]
type = ComputeLinearElasticStress
[]
[czm]
type = BiLinearMixedModeTraction
boundary = 'Block1_Block2'
penalty_stiffness = 1e6
GI_c = 1e3
GII_c = 1e2
normal_strength = 1e4
shear_strength = 1e3
eta = 2.2
viscosity = 0.0
lag_mode_mixity = false
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
num_steps = 1
dt = 1
[]
(test/tests/meshgenerators/break_mesh_by_block_generator/break_mesh_block_pairs_restricted_3blocks.i)
[Mesh]
[msh]
type = CartesianMeshGenerator
dim = 2
dx = '1 1 1 1'
dy = '1 1 1'
subdomain_id = '0 0 0 0 1 2 2 1 1 1 1 1'
[]
[split]
input = msh
type = BreakMeshByBlockGenerator
[]
[]
[AuxVariables]
[proc]
[AuxKernel]
type = ProcessorIDAux
execute_on = initial
[]
[]
[proc_elem]
family = MONOMIAL
order = CONSTANT
[AuxKernel]
type = ProcessorIDAux
execute_on = initial
[]
[]
[]
(test/tests/materials/interface_material/interface_value_material_split_mesh_stateful.i)
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 2
nx = 2
xmax = 2
ny = 2
ymax = 2
elem_type = QUAD4
[]
[./subdomain_id]
input = gen
type = SubdomainBoundingBoxGenerator
bottom_left = '1 0 0'
top_right = '2 2 0'
block_id = 1
[../]
[./split]
type = BreakMeshByBlockGenerator
input = subdomain_id
[../]
[]
[Variables]
[./u]
block = 0
[../]
[./v]
block = 1
[../]
[]
[Kernels]
[./diff]
type = MatDiffusion
variable = u
diffusivity = 'diffusivity'
block = 0
[../]
[./diff_v]
type = MatDiffusion
variable = v
diffusivity = 'diffusivity'
block = 1
[../]
[]
[InterfaceKernels]
[tied]
type = PenaltyInterfaceDiffusion
variable = u
neighbor_var = v
penalty = 1e6
jump_prop_name = "average_jump"
boundary = 'Block0_Block1'
[]
[]
[BCs]
[u_left]
type = DirichletBC
boundary = 'left'
variable = u
value = 1
[]
[v_right]
type = DirichletBC
boundary = 'right'
variable = v
value = 0
[]
[]
[Materials]
[./stateful1]
type = StatefulMaterial
block = 0
initial_diffusivity = 1
# outputs = all
[../]
[./stateful2]
type = StatefulMaterial
block = 1
initial_diffusivity = 2
# outputs = all
[../]
[./interface_material_avg]
type = InterfaceValueMaterial
mat_prop_primary = diffusivity
mat_prop_secondary = diffusivity
var_primary = diffusivity_var
var_secondary = diffusivity_var
mat_prop_out_basename = diff
boundary = Block0_Block1
interface_value_type = average
mat_prop_var_out_basename = diff_var
nl_var_primary = u
nl_var_secondary = v
couple_old_values_and_properties = true
[../]
[./interface_material_jump_primary_minus_secondary]
type = InterfaceValueMaterial
mat_prop_primary = diffusivity
mat_prop_secondary = diffusivity
var_primary = diffusivity_var
var_secondary = diffusivity_var
mat_prop_out_basename = diff
boundary = Block0_Block1
interface_value_type = jump_primary_minus_secondary
mat_prop_var_out_basename = diff_var
nl_var_primary = u
nl_var_secondary = v
couple_old_values_and_properties = true
[../]
[./interface_material_jump_secondary_minus_primary]
type = InterfaceValueMaterial
mat_prop_primary = diffusivity
mat_prop_secondary = diffusivity
var_primary = diffusivity_var
var_secondary = diffusivity_var
mat_prop_out_basename = diff
boundary = Block0_Block1
interface_value_type = jump_secondary_minus_primary
mat_prop_var_out_basename = diff_var
nl_var_primary = u
nl_var_secondary = v
couple_old_values_and_properties = true
[../]
[./interface_material_jump_abs]
type = InterfaceValueMaterial
mat_prop_primary = diffusivity
mat_prop_secondary = diffusivity
var_primary = diffusivity_var
var_secondary = diffusivity_var
mat_prop_out_basename = diff
boundary = Block0_Block1
interface_value_type = jump_abs
mat_prop_var_out_basename = diff_var
nl_var_primary = u
nl_var_secondary = v
couple_old_values_and_properties = true
[../]
[./interface_material_primary]
type = InterfaceValueMaterial
mat_prop_primary = diffusivity
mat_prop_secondary = diffusivity
var_primary = diffusivity_var
var_secondary = diffusivity_var
mat_prop_out_basename = diff
boundary = Block0_Block1
interface_value_type = primary
mat_prop_var_out_basename = diff_var
nl_var_primary = u
nl_var_secondary = v
couple_old_values_and_properties = true
[../]
[./interface_material_secondary]
type = InterfaceValueMaterial
mat_prop_primary = diffusivity
mat_prop_secondary = diffusivity
var_primary = diffusivity_var
var_secondary = diffusivity_var
mat_prop_out_basename = diff
mat_prop_var_out_basename = diff_var
boundary = Block0_Block1
interface_value_type = secondary
nl_var_primary = u
nl_var_secondary = v
couple_old_values_and_properties = true
[../]
[]
[AuxKernels]
[./interface_material_avg]
type = MaterialRealAux
property = diff_average
variable = diffusivity_average
boundary = Block0_Block1
[]
[./interface_material_jump_primary_minus_secondary]
type = MaterialRealAux
property = diff_jump_primary_minus_secondary
variable = diffusivity_jump_primary_minus_secondary
boundary = Block0_Block1
[]
[./interface_material_jump_secondary_minus_primary]
type = MaterialRealAux
property = diff_jump_secondary_minus_primary
variable = diffusivity_jump_secondary_minus_primary
boundary = Block0_Block1
[]
[./interface_material_jump_abs]
type = MaterialRealAux
property = diff_jump_abs
variable = diffusivity_jump_abs
boundary = Block0_Block1
[]
[./interface_material_primary]
type = MaterialRealAux
property = diff_primary
variable = diffusivity_primary
boundary = Block0_Block1
[]
[./interface_material_secondary]
type = MaterialRealAux
property = diff_secondary
variable = diffusivity_secondary
boundary = Block0_Block1
[]
[./interface_material_avg_prev]
type = MaterialRealAux
property = diff_average_prev
variable = diffusivity_average_prev
boundary = Block0_Block1
[]
[./interface_material_jump_primary_minus_secondary_prev]
type = MaterialRealAux
property = diff_jump_primary_minus_secondary_prev
variable = diffusivity_jump_primary_minus_secondary_prev
boundary = Block0_Block1
[]
[./interface_material_jump_secondary_minus_primary_prev]
type = MaterialRealAux
property = diff_jump_secondary_minus_primary_prev
variable = diffusivity_jump_secondary_minus_primary_prev
boundary = Block0_Block1
[]
[./interface_material_jump_abs_prev]
type = MaterialRealAux
property = diff_jump_abs_prev
variable = diffusivity_jump_abs_prev
boundary = Block0_Block1
[]
[./interface_material_primary_prev]
type = MaterialRealAux
property = diff_primary_prev
variable = diffusivity_primary_prev
boundary = Block0_Block1
[]
[./interface_material_secondary_prev]
type = MaterialRealAux
property = diff_secondary_prev
variable = diffusivity_secondary_prev
boundary = Block0_Block1
[]
[diffusivity_var]
type = MaterialRealAux
property = diffusivity
variable = diffusivity_var
[]
[]
[AuxVariables]
[diffusivity_var]
family = MONOMIAL
order = CONSTANT
[]
[./diffusivity_average]
family = MONOMIAL
order = CONSTANT
[]
[./diffusivity_jump_primary_minus_secondary]
family = MONOMIAL
order = CONSTANT
[]
[./diffusivity_jump_secondary_minus_primary]
family = MONOMIAL
order = CONSTANT
[]
[./diffusivity_jump_abs]
family = MONOMIAL
order = CONSTANT
[]
[./diffusivity_primary]
family = MONOMIAL
order = CONSTANT
[]
[./diffusivity_secondary]
family = MONOMIAL
order = CONSTANT
[]
[./diffusivity_average_prev]
family = MONOMIAL
order = CONSTANT
[]
[./diffusivity_jump_primary_minus_secondary_prev]
family = MONOMIAL
order = CONSTANT
[]
[./diffusivity_jump_secondary_minus_primary_prev]
family = MONOMIAL
order = CONSTANT
[]
[./diffusivity_jump_abs_prev]
family = MONOMIAL
order = CONSTANT
[]
[./diffusivity_primary_prev]
family = MONOMIAL
order = CONSTANT
[]
[./diffusivity_secondary_prev]
family = MONOMIAL
order = CONSTANT
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
num_steps = 3
dt = 0.5
[]
[Outputs]
[out]
type=Exodus
max_output_name_length = 32 # For old gold file
[]
[]
(modules/shifted_boundary_method/test/tests/grain_boundary_case/grain_boundary_sczm_coarse_lambda1.i)
E = 1e3
poi = 0.3
interfaces = 'grain1_grain2 grain1_grain4 grain1_grain5 grain2_grain4 grain3_grain4 grain3_grain5 grain4_grain5'
ny = 6
nx = '${fparse ny*3/2}'
[GlobalParams]
displacements = 'disp_x disp_y'
use_displaced_mesh = false
[]
[Problem]
extra_tag_vectors = 'ref'
[]
[Mesh]
[boundary_mesh]
type = FileMeshGenerator
file = 'grain_boundary_only.msh'
save_with_name = boundary_mesh
[]
[gen]
type = GeneratedMeshGenerator
dim = 2
xmin = -0.6
xmax = 0.6
ymin = -0.4
ymax = 0.4
nx = ${nx}
ny = ${ny}
subdomain_ids = 10
[]
[grain_gen]
type = SubdomainGrainIDGenerator
input = gen
boundary_mesh = boundary_mesh
lambda = 1
[]
[break7]
input = grain_gen
type = BreakMeshByBlockGenerator
split_interface = true
add_interface_on_two_sides = true
[]
[left_bottom]
input = break7
type = ExtraNodesetGenerator
coord = '-0.6 -0.4'
new_boundary = 'left_bottom'
[]
[right_top]
input = left_bottom
type = ExtraNodesetGenerator
coord = '0.6 0.4'
new_boundary = 'right_top'
[]
add_subdomain_ids = '10'
add_subdomain_names = 'block_10'
final_generator = 'right_top'
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[all]
strain = SMALL
volumetric_locking_correction = true
extra_vector_tags = 'ref'
use_automatic_differentiation = false
generate_output = 'stress_xx stress_xy stress_yy stress_zz strain_xx strain_xy strain_yy strain_zz'
[]
[]
[]
[]
[Physics/SolidMechanics/ShiftedCohesiveZone]
[czm_ik]
use_automatic_differentiation = false
boundary = ${interfaces}
complete_interface_mesh = boundary_mesh
[]
[]
[Materials]
[elastic_stress]
type = ComputeLinearElasticStress
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
poissons_ratio = ${poi}
youngs_modulus = ${E}
[]
[interface_traction]
type = BiLinearMixedModeTraction
boundary = ${interfaces}
penalty_stiffness = 2e3
GI_c = 1e3
GII_c = 1e2
normal_strength = 500
shear_strength = 300
displacements = 'disp_x disp_y'
eta = 2.2
viscosity = 1e-3
[]
[]
[Executioner]
type = Transient
# solve_type = FD
# automatic_scaling = false
# residual_and_jacobian_together = false
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
petsc_options_value = 'lu superlu_dist'
automatic_scaling = true
# residual_and_jacobian_together = true
line_search = 'none'
nl_max_its = 500
nl_abs_tol = 1e-12
nl_rel_tol = 1e-50
dt = 1
end_time = 5
[]
[Functions]
[displacement_with_time]
type = ParsedFunction
expression = '1e-2*t'
[]
[]
[Kernels]
[]
[AuxVariables]
[react_x]
[]
[]
[AuxKernels]
[react_x]
type = TagVectorAux
vector_tag = 'ref'
v = 'disp_x'
variable = 'react_x'
remove_variable_scaling = true
[]
[]
[BCs]
[anchor_x]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0.0
[]
[anchor_y]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0.0
[]
[displacement_x_right]
#Anchors the left side against deformation in the x-direction
type = FunctionDirichletBC
variable = disp_x
boundary = 'right'
function = displacement_with_time
preset = false
[]
[]
[Postprocessors]
[react_x]
type = NodalSum
variable = 'react_x'
boundary = 'right'
[]
[area]
type = ElementIntegralFunctorPostprocessor
functor = 1
block = '1 2 3 4 5 10'
execute_on = 'final'
[]
[]
[Outputs]
exodus = true
# execute_on = 'final'
[csv]
type = CSV
precision = 15
[]
[]
(modules/solid_mechanics/test/tests/cohesive_zone_model/bilinear_mixed_scale_strength.i)
[Mesh]
use_displaced_mesh = false
[msh]
type = GeneratedMeshGenerator
dim = 2
xmax = 1
ymax = 2
nx = 5
ny = 10
[]
[block1]
type = SubdomainBoundingBoxGenerator
input = 'msh'
bottom_left = '0 0 0'
top_right = '1 1 0'
block_id = 1
block_name = 'Block1'
[]
[block2]
type = SubdomainBoundingBoxGenerator
input = 'block1'
bottom_left = '0 1 0'
top_right = '1 2 0'
block_id = 2
block_name = 'Block2'
[]
[split]
type = BreakMeshByBlockGenerator
input = block2
[]
[top_node]
type = ExtraNodesetGenerator
coord = '0 2 0'
input = split
new_boundary = top_node
[]
[bottom_node]
type = ExtraNodesetGenerator
coord = '0 0 0'
input = top_node
new_boundary = bottom_node
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
generate_output = 'cauchy_stress_yy'
[all]
strain = FINITE
add_variables = true
new_system = true
kinematic_approximation = rashid_eigen
[]
[]
[]
[]
[BCs]
[fix_x]
type = DirichletBC
preset = true
value = 0.0
boundary = bottom_node
variable = disp_x
[]
[fix_top]
type = DirichletBC
preset = true
boundary = top
variable = disp_x
value = 0
[]
[top]
type = FunctionDirichletBC
boundary = top
variable = disp_y
function = 'if(t<=0.3,t,if(t<=0.6,0.3-(t-0.3),0.6-t))'
preset = true
[]
[bottom]
type = DirichletBC
boundary = bottom
variable = disp_y
value = 0
preset = true
[]
[]
[AuxVariables]
[mode_mixity_ratio]
order = CONSTANT
family = MONOMIAL
[]
[damage]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[mode_mixity_ratio]
type = MaterialRealAux
variable = mode_mixity_ratio
property = mode_mixity_ratio
execute_on = timestep_end
boundary = Block1_Block2
[]
[damage]
type = MaterialRealAux
variable = damage
property = damage
execute_on = timestep_end
boundary = Block1_Block2
[]
[]
[Physics/SolidMechanics/CohesiveZone]
[czm_ik]
boundary = 'Block1_Block2'
[]
[]
[Materials]
[stress]
type = ComputeLagrangianLinearElasticStress
objective_rate = rashid
[]
[elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric9
C_ijkl = '1.684e5 0.176e5 0.176e5 1.684e5 0.176e5 1.684e5 0.754e5 0.754e5 0.754e5'
[]
[normal_strength]
type = GenericFunctionMaterial
prop_names = 'N'
prop_values = 'if(x<0.5,1,100)*1e4'
[]
[czm]
type = BiLinearMixedModeTraction
boundary = 'Block1_Block2'
penalty_stiffness = 1e6
GI_c = 1e3
GII_c = 1e2
normal_strength = N
shear_strength = 1e3
displacements = 'disp_x disp_y'
eta = 2.2
viscosity = 1e-3
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
line_search = none
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
automatic_scaling = true
l_max_its = 2
l_tol = 1e-14
nl_max_its = 30
nl_rel_tol = 1e-10
nl_abs_tol = 1e-10
start_time = 0.0
dt = 0.01
end_time = 0.05
dtmin = 0.01
[]
[Outputs]
exodus = true
[]
(modules/combined/test/tests/break_mesh_interface_contact/break_mesh_interface_contact.i)
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y'
volumetric_locking_correction = true
[]
[Mesh]
[gen]
type = GeneratedMeshGenerator
nx = 5
ny = 5
dim = 2
[]
[block1]
type = SubdomainBoundingBoxGenerator
block_id = 1
bottom_left = '0 0 0'
top_right = '0.5 1 0'
input = gen
[]
[block2]
type = SubdomainBoundingBoxGenerator
block_id = 2
bottom_left = '0.5 0 0'
top_right = '1 1 0'
input = block1
[]
[breakmesh]
input = block2
type = BreakMeshByBlockGenerator
block_pairs = '1 2'
[]
[]
[Variables]
[temperature]
[]
[disp_x]
[]
[disp_y]
[]
[]
[Kernels]
[thermal_cond]
type = HeatConduction
variable = temperature
[]
[]
[Physics/SolidMechanics/QuasiStatic]
generate_output = 'stress_xx stress_yy strain_xx strain_yy'
add_variables = true
strain = FINITE
incremental = true
[block1]
block = 1
[]
[block2]
block = 2
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temperature
primary = Block1_Block2
secondary = Block2_Block1
emissivity_primary = 0
emissivity_secondary = 0
quadrature = true
gap_conductivity = 1
[]
[]
[Contact]
[mechanical]
primary = Block1_Block2
secondary = Block2_Block1
penalty = 1000
model = coulomb
friction_coefficient = 0.5
formulation = tangential_penalty
tangential_tolerance = 0.1
[]
[]
[BCs]
[left_temp]
type = DirichletBC
value = 100
variable = temperature
boundary = left
[]
[right_temp]
type = DirichletBC
value = 0
variable = temperature
boundary = right
[]
[left_disp_x]
type = FunctionDirichletBC
variable = disp_x
boundary = left
function = 0
[]
[left_disp_y]
type = DirichletBC
variable = disp_y
boundary = left
value = 0.0
[]
[right_disp_x]
type = FunctionDirichletBC
variable = disp_x
boundary = right
function = '-t'
[]
[right_disp_y]
type = FunctionDirichletBC
variable = disp_y
boundary = right
function = '0'
[]
[]
[Materials]
[thermal_cond]
type = GenericConstantMaterial
prop_names = 'thermal_conductivity'
prop_values = 1
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.3
youngs_modulus = 100
[]
[stress]
type = ComputeFiniteStrainElasticStress
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Dampers]
[contact_slip]
type = ContactSlipDamper
secondary = Block1_Block2
primary = Block2_Block1
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
petsc_options_value = 'lu mumps'
line_search = none
nl_rel_tol = 1e-9
nl_abs_tol = 1e-9
l_tol = 1e-4
l_max_its = 50
nl_max_its = 20
start_time = 0.0
num_steps = 2
dtmin = 1e-8
dt = 1e-2
automatic_scaling = true
[]
[Outputs]
print_linear_residuals = false
time_step_interval = 1
csv = false
perf_graph = false
exodus = true
[]
(modules/solid_mechanics/test/tests/cohesive_zone_model/bilinear_mixed_rotation_3d.i)
[Mesh]
use_displaced_mesh = false
[msh]
type = GeneratedMeshGenerator
dim = 3
xmin = 0
xmax = 2
ymin = 0
ymax = 1
zmin = 0
zmax = 1
nx = 2
ny = 1
nz = 1
[]
[left]
type = SubdomainBoundingBoxGenerator
input = msh
bottom_left = '0 0 0'
top_right = '1 1 1'
block_id = 1
block_name = left
[]
[right]
type = SubdomainBoundingBoxGenerator
input = left
bottom_left = '1 0 0'
top_right = '2 1 1'
block_id = 2
block_name = right
[]
[split]
type = BreakMeshByBlockGenerator
input = right
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[all]
add_variables = true
strain = SMALL
[]
[]
[CohesiveZone]
[czm]
boundary = left_right
strain = SMALL
generate_output = 'traction_x traction_y traction_z'
[]
[]
[]
[]
[BCs]
[left_x]
type = DirichletBC
boundary = left
variable = disp_x
value = 0
[]
[left_y]
type = DirichletBC
boundary = left
variable = disp_y
value = 0
[]
[left_z]
type = DirichletBC
boundary = left
variable = disp_z
value = 0
[]
[right_x]
type = FunctionDirichletBC
boundary = right
variable = disp_x
function = '-1e-8*t'
[]
[right_y]
type = FunctionDirichletBC
boundary = right
variable = disp_y
function = '3*t'
[]
[right_z]
type = FunctionDirichletBC
boundary = right
variable = disp_z
function = '0*t'
[]
[]
[AuxVariables]
[delta_final]
order = CONSTANT
family = MONOMIAL
[]
[jump_normal]
order = CONSTANT
family = MONOMIAL
[]
[jump_tangential_1]
order = CONSTANT
family = MONOMIAL
[]
[jump_tangential_2]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[delta_final]
type = MaterialRealAux
boundary = left_right
variable = delta_final
property = effective_displacement_jump_at_full_degradation
execute_on = 'INITIAL TIMESTEP_END'
[]
[jump_normal]
type = MaterialRealVectorValueAux
boundary = left_right
variable = jump_normal
property = interface_displacement_jump
component = 0
execute_on = 'INITIAL TIMESTEP_END'
[]
[jump_tangential_1]
type = MaterialRealVectorValueAux
boundary = left_right
variable = jump_tangential_1
property = interface_displacement_jump
component = 1
execute_on = 'INITIAL TIMESTEP_END'
[]
[jump_tangential_2]
type = MaterialRealVectorValueAux
boundary = left_right
variable = jump_tangential_2
property = interface_displacement_jump
component = 2
execute_on = 'INITIAL TIMESTEP_END'
[]
[]
[Materials]
[elasticity]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e12
poissons_ratio = 0
[]
[stress]
type = ComputeLinearElasticStress
[]
[czm]
type = BiLinearMixedModeTraction
boundary = left_right
penalty_stiffness = 100
GI_c = 1
GII_c = 2
normal_strength = 1
shear_strength = 1
eta = 2
mixed_mode_criterion = BK
[]
[]
[Postprocessors]
[traction_y]
type = SideAverageValue
boundary = left_right
variable = traction_y
[]
[traction_z]
type = SideAverageValue
boundary = left_right
variable = traction_z
[]
[shear_traction_magnitude]
type = ParsedPostprocessor
expression = 'sqrt(traction_y*traction_y + traction_z*traction_z)'
pp_names = 'traction_y traction_z'
[]
[energy_rate]
type = ParsedPostprocessor
expression = 'abs(traction_y)*3'
pp_names = 'traction_y'
[]
[numerical_energy]
type = TimeIntegratedPostprocessor
value = energy_rate
time_integration_scheme = trapezoidal-rule
[]
[prescribed_energy]
type = FunctionValuePostprocessor
function = 2
[]
[relative_error]
type = ParsedPostprocessor
expression = 'abs(numerical_energy-prescribed_energy)/prescribed_energy'
pp_names = 'numerical_energy prescribed_energy'
[]
[final_separation]
type = SideAverageValue
boundary = left_right
variable = delta_final
[]
[tangential_jump]
type = ParsedPostprocessor
expression = 'sqrt(jump_t1*jump_t1 + jump_t2*jump_t2)'
pp_names = 'jump_t1 jump_t2'
[]
[jump_t1]
type = SideAverageValue
boundary = left_right
variable = jump_tangential_1
[]
[jump_t2]
type = SideAverageValue
boundary = left_right
variable = jump_tangential_2
[]
[bk_mode_II_limit]
type = FunctionValuePostprocessor
function = 4
[]
[pure_shear_to_bk_limit_ratio]
type = ParsedPostprocessor
expression = 'final_separation/bk_mode_II_limit'
pp_names = 'final_separation bk_mode_II_limit'
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type'
petsc_options_value = lu
nl_abs_tol = 1e-10
dt = 0.2
end_time = 2
[]
[Outputs]
console = false
[csv]
type = CSV
execute_on = FINAL
# Resolve the traction-law corners so trapezoidal integration can use coarse steps.
# Both shear directions have speed 3: initiation at (1/100)/3 and failure at 4/3.
sync_times = '0.00333333333333333 1.33333333333333'
show = 'prescribed_energy numerical_energy relative_error final_separation bk_mode_II_limit pure_shear_to_bk_limit_ratio'
[]
[]
(test/tests/meshgenerators/break_mesh_by_block_generator/break_mesh_2DJunction_auto.i)
[Mesh]
[./fmg]
type = FileMeshGenerator
file = 4ElementJunction.e
[]
[./breakmesh]
type = BreakMeshByBlockGenerator
input = fmg
[]
[]
[Outputs]
exodus = true
[]
(modules/shifted_boundary_method/test/tests/shifted_cohesive_zone/sczm_triangle_mms.i)
E1 = 0.1
E2 = 1
poi = 0
x0 = 0.25
a = '${fparse (pi * cos(pi * x0) * (1 - E1 / E2)) / (2 * x0)}'
b = '${fparse -pi * cos(pi * x0) * (E1 + (x0 / 2) * (1 - E1 / E2))}'
[GlobalParams]
displacements = 'disp_x disp_y'
use_displaced_mesh = false
sbm_distance_uo = sbm_distance_uo
[]
[Mesh]
[gen]
type = FileMeshGenerator
file = sczm_triangle_mesh.xda
[]
[subdomain_intercepted]
type = SubdomainInterceptedGenerator
input = gen
subdomain_id_inside = 1
subdomain_id_outside = 2
lambda = 0.5
is_domain_inside_surface = false
signed_dist_function = '-x+${x0}'
[]
[break]
type = BreakMeshByBlockGenerator
block_pairs = '1 2'
input = subdomain_intercepted
split_interface = true
add_interface_on_two_sides = true
[]
[ss]
type = SideSetsFromNormalsGenerator
input = break
normals = '-1 0 0
1 0 0'
fixed_normal = true
new_boundary = 'left right'
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[all]
strain = SMALL
use_automatic_differentiation = true
generate_output = 'stress_xx stress_xy stress_yy stress_zz strain_xx strain_xy strain_yy strain_zz'
[]
[]
[]
[]
[Physics/SolidMechanics/ShiftedCohesiveZone]
[czm_ik]
use_automatic_differentiation = true
boundary = 'Block1_Block2'
[]
[]
[UserObjects]
[sbm_distance_uo]
type = BoundaryShortestDistanceToSurface
surfaces = 'signed_dist_func'
boundary = 'Block1_Block2'
execution_order_group = 0
execute_on = 'INITIAL'
[]
[]
[Materials]
[elastic_stress]
type = ADComputeLinearElasticStress
[]
[elasticity_tensor1]
type = ADComputeIsotropicElasticityTensor
poissons_ratio = ${poi}
youngs_modulus = ${E1}
block = 1
[]
[elasticity_tensor2]
type = ADComputeIsotropicElasticityTensor
poissons_ratio = ${poi}
youngs_modulus = ${E2}
block = 2
[]
[interface_traction]
type = ADPureElasticTractionSeparation
normal_stiffness = 1
tangent_stiffness = 1
boundary = 'Block1_Block2'
[]
[]
[AuxVariables]
[a]
family = MONOMIAL
[]
[]
[AuxKernels]
[a]
type = ConstantAux
variable = a
value = ${a}
[]
[]
[Kernels]
[source_x_left]
type = BodyForce
variable = disp_x
function = bx_func_left
block = 1
[]
[source_x_right]
type = BodyForce
variable = disp_x
function = bx_func_right
block = 2
[]
[]
[Functions]
[signed_dist_func]
type = ParsedFunction
expression = '-x+${x0}'
[]
[ux_func_left]
type = ParsedFunction
expression = '-sin(pi*x)'
[]
[ux_func_right]
type = ParsedFunction
expression = '-sin(pi*x)+${a}*x^2+${b}'
[]
[bx_func_left]
type = ParsedFunction
expression = '-pi^2*${E1}*sin(pi*x)'
[]
[bx_func_right]
type = ParsedFunction
expression = '-${E2}*(2*${a} + pi^2*sin(pi*x))'
[]
[]
[BCs]
[y_anchor]
type = DirichletBC
variable = disp_y
boundary = 'left right'
value = 0.0
[]
[x_left]
type = FunctionDirichletBC
boundary = 'left'
function = ux_func_left
variable = disp_x
[]
[x_right]
type = FunctionDirichletBC
boundary = 'right'
function = ux_func_right
variable = disp_x
[]
[]
[Executioner]
type = Steady
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
petsc_options_value = 'lu superlu_dist'
automatic_scaling = true
line_search = 'none'
[]
[Postprocessors]
[l2_error_left_x]
type = ElementL2Error
variable = disp_x
function = ux_func_left
block = '1'
[]
[l2_error_right_x]
type = ElementL2Error
variable = disp_x
function = ux_func_right
block = '2'
[]
[l2_sum]
type = SumPostprocessor
values = 'l2_error_left_x l2_error_right_x'
[]
[n_elements]
type = NumElements
[]
[]
[Outputs]
exodus = true
[]
(modules/heat_transfer/test/tests/thin_layer_heat_transfer/transient_3d.i)
[Mesh]
[gen]
type = GeneratedMeshGenerator
nx = 10
ny = 10
nz = 2
zmax = 0.2
dim = 3
[]
[block1]
type = SubdomainBoundingBoxGenerator
block_id = 1
bottom_left = '0 0 0'
top_right = '0.5 1 0.2'
input = gen
[]
[block2]
type = SubdomainBoundingBoxGenerator
block_id = 2
bottom_left = '0.5 0 0'
top_right = '1 1 0.2'
input = block1
[]
[breakmesh]
input = block2
type = BreakMeshByBlockGenerator
block_pairs = '1 2'
[]
[]
[Variables]
[temperature]
[]
[]
[Kernels]
[time]
type = HeatConductionTimeDerivative
variable = temperature
[]
[thermal_cond]
type = HeatConduction
variable = temperature
[]
[]
[InterfaceKernels]
[thin_layer]
type = ThinLayerHeatTransfer
thermal_conductivity = thermal_conductivity_layer
specific_heat = specific_heat_layer
density = density_layer
heat_source = heat_source_layer
thickness = 0.01
variable = temperature
neighbor_var = temperature
boundary = Block1_Block2
[]
[]
[BCs]
[left_temp]
type = DirichletBC
value = 0
variable = temperature
boundary = left
[]
[right_temp]
type = DirichletBC
value = 0
variable = temperature
boundary = right
[]
[]
[Materials]
[thermal_cond]
type = GenericConstantMaterial
prop_names = 'thermal_conductivity specific_heat density'
prop_values = '1 1 1'
[]
[thermal_cond_layer]
type = GenericConstantMaterial
prop_names = 'thermal_conductivity_layer specific_heat_layer heat_source_layer density_layer'
prop_values = '0.05 1 10000 1'
boundary = Block1_Block2
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
nl_rel_tol = 1e-10
nl_abs_tol = 1e-10
dt = 0.05
num_steps = 2
[]
[Outputs]
print_linear_residuals = false
exodus = true
[]
(modules/solid_mechanics/test/tests/cohesive_zone_model/stretch_rotate_large_deformation.i)
#
# Stretch + rotation test
#
# This test is designed to compute a uniaxial stress and then follow it as the mesh is rotated .
#
# The mesh is composed of two, single-elemnt blocks
[Mesh]
use_displaced_mesh = false
[./msh]
type = GeneratedMeshGenerator
dim = 3
nx = 1
ny = 1
nz = 2
xmin = -0.5
xmax = 0.5
ymin = -0.5
ymax = 0.5
zmin = -1
zmax = 1
[]
[./new_block]
type = SubdomainBoundingBoxGenerator
input = msh
block_id = 1
bottom_left = '-0.5 -0.5 0'
top_right = '0.5 0.5 0.5'
[]
[./split]
type = BreakMeshByBlockGenerator
input = new_block
[]
[add_side_sets]
input = split
type = SideSetsFromNormalsGenerator
normals = '0 -1 0
0 1 0
-1 0 0
1 0 0
0 0 -1
0 0 1'
fixed_normal = true
new_boundary = 'y0 y1 x0 x1 z0 z1'
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Functions]
[./stretch]
type = PiecewiseLinear
x = '0 1'
y = '0 300'
[../]
[]
[BCs]
[./fix_x]
type = DirichletBC
preset = true
value = 0.0
boundary = x0
variable = disp_x
[../]
[./fix_y]
type = DirichletBC
preset = true
value = 0.0
boundary = y0
variable = disp_y
[../]
[./fix_z]
type = DirichletBC
preset = true
value = 0.0
boundary = z0
variable = disp_z
[../]
[./back_z]
type = FunctionNeumannBC
boundary = z1
variable = disp_z
use_displaced_mesh = false
function = stretch
[../]
[./rotate_x]
type = DisplacementAboutAxis
boundary = 'x0 y0 z0 z1'
function = '90.'
angle_units = degrees
axis_origin = '0. 0. 0.'
axis_direction = '0. 1. 0.'
component = 0
variable = disp_x
angular_velocity = true
[../]
[./rotate_y]
type = DisplacementAboutAxis
boundary = 'x0 y0 z0 z1'
function = '90.'
angle_units = degrees
axis_origin = '0. 0. 0.'
axis_direction = '0. 1. 0.'
component = 1
variable = disp_y
angular_velocity = true
[../]
[./rotate_z]
type = DisplacementAboutAxis
boundary = 'x0 y0 z0 z1'
function = '90.'
angle_units = degrees
axis_origin = '0. 0. 0.'
axis_direction = '0. 1. 0.'
component = 2
variable = disp_z
angular_velocity = true
[../]
[]
[Physics/SolidMechanics/CohesiveZone]
[./czm_ik]
boundary = 'Block0_Block1'
strain = FINITE
generate_output='traction_x traction_y traction_z jump_x jump_y jump_z normal_traction tangent_traction normal_jump tangent_jump pk1_traction_x pk1_traction_y pk1_traction_z'
[../]
[]
[Controls]
[./c1]
type = TimePeriod
enable_objects = 'BCs::fix_x BCs::fix_y BCs::fix_z BCs::back_z'
disable_objects = 'BCs::rotate_x BCs::rotate_y BCs::rotate_z'
start_time = '0'
end_time = '1.01'
execute_on = 'initial timestep_begin'
[../]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[./all]
strain = FINITE
add_variables = true
new_system = true
# exact under the finite rigid rotation this test applies (the default linear
# approximation is only first-order accurate in the rotation increment)
kinematic_approximation = rashid_eigen
generate_output = 'cauchy_stress_xx cauchy_stress_yy cauchy_stress_zz cauchy_stress_xy cauchy_stress_yz cauchy_stress_xz'
[../]
[../]
[../]
[]
[Materials]
[./stress]
type = ComputeLagrangianLinearElasticStress
objective_rate = rashid
[../]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e3
poissons_ratio = 0.3
[../]
[./czm_mat]
type = PureElasticTractionSeparation
boundary = 'Block0_Block1'
normal_stiffness = 10000
tangent_stiffness = 7000
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
# Executioner
type = Transient
solve_type = 'NEWTON'
line_search = none
petsc_options_iname = '-pc_type '
petsc_options_value = 'lu'
nl_rel_tol = 1e-30
nl_abs_tol = 1e-10
l_max_its = 20
start_time = 0.0
dt = 0.1
end_time = 2
[]
[Outputs]
exodus = true
csv =true
[]
(modules/solid_mechanics/test/tests/cohesive_zone_model/czm_patch_test_base.i)
# Patch test for cohesive zone modeling to check the jacobian of cohesive kernels and materials.
# One test of this kind should be included when adding a new traction separation law.
# To preperly check the cohesive zone Jacobian, the cohesive stiffness should be low compared to the bulk stiffness.
# Quadratic convergence is always expected.
[Mesh]
use_displaced_mesh = false
[msh]
type = FileMeshGenerator
file = patch_mesh.e
[]
[split]
type = BreakMeshByBlockGenerator
input = msh
[]
[add_surfaces]
type = SideSetsFromNormalsGenerator
input = split
normals = '0 0 1
0 1 0
1 0 0
0 0 -1
0 -1 0
-1 0 0'
fixed_normal = true
new_boundary = 'z1 y1 x1 z0 y0 x0'
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[all]
strain = FINITE
add_variables = true
new_system = true
kinematic_approximation = rashid_eigen
[]
[]
[]
[]
[Functions]
[stretch]
type = PiecewiseLinear
x = '0 0.05'
y = '0 0.1'
[]
[]
[Constraints]
[x1]
type = EqualValueBoundaryConstraint
variable = disp_x
secondary = 'x1' # boundary
primary_node_coord = '1 0 1'
penalty = 1e6
[]
[y1]
type = EqualValueBoundaryConstraint
variable = disp_y
secondary = 'y1' # boundary
primary_node_coord = '0 1 1'
penalty = 1e6
[]
[]
[BCs]
[fix_x]
type = DirichletBC
preset = true
value = 0.0
boundary = 'x0'
variable = disp_x
[]
[fix_y]
type = DirichletBC
preset = true
value = 0.0
boundary = 'y0'
variable = disp_y
[]
[fix_z]
type = DirichletBC
preset = true
value = 0.0
boundary = 'z0'
variable = disp_z
[]
[back_z]
type = FunctionDirichletBC
boundary = 'z1'
variable = disp_z
function = stretch
[]
[rotate_x]
type = DisplacementAboutAxis
boundary = 'x0 y0 z0 x1 y1 z1'
function = '90.'
angle_units = degrees
axis_origin = '0. 0. 0.'
axis_direction = '0. 1. 0.'
component = 0
variable = disp_x
angular_velocity = true
[]
[rotate_y]
type = DisplacementAboutAxis
boundary = 'x0 y0 z0 x1 y1 z1'
function = '90.'
angle_units = degrees
axis_origin = '0. 0. 0.'
axis_direction = '0. 1. 0.'
component = 1
variable = disp_y
angular_velocity = true
[]
[rotate_z]
type = DisplacementAboutAxis
boundary = 'x0 y0 z0 x1 y1 z1'
function = '90.'
angle_units = degrees
axis_origin = '0. 0. 0.'
axis_direction = '0. 1. 0.'
component = 2
variable = disp_z
angular_velocity = true
[]
[]
[Controls]
[c1]
type = TimePeriod
enable_objects = 'BCs::fix_x BCs::fix_y BCs::fix_z BCs::back_z Constraints::x1 Constraints::y1'
disable_objects = 'BCs::rotate_x BCs::rotate_y BCs::rotate_z'
start_time = '0'
end_time = '0.051'
execute_on = 'initial timestep_begin'
[]
[]
[Physics/SolidMechanics/CohesiveZone]
[czm_ik]
boundary = 'Block1_Block2 Block1_Block3 Block1_Block4 Block1_Block5 Block1_Block6 Block2_Block3 Block2_Block4 Block2_Block5 Block2_Block7 Block3_Block4 Block3_Block6 Block3_Block7 Block4_Block5 Block4_Block6 Block4_Block7 Block5_Block6 Block5_Block7 Block6_Block7'
[]
[]
[Materials]
[stress]
type = ComputeLagrangianLinearElasticStress
objective_rate = rashid
[]
[elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric9
C_ijkl = '1.684e5 0.176e5 0.176e5 1.684e5 0.176e5 1.684e5 0.754e5 0.754e5 0.754e5'
[]
[czm_mat]
boundary = 'Block1_Block2 Block1_Block3 Block1_Block4 Block1_Block5 Block1_Block6 Block2_Block3 Block2_Block4 Block2_Block5 Block2_Block7 Block3_Block4 Block3_Block6 Block3_Block7 Block4_Block5 Block4_Block6 Block4_Block7 Block5_Block6 Block5_Block7 Block6_Block7'
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'newton'
line_search = none
automatic_scaling = true
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
l_max_its = 2
l_tol = 1e-14
nl_max_its = 15
nl_rel_tol = 1e-12
nl_abs_tol = 1e-15
start_time = 0.0
dt = 0.025
end_time = 0.075
[]
[Postprocessors]
[nonlin]
type = NumNonlinearIterations
[]
[]
[Outputs]
csv = true
exodus = true
[]
(test/tests/meshgenerators/break_mesh_by_block_generator/break_mesh_3D_auto.i)
[Mesh]
[./fmg]
type = FileMeshGenerator
file = coh3D_3Blocks.e
[]
[./breakmesh]
type = BreakMeshByBlockGenerator
input = fmg
[]
[]
[Outputs]
exodus = true
[]
(modules/shifted_boundary_method/test/tests/grain_boundary_case/grain_boundary_sczm_separate_interfaces.i)
E = 1e3
poi = 0.3
interfaces = 'grain1_grain2 grain1_grain4 grain1_grain5 grain2_grain4 grain3_grain4 grain3_grain5 grain4_grain5'
ny = 6
nx = '${fparse ny*3/2}'
[GlobalParams]
displacements = 'disp_x disp_y'
use_displaced_mesh = false
[]
[Problem]
extra_tag_vectors = 'ref'
[]
[Mesh]
[boundary_mesh]
type = FileMeshGenerator
file = 'grain_boundary_only.msh'
[]
[gen]
type = GeneratedMeshGenerator
dim = 2
xmin = -0.6
xmax = 0.6
ymin = -0.4
ymax = 0.4
nx = ${nx}
ny = ${ny}
[]
[grain_gen]
type = SubdomainGrainIDGenerator
input = gen
boundary_mesh = boundary_mesh
lambda = 1
[]
[break7]
input = grain_gen
type = BreakMeshByBlockGenerator
split_interface = true
add_interface_on_two_sides = true
[]
[left_bottom]
input = break7
type = ExtraNodesetGenerator
coord = '-0.6 -0.4'
new_boundary = 'left_bottom'
[]
[right_top]
input = left_bottom
type = ExtraNodesetGenerator
coord = '0.6 0.4'
new_boundary = 'right_top'
[]
[grain1_grain2]
type = FileMeshGenerator
file = 'grain1_grain2.msh'
save_with_name = 'grain1_grain2'
[]
[grain1_grain4]
type = FileMeshGenerator
file = 'grain1_grain4.msh'
save_with_name = 'grain1_grain4'
[]
[grain1_grain5]
type = FileMeshGenerator
file = 'grain1_grain5.msh'
save_with_name = 'grain1_grain5'
[]
[grain2_grain4]
type = FileMeshGenerator
file = 'grain2_grain4.msh'
save_with_name = 'grain2_grain4'
[]
[grain3_grain4]
type = FileMeshGenerator
file = 'grain3_grain4.msh'
save_with_name = 'grain3_grain4'
[]
[grain3_grain5]
type = FileMeshGenerator
file = 'grain3_grain5.msh'
save_with_name = 'grain3_grain5'
[]
[grain4_grain5]
type = FileMeshGenerator
file = 'grain4_grain5.msh'
save_with_name = 'grain4_grain5'
[]
add_subdomain_ids = '10'
add_subdomain_names = 'block_10'
final_generator = 'right_top'
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[all]
strain = SMALL
extra_vector_tags = 'ref'
use_automatic_differentiation = false
generate_output = 'stress_xx stress_xy stress_yy stress_zz strain_xx strain_xy strain_yy strain_zz'
[]
[]
[]
[]
[Physics/SolidMechanics/ShiftedCohesiveZone]
[czm_ik]
use_automatic_differentiation = false
boundary = ${interfaces}
generate_sbm_distance = true
check_surface_watertightness = true
[]
[]
[Materials]
[elastic_stress]
type = ComputeLinearElasticStress
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
poissons_ratio = ${poi}
youngs_modulus = ${E}
[]
[interface_traction]
type = BiLinearMixedModeTraction
boundary = ${interfaces}
penalty_stiffness = 2e3
GI_c = 1e3
GII_c = 1e2
normal_strength = 500
shear_strength = 300
displacements = 'disp_x disp_y'
eta = 2.2
viscosity = 1e-3
[]
[]
[Executioner]
type = Transient
# solve_type = FD
# automatic_scaling = false
# residual_and_jacobian_together = false
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
petsc_options_value = 'lu superlu_dist'
automatic_scaling = true
# residual_and_jacobian_together = true
line_search = 'none'
nl_max_its = 500
nl_abs_tol = 1e-12
nl_rel_tol = 1e-50
dt = 1
end_time = 5
[]
[Functions]
[displacement_with_time]
type = ParsedFunction
expression = '1e-2*t'
[]
[]
[Kernels]
[]
[AuxVariables]
[react_x]
[]
[]
[AuxKernels]
[react_x]
type = TagVectorAux
vector_tag = 'ref'
v = 'disp_x'
variable = 'react_x'
remove_variable_scaling = true
[]
[]
[BCs]
[anchor_x]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0.0
[]
[anchor_y]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0.0
[]
[displacement_x_right]
#Anchors the left side against deformation in the x-direction
type = FunctionDirichletBC
variable = disp_x
boundary = 'right'
function = displacement_with_time
preset = false
[]
[]
[Postprocessors]
[react_x]
type = NodalSum
variable = 'react_x'
boundary = 'right'
[]
[area]
type = ElementIntegralFunctorPostprocessor
functor = 1
block = '1 2'
execute_on = 'final'
[]
[]
[Outputs]
exodus = true
# execute_on = 'final'
[csv]
type = CSV
precision = 15
[]
[]
(modules/heat_transfer/test/tests/thin_layer_heat_transfer/steady_3d.i)
[Mesh]
[gen]
type = GeneratedMeshGenerator
nx = 10
ny = 10
nz = 2
zmax = 0.2
dim = 3
[]
[block1]
type = SubdomainBoundingBoxGenerator
block_id = 1
bottom_left = '0 0 0'
top_right = '0.5 1 0.2'
input = gen
[]
[block2]
type = SubdomainBoundingBoxGenerator
block_id = 2
bottom_left = '0.5 0 0'
top_right = '1 1 0.2'
input = block1
[]
[breakmesh]
input = block2
type = BreakMeshByBlockGenerator
block_pairs = '1 2'
[]
[]
[Variables]
[temperature]
[]
[]
[Kernels]
[thermal_cond]
type = HeatConduction
variable = temperature
[]
[]
[InterfaceKernels]
[thin_layer]
type = ThinLayerHeatTransfer
thermal_conductivity = thermal_conductivity_layer
thickness = 0.01
variable = temperature
neighbor_var = temperature
boundary = Block1_Block2
[]
[]
[BCs]
[left_temp]
type = DirichletBC
value = 100
variable = temperature
boundary = left
[]
[right_temp]
type = DirichletBC
value = 0
variable = temperature
boundary = right
[]
[]
[Materials]
[thermal_cond]
type = GenericConstantMaterial
prop_names = 'thermal_conductivity'
prop_values = '1'
[]
[thermal_cond_layer]
type = GenericConstantMaterial
prop_names = 'thermal_conductivity_layer'
prop_values = '0.05'
boundary = Block1_Block2
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
nl_rel_tol = 1e-10
nl_abs_tol = 1e-10
dt = 0.05
num_steps = 1
[]
[Outputs]
print_linear_residuals = false
exodus = true
[]
(modules/solid_mechanics/test/tests/cohesive_zone_model/bilinear_mixed_energy.i)
[Mesh]
use_displaced_mesh = false
[msh]
type = GeneratedMeshGenerator
dim = 2
xmax = 1
ymax = 2
nx = 1
ny = 2
[]
[lower]
type = SubdomainBoundingBoxGenerator
input = msh
bottom_left = '0 0 0'
top_right = '1 1 0'
block_id = 1
block_name = lower
[]
[upper]
type = SubdomainBoundingBoxGenerator
input = lower
bottom_left = '0 1 0'
top_right = '1 2 0'
block_id = 2
block_name = upper
[]
[split]
type = BreakMeshByBlockGenerator
input = upper
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[all]
add_variables = true
strain = SMALL
[]
[]
[CohesiveZone]
[czm]
boundary = lower_upper
strain = SMALL
generate_output = 'traction_x traction_y'
[]
[]
[]
[]
[BCs]
[bottom_x]
type = DirichletBC
boundary = bottom
variable = disp_x
value = 0
[]
[bottom_y]
type = DirichletBC
boundary = bottom
variable = disp_y
value = 0
[]
[top_x]
type = FunctionDirichletBC
boundary = top
variable = disp_x
function = '0*t'
[]
[top_y]
type = FunctionDirichletBC
boundary = top
variable = disp_y
function = '3*t'
[]
[]
[AuxVariables]
[delta_final]
order = CONSTANT
family = MONOMIAL
[]
[jump_normal]
order = CONSTANT
family = MONOMIAL
[]
[jump_tangential]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[delta_final]
type = MaterialRealAux
boundary = lower_upper
variable = delta_final
property = effective_displacement_jump_at_full_degradation
execute_on = 'INITIAL TIMESTEP_END'
[]
[jump_normal]
type = MaterialRealVectorValueAux
boundary = lower_upper
variable = jump_normal
property = interface_displacement_jump
component = 0
execute_on = 'INITIAL TIMESTEP_END'
[]
[jump_tangential]
type = MaterialRealVectorValueAux
boundary = lower_upper
variable = jump_tangential
property = interface_displacement_jump
component = 1
execute_on = 'INITIAL TIMESTEP_END'
[]
[]
[Materials]
[elasticity]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e12
poissons_ratio = 0
[]
[stress]
type = ComputeLinearElasticStress
[]
[czm]
type = BiLinearMixedModeTraction
boundary = lower_upper
penalty_stiffness = 100
GI_c = 1
GII_c = 2
normal_strength = 1
shear_strength = 1
eta = 2
mixed_mode_criterion = BK
[]
[]
[Postprocessors]
[traction_x]
type = SideAverageValue
boundary = lower_upper
variable = traction_x
[]
[traction_y]
type = SideAverageValue
boundary = lower_upper
variable = traction_y
[]
[normal_traction]
type = SideAverageValue
boundary = lower_upper
variable = traction_y
[]
[tangential_traction]
type = SideAverageValue
boundary = lower_upper
variable = traction_x
[]
[energy_rate]
type = ParsedPostprocessor
expression = 'abs(traction_y)*3'
pp_names = 'traction_x traction_y'
[]
[numerical_energy]
type = TimeIntegratedPostprocessor
value = energy_rate
time_integration_scheme = trapezoidal-rule
[]
[prescribed_energy]
type = FunctionValuePostprocessor
function = 1
[]
[relative_error]
type = ParsedPostprocessor
expression = 'abs(numerical_energy-prescribed_energy)/prescribed_energy'
pp_names = 'numerical_energy prescribed_energy'
[]
[final_separation]
type = SideAverageValue
boundary = lower_upper
variable = delta_final
[]
[normal_separation]
type = SideAverageValue
boundary = lower_upper
variable = jump_normal
[]
[tangential_separation]
type = SideAverageValue
boundary = lower_upper
variable = jump_tangential
[]
[bk_mode_II_limit]
type = FunctionValuePostprocessor
function = 4
[]
[pure_shear_to_bk_limit_ratio]
type = ParsedPostprocessor
expression = 'final_separation/bk_mode_II_limit'
pp_names = 'final_separation bk_mode_II_limit'
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type'
petsc_options_value = lu
nl_abs_tol = 1e-10
dt = 0.2
end_time = 2
[]
[Outputs]
console = false
[csv]
type = CSV
execute_on = FINAL
# Resolve the traction-law corners so trapezoidal integration can use coarse steps.
# Initiation times: (1/100)/(3*sqrt(2)) for mixed mode and (1/100)/3 for pure modes.
# Failure times: 2.5/(3*sqrt(2)), 2/3, and 4/3 for mixed mode, mode I, and mode II.
sync_times = '0.00235702260395516 0.00333333333333333 0.58925565098879 0.666666666666667 1.33333333333333'
show = 'prescribed_energy numerical_energy relative_error final_separation bk_mode_II_limit pure_shear_to_bk_limit_ratio'
[]
[]
(modules/contact/test/tests/cohesive_zone_model/bilinear_mixed.i)
[Mesh]
[msh]
type = GeneratedMeshGenerator
dim = 2
xmax = 1
ymax = 2
nx = 1
ny = 2
[]
[block1]
type = SubdomainBoundingBoxGenerator
input = 'msh'
bottom_left = '0 0 0'
top_right = '1 1 0'
block_id = 1
block_name = 'block1'
[]
[block2]
type = SubdomainBoundingBoxGenerator
input = 'block1'
bottom_left = '0 1 0'
top_right = '1 2 0'
block_id = 2
block_name = 'block2'
[]
[split]
type = BreakMeshByBlockGenerator
input = block2
[]
[top_node]
type = ExtraNodesetGenerator
coord = '0 2 0'
input = split
new_boundary = top_node
[]
[bottom_node]
type = ExtraNodesetGenerator
coord = '0 0 0'
input = top_node
new_boundary = bottom_node
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
generate_output = 'stress_yy stress_xy strain_xy'
[all]
strain = FINITE
add_variables = true
use_automatic_differentiation = true
decomposition_method = TaylorExpansion
[]
[]
[]
[]
[BCs]
[fix_x]
type = DirichletBC
preset = true
value = 0.0
boundary = bottom_node
variable = disp_x
[]
[fix_top]
type = DirichletBC
preset = true
boundary = top
variable = disp_x
value = 0
[]
[top]
type = FunctionDirichletBC
boundary = top
variable = disp_y
function = 'if(t<=0.3,t,if(t<=0.6,0.3-(t-0.3),0.6-t))'
preset = true
[]
[bottom]
type = DirichletBC
boundary = bottom
variable = disp_y
value = 0
preset = true
[]
[]
[Modules/TensorMechanics/CohesiveZoneMaster]
[czm_ik]
boundary = 'block1_block2'
[]
[]
[Materials]
[stress]
type = ADComputeFiniteStrainElasticStress
[]
[elasticity_tensor]
type = ADComputeElasticityTensor
fill_method = symmetric9
C_ijkl = '1.684e5 0.176e5 0.176e5 1.684e5 0.176e5 1.684e5 0.754e5 0.754e5 0.754e5'
[]
[czm]
type = BiLinearMixedModeTraction
boundary = 'block1_block2'
penalty_stiffness = 1e6
GI_c = 1e3
GII_c = 1e2
normal_strength = 1e4
shear_strength = 1e3
displacements = 'disp_x disp_y'
eta = 2.2
viscosity = 1e-3
[]
[]
[Postprocessors]
[stress_yy]
type = ElementExtremeValue
variable = stress_yy
value_type = max
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
line_search = none
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
automatic_scaling = true
l_max_its = 2
l_tol = 1e-14
nl_max_its = 30
nl_rel_tol = 1e-50
nl_abs_tol = 1e-15
start_time = 0.0
dt = 0.01
end_time = 0.85
dtmin = 0.01
[]
[Outputs]
exodus = true
csv = true
[]
(test/tests/meshgenerators/break_mesh_by_block_generator/break_mesh_block_restricted.i)
[Mesh]
[msh]
type = CartesianMeshGenerator
dim = 3
dx = '0.25 0.25 0.25 0.25'
dy = '0.25 0.25 0.25 0.25'
dz = '0.25 0.25 0.25 0.25'
subdomain_id = '0 1 2 3 4 5 6 7 8 9 10 11 12
13 14 15 16 17 18 19 20 21 22 23 24 25
26 27 28 29 30 31 32 33 34 35 36 37 38
39 40 41 42 43 44 45 46 47 48 49 50 51
52 53 54 55 56 57 58 59 60 61 62 63'
[]
[split]
input = msh
type = BreakMeshByBlockGenerator
surrounding_blocks = '16 17 18 19 20 21 22 23 24 25
26 27 28 29 30 31 32 34 35 36 37 38
39 40 41 42 43 44 45 46 47'
[]
[]
(modules/solid_mechanics/test/tests/cohesive_zone_model/bilinear_mixed.i)
[Mesh]
use_displaced_mesh = false
[msh]
type = GeneratedMeshGenerator
dim = 2
xmax = 1
ymax = 2
nx = 1
ny = 2
[]
[block1]
type = SubdomainBoundingBoxGenerator
input = 'msh'
bottom_left = '0 0 0'
top_right = '1 1 0'
block_id = 1
block_name = 'Block1'
[]
[block2]
type = SubdomainBoundingBoxGenerator
input = 'block1'
bottom_left = '0 1 0'
top_right = '1 2 0'
block_id = 2
block_name = 'Block2'
[]
[split]
type = BreakMeshByBlockGenerator
input = block2
[]
[top_node]
type = ExtraNodesetGenerator
coord = '0 2 0'
input = split
new_boundary = top_node
[]
[bottom_node]
type = ExtraNodesetGenerator
coord = '0 0 0'
input = top_node
new_boundary = bottom_node
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
generate_output = 'cauchy_stress_yy'
[all]
strain = FINITE
add_variables = true
new_system = true
kinematic_approximation = rashid_eigen
[]
[]
[]
[]
[BCs]
[fix_x]
type = DirichletBC
preset = true
value = 0.0
boundary = bottom_node
variable = disp_x
[]
[fix_top]
type = DirichletBC
preset = true
boundary = top
variable = disp_x
value = 0
[]
[top]
type = FunctionDirichletBC
boundary = top
variable = disp_y
function = 'if(t<=0.3,t,if(t<=0.6,0.3-(t-0.3),0.6-t))'
preset = true
[]
[bottom]
type = DirichletBC
boundary = bottom
variable = disp_y
value = 0
preset = true
[]
[]
[Physics/SolidMechanics/CohesiveZone]
[czm_ik]
boundary = 'Block1_Block2'
[]
[]
[Materials]
[stress]
type = ComputeLagrangianLinearElasticStress
objective_rate = rashid
[]
[elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric9
C_ijkl = '1.684e5 0.176e5 0.176e5 1.684e5 0.176e5 1.684e5 0.754e5 0.754e5 0.754e5'
[]
[czm]
type = BiLinearMixedModeTraction
boundary = 'Block1_Block2'
penalty_stiffness = 1e6
GI_c = 1e3
GII_c = 1e2
normal_strength = 1e4
shear_strength = 1e3
displacements = 'disp_x disp_y'
eta = 2.2
viscosity = 1e-3
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
line_search = none
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
automatic_scaling = true
l_max_its = 2
l_tol = 1e-14
nl_max_its = 30
nl_rel_tol = 1e-50
nl_abs_tol = 1e-15
start_time = 0.0
dt = 0.1
end_time = 1.0
dtmin = 0.1
[]
[Outputs]
exodus = true
[]
(modules/shifted_boundary_method/test/tests/shifted_cohesive_zone/rectangle_czm_only_quad_material_mimic.i)
E1 = 1e3
E2 = 1e3
poi = 0.3
x0 = 0.5
dt = 1
[GlobalParams]
displacements = 'disp_x disp_y'
use_displaced_mesh = false
[]
[Problem]
extra_tag_vectors = 'ref'
[]
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 2
nx = 6
ny = 6
elem_type = QUAD4
[]
[subdomain_intercepted]
type = SubdomainInterceptedGenerator
input = gen
subdomain_id_inside = 1
subdomain_id_outside = 2
lambda = 0.5
is_domain_inside_surface = true
signed_dist_function = 'x-${x0}'
[]
[break]
type = BreakMeshByBlockGenerator
input = subdomain_intercepted
split_interface = true
add_interface_on_two_sides = true
[]
[ss]
type = SideSetsFromNormalsGenerator
input = break
normals = '-1 0 0
1 0 0
0 -1 0'
fixed_normal = true
new_boundary = 'left right bottom'
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[all]
strain = SMALL
extra_vector_tags = 'ref'
add_variables = true
use_automatic_differentiation = false
generate_output = 'stress_xx stress_xy stress_yy stress_zz strain_xx strain_xy strain_yy strain_zz'
[]
[]
[]
[]
[Physics/SolidMechanics/CohesiveZone]
[czm_ik]
use_automatic_differentiation = false
boundary = 'Block1_Block2'
[]
[]
[Materials]
[elastic_stress]
type = ComputeLinearElasticStress
[]
[elasticity_tensor_in]
type = ComputeIsotropicElasticityTensor
poissons_ratio = ${poi}
youngs_modulus = ${E1}
block = 1
[]
[elasticity_tensor_out]
type = ComputeIsotropicElasticityTensor
poissons_ratio = ${poi}
youngs_modulus = ${E2}
block = 2
[]
[czm]
type = SalehaniIrani3DCTraction
normal_gap_at_maximum_normal_traction = 1
tangential_gap_at_maximum_shear_traction = 0.5
maximum_normal_traction = 500
maximum_shear_traction = 300
boundary = 'Block1_Block2'
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
petsc_options_value = 'lu superlu_dist'
automatic_scaling = true
line_search = 'none'
nl_max_its = 500
nl_abs_tol = 1e-12
nl_rel_tol = 1e-50
dt = ${dt}
end_time = 5
[]
[Functions]
[displacement_with_time]
type = ParsedFunction
expression = '1e-2*t'
[]
[signed_dist_func]
type = ParsedFunction
expression = 'x-${x0}'
[]
[const_1]
type = ConstantFunction
value = 1
[]
[]
[AuxVariables]
[react_x]
[]
[react_y]
[]
[]
[AuxKernels]
[react_x]
type = TagVectorAux
vector_tag = 'ref'
v = 'disp_x'
variable = 'react_x'
remove_variable_scaling = true
[]
[react_y]
type = TagVectorAux
vector_tag = 'ref'
v = 'disp_y'
variable = 'react_y'
remove_variable_scaling = true
[]
[]
[BCs]
[anchor_x]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0.0
[]
[anchor_y]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0.0
[]
[displacement_x_right]
#Anchors the left side against deformation in the x-direction
type = FunctionDirichletBC
variable = disp_x
boundary = 'right'
function = displacement_with_time
preset = false
[]
[]
[Postprocessors]
[area]
type = ElementIntegralFunctorPostprocessor
functor = 1
block = '1 2'
execute_on = 'final'
[]
[n_elements]
type = NumElements
[]
[react_x]
type = NodalSum
variable = 'react_x'
boundary = 'right'
[]
[react_y]
type = NodalSum
variable = 'react_y'
boundary = 'right'
[]
[length]
type = AreaPostprocessor
boundary = 'right'
[]
[]
[Outputs]
exodus = true
[csv]
type = CSV
precision = 15
[]
[]
(modules/heat_transfer/test/tests/thin_layer_heat_transfer/steady_2d.i)
[Mesh]
[gen]
type = GeneratedMeshGenerator
nx = 10
ny = 10
dim = 2
[]
[block1]
type = SubdomainBoundingBoxGenerator
block_id = 1
bottom_left = '0 0 0'
top_right = '0.5 1 0'
input = gen
[]
[block2]
type = SubdomainBoundingBoxGenerator
block_id = 2
bottom_left = '0.5 0 0'
top_right = '1 1 0'
input = block1
[]
[breakmesh]
input = block2
type = BreakMeshByBlockGenerator
block_pairs = '1 2'
[]
[]
[Variables]
[temperature]
[]
[]
[Kernels]
[thermal_cond]
type = HeatConduction
variable = temperature
[]
[]
[InterfaceKernels]
[thin_layer]
type = ThinLayerHeatTransfer
thermal_conductivity = thermal_conductivity_layer
thickness = 0.01
variable = temperature
neighbor_var = temperature
boundary = Block1_Block2
[]
[]
[BCs]
[left_temp]
type = DirichletBC
value = 100
variable = temperature
boundary = left
[]
[right_temp]
type = DirichletBC
value = 0
variable = temperature
boundary = right
[]
[]
[Materials]
[thermal_cond]
type = GenericConstantMaterial
prop_names = 'thermal_conductivity'
prop_values = '1'
[]
[thermal_cond_layer]
type = GenericConstantMaterial
prop_names = 'thermal_conductivity_layer'
prop_values = '0.05'
boundary = Block1_Block2
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
nl_rel_tol = 1e-10
nl_abs_tol = 1e-10
dt = 0.05
num_steps = 1
[]
[Outputs]
print_linear_residuals = false
exodus = true
[]
(modules/shifted_boundary_method/test/tests/shifted_cohesive_zone/rectangle_sczm_tri_material.i)
E1 = 1e3
E2 = 1e3
poi = 0.3
desired_area = 0.1
number_of_point = '${fparse int(sqrt(1/(2*desired_area))) -1}'
x0 = 0.5
dt = 1
[GlobalParams]
displacements = 'disp_x disp_y'
use_displaced_mesh = false
sbm_distance_uo = sbm_distance_uo
[]
[Problem]
extra_tag_vectors = 'ref'
[]
[Mesh]
[square_boundary]
type = PolyLineMeshGenerator
points = '0.0 0.0 0.0
1.0 0.0 0.0
1.0 1.0 0.0
0.0 1.0 0.0'
loop = true
[]
[gen]
type = XYDelaunayGenerator
boundary = 'square_boundary'
desired_area = ${desired_area}
add_nodes_per_boundary_segment = ${number_of_point}
refine_boundary = false
[]
[subdomain_intercepted]
type = SubdomainInterceptedGenerator
input = gen
subdomain_id_inside = 1
subdomain_id_outside = 2
lambda = 0.5
is_domain_inside_surface = true
signed_dist_function = 'x-${x0}'
[]
[break]
type = BreakMeshByBlockGenerator
input = subdomain_intercepted
split_interface = true
add_interface_on_two_sides = true
[]
[ss]
type = SideSetsFromNormalsGenerator
input = break
normals = '-1 0 0
1 0 0
0 -1 0'
fixed_normal = true
new_boundary = 'left right bottom'
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[all]
strain = SMALL
extra_vector_tags = 'ref'
add_variables = true
use_automatic_differentiation = false
generate_output = 'stress_xx stress_xy stress_yy stress_zz strain_xx strain_xy strain_yy strain_zz'
[]
[]
[]
[]
[Physics/SolidMechanics/ShiftedCohesiveZone]
[czm_ik]
use_automatic_differentiation = false
boundary = 'Block1_Block2'
[]
[]
[UserObjects]
[sbm_distance_uo]
type = BoundaryShortestDistanceToSurface
surfaces = 'signed_dist_func'
boundary = 'Block1_Block2'
execution_order_group = 0
execute_on = 'INITIAL'
# The coarse test mesh yields surrogate distances comparable to the element size.
suppress_distance_warning = true
[]
[]
[Materials]
[elastic_stress]
type = ComputeLinearElasticStress
[]
[elasticity_tensor_in]
type = ComputeIsotropicElasticityTensor
poissons_ratio = ${poi}
youngs_modulus = ${E1}
block = 1
[]
[elasticity_tensor_out]
type = ComputeIsotropicElasticityTensor
poissons_ratio = ${poi}
youngs_modulus = ${E2}
block = 2
[]
[czm]
type = SalehaniIrani3DCTraction
normal_gap_at_maximum_normal_traction = 1
tangential_gap_at_maximum_shear_traction = 0.5
maximum_normal_traction = 500
maximum_shear_traction = 300
boundary = 'Block1_Block2'
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
petsc_options_value = 'lu superlu_dist'
automatic_scaling = true
line_search = 'none'
nl_max_its = 500
nl_abs_tol = 1e-12
nl_rel_tol = 1e-50
dt = ${dt}
end_time = 5
[]
[Functions]
[displacement_with_time]
type = ParsedFunction
expression = '1e-2*t'
[]
[signed_dist_func]
type = ParsedFunction
expression = 'x-${x0}'
[]
[const_1]
type = ConstantFunction
value = 1
[]
[]
[AuxVariables]
[react_x]
[]
[react_y]
[]
[]
[AuxKernels]
[react_x]
type = TagVectorAux
vector_tag = 'ref'
v = 'disp_x'
variable = 'react_x'
remove_variable_scaling = true
[]
[react_y]
type = TagVectorAux
vector_tag = 'ref'
v = 'disp_y'
variable = 'react_y'
remove_variable_scaling = true
[]
[]
[BCs]
[anchor_x]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0.0
[]
[anchor_y]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0.0
[]
[displacement_x_right]
#Anchors the left side against deformation in the x-direction
type = FunctionDirichletBC
variable = disp_x
boundary = 'right'
function = displacement_with_time
preset = false
[]
[]
[Postprocessors]
[area]
type = ElementIntegralFunctorPostprocessor
functor = 1
block = '1 2'
execute_on = 'final'
[]
[n_elements]
type = NumElements
[]
[react_x]
type = NodalSum
variable = 'react_x'
boundary = 'right'
[]
[react_y]
type = NodalSum
variable = 'react_y'
boundary = 'right'
[]
[length]
type = AreaPostprocessor
boundary = 'right'
[]
[]
[Outputs]
exodus = true
[csv]
type = CSV
precision = 15
[]
[]
(test/tests/meshgenerators/break_mesh_by_block_generator/hanging_nodes_parallel.i)
[Mesh]
[msh]
type = GeneratedMeshGenerator
nx = 2
ny = 3
nz = 4
xmin = -2.5
xmax = 2.5
ymin = -2
ymax = 2
zmin = -1.5
zmax = 1.5
dim = 3
[]
[Partitioner]
type = GridPartitioner
nx = 1
ny = 3
nz = 4
[]
[subdomain_1]
type = SubdomainBoundingBoxGenerator
input = msh
bottom_left = '-2.5 -2 -1'
top_right = '2.5 0 0.5'
block_id = 1
[]
[subdomain_2]
type = SubdomainBoundingBoxGenerator
input = subdomain_1
bottom_left = '-2.5 0 -1'
top_right = '2.5 2 0.5'
block_id = 2
[]
[subdomain_3]
type = SubdomainBoundingBoxGenerator
input = subdomain_2
bottom_left = '-2.5 -2 0.5'
top_right = '1.25 2 1.5'
block_id = 3
[]
[subdomain_4]
type = SubdomainBoundingBoxGenerator
input = subdomain_3
bottom_left = '1.25 -2 0.5'
top_right = '5 2 1.5'
block_id = 4
[]
[subdomain_5]
type = SubdomainBoundingBoxGenerator
input = subdomain_4
bottom_left = '-2.5 -2 -1.5'
top_right = '1.25 2 -1'
block_id = 3
[]
[subdomain_6]
type = SubdomainBoundingBoxGenerator
input = subdomain_5
bottom_left = '1.25 -2 -1.5'
top_right = '2.5 2 -1'
block_id = 4
[]
[split]
type = BreakMeshByBlockGenerator
input = subdomain_6
[]
[]
[AuxVariables]
[pid]
family = MONOMIAL
order = CONSTANT
[AuxKernel]
type = ProcessorIDAux
execute_on = 'TIMESTEP_END'
[]
[]
[]
[Problem]
solve = false
[]
[Executioner]
type = Steady
[]
[Outputs]
exodus = true
[]
(test/tests/materials/interface_material/interface_value_material_split_mesh.i)
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 2
nx = 2
xmax = 2
ny = 2
ymax = 2
elem_type = QUAD4
[]
[./subdomain_id]
input = gen
type = SubdomainBoundingBoxGenerator
bottom_left = '1 0 0'
top_right = '2 2 0'
block_id = 1
[../]
[./split]
type = BreakMeshByBlockGenerator
input = subdomain_id
[../]
[]
[Variables]
[./u]
block = 0
[../]
[./v]
block = 1
[../]
[]
[Kernels]
[./diff]
type = MatDiffusion
variable = u
diffusivity = 'diffusivity'
block = 0
[../]
[./diff_v]
type = MatDiffusion
variable = v
diffusivity = 'diffusivity'
block = 1
[../]
[]
[InterfaceKernels]
[tied]
type = PenaltyInterfaceDiffusion
variable = u
neighbor_var = v
jump_prop_name = "average_jump"
penalty = 1e6
boundary = 'Block0_Block1'
[]
[]
[BCs]
[u_left]
type = DirichletBC
boundary = 'left'
variable = u
value = 1
[]
[v_right]
type = DirichletBC
boundary = 'right'
variable = v
value = 0
[]
[]
[Materials]
[./stateful1]
type = StatefulMaterial
block = 0
initial_diffusivity = 1
# outputs = all
[../]
[./stateful2]
type = StatefulMaterial
block = 1
initial_diffusivity = 2
# outputs = all
[../]
[./interface_material_avg]
type = InterfaceValueMaterial
mat_prop_primary = diffusivity
mat_prop_secondary = diffusivity
var_primary = diffusivity_var
var_secondary = diffusivity_var
mat_prop_out_basename = diff
boundary = Block0_Block1
interface_value_type = average
mat_prop_var_out_basename = diff_var
nl_var_primary = u
nl_var_secondary = v
[../]
[./interface_material_jump_primary_minus_secondary]
type = InterfaceValueMaterial
mat_prop_primary = diffusivity
mat_prop_secondary = diffusivity
var_primary = diffusivity_var
var_secondary = diffusivity_var
mat_prop_out_basename = diff
boundary = Block0_Block1
interface_value_type = jump_primary_minus_secondary
mat_prop_var_out_basename = diff_var
nl_var_primary = u
nl_var_secondary = v
[../]
[./interface_material_jump_secondary_minus_primary]
type = InterfaceValueMaterial
mat_prop_primary = diffusivity
mat_prop_secondary = diffusivity
var_primary = diffusivity_var
var_secondary = diffusivity_var
mat_prop_out_basename = diff
boundary = Block0_Block1
interface_value_type = jump_secondary_minus_primary
mat_prop_var_out_basename = diff_var
nl_var_primary = u
nl_var_secondary = v
[../]
[./interface_material_jump_abs]
type = InterfaceValueMaterial
mat_prop_primary = diffusivity
mat_prop_secondary = diffusivity
var_primary = diffusivity_var
var_secondary = diffusivity_var
mat_prop_out_basename = diff
boundary = Block0_Block1
interface_value_type = jump_abs
mat_prop_var_out_basename = diff_var
nl_var_primary = u
nl_var_secondary = v
[../]
[./interface_material_primary]
type = InterfaceValueMaterial
mat_prop_primary = diffusivity
mat_prop_secondary = diffusivity
var_primary = diffusivity_var
var_secondary = diffusivity_var
mat_prop_out_basename = diff
boundary = Block0_Block1
interface_value_type = primary
mat_prop_var_out_basename = diff_var
nl_var_primary = u
nl_var_secondary = v
[../]
[./interface_material_secondary]
type = InterfaceValueMaterial
mat_prop_primary = diffusivity
mat_prop_secondary = diffusivity
var_primary = diffusivity_var
var_secondary = diffusivity_var
mat_prop_out_basename = diff
mat_prop_var_out_basename = diff_var
boundary = Block0_Block1
interface_value_type = secondary
nl_var_primary = u
nl_var_secondary = v
[../]
[]
[AuxKernels]
[./interface_material_avg]
type = MaterialRealAux
property = diff_average
variable = diffusivity_average
boundary = Block0_Block1
[]
[./interface_material_jump_primary_minus_secondary]
type = MaterialRealAux
property = diff_jump_primary_minus_secondary
variable = diffusivity_jump_primary_minus_secondary
boundary = Block0_Block1
[]
[./interface_material_jump_secondary_minus_primary]
type = MaterialRealAux
property = diff_jump_secondary_minus_primary
variable = diffusivity_jump_secondary_minus_primary
boundary = Block0_Block1
[]
[./interface_material_jump_abs]
type = MaterialRealAux
property = diff_jump_abs
variable = diffusivity_jump_abs
boundary = Block0_Block1
[]
[./interface_material_primary]
type = MaterialRealAux
property = diff_primary
variable = diffusivity_primary
boundary = Block0_Block1
[]
[./interface_material_secondary]
type = MaterialRealAux
property = diff_secondary
variable = diffusivity_secondary
boundary = Block0_Block1
[]
[diffusivity_var]
type = MaterialRealAux
property = diffusivity
variable = diffusivity_var
[]
[]
[AuxVariables]
[diffusivity_var]
family = MONOMIAL
order = CONSTANT
[]
[./diffusivity_average]
family = MONOMIAL
order = CONSTANT
[]
[./diffusivity_jump_primary_minus_secondary]
family = MONOMIAL
order = CONSTANT
[]
[./diffusivity_jump_secondary_minus_primary]
family = MONOMIAL
order = CONSTANT
[]
[./diffusivity_jump_abs]
family = MONOMIAL
order = CONSTANT
[]
[./diffusivity_primary]
family = MONOMIAL
order = CONSTANT
[]
[./diffusivity_secondary]
family = MONOMIAL
order = CONSTANT
[]
[]
[Executioner]
type = Steady
solve_type = NEWTON
[]
[Outputs]
[out]
type=Exodus
max_output_name_length = 32 # For old gold file
[]
[]
(test/tests/meshgenerators/stitch_boundary_mesh_generator/stitch_3d.i)
[Mesh]
[gen]
type = GeneratedMeshGenerator
nx = 4
ny = 4
nz = 4
dim = 3
[]
[block1]
type = SubdomainBoundingBoxGenerator
block_id = 1
bottom_left = '0 0 0'
top_right = '0.5 1 1'
input = gen
[]
[block2]
type = SubdomainBoundingBoxGenerator
block_id = 2
bottom_left = '0.5 0 0'
top_right = '1 1 1'
input = block1
[]
[breakmesh]
input = block2
type = BreakMeshByBlockGenerator
block_pairs = '1 2'
[]
[block1_block2_top]
type = SideSetsFromBoundingBoxGenerator
input = breakmesh
included_boundaries = 'Block1_Block2'
boundary_new = '103'
bottom_left = '0 0.5 0'
top_right = '1 1 1'
[]
[block1_block2_bottom]
type = SideSetsFromBoundingBoxGenerator
input = block1_block2_top
included_boundaries = 'Block1_Block2'
boundary_new = '102'
bottom_left = '0 0.5 0'
top_right = '1 1 1'
location = OUTSIDE
[]
[block2_block1_top]
type = SideSetsFromBoundingBoxGenerator
input = block1_block2_bottom
included_boundaries = 'Block2_Block1'
boundary_new = '101'
bottom_left = '0 0.5 0'
top_right = '1 1 1'
[]
[block2_block1_bottom]
type = SideSetsFromBoundingBoxGenerator
input = block2_block1_top
included_boundaries = 'Block2_Block1'
boundary_new = '100'
bottom_left = '0 0.5 0'
top_right = '1 1 1'
location = OUTSIDE
[]
[stitch]
type = StitchBoundaryMeshGenerator
input = block2_block1_bottom
clear_stitched_boundary_ids = false
stitch_boundaries_pair = '101 103'
[]
parallel_type = REPLICATED
[]
[Outputs]
exodus = true
[]
(test/tests/constraints/equal_value_boundary_constraint/break_mesh_with_evbc.i)
[Problem]
boundary_restricted_node_integrity_check = false
[]
[Mesh]
[fmg]
type = FileMeshGenerator
file = ../../meshgenerators/break_mesh_by_block_generator/4ElementJunction.e
[]
[breakmesh]
type = BreakMeshByBlockGenerator
block_pairs = '2 4'
input = fmg
[]
[add_surfaces]
type = SideSetsFromNormalsGenerator
input = breakmesh
normals = '0 1 0
1 0 0
0 -1 0
-1 0 0'
fixed_normal = true
new_boundary = 'y1 x1 y0 x0'
[]
[]
[Outputs]
exodus = true
[]
[Variables]
[diffused]
order = FIRST
[]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type -sub_pc_type'
petsc_options_value = 'asm lu'
line_search = 'none'
[]
[BCs]
[left]
type = DirichletBC
variable = diffused
preset = false
boundary = 'x0'
value = 1.0
[]
[right]
type = DirichletBC
variable = diffused
preset = false
boundary = 'x1'
value = 0.0
[]
[]
[Constraints]
[corner]
type = EqualValueBoundaryConstraint
variable = diffused
secondary_node_ids = '0 1 2 3 4 5'
primary_node_coord = '-0.5 0.5 0'
penalty = 10e6
[]
[]
[Kernels]
[diff]
type = Diffusion
variable = diffused
[]
[]
(modules/shifted_boundary_method/test/tests/shifted_cohesive_zone/angled_sczm_nonad_salehani.i)
nx = 8
nx_half = '${fparse nx / 2}'
E = 1e3
poi = 0.3
theta = 60
theta_rad = '${fparse theta * pi / 180}'
x0 = 0.5
[GlobalParams]
displacements = 'disp_x disp_y'
use_displaced_mesh = false
sbm_distance_uo = sbm_distance_uo
[]
[Problem]
extra_tag_vectors = 'ref'
[]
[Mesh]
[gen]
type = CartesianMeshGenerator
dim = 2
dx = '${x0} ${x0}'
dy = 1
ix = '${nx_half} ${nx_half}'
iy = '${nx}'
subdomain_id = '1 2'
[]
[intercepted]
type = SubdomainInterceptedGenerator
input = gen
subdomain_id_inside = 2
subdomain_id_outside = 1
lambda = 0.5
is_domain_inside_surface = true
signed_dist_function = '(x-${x0})*sin(${theta_rad}) - cos(${theta_rad})*(y-${x0})'
[]
[break]
type = BreakMeshByBlockGenerator
input = intercepted
split_interface = true
add_interface_on_two_sides = true
[]
[]
[UserObjects]
[sbm_distance_uo]
type = BoundaryShortestDistanceToSurface
surfaces = signed_dist_func
boundary = 'Block1_Block2'
execution_order_group = 0
execute_on = INITIAL
[]
[]
[Functions]
[displacement_with_time]
type = ParsedFunction
expression = '1e-2*t'
[]
[signed_dist_func]
type = ParsedFunction
expression = '(x-${x0})*sin(${theta_rad}) - cos(${theta_rad})*(y-${x0})'
[]
[]
[AuxVariables]
[react_x]
[]
[]
[AuxKernels]
[react_x]
type = TagVectorAux
vector_tag = ref
v = disp_x
variable = react_x
remove_variable_scaling = true
[]
[]
[BCs]
[anchor_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[]
[anchor_y]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[]
[pull]
type = FunctionDirichletBC
variable = disp_x
boundary = right
function = displacement_with_time
preset = false
[]
[]
[Postprocessors]
[react_x]
type = NodalSum
variable = react_x
boundary = right
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
petsc_options_value = 'lu superlu_dist'
automatic_scaling = true
line_search = none
nl_max_its = 50
nl_abs_tol = 1e-12
nl_rel_tol = 1e-10
dt = 1
end_time = 5
[]
[Outputs]
[csv]
type = CSV
precision = 15
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[all]
strain = SMALL
extra_vector_tags = ref
add_variables = true
use_automatic_differentiation = false
[]
[]
[]
[]
[Physics/SolidMechanics/ShiftedCohesiveZone]
[czm]
use_automatic_differentiation = false
boundary = Block1_Block2
[]
[]
[Materials]
[elastic_stress]
type = ComputeLinearElasticStress
[]
[elasticity_tensor_1]
type = ComputeIsotropicElasticityTensor
poissons_ratio = ${poi}
youngs_modulus = ${E}
block = 1
[]
[elasticity_tensor_2]
type = ComputeIsotropicElasticityTensor
poissons_ratio = ${poi}
youngs_modulus = ${E}
block = 2
[]
[czm]
type = SalehaniIrani3DCTraction
normal_gap_at_maximum_normal_traction = 0.1
tangential_gap_at_maximum_shear_traction = 0.1
# Match the AD law's normal peak and initial tangential stiffness for comparison.
maximum_normal_traction = 183.939720585721
maximum_shear_traction = 303.265329856317
boundary = Block1_Block2
[]
[]
(modules/shifted_boundary_method/test/tests/shifted_cohesive_zone/angled_sczm_common.i)
nx = 8
nx_half = '${fparse nx / 2}'
E = 1e3
poi = 0.3
theta = 60
theta_rad = '${fparse theta * pi / 180}'
x0 = 0.5
[GlobalParams]
displacements = 'disp_x disp_y'
use_displaced_mesh = false
sbm_distance_uo = sbm_distance_uo
[]
[Problem]
extra_tag_vectors = 'ref'
[]
[Mesh]
[gen]
type = CartesianMeshGenerator
dim = 2
dx = '${x0} ${x0}'
dy = 1
ix = '${nx_half} ${nx_half}'
iy = '${nx}'
subdomain_id = '1 2'
[]
[intercepted]
type = SubdomainInterceptedGenerator
input = gen
subdomain_id_inside = 2
subdomain_id_outside = 1
lambda = 0.5
is_domain_inside_surface = true
signed_dist_function = '(x-${x0})*sin(${theta_rad}) - cos(${theta_rad})*(y-${x0})'
[]
[break]
type = BreakMeshByBlockGenerator
input = intercepted
split_interface = true
add_interface_on_two_sides = true
[]
[]
[UserObjects]
[sbm_distance_uo]
type = BoundaryShortestDistanceToSurface
surfaces = signed_dist_func
boundary = 'Block1_Block2'
execution_order_group = 0
execute_on = INITIAL
[]
[]
[Functions]
[displacement_with_time]
type = ParsedFunction
expression = '1e-2*t'
[]
[signed_dist_func]
type = ParsedFunction
expression = '(x-${x0})*sin(${theta_rad}) - cos(${theta_rad})*(y-${x0})'
[]
[]
[AuxVariables]
[react_x]
[]
[]
[AuxKernels]
[react_x]
type = TagVectorAux
vector_tag = ref
v = disp_x
variable = react_x
remove_variable_scaling = true
[]
[]
[BCs]
[anchor_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[]
[anchor_y]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[]
[pull]
type = FunctionDirichletBC
variable = disp_x
boundary = right
function = displacement_with_time
preset = false
[]
[]
[Postprocessors]
[react_x]
type = NodalSum
variable = react_x
boundary = right
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
petsc_options_value = 'lu superlu_dist'
automatic_scaling = true
line_search = none
nl_max_its = 50
nl_abs_tol = 1e-12
nl_rel_tol = 1e-10
dt = 1
end_time = 5
[]
[Outputs]
[csv]
type = CSV
precision = 15
[]
[]
(test/tests/meshgenerators/break_mesh_by_block_generator/break_mesh_3D_polycrystal.i)
[Mesh]
[./fmg]
type = FileMeshGenerator
file = poly2.msh
#parallel_type = replicated
[]
[./breakmesh]
type = BreakMeshByBlockGenerator
input = fmg
[]
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/cohesive_zone_model/ad_czm.i)
[Mesh]
use_displaced_mesh = false
[msh]
type = FileMeshGenerator
file = patch_mesh.e
[]
[split]
type = BreakMeshByBlockGenerator
input = msh
[]
[add_surfaces]
type = SideSetsFromNormalsGenerator
input = split
normals = '0 0 1
0 1 0
1 0 0
0 0 -1
0 -1 0
-1 0 0'
fixed_normal = true
new_boundary = 'z1 y1 x1 z0 y0 x0'
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
large_kinematics = true
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[all]
strain = FINITE
add_variables = true
new_system = true
[]
[]
[CohesiveZone]
[interface]
boundary = 'Block1_Block2 Block1_Block3 Block1_Block4 Block1_Block5 Block1_Block6 Block2_Block3 Block2_Block4 Block2_Block5 Block2_Block7 Block3_Block4 Block3_Block6 Block3_Block7 Block4_Block5 Block4_Block6 Block4_Block7 Block5_Block6 Block5_Block7 Block6_Block7'
strain = SMALL
use_automatic_differentiation = true
[]
[]
[]
[]
[Functions]
[stretch]
type = PiecewiseLinear
x = '0 0.05'
y = '0 0.1'
[]
[]
[Constraints]
[x1]
type = EqualValueBoundaryConstraint
variable = disp_x
secondary = 'x1' # boundary
primary_node_coord = '1 0 1'
penalty = 1e6
[]
[y1]
type = EqualValueBoundaryConstraint
variable = disp_y
secondary = 'y1' # boundary
primary_node_coord = '0 1 1'
penalty = 1e6
[]
[]
[BCs]
[fix_x]
type = DirichletBC
value = 0.0
boundary = 'x0'
variable = disp_x
[]
[fix_y]
type = DirichletBC
value = 0.0
boundary = 'y0'
variable = disp_y
[]
[fix_z]
type = DirichletBC
value = 0.0
boundary = 'z0'
variable = disp_z
[]
[back_z]
type = FunctionDirichletBC
boundary = 'z1'
variable = disp_z
function = stretch
preset = false
[]
[rotate_x]
type = DisplacementAboutAxis
boundary = 'x0 y0 z0 x1 y1 z1'
function = '90.'
angle_units = degrees
axis_origin = '0. 0. 0.'
axis_direction = '0. 1. 0.'
component = 0
variable = disp_x
angular_velocity = true
preset = false
[]
[rotate_y]
type = DisplacementAboutAxis
boundary = 'x0 y0 z0 x1 y1 z1'
function = '90.'
angle_units = degrees
axis_origin = '0. 0. 0.'
axis_direction = '0. 1. 0.'
component = 1
variable = disp_y
angular_velocity = true
preset = false
[]
[rotate_z]
type = DisplacementAboutAxis
boundary = 'x0 y0 z0 x1 y1 z1'
function = '90.'
angle_units = degrees
axis_origin = '0. 0. 0.'
axis_direction = '0. 1. 0.'
component = 2
variable = disp_z
angular_velocity = true
preset = false
[]
[]
[Controls]
[c1]
type = TimePeriod
enable_objects = 'BCs::fix_x BCs::fix_y BCs::fix_z BCs::back_z Constraints::x1 Constraints::y1'
disable_objects = 'BCs::rotate_x BCs::rotate_y BCs::rotate_z'
start_time = '0'
end_time = '0.051'
execute_on = 'initial timestep_begin'
[]
[]
[Materials]
[stress]
type = ComputeLagrangianLinearElasticStress
[]
[elasticity_tensor]
type = ComputeElasticityTensor
fill_method = symmetric9
C_ijkl = '1.684e5 0.176e5 0.176e5 1.684e5 0.176e5 1.684e5 0.754e5 0.754e5 0.754e5'
[]
[czm_mat]
type = ADPureElasticTractionSeparation
normal_stiffness = 100e2
tangent_stiffness = 70e2
boundary = 'Block1_Block2 Block1_Block3 Block1_Block4 Block1_Block5 Block1_Block6 Block2_Block3 Block2_Block4 Block2_Block5 Block2_Block7 Block3_Block4 Block3_Block6 Block3_Block7 Block4_Block5 Block4_Block6 Block4_Block7 Block5_Block6 Block5_Block7 Block6_Block7'
[]
[]
[Executioner]
type = Transient
solve_type = 'newton'
line_search = none
automatic_scaling = true
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
nl_rel_tol = 1e-15
nl_abs_tol = 1e-15
start_time = 0.0
dt = 0.025
end_time = 0.075
[]
[Outputs]
exodus = true
print_linear_residuals = false
[]
(modules/solid_mechanics/test/tests/cohesive_zone_model/czm_multiple_dimension_base.i)
[Mesh]
use_displaced_mesh = false
[./msh]
type = GeneratedMeshGenerator
[]
[./subdomain_1]
type = SubdomainBoundingBoxGenerator
input = msh
bottom_left = '0 0 0'
block_id = 1
top_right = '0.5 1 1'
[]
[./subdomain_2]
type = SubdomainBoundingBoxGenerator
input = subdomain_1
bottom_left = '0.5 0 0'
block_id = 2
top_right = '1 1 1'
[]
[./breakmesh]
input = subdomain_2
type = BreakMeshByBlockGenerator
[../]
[add_side_sets]
input = breakmesh
type = SideSetsFromNormalsGenerator
normals = '0 -1 0
0 1 0
-1 0 0
1 0 0
0 0 -1
0 0 1'
fixed_normal = true
new_boundary = 'y0 y1 x0 x1 z0 z1'
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Physics/SolidMechanics/QuasiStatic]
[./all]
strain = SMALL
add_variables = true
generate_output = 'stress_xx stress_yy stress_zz stress_yz stress_xz stress_xy'
[../]
[]
[Physics/SolidMechanics/CohesiveZone]
[./czm1]
boundary = 'Block1_Block2'
generate_output = 'traction_x traction_y traction_z normal_traction tangent_traction jump_x jump_y jump_z normal_jump tangent_jump'
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
preset = false
boundary = x0
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
preset = false
boundary = x0
value = 0.0
[../]
[./left_z]
type = DirichletBC
variable = disp_z
preset = false
boundary = x0
value = 0.0
[../]
[./right_x]
type = FunctionDirichletBC
variable = disp_x
preset = false
boundary = x1
[../]
[./right_y]
type = FunctionDirichletBC
variable = disp_y
preset = false
boundary = x1
[../]
[./right_z]
type = FunctionDirichletBC
variable = disp_z
preset = false
boundary = x1
[../]
[]
[Materials]
[./Elasticity_tensor]
type = ComputeElasticityTensor
block = '1 2'
fill_method = symmetric_isotropic
C_ijkl = '0.3 0.5e8'
[../]
[./stress]
type = ComputeLinearElasticStress
block = '1 2'
[../]
[./czm_mat]
type = PureElasticTractionSeparation
boundary = 'Block1_Block2'
normal_stiffness = 10
tangent_stiffness = 5
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
solve_type = NEWTON
nl_abs_tol = 1e-8
nl_rel_tol = 1e-6
nl_max_its = 5
l_tol = 1e-10
l_max_its = 50
start_time = 0.0
dt = 0.2
end_time = 0.2
dtmin = 0.2
line_search = none
[]
[Outputs]
[./out]
type = Exodus
[../]
[]
(test/tests/interfacekernels/1d_interface/no-failed-point-inversions.i)
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 1
nx = 10
xmax = 2
[]
[subdomain1]
input = gen
type = SubdomainBoundingBoxGenerator
bottom_left = '1.0 0 0'
block_id = 1
top_right = '2.0 1.0 0'
[]
[break]
type = BreakMeshByBlockGenerator
input = subdomain1
[]
displacements = 'disp_x'
use_displaced_mesh = false
[]
[AuxVariables]
[disp_x][]
[]
[ICs]
[right]
type = ConstantIC
variable = disp_x
block = 1
value = 1
[]
[]
[Variables]
[u]
order = FIRST
family = LAGRANGE
block = '0'
[]
[v]
order = FIRST
family = LAGRANGE
block = '1'
[]
[]
[Kernels]
[diff_u]
type = CoeffParamDiffusion
variable = u
D = 4
block = 0
[]
[diff_v]
type = CoeffParamDiffusion
variable = v
D = 2
block = 1
[]
[]
[InterfaceKernels]
[penalty_interface]
type = PenaltyInterfaceDiffusion
variable = u
neighbor_var = v
boundary = Block0_Block1
penalty = 1e6
[]
[]
[BCs]
[left]
type = DirichletBC
variable = u
boundary = 'left'
value = 1
[]
[right]
type = DirichletBC
variable = v
boundary = 'right'
value = 0
[]
[]
[Materials]
[block0]
type = GenericConstantMaterial
block = '0'
prop_names = 'D'
prop_values = '4'
[]
[block1]
type = GenericConstantMaterial
block = '1'
prop_names = 'D'
prop_values = '2'
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Steady
solve_type = NEWTON
[]
[Outputs]
exodus = true
print_linear_residuals = true
[]
[Debug]
show_var_residual_norms = true
[]
[Postprocessors]
[area]
type = AreaPostprocessor
use_displaced_mesh = true
boundary = 'right'
[]
[]