- inputThe mesh we want to modify
C++ Type:MeshGeneratorName
Description:The mesh we want to modify
 - subdomain_idsNew subdomain IDs of all elements
C++ Type:std::vector<unsigned short>
Description:New subdomain IDs of all elements
 
ElementSubdomainIDGenerator
Allows the user to assign each element the subdomain ID of their choice
Input Parameters
- element_idsNew element IDs of all elements
C++ Type:std::vector<unsigned long>
Options:
Description:New element IDs of all elements
 - show_infoFalseWhether or not to show mesh info after generating the mesh (bounding box, element types, sidesets, nodesets, subdomains, etc)
Default:False
C++ Type:bool
Options:
Description:Whether or not to show mesh info after generating the mesh (bounding box, element types, sidesets, nodesets, subdomains, etc)
 
Optional Parameters
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector<std::string>
Options:
Description:Adds user-defined labels for accessing object parameters via control logic.
 - enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Options:
Description:Set the enabled status of the MooseObject.
 
Advanced Parameters
Input Files
- (test/tests/postprocessors/point_value/point_value.i)
 - (test/tests/userobjects/internal_side_user_object/internal_side_user_object_two_materials.i)
 - (test/tests/mesh_modifiers/sidesets_between_subdomains/sidesets_between_vectors_of_subdomains.i)
 - (test/tests/mesh_modifiers/assign_element_subdomain_id/quad_with_elementid_subdomainid_test.i)
 - (test/tests/transfers/multiapp_transfer_transformation/transfer_transformation.i)
 - (test/tests/meshgenerators/sideset_around_subdomain_generator/around_multi_created_subdomain.i)
 - (test/tests/mesh_modifiers/assign_element_subdomain_id/tri_with_subdomainid_test.i)
 - (modules/tensor_mechanics/test/tests/crystal_plasticity/user_object_based/prop_block_read.i)
 - (test/tests/mesh_modifiers/assign_element_subdomain_id/quad_with_subdomainid_test.i)
 - (test/tests/mesh_modifiers/sidesets_around_subdomain/around_multi_created_subdomain.i)
 - (test/tests/transfers/multiapp_transfer_transformation/transfer_transformation_sub.i)
 - (test/tests/meshgenerators/sidesets_between_subdomains_generator/sideset_between_vector_subdomains_generator.i)
 
(test/tests/postprocessors/point_value/point_value.i)
[Mesh]
  [gen]
    type = GeneratedMeshGenerator
    dim = 2
    nx = 2
    ny = 2
  []
  [./subdomain]
    input = gen
    type = ElementSubdomainIDGenerator
    element_ids   = '0 1 2 3'
    subdomain_ids = '1 2 3 4'
  [../]
[]
[Variables]
  [./u]
  [../]
[]
[Kernels]
  [./diff]
    type = Diffusion
    variable = u
  [../]
[]
[BCs]
  [./left]
    type = DirichletBC
    variable = u
    boundary = left
    value = 0
  [../]
  [./right]
    type = DirichletBC
    variable = u
    boundary = right
    value = 1
  [../]
[]
[Postprocessors]
  [./value]
    type = PointValue
    variable = u
    point = '0.371 .41 0'
  [../]
[]
[Executioner]
  type = Steady
  solve_type = 'NEWTON'
[]
[Outputs]
  csv = true
[]
(test/tests/userobjects/internal_side_user_object/internal_side_user_object_two_materials.i)
[Mesh]
  [gen]
  type = GeneratedMeshGenerator
    dim = 2
    xmin = -1
    ymin = -1
    xmax = 1
    ymax = 1
    nx = 2
    ny = 2
    elem_type = QUAD4
  []
  [./subdomain_id]
    input = gen
    type = ElementSubdomainIDGenerator
    subdomain_ids = '0 1
                     1 1'
  [../]
[]
[Functions]
  [./fn_exact]
    type = ParsedFunction
    value = 'x*x+y*y'
  [../]
  [./ffn]
    type = ParsedFunction
    value = -4
  [../]
[]
[UserObjects]
  [./isuo]
    type = InsideUserObject
    variable = u
    diffusivity = diffusivity
    execute_on = 'initial timestep_end'
  [../]
[]
[Variables]
  [./u]
    family = LAGRANGE
    order = FIRST
  [../]
[]
[Kernels]
  [./diff]
    type = Diffusion
    variable = u
  [../]
  [./ffn]
    type = BodyForce
    variable = u
    function = ffn
  [../]
[]
[BCs]
  [./all]
    type = FunctionDirichletBC
    variable = u
    boundary = '0 1 2 3'
    function = fn_exact
  [../]
[]
[Materials]
  [./stateful1]
    type = StatefulMaterial
    block = 0
    initial_diffusivity = 1
  [../]
  [./stateful2]
    type = StatefulMaterial
    block = 1
    initial_diffusivity = 2
  [../]
[]
[Postprocessors]
  [./value]
    type = InsideValuePPS
    user_object = isuo
  [../]
[]
[Executioner]
  type = Steady
[]
[Outputs]
  exodus = true
[]
(test/tests/mesh_modifiers/sidesets_between_subdomains/sidesets_between_vectors_of_subdomains.i)
[Mesh]
  [gen]
    type = GeneratedMeshGenerator
    dim = 2
    nx = 4
    ny = 4
    nz = 0
    zmin = 0
    zmax = 0
    elem_type = QUAD4
  []
  [subdomain_id]
    type = ElementSubdomainIDGenerator
    input = gen
    subdomain_ids = '0 0 0 0
                     1 1 1 3
                     2 2 3 3
              '
                    '       1 2 3 3'
  []
  [interface]
    type = SideSetsBetweenSubdomainsGenerator
    input = subdomain_id
    primary_block = '0 1'
    paired_block = '2 3'
    new_boundary = 'in_between'
  []
  [emperty_interface]
    type = SideSetsBetweenSubdomainsGenerator
    input = interface
    primary_block = '0'
    paired_block = '2'
    new_boundary = 'not_in_mesh'
  []
[]
# This input file is intended to be run with the "--mesh-only" option so
# no other sections are required
(test/tests/mesh_modifiers/assign_element_subdomain_id/quad_with_elementid_subdomainid_test.i)
[Mesh]
  [gen]
    type = GeneratedMeshGenerator
    dim = 2
    nx = 2
    ny = 2
    nz = 0
    zmin = 0
    zmax = 0
    elem_type = QUAD4
  []
  [subdomain_id]
    type = ElementSubdomainIDGenerator
    input = gen
    element_ids = '1 2 3'
    subdomain_ids = '1 1 1'
  []
[]
[Variables]
  active = 'u'
  [u]
    order = FIRST
    family = LAGRANGE
  []
[]
[Kernels]
  active = 'diff'
  [diff]
    type = Diffusion
    variable = u
  []
[]
[BCs]
  active = 'left right'
  # Mesh Generation produces boundaries in counter-clockwise fashion
  [left]
    type = DirichletBC
    variable = u
    boundary = 3
    value = 0
  []
  [right]
    type = DirichletBC
    variable = u
    boundary = 1
    value = 1
  []
[]
[Executioner]
  type = Steady
  solve_type = 'PJFNK'
[]
[Outputs]
  file_base = out_quad_subdomain_id
  exodus = true
[]
(test/tests/transfers/multiapp_transfer_transformation/transfer_transformation.i)
[Mesh]
  [./gmg]
    type = GeneratedMeshGenerator
    dim = 2
    nx = 3
    ny = 5
    nz = 0
    xmax = 0.8
    xmin = 0.2
    zmin = 0
    zmax = 0
    elem_type = QUAD4
  []
  [./subdomain_id]
    type = ElementSubdomainIDGenerator
    input = gmg
    subdomain_ids = '0 1 2
                     0 1 2
                     0 1 2
                     0 1 2
                     0 1 2'
  []
  [./boundary01]
    type = SideSetsBetweenSubdomainsGenerator
    input = subdomain_id
    primary_block = '0'
    paired_block = '1'
    new_boundary = 'boundary01'
  []
  [./boundary10]
    type = SideSetsBetweenSubdomainsGenerator
    input = boundary01
    primary_block = '1'
    paired_block = '0'
    new_boundary = 'boundary10'
  []
  [./boundary12]
    type = SideSetsBetweenSubdomainsGenerator
    input = boundary10
    primary_block = '1'
    paired_block = '2'
    new_boundary = 'boundary12'
  []
  [./boundary21]
    type = SideSetsBetweenSubdomainsGenerator
    input = boundary12
    primary_block = '2'
    paired_block = '1'
    new_boundary = 'boundary21'
  []
  uniform_refine = 3
[]
[Variables]
  [./u]
  [../]
[]
[Kernels]
  [./diff]
    type = Diffusion
    variable = u
  [../]
[]
[AuxVariables]
  [./fromsubelem]
    order = constant
    family = monomial
  [../]
  [./fromsub]
  []
[]
[BCs]
  [./left0]
    type = DirichletBC
    variable = u
    boundary = left
    value = 0
  [../]
  [./right0]
    type = DirichletBC
    variable = u
    boundary = boundary01
    value = 1
  [../]
  [./right1]
    type = DirichletBC
    variable = u
    boundary = boundary12
    value = 0
  [../]
  [./right2]
    type = DirichletBC
    variable = u
    boundary = right
    value = 1
  [../]
[]
[Executioner]
  type = Steady
  solve_type = 'NEWTON'
[]
[Outputs]
  exodus = true
[]
[MultiApps]
  [sub]
    type = FullSolveMultiApp
    app_type = MooseTestApp
    positions = '0.0  0.0  0.0'
    execute_on = 'timestep_end'
    input_files = transfer_transformation_sub.i
  []
[]
[Transfers]
  [from_sub]
    type = MultiAppInterpolationTransfer
    direction = from_multiapp
    multi_app = sub
    num_points = 1
    shrink_gap_width = 0.2
    shrink_mesh = 'source'
    source_variable = 'u'
    variable = 'fromsub'
    exclude_gap_blocks = '1 3'
  []
  [from_sub_elem]
    type = MultiAppInterpolationTransfer
    direction = from_multiapp
    multi_app = sub
    num_points = 4
    shrink_gap_width = 0.2
    shrink_mesh = 'source'
    source_variable = 'u'
    variable = 'fromsubelem'
    exclude_gap_blocks = '1 3'
  []
  [from_master]
    type = MultiAppInterpolationTransfer
    direction = to_multiapp
    multi_app = sub
    num_points = 1
    shrink_gap_width = 0.2
    shrink_mesh = 'target'
    source_variable = 'u'
    exclude_gap_blocks = '1 3'
    variable = 'frommaster'
  []
  [from_master_elem]
    type = MultiAppInterpolationTransfer
    direction = to_multiapp
    multi_app = sub
    num_points = 4
    shrink_gap_width = 0.2
    shrink_mesh = 'target'
    source_variable = 'u'
    exclude_gap_blocks = '1 3'
    variable = 'frommasterelem'
  []
[]
(test/tests/meshgenerators/sideset_around_subdomain_generator/around_multi_created_subdomain.i)
[Mesh]
  [./gmg]
    type = GeneratedMeshGenerator
    dim = 3
    xmin = 0
    xmax = 4
    nx = 4
    ymin = 0
    ymax = 4
    ny = 4
    zmin = 0
    zmax = 2
    nz = 2
  []
  [./subdomains]
    type = ElementSubdomainIDGenerator
    input = gmg
    subdomain_ids = '0 0 0 0
                     0 0 0 0
                     1 1 0 0
                     2 2 2 2
                     3 3 0 0
                     3 3 0 0
                     1 1 0 0
                     0 0 0 0'
  []
  [./interface]
    type = SideSetsAroundSubdomainGenerator
    input = subdomains
    block = '1 2 3'
    new_boundary = 'to0'
  []
[]
[Outputs]
  exodus = true
[]
(test/tests/mesh_modifiers/assign_element_subdomain_id/tri_with_subdomainid_test.i)
[Mesh]
  [gen]
    type = GeneratedMeshGenerator
    dim = 2
    nx = 2
    ny = 2
    nz = 0
    zmin = 0
    zmax = 0
    elem_type = TRI3
  []
  [subdomain_id]
    type = ElementSubdomainIDGenerator
    input = gen
    subdomain_ids = '0 1  1 1
                     1 1  1 0'
  []
[]
[Variables]
  active = 'u'
  [u]
    order = FIRST
    family = LAGRANGE
  []
[]
[Kernels]
  active = 'diff'
  [diff]
    type = Diffusion
    variable = u
  []
[]
[BCs]
  active = 'left right'
  # Mesh Generation produces boundaries in counter-clockwise fashion
  [left]
    type = DirichletBC
    variable = u
    boundary = 3
    value = 0
  []
  [right]
    type = DirichletBC
    variable = u
    boundary = 1
    value = 1
  []
[]
[Executioner]
  type = Steady
  solve_type = 'PJFNK'
[]
[Outputs]
  file_base = out_tri_subdomain_id
  exodus = true
[]
(modules/tensor_mechanics/test/tests/crystal_plasticity/user_object_based/prop_block_read.i)
[Mesh]
  [gen]
    type = GeneratedMeshGenerator
    dim = 2
    xmin = 0
    ymin = 0
    xmax = 1
    ymax = 1
    nx = 2
    ny = 2
    elem_type = QUAD4
  []
  [./subdomain_id]
    input = gen
    type = ElementSubdomainIDGenerator
    subdomain_ids = '0 1
                     0 1'
  [../]
  displacements = 'disp_x disp_y'
[]
[Variables]
  [./disp_x]
  [../]
  [./disp_y]
  [../]
[]
[GlobalParams]
  volumetric_locking_correction = true
[]
[AuxVariables]
  [./stress_yy]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./e_yy]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./fp_yy]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./gss]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./euler1]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./euler2]
    order = CONSTANT
    family = MONOMIAL
  [../]
  [./euler3]
    order = CONSTANT
    family = MONOMIAL
  [../]
[]
[Functions]
  [./tdisp]
    type = ParsedFunction
    value = 0.01*t
  [../]
[]
[UserObjects]
  [./prop_read]
    type = ElementPropertyReadFile
    prop_file_name = 'euler_ang_file.txt'
    # Enter file data as prop#1, prop#2, .., prop#nprop
    nprop = 3
    read_type = block
    nblock= 2
  [../]
[]
[AuxKernels]
  [./stress_yy]
    type = RankTwoAux
    variable = stress_yy
    rank_two_tensor = stress
    index_j = 1
    index_i = 1
    execute_on = timestep_end
  [../]
  [./e_yy]
    type = RankTwoAux
    variable = e_yy
    rank_two_tensor = lage
    index_j = 1
    index_i = 1
    execute_on = timestep_end
  [../]
  [./fp_yy]
    type = RankTwoAux
    variable = fp_yy
    rank_two_tensor = fp
    index_j = 1
    index_i = 1
    execute_on = timestep_end
  [../]
  [./gss]
    type = MaterialStdVectorAux
    variable = gss
    property = state_var_gss
    index = 0
    execute_on = timestep_end
  [../]
  [./euler1]
    type = MaterialRealVectorValueAux
    variable = euler1
    property = Euler_angles
    component = 0
    execute_on = timestep_end
  [../]
  [./euler2]
    type = MaterialRealVectorValueAux
    variable = euler2
    property = Euler_angles
    component = 1
    execute_on = timestep_end
  [../]
  [./euler3]
    type = MaterialRealVectorValueAux
    variable = euler3
    property = Euler_angles
    component = 2
    execute_on = timestep_end
  [../]
[]
[BCs]
  [./fix_x]
    type = DirichletBC
    variable = disp_x
    boundary = 'left'
    value = 0
  [../]
  [./fix_y]
    type = DirichletBC
    variable = disp_y
    boundary = 'bottom'
    value = 0
  [../]
  [./tdisp]
    type = FunctionDirichletBC
    variable = disp_y
    boundary = top
    function = tdisp
  [../]
[]
[UserObjects]
  [./slip_rate_gss]
    type = CrystalPlasticitySlipRateGSS
    variable_size = 12
    slip_sys_file_name = input_slip_sys.txt
    num_slip_sys_flowrate_props = 2
    flowprops = '1 4 0.001 0.1 5 8 0.001 0.1 9 12 0.001 0.1'
    uo_state_var_name = state_var_gss
  [../]
  [./slip_resistance_gss]
    type = CrystalPlasticitySlipResistanceGSS
    variable_size = 12
    uo_state_var_name = state_var_gss
  [../]
  [./state_var_gss]
    type = CrystalPlasticityStateVariable
    variable_size = 12
    groups = '0 4 8 12'
    group_values = '60.8 60.8 60.8'
    uo_state_var_evol_rate_comp_name = state_var_evol_rate_comp_gss
    scale_factor = 1.0
  [../]
  [./state_var_evol_rate_comp_gss]
    type = CrystalPlasticityStateVarRateComponentGSS
    variable_size = 12
    hprops = '1.0 541.5 109.8 2.5'
    uo_slip_rate_name = slip_rate_gss
    uo_state_var_name = state_var_gss
  [../]
[]
[Materials]
  [./crysp]
    type = FiniteStrainUObasedCP
    stol = 1e-2
    tan_mod_type = exact
    uo_slip_rates = 'slip_rate_gss'
    uo_slip_resistances = 'slip_resistance_gss'
    uo_state_vars = 'state_var_gss'
    uo_state_var_evol_rate_comps = 'state_var_evol_rate_comp_gss'
  [../]
  [./strain]
    type = ComputeFiniteStrain
    displacements = 'disp_x disp_y'
  [../]
  [./elasticity_tensor]
    type = ComputeElasticityTensorCP
    C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
    fill_method = symmetric9
    read_prop_user_object = prop_read
  [../]
[]
[Postprocessors]
  [./stress_yy]
    type = ElementAverageValue
    variable = stress_yy
  [../]
  [./e_yy]
    type = ElementAverageValue
    variable = e_yy
  [../]
  [./fp_yy]
    type = ElementAverageValue
    variable = fp_yy
  [../]
  [./gss]
    type = ElementAverageValue
    variable = gss
  [../]
[]
[Preconditioning]
  [./smp]
    type = SMP
    full = true
  [../]
[]
[Executioner]
  type = Transient
  dt = 0.01
  solve_type = 'PJFNK'
  petsc_options_iname = -pc_hypre_type
  petsc_options_value = boomerang
  nl_abs_tol = 1e-10
  nl_rel_step_tol = 1e-10
  dtmax = 10.0
  nl_rel_tol = 1e-10
  end_time = 1
  dtmin = 0.01
  num_steps = 10
  nl_abs_step_tol = 1e-10
[]
[Outputs]
  exodus = true
[]
[Kernels]
  [./TensorMechanics]
    displacements = 'disp_x disp_y'
    use_displaced_mesh = true
  [../]
[]
(test/tests/mesh_modifiers/assign_element_subdomain_id/quad_with_subdomainid_test.i)
[Mesh]
  [gen]
    type = GeneratedMeshGenerator
    dim = 2
    nx = 2
    ny = 2
    nz = 0
    zmin = 0
    zmax = 0
    elem_type = QUAD4
  []
  [subdomain_id]
    type = ElementSubdomainIDGenerator
    input = gen
    subdomain_ids = '0 1
                     1 1'
  []
[]
[Variables]
  active = 'u'
  [u]
    order = FIRST
    family = LAGRANGE
  []
[]
[Kernels]
  active = 'diff'
  [diff]
    type = Diffusion
    variable = u
  []
[]
[BCs]
  active = 'left right'
  # Mesh Generation produces boundaries in counter-clockwise fashion
  [left]
    type = DirichletBC
    variable = u
    boundary = 3
    value = 0
  []
  [right]
    type = DirichletBC
    variable = u
    boundary = 1
    value = 1
  []
[]
[Executioner]
  type = Steady
  solve_type = 'PJFNK'
[]
[Outputs]
  file_base = out_quad_subdomain_id
  exodus = true
[]
(test/tests/mesh_modifiers/sidesets_around_subdomain/around_multi_created_subdomain.i)
[Mesh]
  [gen]
    type = GeneratedMeshGenerator
    dim = 3
    xmin = 0
    xmax = 4
    nx = 4
    ymin = 0
    ymax = 4
    ny = 4
    zmin = 0
    zmax = 2
    nz = 2
  []
  [subdomains]
    type = ElementSubdomainIDGenerator
    input = gen
    subdomain_ids = '0 0 0 0
                     0 0 0 0
                     1 1 0 0
              '
                    '       2 2 2 2
                     3 3 0 0
                     3 3 0 0
       '
                    '              1 1 0 0
                     0 0 0 0'
  []
  [interface]
    type = SideSetsAroundSubdomainGenerator
    input = subdomains
    block = '1 2 3'
    new_boundary = 'to0'
  []
[]
# This input file is intended to be run with the "--mesh-only" option so
# no other sections are required
(test/tests/transfers/multiapp_transfer_transformation/transfer_transformation_sub.i)
[Mesh]
  [./gmg]
    type = GeneratedMeshGenerator
    dim = 2
    nx = 5
    ny = 5
    nz = 0
    zmin = 0
    zmax = 0
    elem_type = QUAD4
  []
  [./subdomain_id]
    type = ElementSubdomainIDGenerator
    input = gmg
    subdomain_ids = '0 1 2 3 4
                     0 1 2 3 4
                     0 1 2 3 4
                     0 1 2 3 4
                     0 1 2 3 4'
  []
  [./boundary01]
    type = SideSetsBetweenSubdomainsGenerator
    input = subdomain_id
    primary_block = '0'
    paired_block = '1'
    new_boundary = 'boundary01'
  []
  [./boundary10]
    type = SideSetsBetweenSubdomainsGenerator
    input = boundary01
    primary_block = '1'
    paired_block = '0'
    new_boundary = 'boundary10'
  []
  [./boundary12]
    type = SideSetsBetweenSubdomainsGenerator
    input = boundary10
    primary_block = '1'
    paired_block = '2'
    new_boundary = 'boundary12'
  []
  [./boundary21]
    type = SideSetsBetweenSubdomainsGenerator
    input = boundary12
    primary_block = '2'
    paired_block = '1'
    new_boundary = 'boundary21'
  []
  [./boundary23]
    type = SideSetsBetweenSubdomainsGenerator
    input = boundary21
    primary_block = '2'
    paired_block = '3'
    new_boundary = 'boundary23'
  []
  [./boundary32]
    type = SideSetsBetweenSubdomainsGenerator
    input = boundary23
    primary_block = '3'
    paired_block = '2'
    new_boundary = 'boundary32'
  []
  [./boundary34]
    type = SideSetsBetweenSubdomainsGenerator
    input = boundary32
    primary_block = '3'
    paired_block = '4'
    new_boundary = 'boundary34'
  []
  [./boundary43]
    type = SideSetsBetweenSubdomainsGenerator
    input = boundary34
    primary_block = '4'
    paired_block = '3'
    new_boundary = 'boundary43'
  []
  uniform_refine = 3
[]
[Variables]
  [./u]
  [../]
[]
[Kernels]
  [./diff]
    type = Diffusion
    variable = u
  [../]
[]
[AuxVariables]
  [./frommaster]
  []
  [./frommasterelem]
    order = constant
    family = monomial
  [../]
[]
[BCs]
  [./left0]
    type = DirichletBC
    variable = u
    boundary = left
    value = 0
  [../]
  [./right0]
    type = DirichletBC
    variable = u
    boundary = boundary01
    value = 1
  [../]
  [./right1]
    type = DirichletBC
    variable = u
    boundary = boundary12
    value = 1
  [../]
  [./right2]
    type = DirichletBC
    variable = u
    boundary = boundary23
    value = 0
  [../]
  [./right3]
    type = DirichletBC
    variable = u
    boundary = boundary34
    value = 0
  [../]
  [./right4]
    type = DirichletBC
    variable = u
    boundary = right
    value = 1
  [../]
[]
[Executioner]
  type = Steady
  solve_type = 'NEWTON'
[]
[Outputs]
  exodus = true
[]
(test/tests/meshgenerators/sidesets_between_subdomains_generator/sideset_between_vector_subdomains_generator.i)
[Mesh]
  [./gmg]
    type = GeneratedMeshGenerator
    dim = 2
    nx = 4
    ny = 4
    nz = 0
    zmin = 0
    zmax = 0
    elem_type = QUAD4
  []
  [./subdomain_id]
    type = ElementSubdomainIDGenerator
    input = gmg
    subdomain_ids = '0 0 0 0
                     1 1 1 3
                     2 2 3 3
                     1 2 3 3'
  []
  [./interface]
    type = SideSetsBetweenSubdomainsGenerator
    input = subdomain_id
    primary_block = '0 1'
    paired_block = '2 3'
    new_boundary = 'in_between'
  []
  [./emperty_interface]
    type = SideSetsBetweenSubdomainsGenerator
    input = interface
    primary_block = '0'
    paired_block = '2'
    new_boundary = 'not_in_mesh'
  []
[]
[Outputs]
  exodus = true
[]