- 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
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.
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).
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:
a LowerDBlockFromSidesetGenerator to generate a block from the sideset
a BlockToMeshConverterGenerator to generate a block with the mesh
a MeshExtruderGenerator to extrude the new mesh
a StitchedMeshGenerator to stitch the original mesh and the extruded mesh.
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
- 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)