- inputInput mesh to coarsen
C++ Type:MeshGeneratorName
Controllable:No
Description:Input mesh to coarsen
CoarsenSurfaceMeshAlongSidesetGenerator
Coarsens a 2D-element (TRI3/QUAD4) surface mesh along a sideset by collapsing alternate boundary nodes. The sideset may be internal: elements on both sides of it are coarsened and the sideset itself is preserved. Apply the generator multiple times for additional coarsening.
Overview
This mesh generator coarsens a mesh of 2D elements (TRI3/QUAD4, with any orientation in 3D space) along a sideset, by collapsing every other node lying on the sideset. Collapsing a node merges the pair of elements it was shared between into a single, larger element, while preserving the sideset curve itself.
For an example with triangles, consider three consecutive sideset nodes A, B and C, with two triangles (A, B, P) and (B, C, P) connecting them. Collapsing the middle node B deletes the triangle holding the side A-B and re-points the other triangle, leaving the single triangle (A, C, P) and dropping node B.
The sideset may be internal**, with elements on both sides of it. In that case the merge is performed on the elements of both sides simultaneously, and the sideset is preserved (it now spans the merged element sides).
The sidesets to coarsen along are selected either explicitly with "boundaries", or by coarsening along all the sidesets of the mesh except those listed in "exclude_boundaries". Exactly one of the two must be provided.
A single invocation removes all non-adjacent sideset nodes that meet the criteria outlined below, coarsening the sideset discretization by roughly a factor of two. To coarsen further, either apply the generator multiple times in sequence, or set "coarsen_more_than_two_elements", which repeats the coarsening pass within a single invocation until no further collapse is possible. In that case more than two elements can be merged into one, so it is usually combined with the merge criteria below to bound the amount of coarsening.
A collapse is skipped if it would invert or flatten an element. The collapse can be further restricted, in order to preserve geometric features, with:
"max_normal_deviation": the maximum angle, in degrees, between the normals of the two elements being merged. This prevents merging across a curved region or a feature edge of the surface.
"max_merged_side_length": the maximum length of the side created along the sideset by the merge.
"max_merged_element_area": the maximum area of an element created by the merge.
Only TRI3 and QUAD4 elements are supported, and the input mesh must not be distributed. A QUAD4 that would be deleted by a collapse (one holding the collapsed side) blocks that collapse, since it would require converting the quad to a triangle; quads that are only re-pointed are supported.
Input Parameters
- boundariesThe sideset(s) to coarsen the mesh along
C++ Type:std::vector<BoundaryName>
Controllable:No
Description:The sideset(s) to coarsen the mesh along
- coarsen_more_than_two_elementsFalseWhether to coarsen iteratively in a single invocation so that more than two elements can be merged together. The amount of coarsening is then bounded by the merge criteria
Default:False
C++ Type:bool
Controllable:No
Description:Whether to coarsen iteratively in a single invocation so that more than two elements can be merged together. The amount of coarsening is then bounded by the merge criteria
- exclude_boundariesCoarsen the mesh along all of its sidesets except these. Mutually exclusive with 'boundaries'
C++ Type:std::vector<BoundaryName>
Controllable:No
Description:Coarsen the mesh along all of its sidesets except these. Mutually exclusive with 'boundaries'
- max_merged_element_areaMaximum area of an element created by merging two elements. Merges exceeding it are skipped
C++ Type:Real
Unit:(no unit assumed)
Range:max_merged_element_area > 0
Controllable:No
Description:Maximum area of an element created by merging two elements. Merges exceeding it are skipped
- max_merged_side_lengthMaximum length of the side created along the sideset by merging two elements. Merges exceeding it are skipped
C++ Type:Real
Unit:(no unit assumed)
Range:max_merged_side_length > 0
Controllable:No
Description:Maximum length of the side created along the sideset by merging two elements. Merges exceeding it are skipped
- max_normal_deviationMaximum angle, in degrees, between the normals of the two elements merged together. Merges exceeding it are skipped, which preserves features/corners
C++ Type:Real
Unit:(no unit assumed)
Range:max_normal_deviation >= 0 & max_normal_deviation <= 180
Controllable:No
Description:Maximum angle, in degrees, between the normals of the two elements merged together. Merges exceeding it are skipped, which preserves features/corners
- verboseFalseWhether to make the mesh generator output details of its actions on the console
Default:False
C++ Type:bool
Controllable:No
Description:Whether to make the mesh generator output details of its actions on the console
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)