A class describing an unstructured mesh. This class contains the shared functionality between 1d or 2d meshes.
More...
|
virtual | ~Mesh ()=default |
| Define virtual destructor.
|
|
| Mesh () |
| Default constructor, setting a cartesian projection.
|
|
Mesh & | operator= (const Mesh &mesh)=delete |
| Delete assignment operator.
|
|
Mesh & | operator= (Mesh &&mesh)=delete |
| Delete move assignment operator.
|
|
| Mesh (const Mesh &mesh)=delete |
| Copy constructor taking only a mesh.
|
|
| Mesh (Mesh &&mesh)=delete |
| Move constructor taking only a mesh.
|
|
| Mesh (Projection projection) |
| Constructs an empty mesh, sets only the projection. More...
|
|
| Mesh (const std::vector< Edge > &edges, const std::vector< Point > &nodes, Projection projection) |
| Construct a mesh starting from the edges and nodes. More...
|
|
bool | IsNodeOnBoundary (UInt node) const |
| Inquire if a node is on boundary. More...
|
|
auto | GetNumNodes () const |
| Get the number of valid nodes. More...
|
|
auto | GetNumEdges () const |
| Get the number of valid edges. More...
|
|
auto | GetNumFaces () const |
| Get the number of valid faces. More...
|
|
UInt | GetNumValidNodes () const |
| Get the number of valid nodes. More...
|
|
UInt | GetNumValidEdges () const |
| Get the number of valid edges. More...
|
|
auto | GetNumFaceEdges (UInt faceIndex) const |
| Get the number of edges for a face. More...
|
|
auto | GetNumEdgesFaces (UInt edgeIndex) const |
| Get the number of faces an edges shares. More...
|
|
UInt | GetEdgeIndex (const UInt elementId, const UInt edgeId) const |
| Get the local edge number for an element edge.
|
|
UInt | GetNodeIndex (const UInt elementId, const UInt nodeId) const |
| Get the local node number for an element node.
|
|
bool | IsEdgeOnBoundary (UInt edge) const |
| Inquire if an edge is on boundary. More...
|
|
bool | IsFaceOnBoundary (UInt face) const |
| Inquire if a face is on boundary. More...
|
|
const std::vector< Point > & | Nodes () const |
| Get vector of all nodes.
|
|
const Point & | Node (const UInt index) const |
| Get the node at the position.
|
|
void | SetNodes (const std::vector< Point > &newValues) |
| Set all nodes to a new set of values.
|
|
void | SetNode (const UInt index, const Point &newValue) |
| Set a node to a new value, bypassing the undo action.
|
|
std::unique_ptr< ResetNodeAction > | ResetNode (const UInt index, const Point &newValue) |
| Set the node to a new value, this value may be the in-valid value.
|
|
const std::vector< Edge > & | Edges () const |
| Get all edges.
|
|
const Edge & | GetEdge (const UInt index) const |
| Get constant reference to an edge.
|
|
void | SetEdges (const std::vector< Edge > &newValues) |
| Set all edges to a new set of values.
|
|
void | SetEdge (const UInt index, const Edge &edge) |
| Set the edge to a new value, bypassing the undo action.
|
|
std::unique_ptr< ResetEdgeAction > | ResetEdge (UInt edgeId, const Edge &edge) |
| Change the nodes referenced by the edge.
|
|
UInt | GetLocalFaceNodeIndex (const UInt faceIndex, const UInt nodeIndex) const |
| Get the local index of the node belong to a face. More...
|
|
std::unique_ptr< UndoAction > | MergeTwoNodes (UInt startNode, UInt endNode) |
| Merges two mesh nodes. More...
|
|
std::unique_ptr< UndoAction > | MergeNodesInPolygon (const Polygons &polygons, double mergingDistance) |
| Merge close mesh nodes inside a polygon (MERGENODESINPOLYGON) More...
|
|
std::tuple< UInt, std::unique_ptr< AddNodeAction > > | InsertNode (const Point &newPoint) |
| Insert a new node in the mesh (setnewpoint) More...
|
|
std::tuple< UInt, std::unique_ptr< AddEdgeAction > > | ConnectNodes (UInt startNode, UInt endNode, const bool collectUndo=true) |
| Connect two existing nodes, checking if the nodes are already connected. If the nodes are not connected a new edge is formed, otherwise UInt invalid value is returned. (connectdbn) More...
|
|
std::unique_ptr< DeleteNodeAction > | DeleteNode (UInt node, const bool collectUndo=true) |
| Deletes a node and removes any connected edges. More...
|
|
UInt | FindEdge (UInt firstNodeIndex, UInt secondNodeIndex) const |
| Find the edge sharing two nodes. More...
|
|
UInt | FindEdgeWithLinearSearch (UInt firstNodeIndex, UInt secondNodeIndex) const |
| Find the edge using a linear search, without connectivity information (much slower than FindEdge) More...
|
|
std::unique_ptr< UndoAction > | MoveNode (Point newPoint, UInt nodeindex) |
| Move a node to a new location. More...
|
|
UInt | FindLocationIndex (Point point, Location location, const std::vector< bool > &locationMask={}, const BoundingBox &boundingBox={}) |
| Get the index of a location (node/edge or face) close to a point. More...
|
|
UInt | FindNodeCloseToAPoint (Point const &point, double searchRadius) |
| Get the index of a node close to a point. More...
|
|
std::unique_ptr< DeleteEdgeAction > | DeleteEdge (UInt edge, const bool collectUndo=true) |
| Deletes an edge. More...
|
|
UInt | FindCommonNode (UInt firstEdgeIndex, UInt secondEdgeIndex) const |
| Find the common node two edges share This method uses return parameters since the success is evaluated in a hot loop. More...
|
|
void | ComputeEdgesLengths () |
| Compute the lengths of all edges in one go.
|
|
double | ComputeMinEdgeLength (const Polygons &polygon) const |
| Compute the minimum edge length of the edges included in the polygon. An edge is considered included if one of the two nodes is inside the polygon. More...
|
|
void | ComputeEdgesCenters () |
| Computes the edges centers in one go.
|
|
bool | NodeAdministration () |
| Node administration (setnodadmin) More...
|
|
void | DeleteInvalidNodesAndEdges () |
| Removes all invalid nodes and edges.
|
|
virtual void | Administrate (CompoundUndoAction *undoAction=nullptr) |
| Perform complete administration.
|
|
void | AdministrateNodesEdges (CompoundUndoAction *undoAction=nullptr) |
| Perform node and edges administration.
|
|
void | SortEdgesInCounterClockWiseOrder (UInt startNode, UInt endNode) |
| Sort mesh edges around a node in counterclockwise order (Sort_links_ccw) More...
|
|
double | ComputeMaxLengthSurroundingEdges (UInt node) |
| Compute the max length of the edges connected to a node. More...
|
|
void | BuildTree (Location location, const BoundingBox &boundingBox={}) |
| Build the rtree for the corresponding location, using only the locations inside the bounding box. More...
|
|
std::vector< Point > | ComputeLocations (Location location) const |
| Computes a vector with the mesh locations coordinates (nodes, edges or faces coordinates). More...
|
|
std::vector< bool > | IsLocationInPolygon (const Polygons &polygon, Location location) const |
| Computes if a location is in polygon. More...
|
|
Mesh & | operator+= (Mesh const &rhs) |
| Add meshes: result is a mesh composed of the additions firstMesh += secondmesh results in the second mesh being added to firstMesh. More...
|
|
std::unique_ptr< UndoAction > | Join (const Mesh &rhs) |
| Add meshes: result is a mesh composed of the additions firstMesh += secondmesh results in the second mesh being added to firstMesh. More...
|
|
std::vector< UInt > | GetValidNodeMapping () const |
| Get the mapping/indexing from the node array mapped to valid nodes.
|
|
std::vector< UInt > | GetValidEdgeMapping () const |
| Get the mapping/indexing from the edge array mapped to valid edges.
|
|
bool | IsValidEdge (const UInt edgeId) const |
| Indicate if the edge-id is a valid edge. More...
|
|
void | CommitAction (const ResetNodeAction &undoAction) |
| Apply the reset node action.
|
|
void | CommitAction (const AddNodeAction &undoAction) |
| Apply the add node action.
|
|
void | CommitAction (const AddEdgeAction &undoAction) |
| Apply the add edge action.
|
|
void | CommitAction (const ResetEdgeAction &undoAction) |
| Apply the reset edge action.
|
|
void | CommitAction (const DeleteNodeAction &undoAction) |
| Apply the delete node action.
|
|
void | CommitAction (NodeTranslationAction &undoAction) |
| Apply the node translation action.
|
|
void | CommitAction (MeshConversionAction &undoAction) |
| Apply the node translation action.
|
|
void | CommitAction (const DeleteEdgeAction &undoAction) |
| Apply the delete edge action.
|
|
void | CommitAction (FullUnstructuredGridUndo &undoAction) |
| Set the node and edge values.
|
|
void | RestoreAction (const ResetNodeAction &undoAction) |
| Undo the reset node action. More...
|
|
void | RestoreAction (const AddNodeAction &undoAction) |
| Undo the add node action. More...
|
|
void | RestoreAction (const AddEdgeAction &undoAction) |
| Undo the add edge action. More...
|
|
void | RestoreAction (const ResetEdgeAction &undoAction) |
| Undo the reset edge action. More...
|
|
void | RestoreAction (const DeleteNodeAction &undoAction) |
| Undo the delete node action. More...
|
|
void | RestoreAction (NodeTranslationAction &undoAction) |
| Undo the node translation action. More...
|
|
void | RestoreAction (MeshConversionAction &undoAction) |
| Undo the node translation action. More...
|
|
void | RestoreAction (const DeleteEdgeAction &undoAction) |
| Undo the delete edge action. More...
|
|
void | RestoreAction (FullUnstructuredGridUndo &undoAction) |
| Undo entire node and edge values. More...
|
|
RTreeBase & | GetRTree (Location location) const |
| Get a reference to the RTree for a specific location.
|
|
void | SetNodesRTreeRequiresUpdate (bool value) |
| Set the m_nodesRTreeRequiresUpdate flag. More...
|
|
void | SetEdgesRTreeRequiresUpdate (bool value) |
| Set the m_edgesRTreeRequiresUpdate flag. More...
|
|
void | SetFacesRTreeRequiresUpdate (bool value) |
| Set the m_facesRTreeRequiresUpdate flag. More...
|
|
A class describing an unstructured mesh. This class contains the shared functionality between 1d or 2d meshes.
MeshKernel can handle 2d meshes and 1d meshes. Algorithms require certain mappings to be available for both Mesh1D and Mesh2D, such as a mapping listing all edge indices connected to a particular node. The methods computing these mappings are shared between Mesh2D and Mesh1D, and implemented in the Mesh base class. The Mesh base class also contains other common data members, such as the node coordinate, the edges definitions, the face definitions and the mesh projection. The Mesh base class has the following responsibilities:
- Construct the mesh faces from the nodes and edges and other mesh mappings required by all algorithms (Mesh::FindFaces). Mesh::FindFaces is using recursion to find faces with up to 6 edges (meshkernel::Mesh::m_maximumNumberOfEdgesPerFace).
- Supporting mesh editing, namely:
- Node merging
- Node insertion
- Moving a node
- Inserting edges
- Deleting edges
- Merging nodes (merging two nodes at meshkernel::mergingDistance). This algorithm use an r-tree for inquiring adjacent nodes, see later.
- Converting a curvilinear grid to an unstructured mesh (converting constructor).
- Holding the mesh projection (cartesian, spherical, or spherical accurate).
- Making a quad mesh from a polygon or from parameters.
- Making a triangular mesh from a polygon. This algorithm introduces a dependency on the Richard Shewchuk Triangle.c library, added as an external component in extern/triangle folder.
The public interface of the mesh class contains several algorithms, which modify the mesh class members when they are called.