MeshKernel
Public Member Functions | List of all members
meshkernel::Mesh1D Class Referencefinal

A class derived from Mesh, which describes 1d meshes. More...

#include <Mesh1D.hpp>

Inheritance diagram for meshkernel::Mesh1D:
meshkernel::Mesh

Public Member Functions

 ~Mesh1D () override=default
 Default destructor.
 
 Mesh1D ()=default
 Default constructor.
 
 Mesh1D (Projection projection)
 Construct a mesh1d using only the projection. More...
 
 Mesh1D (std::vector< Edge > const &edges, std::vector< Point > const &nodes, Projection projection)
 Construct a mesh1d starting from the edges and nodes. More...
 
 Mesh1D (Network1D &network1d, double minFaceSize)
 Constructs a mesh 1d from a network 1d. The network contains the chainages where the discratization points will be computed. More...
 
bool IsNodeOnBoundary (UInt node) const
 Inquire if a mesh 1d-node is on boundary. More...
 
Point ComputeProjectedNode (UInt node, double distanceFactor) const
 Compute a projected node along a line normal to the edges connected to the node. More...
 
- Public Member Functions inherited from meshkernel::Mesh
virtual ~Mesh ()=default
 Define virtual destructor.
 
 Mesh ()
 Default constructor, setting a cartesian projection.
 
Meshoperator= (const Mesh &mesh)=delete
 Delete assignment operator.
 
Meshoperator= (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 PointNode (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 EdgeGetEdge (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< PointComputeLocations (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...
 
Meshoperator+= (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< UIntGetValidNodeMapping () const
 Get the mapping/indexing from the node array mapped to valid nodes.
 
std::vector< UIntGetValidEdgeMapping () 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...
 

Additional Inherited Members

- Public Types inherited from meshkernel::Mesh
enum  Type { Type::Mesh1D, Type::Mesh2D }
 Enumerator describing the different mesh types. More...
 
- Public Attributes inherited from meshkernel::Mesh
std::vector< std::vector< UInt > > m_nodesEdges
 For each node, the indices of connected edges (nodlin)
 
std::vector< UIntm_nodesNumEdges
 For each node, the number of connected edges (nmk)
 
std::vector< std::vector< UInt > > m_nodesNodes
 For each node, its neighbors.
 
std::vector< int > m_nodesTypes
 The node types (nb)
 
std::vector< std::array< UInt, 2 > > m_edgesFaces
 For each edge, the shared face index (lne)
 
std::vector< UIntm_edgesNumFaces
 For each edge, the number of shared faces(lnn)
 
std::vector< double > m_edgeLengths
 The edge lengths.
 
std::vector< Pointm_edgesCenters
 The edges centers.
 
std::vector< std::vector< UInt > > m_facesNodes
 The nodes composing the faces, in ccw order (netcellNod)
 
std::vector< UIntm_numFacesNodes
 The number of nodes composing the face (netcellN)
 
std::vector< std::vector< UInt > > m_facesEdges
 The edge indices composing the face (netcelllin)
 
std::vector< Pointm_facesCircumcenters
 The face circumcenters the face circumcenter (xz, yz)
 
std::vector< Pointm_facesMassCenters
 The faces centers of mass (xzw, yzw)
 
std::vector< double > m_faceArea
 The face area.
 
Projection m_projection
 The projection used.
 
- Static Public Attributes inherited from meshkernel::Mesh
static constexpr UInt m_maximumNumberOfEdgesPerNode = 16
 Maximum number of edges per node.
 
static constexpr UInt m_maximumNumberOfEdgesPerFace = 6
 Maximum number of edges per face.
 
static constexpr UInt m_maximumNumberOfNodesPerFace = 6
 Maximum number of nodes per face.
 
static constexpr UInt m_maximumNumberOfConnectedNodes = m_maximumNumberOfEdgesPerNode * 4
 Maximum number of connected nodes.
 
- Protected Member Functions inherited from meshkernel::Mesh
bool AdministrationRequired () const
 Determine if a administration is required.
 
void SetAdministrationRequired (const bool value)
 Determine if a administration is required.
 
- Protected Attributes inherited from meshkernel::Mesh
std::vector< Pointm_nodes
 The mesh nodes (xk, yk)
 
std::vector< Edgem_edges
 The edges, defined as first and second node(kn)
 

Detailed Description

A class derived from Mesh, which describes 1d meshes.

A 1d mesh is composed of a series of connected edges representing 1d real word features, such as pipes or a sewage network.

Constructor & Destructor Documentation

◆ Mesh1D() [1/3]

meshkernel::Mesh1D::Mesh1D ( Projection  projection)
explicit

Construct a mesh1d using only the projection.

Parameters
[in]projectionThe projection to use

◆ Mesh1D() [2/3]

meshkernel::Mesh1D::Mesh1D ( std::vector< Edge > const &  edges,
std::vector< Point > const &  nodes,
Projection  projection 
)

Construct a mesh1d starting from the edges and nodes.

Parameters
[in]edgesThe input edges
[in]nodesThe input nodes
[in]projectionThe projection to use

◆ Mesh1D() [3/3]

meshkernel::Mesh1D::Mesh1D ( Network1D network1d,
double  minFaceSize 
)

Constructs a mesh 1d from a network 1d. The network contains the chainages where the discratization points will be computed.

Parameters
[in]network1dThe input network
[in]minFaceSizeThe minimum face size below which two nodes will be merged

Member Function Documentation

◆ ComputeProjectedNode()

Point meshkernel::Mesh1D::ComputeProjectedNode ( UInt  node,
double  distanceFactor 
) const

Compute a projected node along a line normal to the edges connected to the node.

Parameters
node[in] The node
distanceFactor[in] The distance factor
Returns
The projected node

◆ IsNodeOnBoundary()

bool meshkernel::Mesh1D::IsNodeOnBoundary ( UInt  node) const
inline

Inquire if a mesh 1d-node is on boundary.

Parameters
[in]nodeThe node index
Returns
If the node is on boundary

The documentation for this class was generated from the following file: