- inputThe mesh we want to modify
C++ Type:MeshGeneratorName
Controllable:No
Description:The mesh we want to modify
OrientSurfaceMeshGenerator
Change the orientation of (part of) the surface mesh.
It may occur in surface meshes that a surface element's orientation is flipped because the orientations were not defined carefully. This mesh generator compares the orientation of the elements in the "included_subdomains". If it is opposite the normal/orientation specified in the "normal_to_align_with" parameter, e.g. if the dot product of the two is negative, then the ordering of the nodes in the surface element is changed to flip its normal/orientation.
There are two options for using this mesh generator:
using a input normal/orientation to re-align a mesh or elements from "included_subdomains" directly.
"flooding"/painting/propagating an orientation from selected element IDs onto their neighbors, by adjusting the 'flooding' and other parameters to carefully cover the desired portions of the mesh and changing their normals. An input normal/orientation can still be used though these element's orientation should likely suffice. This option uses the flood algorithm defined in the SurfaceMeshGeneratorBase base class.
Input Parameters
- _using_normalTrue
Default:True
C++ Type:bool
Controllable:No
- element_ids_to_flood_fromIDs of elements to start flooding and changing the subdomains from
C++ Type:std::vector<unsigned long>
Controllable:No
Description:IDs of elements to start flooding and changing the subdomains from
- flood_max_recursion100000Max number of recursions when flooding. Once this number is reached, the propagation is stopped until enough calls have returned
Default:100000
C++ Type:unsigned int
Controllable:No
Description:Max number of recursions when flooding. Once this number is reached, the propagation is stopped until enough calls have returned
- included_subdomainsSubdomain names or ids for the elements that may have their normal modified.
C++ Type:std::vector<SubdomainName>
Controllable:No
Description:Subdomain names or ids for the elements that may have their normal modified.
Optional Parameters
- check_painted_neighbor_normalsFalseWhen examining the normal of a 2D element and comparing to the 'painting' normal, also check if the element neighbors in the 'painted' subdomain have a closer normal and accept the element into the new subdomain if so
Default:False
C++ Type:bool
Controllable:No
Description:When examining the normal of a 2D element and comparing to the 'painting' normal, also check if the element neighbors in the 'painted' subdomain have a closer normal and accept the element into the new subdomain if so
- fixed_normalFalseWhether to move the normal vector as we paint/flood the geometry, or keep it fixed from the first element we started painting with
Default:False
C++ Type:bool
Controllable:No
Description:Whether to move the normal vector as we paint/flood the geometry, or keep it fixed from the first element we started painting with
- normal_to_align_with0 0 0Direction vector that element normals should be pointing in the same direction as (dot product > 0)
Default:0 0 0
C++ Type:libMesh::Point
Controllable:No
Description:Direction vector that element normals should be pointing in the same direction as (dot product > 0)
- normal_tol0.1Surface elements are only added if face_normal.normal_hat >= 1 - normal_tol, where normal_hat = normal/|normal|. The normal can the normal specified by the parameter or by a specific mesh generator.
Default:0.1
C++ Type:double
Unit:(no unit assumed)
Range:normal_tol>=0 & normal_tol<=2
Controllable:No
Description:Surface elements are only added if face_normal.normal_hat >= 1 - normal_tol, where normal_hat = normal/|normal|. The normal can the normal specified by the parameter or by a specific mesh generator.
Flooding Using Surface Element Normals Parameters
- consider_flipped_normalsTrueWhether to allow for surface elements to be considered when their normal is flipped with regard to the neighbor element we are painting from. A specific tolerance may be specified for these flipped normals using the 'flipped_normal_tol'.
Default:True
C++ Type:bool
Controllable:No
Description:Whether to allow for surface elements to be considered when their normal is flipped with regard to the neighbor element we are painting from. A specific tolerance may be specified for these flipped normals using the 'flipped_normal_tol'.
- flipped_normal_tol0.1If 'consider_flipped_normals' is true, surface elements are also added if -1 * face_normal.normal_hat >= 1 - normal_tol, where normal_hat = normal/|normal|
Default:0.1
C++ Type:double
Unit:(no unit assumed)
Range:flipped_normal_tol>=0 & flipped_normal_tol<=2
Controllable:No
Description:If 'consider_flipped_normals' is true, surface elements are also added if -1 * face_normal.normal_hat >= 1 - normal_tol, where normal_hat = normal/|normal|
Flooding Using Surface Element Inverted Normals 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
- flood_elements_onceFalseWhether to consider elements only once when painting/flooding the geometry
Default:False
C++ Type:bool
Controllable:No
Description:Whether to consider elements only once when painting/flooding the geometry
- max_paint_size_centroidsMaximum distance between element centroids (using a vertex average approximation) when painting/flooding the geometry. 0 means not applying a distance constraint, a single value in the vector is applied to all elements, multiple values can be specified for each 'included_subdomains'
C++ Type:std::vector<double>
Unit:(no unit assumed)
Controllable:No
Description:Maximum distance between element centroids (using a vertex average approximation) when painting/flooding the geometry. 0 means not applying a distance constraint, a single value in the vector is applied to all elements, multiple values can be specified for each 'included_subdomains'
Other Flooding 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)