PolyLineMeshFollowingNodeSetGenerator

Generates a polyline (open ended or looped) of Edge elements by marching along a nodeeset and trying to be as close as possible to the nodes of the nodeset

Using the PolyLineMeshFollowingNodeSetGenerator object from within the Mesh block of the input file will construct an open or closed (looped) one-dimensional manifold of Edge elements.

The polyline is generated iteratively, starting from the "starting_point", taking the first step following the "starting_direction": The following heuristics are implemented for following the nodeset:

  • Sphere-based nodeset centroid search - the current point is moved by "dx" towards the current direction - the local centroid of all nodes in the target nodeset and closer than "search_radius" to the current point is found - the current direction is updated to be from the current point to the centroid - the displacement of the current point is annulled, and replaced by a displacement of magnitude "dx" towards the centroid

  • Ignoring nodes behind, activated with the "ignore_nodes_behind" parameter - only nodes from the nodeset that are also ahead of the current point with the current direction are considered

commentnote

Because of the use of heuristics rather than a global solve, the 1D polyline solution is highly dependent on the parameters chosen. The user should tune these parameters to fit their needs. Notably, the number of edges can be reduced to prevent the polyline from backtracking after having reached the end of the nodeset.

Input Parameters

  • dxApproximate size of the edge elements (before any refinement with num_edges_between_points) and approximate step to advance by to search for the next point in the polyline

    C++ Type:double

    Unit:(no unit assumed)

    Range:dx>0

    Controllable:No

    Description:Approximate size of the edge elements (before any refinement with num_edges_between_points) and approximate step to advance by to search for the next point in the polyline

  • inputThe mesh we get the sideset from

    C++ Type:MeshGeneratorName

    Controllable:No

    Description:The mesh we get the sideset from

  • nodesetNodeset to follow to form the polyline

    C++ Type:BoundaryName

    Controllable:No

    Description:Nodeset to follow to form the polyline

  • search_radiusRadius of the sphere used to find points in the nodeset

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Radius of the sphere used to find points in the nodeset

  • starting_directionStarting value for the direction of the line

    C++ Type:libMesh::Point

    Controllable:No

    Description:Starting value for the direction of the line

  • starting_pointStarting point for the polyline

    C++ Type:libMesh::Point

    Controllable:No

    Description:Starting point for the polyline

Required Parameters

  • end_boundaryendBoundary to assign to (non-looped) polyline end

    Default:end

    C++ Type:BoundaryName

    Controllable:No

    Description:Boundary to assign to (non-looped) polyline end

  • ignore_nodes_behindFalseIgnore nodes in the nodeset that are behind the current point in the polyline

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Ignore nodes in the nodeset that are behind the current point in the polyline

  • line_subdomainlineSubdomain name for the line

    Default:line

    C++ Type:SubdomainName

    Controllable:No

    Description:Subdomain name for the line

  • loopFalseWhether edges should form a closed loop

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether edges should form a closed loop

  • max_edges1000Maximum number of edges. Serves as a stopping criterion

    Default:1000

    C++ Type:unsigned int

    Controllable:No

    Description:Maximum number of edges. Serves as a stopping criterion

  • num_edges_between_points1How many Edge elements to build between each point pair

    Default:1

    C++ Type:unsigned int

    Controllable:No

    Description:How many Edge elements to build between each point pair

  • start_boundarystartBoundary to assign to (non-looped) polyline start

    Default:start

    C++ Type:BoundaryName

    Controllable:No

    Description:Boundary to assign to (non-looped) polyline start

  • verboseFalsewhether to output additional information to console during the line generation

    Default:False

    C++ Type:bool

    Controllable:No

    Description:whether to output additional information to console during the line generation

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