- 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. At the moment, this only works on a REPLICATED mesh
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 nodes is assigned to one block and all the elements sharing that node are updated. A new sideset identifying the new interface is added, and it is always linked to elements belonging to blocks with the lower ID.
As an option, the interface can be split into Q different sidesets, where Q is the number of adjacent block pairs. This is achieved by setting split_interface=true
and is useful when modeling interfaces with different parameters.
Two types of block restricted option are provided, namely surrounding_blocks
and block_pairs
. The surrounding_blocks
will create interfaces surrounding specified block. When surrounding_blocks
is provided, the additional boundary interface_transition
can be added by setting add_transition_interface=true
. The interface_transition
boundary identifies the interface between the provided blocks and the rest of the mesh. The block_pairs
option will create interfaces only \emph{between} the specified block pairs. Multiple block pairs can be provided, and they are separated by semicolon (;
). The block_pairs
option does not work with add_transition_interface
. By default when no block restricted option is used, interfaces will be generated between all blocks. In addition, the add_interface_on_two_sides
parameter allows to generate interface boundaries on both sides of the interface which can be used to enforce thermal and mechanical contact at the interface.
Example Input File Syntax
Single Interface
[Mesh]
[./fmg]
type = FileMeshGenerator
file = 4ElementJunction.e
[]
[./breakmesh]
type = BreakMeshByBlockGenerator
input = fmg
[]
[]
Multiple Interfaces
When split_interface=true
, the new generated interface is split by block pairs and named by joining the block names. For instance if one has two neighboring blocks - one named wood
and named steel
with blockID
equal to 1
and 2
, respectively - the new interface will be named wood_steel
. The naming order follows the block ID order. For this simple example, the new sideset will be on the block named wood
. If one block is not named, its name will default to Block
plus the blockID
. For instance, if block 2 is not named the new interface will be named wood_Block2
.
[Mesh]
[./fmg]
type = FileMeshGenerator
file = 4ElementJunction.e
[]
[./breakmesh]
type = BreakMeshByBlockGenerator
input = fmg
split_interface = true
[]
[]
block_pair option
For block_pair
option, only the nodes that are shared by specific block pairs will be newly created. In the example below, three different cases are shown, where one, two and three new nodes are created, respectively.

[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
split_interface = true
[]
[]
Input Parameters
- add_interface_on_two_sidesFalseWhether to add an additional interface boundary at the other side.
Default:False
C++ Type:bool
Controllable:No
Description:Whether to add an additional interface boundary at the other side.
- add_transition_interfaceFalseIf true and block is not empty, a special boundary named interface_transition is generate between listed blocks and other blocks.
Default:False
C++ Type:bool
Controllable:No
Description:If true and block is not empty, a special boundary named interface_transition is generate between listed blocks and other blocks.
- 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.
- interface_nameinterfacethe name of the new interface. Cannot be used whit `split_interface=true`
Default:interface
C++ Type:std::string
Controllable:No
Description:the name of the new interface. Cannot be used whit `split_interface=true`
- interface_transition_nameinterface_transitionthe name of the interface transition boundary created when blocks are provided
Default:interface_transition
C++ Type:BoundaryName
Controllable:No
Description:the name of the interface transition boundary created when blocks are provided
- split_interfaceFalseIf true, it creates a different interface for each block pair.
Default:False
C++ Type:bool
Controllable:No
Description:If true, it creates a different interface for each block pair.
- split_transition_interfaceFalseWhether to split the transition interface by blocks.
Default:False
C++ Type:bool
Controllable:No
Description:Whether to split the transition interface by blocks.
- 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/solid_mechanics/test/tests/cohesive_zone_model/bilinear_mixed.i)
- (modules/solid_mechanics/test/tests/cohesive_zone_model/ad_czm.i)
- (modules/heat_transfer/test/tests/thin_layer_heat_transfer/transient_2d.i)
- (test/tests/meshgenerators/break_mesh_by_block_generator/hanging_nodes_parallel.i)
- (test/tests/meshgenerators/stitch_boundary_mesh_generator/stitch_2d.i)
- (modules/solid_mechanics/test/tests/cohesive_zone_model/czm_multiple_action_and_materials.i)
- (test/tests/meshgenerators/break_mesh_by_block_generator/break_mesh_2DJunction_auto.i)
- (test/tests/meshgenerators/break_mesh_by_block_generator/break_mesh_3D_polycrystal.i)
- (modules/solid_mechanics/test/tests/cohesive_zone_model/czm_patch_test_base.i)
- (modules/combined/test/tests/break_mesh_interface_contact/break_mesh_interface_contact.i)
- (modules/solid_mechanics/test/tests/cohesive_zone_model/bilinear_mixed_scale_strength.i)
- (test/tests/meshgenerators/break_mesh_by_block_generator/break_mesh_2DJunction_polycrystal.i)
- (test/tests/meshgenerators/break_mesh_by_block_generator/break_mesh_block_restricted.i)
- (modules/solid_mechanics/test/tests/cohesive_zone_model/czm_traction_separation_base.i)
- (test/tests/meshgenerators/break_mesh_by_block_generator/break_mesh_block_pairs_restricted_3blocks.i)
- (modules/solid_mechanics/test/tests/cohesive_zone_model/stretch_rotate_large_deformation.i)
- (modules/solid_mechanics/test/tests/cohesive_zone_model/czm_multiple_dimension_base.i)
- (test/tests/meshgenerators/stitch_boundary_mesh_generator/stitch_3d.i)
- (test/tests/meshgenerators/break_mesh_by_block_generator/break_mesh_block_pairs_restricted.i)
- (test/tests/meshgenerators/break_mesh_by_block_generator/break_mesh_2DJunction_splittrue.i)
- (test/tests/materials/interface_material/interface_value_material_split_mesh.i)
- (modules/heat_transfer/test/tests/thin_layer_heat_transfer/steady_2d.i)
- (test/tests/meshgenerators/break_mesh_by_block_generator/break_mesh_3D_auto.i)
- (test/tests/meshgenerators/break_mesh_by_block_generator/break_mesh_3D_splittrue.i)
- (test/tests/interfacekernels/1d_interface/no-failed-point-inversions.i)
- (modules/heat_transfer/test/tests/thin_layer_heat_transfer/transient_3d.i)
- (modules/contact/test/tests/cohesive_zone_model/bilinear_mixed.i)
- (modules/heat_transfer/test/tests/thin_layer_heat_transfer/steady_3d.i)
- (test/tests/materials/interface_material/interface_value_material_split_mesh_stateful.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.[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" }
(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
[]
(test/tests/meshgenerators/break_mesh_by_block_generator/break_mesh_2DJunction_splittrue.i)
[Mesh]
[./fmg]
type = FileMeshGenerator
file = 4ElementJunction.e
[]
[./breakmesh]
type = BreakMeshByBlockGenerator
input = fmg
split_interface = true
[]
[]
[Outputs]
exodus = true
[]
(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
split_interface = true
[]
[]
(modules/solid_mechanics/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'
[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
[]
[]
[Physics/SolidMechanics/CohesiveZone]
[czm_ik]
boundary = 'interface'
[]
[]
[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 = 'interface'
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/solid_mechanics/test/tests/cohesive_zone_model/ad_czm.i)
[Mesh]
[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 = 'interface'
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
penalty = 1e6
[]
[y1]
type = EqualValueBoundaryConstraint
variable = disp_y
secondary = 'y1' # boundary
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
use_displaced_mesh = true
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.05'
[]
[]
[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 = 1e4
tangent_stiffness = 7e3
boundary = 'interface'
[]
[]
[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/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'
split_interface = true
add_interface_on_two_sides = true
[]
[]
[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/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
[]
[]
[Debug]
output_process_domains = true
[]
[Problem]
solve = false
[]
[Executioner]
type = Steady
[]
[Outputs]
exodus = true
[]
(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'
split_interface = true
add_interface_on_two_sides = true
[]
[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'
[]
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/cohesive_zone_model/czm_multiple_action_and_materials.i)
[Mesh]
[./msh]
type = GeneratedMeshGenerator
dim = 3
nx = 1
ny = 1
nz = 4
zmin = 0
zmax = 4
[../]
[./subdomain_id]
type = SubdomainPerElementGenerator
input = msh
subdomain_ids = '0 1 2 3'
[]
[./split]
type = BreakMeshByBlockGenerator
input = subdomain_id
split_interface = true
[]
[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 = ADComputeFiniteStrainElasticStress
[../]
[./elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 200e4
poissons_ratio = 0.3
[../]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[./all]
strain = FINITE
add_variables = true
use_finite_deform_jacobian = true
use_automatic_differentiation = true
generate_output = 'stress_xx stress_yy stress_zz stress_xy stress_yz 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
[]
(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
[]
(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
split_interface = true
[]
[]
[Outputs]
exodus = 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]
[./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
use_finite_deform_jacobian = true
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
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 = FunctionDirichletBC
boundary = 'z1'
variable = disp_z
use_displaced_mesh = true
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.05'
[../]
[]
[Physics/SolidMechanics/CohesiveZone]
[./czm_ik]
boundary = 'interface'
[../]
[]
[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_mat]
boundary = 'interface'
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = 'newton'
line_search = none
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-10
nl_abs_tol = 1e-10
start_time = 0.0
dt = 0.025
end_time = 0.075
[]
[Postprocessors]
[./nonlin]
type = NumNonlinearIterations
[../]
[]
[Outputs]
csv = true
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'
split_interface = true
add_interface_on_two_sides = true
[]
[]
[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_package'
petsc_options_value = 'lu superlu_dist'
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_scale_strength.i)
[Mesh]
[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 = 'stress_yy'
[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
[]
[]
[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 = interface
[]
[damage]
type = MaterialRealAux
variable = damage
property = damage
execute_on = timestep_end
boundary = interface
[]
[]
[Physics/SolidMechanics/CohesiveZone]
[czm_ik]
boundary = 'interface'
[]
[]
[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'
[]
[normal_strength]
type = GenericFunctionMaterial
prop_names = 'N'
prop_values = 'if(x<0.5,1,100)*1e4'
[]
[czm]
type = BiLinearMixedModeTraction
boundary = 'interface'
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
[]
(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
split_interface = true
[]
[]
[Outputs]
exodus = 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'
add_transition_interface = true
[]
[]
(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]
[./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 = 'interface'
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 = 'interface'
[../]
[]
[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/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
split_interface = 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]
[./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 = 'interface'
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'
[../]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[./all]
strain = FINITE
add_variables = true
use_finite_deform_jacobian = true
use_automatic_differentiation = true
generate_output = 'stress_xx stress_yy stress_zz stress_xy stress_yz stress_xz'
[../]
[../]
[../]
[]
[Materials]
[./stress]
type = ADComputeFiniteStrainElasticStress
[../]
[./elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1e3
poissons_ratio = 0.3
[../]
[./czm_mat]
type = PureElasticTractionSeparation
boundary = 'interface'
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_multiple_dimension_base.i)
[Mesh]
[./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 = 'interface'
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 = 'interface'
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/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'
split_interface = true
add_interface_on_two_sides = true
[]
[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'
[]
[]
[Outputs]
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'
split_interface = true
[]
[]
(test/tests/meshgenerators/break_mesh_by_block_generator/break_mesh_2DJunction_splittrue.i)
[Mesh]
[./fmg]
type = FileMeshGenerator
file = 4ElementJunction.e
[]
[./breakmesh]
type = BreakMeshByBlockGenerator
input = fmg
split_interface = true
[]
[]
[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 = 'interface'
[]
[]
[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 = interface
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 = interface
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 = interface
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 = interface
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 = interface
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 = interface
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 = interface
[]
[./interface_material_jump_primary_minus_secondary]
type = MaterialRealAux
property = diff_jump_primary_minus_secondary
variable = diffusivity_jump_primary_minus_secondary
boundary = interface
[]
[./interface_material_jump_secondary_minus_primary]
type = MaterialRealAux
property = diff_jump_secondary_minus_primary
variable = diffusivity_jump_secondary_minus_primary
boundary = interface
[]
[./interface_material_jump_abs]
type = MaterialRealAux
property = diff_jump_abs
variable = diffusivity_jump_abs
boundary = interface
[]
[./interface_material_primary]
type = MaterialRealAux
property = diff_primary
variable = diffusivity_primary
boundary = interface
[]
[./interface_material_secondary]
type = MaterialRealAux
property = diff_secondary
variable = diffusivity_secondary
boundary = interface
[]
[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]
exodus = true
[]
(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'
split_interface = true
add_interface_on_two_sides = true
[]
[]
[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
[]
(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
split_interface = true
[]
[]
[Outputs]
exodus = true
[]
(test/tests/meshgenerators/break_mesh_by_block_generator/break_mesh_3D_splittrue.i)
[Mesh]
[./fmg]
type = FileMeshGenerator
file = coh3D_3Blocks.e
#parallel_type = replicated
[]
[./breakmesh]
type = BreakMeshByBlockGenerator
input = fmg
split_interface = true
[]
[]
[Outputs]
exodus = true
[]
(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'
[]
[interface]
input = subdomain1
type = SideSetsBetweenSubdomainsGenerator
primary_block = '0'
paired_block = '1'
new_boundary = 'primary0_interface'
[]
[break]
type = BreakMeshByBlockGenerator
input = interface
[]
displacements = 'disp_x'
[]
[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 = primary0_interface
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'
[]
[]
(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'
split_interface = true
add_interface_on_two_sides = true
[]
[]
[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/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 = 'interface'
[]
[]
[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 = 'interface'
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
[]
(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'
split_interface = true
add_interface_on_two_sides = true
[]
[]
[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
[]
(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 = 'interface'
[]
[]
[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 = interface
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 = interface
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 = interface
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 = interface
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 = interface
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 = interface
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 = interface
[]
[./interface_material_jump_primary_minus_secondary]
type = MaterialRealAux
property = diff_jump_primary_minus_secondary
variable = diffusivity_jump_primary_minus_secondary
boundary = interface
[]
[./interface_material_jump_secondary_minus_primary]
type = MaterialRealAux
property = diff_jump_secondary_minus_primary
variable = diffusivity_jump_secondary_minus_primary
boundary = interface
[]
[./interface_material_jump_abs]
type = MaterialRealAux
property = diff_jump_abs
variable = diffusivity_jump_abs
boundary = interface
[]
[./interface_material_primary]
type = MaterialRealAux
property = diff_primary
variable = diffusivity_primary
boundary = interface
[]
[./interface_material_secondary]
type = MaterialRealAux
property = diff_secondary
variable = diffusivity_secondary
boundary = interface
[]
[./interface_material_avg_prev]
type = MaterialRealAux
property = diff_average_prev
variable = diffusivity_average_prev
boundary = interface
[]
[./interface_material_jump_primary_minus_secondary_prev]
type = MaterialRealAux
property = diff_jump_primary_minus_secondary_prev
variable = diffusivity_jump_primary_minus_secondary_prev
boundary = interface
[]
[./interface_material_jump_secondary_minus_primary_prev]
type = MaterialRealAux
property = diff_jump_secondary_minus_primary_prev
variable = diffusivity_jump_secondary_minus_primary_prev
boundary = interface
[]
[./interface_material_jump_abs_prev]
type = MaterialRealAux
property = diff_jump_abs_prev
variable = diffusivity_jump_abs_prev
boundary = interface
[]
[./interface_material_primary_prev]
type = MaterialRealAux
property = diff_primary_prev
variable = diffusivity_primary_prev
boundary = interface
[]
[./interface_material_secondary_prev]
type = MaterialRealAux
property = diff_secondary_prev
variable = diffusivity_secondary_prev
boundary = interface
[]
[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]
exodus = true
[]