SideSetExtruderGenerator

Takes a 1D or 2D mesh and extrudes a selected sideset along the specified axis.

The SideSetExtruderGenerator differs from the MeshExtruderGenerator in that the extruded block has the same dimensionality as the input mesh.

commentnote

The SideSetExtruderGenerator will not throw any errors if you extrude a mesh through (overlap with) another mesh or another part of the mesh. It will throw an error if the extrusion vector would create a mesh with a negative determinant (the nested MeshExtruderGenerator throws the error).

warningwarning

The output will have no sidesets, even the sideset which served for extrusion will be removed. The user is expected to use the other sideset generating generators on the output if sidesets are needed.

Visual Example

The following 2D mesh has the right sideset extruded using a SideSetExtruderGenerator with the (1, 0.5, 0) vector.

Before: a square, with sidesets on each side.

After, the right sideset has been extruded.

Implementation details

SideSetExtruderGenerator is actually a mere wrapper of 4 other generators:

As such, the SideSetExtruderGenerator is exactly equivalent to the output of a recipe similar to the one below. If you are needing to tweak the output of SideSetExtruderGenerator, it may be preferable to use these generators instead. SideSetExtruderGenerator uses the default parameters of these sub-generators.

[Mesh<<<{"href": "../../syntax/Mesh/index.html"}>>>]
  # Note: don't change the parameters without also changing extrude_square,
  # as they should be using identical file(s) in gold
  [square]
    type = GeneratedMeshGenerator<<<{"description": "Create a line, square, or cube mesh with uniformly spaced or biased elements.", "href": "GeneratedMeshGenerator.html"}>>>
    dim<<<{"description": "The dimension of the mesh to be generated"}>>> = 2
  []
  [extrude_right]
    type = SideSetExtruderGenerator<<<{"description": "Takes a 1D or 2D mesh and extrudes a selected sideset along the specified axis.", "href": "SideSetExtruderGenerator.html"}>>>
    input<<<{"description": "The mesh we want to modify"}>>> = square
    sideset<<<{"description": "The sideset (boundary) that will be extruded"}>>> = 'right'
    extrusion_vector<<<{"description": "The direction and length of the extrusion as a vector"}>>> = '1 0.5 0'
    num_layers<<<{"description": "The number of layers in the extruded mesh"}>>> = 3
  []
[]
(moose/test/tests/meshgenerators/sideset_extruder_generator/extrude_square.i)

The input above should be equivalent to the input shown below.

[Mesh<<<{"href": "../../syntax/Mesh/index.html"}>>>]
  # Note: don't change the parameters without also changing extrude_square,
  # as they should be using identical file(s) in gold
  [square]
    type = GeneratedMeshGenerator<<<{"description": "Create a line, square, or cube mesh with uniformly spaced or biased elements.", "href": "GeneratedMeshGenerator.html"}>>>
    dim<<<{"description": "The dimension of the mesh to be generated"}>>> = 2
  []
  [lowerDblock]
    type = LowerDBlockFromSidesetGenerator<<<{"description": "Adds lower dimensional elements on the specified sidesets.", "href": "LowerDBlockFromSidesetGenerator.html"}>>>
    input<<<{"description": "The mesh we want to modify"}>>> = square
    new_block_name<<<{"description": "The lower dimensional block name to create (optional)"}>>> = "extrusions0"
    sidesets<<<{"description": "The sidesets from which to create the new block"}>>> = "right"
  []
  [separateMesh]
    type = BlockToMeshConverterGenerator<<<{"description": "Converts one or more blocks (subdomains) from a mesh into a stand-alone mesh with a single block in it.", "href": "BlockToMeshConverterGenerator.html"}>>>
    input<<<{"description": "The mesh we want to modify"}>>> = lowerDblock
    target_blocks<<<{"description": "The (list of) blocks (or 'subdomains') we wish to have moved to a new mesh (by name, not ID)"}>>> = extrusions0
  []
  [extrude]
    type = MeshExtruderGenerator<<<{"description": "Takes a 1D or 2D mesh and extrudes the entire structure along the specified axis increasing the dimensionality of the mesh.", "href": "MeshExtruderGenerator.html"}>>>
    input<<<{"description": "the mesh we want to extrude"}>>> = separateMesh
    num_layers<<<{"description": "The number of layers in the extruded mesh"}>>> = 3
    extrusion_vector<<<{"description": "The direction and length of the extrusion"}>>> = '1 0.5 0'
    bottom_sideset<<<{"description": "The boundary that will be applied to the bottom of the extruded mesh"}>>> = 'new_bottom'
    top_sideset<<<{"description": "The boundary that will be to the top of the extruded mesh"}>>> = 'new_top'
  []
  [stitch]
    type = StitchedMeshGenerator<<<{"description": "Allows multiple mesh files to be stitched together to form a single mesh.", "href": "StitchedMeshGenerator.html"}>>>
    inputs<<<{"description": "The input MeshGenerators."}>>> = 'square extrude'
    stitch_boundaries_pairs<<<{"description": "Pairs of boundaries to be stitched together between the 1st mesh in inputs and each consecutive mesh"}>>> = 'right new_bottom'
  []
[]
(moose/test/tests/meshgenerators/sideset_extruder_generator/external_generators.i)

Input Parameters

  • extrusion_vectorThe direction and length of the extrusion as a vector

    C++ Type:libMesh::VectorValue<double>

    Unit:(no unit assumed)

    Controllable:No

    Description:The direction and length of the extrusion as a vector

  • inputThe mesh we want to modify

    C++ Type:MeshGeneratorName

    Controllable:No

    Description:The mesh we want to modify

  • sidesetThe sideset (boundary) that will be extruded

    C++ Type:BoundaryName

    Controllable:No

    Description:The sideset (boundary) that will be extruded

Required Parameters

  • num_layers1The number of layers in the extruded mesh

    Default:1

    C++ Type:unsigned int

    Controllable:No

    Description:The number of layers in the extruded mesh

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