edge Class Reference

An edge is a list of two point labels. The functionality it provides supports the discretisation on a 2-D flat mesh. More...

Inheritance diagram for edge:
[legend]
Collaboration diagram for edge:
[legend]

Classes

struct  Hash
 Deprecated(2021-04) hashing functor. Use hasher() More...
 
struct  hasher
 Hashing functor for edge (commutative) More...
 

Public Member Functions

 edge ()
 Default construct, with invalid point labels (-1) More...
 
 edge (const label from, const label to)
 Construct from two point labels. More...
 
 edge (const labelPair &pair)
 Construct from pair of point labels. More...
 
 edge (const FixedList< label, 2 > &list)
 Construct from list of point labels. More...
 
 edge (const label from, const label to, const bool doSort)
 Construct from two point labels, sorted with first less-than second. More...
 
 edge (const FixedList< label, 2 > &list, const bool doSort)
 Construct from list, sorted with first less-than second. More...
 
 edge (const UList< label > &list, const FixedList< label, 2 > &indices)
 Copy construct from a subset of point labels. More...
 
 edge (Istream &is)
 Construct from Istream. More...
 
label start () const
 Return start (first) vertex label. More...
 
label & start ()
 Return start (first) vertex label. More...
 
label end () const
 Return end (last/second) vertex label. More...
 
label & end ()
 Return end (last/second) vertex label. More...
 
edge reverseEdge () const
 Return reverse edge as copy. More...
 
label minVertex () const
 Return the smallest point label used by the edge. More...
 
label maxVertex () const
 Return the largest point label used by the edge. More...
 
bool valid () const
 Return true if the vertices are unique and non-negative. More...
 
bool found (const label pointLabel) const
 Return true if point label is found in edge. More...
 
label which (const label pointLabel) const
 Return local index (0,1) of point label in edge -1 on failure. More...
 
bool connects (const edge &other) const
 Do the edges share a common vertex index? More...
 
label commonVertex (const edge &other) const
 Return vertex common with other edge or -1 on failure. More...
 
label otherVertex (const label pointLabel) const
 Given the point label for one vertex, return the other one. More...
 
label collapse ()
 
label count () const
 Return the number of unique, valid (non -1) point labels. More...
 
bool empty () const
 Return true if edge has no valid point labels. More...
 
void clear ()
 'Clears' edge by setting both ends to invalid point labels. More...
 
bool insert (const label index)
 Fill any open slot with the index if it did not previously exist. More...
 
template<class InputIterator >
label insert (InputIterator begIter, InputIterator endIter)
 Insert values, using begin/end iterators. More...
 
label insert (std::initializer_list< label > list)
 Fill open slots with the indices if they did not previously exist. More...
 
template<unsigned N>
label insert (const FixedList< label, N > &list)
 Fill open slots with the indices if they did not previously exist. More...
 
label insert (const labelUList &list)
 Fill open slots with the indices if they did not previously exist. More...
 
label erase (const label index)
 Remove an existing index from the edge and set its location to '-1'. More...
 
template<class InputIterator >
label erase (InputIterator begIter, InputIterator endIter)
 Remove values, using begin/end iterators. More...
 
label erase (std::initializer_list< label > list)
 Remove existing indices from the edge and set locations to '-1'. More...
 
template<unsigned N>
label erase (const FixedList< label, N > &list)
 Remove existing indices from the edge and set locations to '-1'. More...
 
label erase (const labelUList &list)
 Remove existing indices from the edge and set locations to '-1'. More...
 
point centre (const UList< point > &pts) const
 Return centre point (centroid) of the edge. More...
 
vector vec (const UList< point > &pts) const
 Return the vector (end - start) More...
 
vector unitVec (const UList< point > &pts) const
 Return the unit vector (end - start) More...
 
scalar mag (const UList< point > &pts) const
 Return scalar magnitude of the edge. More...
 
linePointRef line (const UList< point > &pts) const
 Return edge line. More...
 
label & operator[] (const label i)
 Return edge element. Index should be limited to 0/1. More...
 
const label & operator[] (const label i) const
 Return constant edge element. Index should be limited to 0/1. More...
 
unsigned hash_code (unsigned seed=0) const
 The (commutative) hash value for edge, hashes lower value first. More...
 
template<class InputIterator>
Foam::label insert (InputIterator begIter, InputIterator endIter)
 
template<unsigned N>
Foam::label insert (const FixedList< label, N > &list)
 
template<class InputIterator>
Foam::label erase (InputIterator begIter, InputIterator endIter)
 
template<unsigned N>
Foam::label erase (const FixedList< label, N > &list)
 
- Public Member Functions inherited from Pair< label >
 Pair ()=default
 Default construct. More...
 
 Pair (const label &f, const label &s)
 Copy construct from components. More...
 
 Pair (label &&f, label &&s)
 Move construct from components. More...
 
 Pair (const std::pair< label, label > &vals)
 Copy construct from std::pair. More...
 
 Pair (std::pair< label, label > &&vals)
 Move construct from std::pair. More...
 
 Pair (const FixedList< label, 2 > &list)
 Copy construct FixedList of two items. More...
 
 Pair (const label &f, const label &s, const bool doSort)
 Copy construct, optionally sorted with first less-than second. More...
 
 Pair (const FixedList< label, 2 > &list, const bool doSort)
 Copy construct, optionally sorted with first less-than second. More...
 
 Pair (Istream &is)
 Construct from Istream. More...
 
const label & second () const noexcept
 Return second element, which is also the last element. More...
 
label & second () noexcept
 Return second element, which is also the last element. More...
 
const label & other (const label &a) const
 Return other element. More...
 
bool sorted () const
 True if first() is less-than second() More...
 
void flip ()
 Flip the Pair in-place. More...
 
void sort ()
 Sort so that first() is less-than second() More...
 

Static Public Member Functions

static int compare (const edge &a, const edge &b)
 Compare edges. More...
 
- Static Public Member Functions inherited from Pair< label >
static int compare (const Pair< label > &a, const Pair< label > &b)
 Compare Pairs. More...
 

Static Public Attributes

static const char *const typeName = "edge"
 

Detailed Description

An edge is a list of two point labels. The functionality it provides supports the discretisation on a 2-D flat mesh.

The edge is implemented as a Pair/FixedList of labels. As well as geometrically relevant methods, it also provides methods similar to HashSet for additional convenience. Valid point labels are always non-negative (since they correspond to addressing within the mesh). The value '-1' is used to tag invalid point labels that correspond conceptually to open 'slots', which can be filled with a HashSet-like functionality.

Source files

Definition at line 63 of file edge.H.

Constructor & Destructor Documentation

◆ edge() [1/8]

edge ( )
inline

Default construct, with invalid point labels (-1)

Definition at line 41 of file edgeI.H.

Referenced by cellShape::edge().

Here is the caller graph for this function:

◆ edge() [2/8]

edge ( const label  from,
const label  to 
)
inline

Construct from two point labels.

Definition at line 47 of file edgeI.H.

◆ edge() [3/8]

edge ( const labelPair pair)
inline

Construct from pair of point labels.

Definition at line 53 of file edgeI.H.

◆ edge() [4/8]

edge ( const FixedList< label, 2 > &  list)
inline

Construct from list of point labels.

Definition at line 59 of file edgeI.H.

◆ edge() [5/8]

edge ( const label  from,
const label  to,
const bool  doSort 
)
inline

Construct from two point labels, sorted with first less-than second.

Definition at line 65 of file edgeI.H.

◆ edge() [6/8]

edge ( const FixedList< label, 2 > &  list,
const bool  doSort 
)
inline

Construct from list, sorted with first less-than second.

Definition at line 71 of file edgeI.H.

◆ edge() [7/8]

edge ( const UList< label > &  list,
const FixedList< label, 2 > &  indices 
)
inline

Copy construct from a subset of point labels.

Definition at line 78 of file edgeI.H.

◆ edge() [8/8]

edge ( Istream is)
inline

Construct from Istream.

Definition at line 87 of file edgeI.H.

Member Function Documentation

◆ start() [1/2]

Foam::label start ( ) const
inline

Return start (first) vertex label.

Definition at line 95 of file edgeI.H.

Referenced by cellFeatures::isFeaturePoint(), PrimitivePatch<::Foam::List< labelledTri >, pointField >::meshEdge(), PrimitivePatch<::Foam::List< labelledTri >, pointField >::meshEdges(), slidingInterface::modifyMotionPoints(), line< Point, PointRef >::nearestDist(), Foam::polyMeshZipUpCells(), PatchTools::sortedPointEdges(), and extendedEdgeMesh::sortPointsAndEdges().

Here is the caller graph for this function:

◆ start() [2/2]

Foam::label & start ( )
inline

Return start (first) vertex label.

Definition at line 100 of file edgeI.H.

◆ end() [1/2]

Foam::label end ( ) const
inline

Return end (last/second) vertex label.

Definition at line 106 of file edgeI.H.

Referenced by cellFeatures::isFeaturePoint(), slidingInterface::modifyMotionPoints(), line< Point, PointRef >::nearestDist(), Foam::polyMeshZipUpCells(), PatchTools::sortedPointEdges(), and extendedEdgeMesh::sortPointsAndEdges().

Here is the caller graph for this function:

◆ end() [2/2]

Foam::label & end ( )
inline

Return end (last/second) vertex label.

Definition at line 112 of file edgeI.H.

◆ reverseEdge()

Foam::edge reverseEdge ( ) const
inline

Return reverse edge as copy.

No special handling of negative point labels.

Definition at line 225 of file edgeI.H.

Referenced by hexCell::reverseEdge(), and tetCell::reverseEdge().

Here is the caller graph for this function:

◆ minVertex()

Foam::label minVertex ( ) const
inline

Return the smallest point label used by the edge.

No special handling of negative point labels.

Definition at line 118 of file edgeI.H.

◆ maxVertex()

Foam::label maxVertex ( ) const
inline

Return the largest point label used by the edge.

No special handling of negative point labels.

Definition at line 124 of file edgeI.H.

◆ valid()

bool valid ( ) const
inline

Return true if the vertices are unique and non-negative.

Definition at line 130 of file edgeI.H.

Referenced by multiWorldConnections::addConnectionById(), multiWorldConnections::addConnectionByName(), multiWorldConnections::getCommById(), and multiWorldConnections::getCommByName().

Here is the caller graph for this function:

◆ found()

bool found ( const label  pointLabel) const
inline

Return true if point label is found in edge.

Always false for a negative label.

Definition at line 136 of file edgeI.H.

Referenced by edge::commonVertex(), edge::connects(), intersectedSurface::intersectedSurface(), patchEdgeFaceRegions::updateEdge(), and patchEdgeFaceRegions::updateFace().

Here is the caller graph for this function:

◆ which()

Foam::label which ( const label  pointLabel) const
inline

Return local index (0,1) of point label in edge -1 on failure.

Always return -1 for a negative label.

Definition at line 147 of file edgeI.H.

◆ connects()

bool connects ( const edge other) const
inline

Do the edges share a common vertex index?

Negative point labels never connect.

Definition at line 166 of file edgeI.H.

References edge::found().

Referenced by Foam::calcProximityOfFeatureEdges().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ commonVertex()

Foam::label commonVertex ( const edge other) const
inline

Return vertex common with other edge or -1 on failure.

Negative point labels are never considered common between edges.

Definition at line 172 of file edgeI.H.

References edge::found().

Referenced by removePoints::countPointUsage(), and GTSsurfaceFormat< Face >::read().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ otherVertex()

Foam::label otherVertex ( const label  pointLabel) const
inline

Given the point label for one vertex, return the other one.

No special treatment for negative point labels.

Definition at line 188 of file edgeI.H.

Referenced by removePoints::countPointUsage(), searchableExtrudedCircle::findParametricNearest(), and GTSsurfaceFormat< Face >::read().

Here is the caller graph for this function:

◆ collapse()

Foam::label collapse ( )
inline

'Collapse' edge by marking duplicate point labels as '-1', the lower vertex is retained.

Return the effective size after collapsing.

Definition at line 204 of file edgeI.H.

References n.

◆ count()

Foam::label count ( ) const
inline

Return the number of unique, valid (non -1) point labels.

Similar to a HashTable::size().

Definition at line 238 of file edgeI.H.

References n.

◆ empty()

bool empty ( ) const
inline

Return true if edge has no valid point labels.

Definition at line 254 of file edgeI.H.

◆ clear()

void clear ( )
inline

'Clears' edge by setting both ends to invalid point labels.

Definition at line 231 of file edgeI.H.

◆ insert() [1/7]

bool insert ( const label  index)
inline

Fill any open slot with the index if it did not previously exist.

Returns true on success. A negative label never inserts. Similar to a HashTable::insert().

Definition at line 260 of file edgeI.H.

◆ insert() [2/7]

label insert ( InputIterator  begIter,
InputIterator  endIter 
)
inline

Insert values, using begin/end iterators.

◆ insert() [3/7]

Foam::label insert ( std::initializer_list< label >  list)
inline

Fill open slots with the indices if they did not previously exist.

Returns true on success. Negative labels never insert. Return the number of slots filled. Similar to a HashTable::insert().

Definition at line 315 of file edgeI.H.

References insert().

Here is the call graph for this function:

◆ insert() [4/7]

label insert ( const FixedList< label, N > &  list)
inline

Fill open slots with the indices if they did not previously exist.

Returns true on success. Negative labels never insert. Return the number of slots filled. Similar to a HashTable::insert().

◆ insert() [5/7]

Foam::label insert ( const labelUList list)
inline

Fill open slots with the indices if they did not previously exist.

Returns true on success. Negative labels never insert. Return the number of slots filled. Similar to a HashTable::insert().

Definition at line 328 of file edgeI.H.

References UList< T >::begin(), UList< T >::end(), and insert().

Here is the call graph for this function:

◆ erase() [1/7]

Foam::label erase ( const label  index)
inline

Remove an existing index from the edge and set its location to '-1'.

Returns the number of changes. A negative label never removes. Similar to a HashTable::erase().

Definition at line 334 of file edgeI.H.

References n.

◆ erase() [2/7]

label erase ( InputIterator  begIter,
InputIterator  endIter 
)
inline

Remove values, using begin/end iterators.

◆ erase() [3/7]

Foam::label erase ( std::initializer_list< label >  list)
inline

Remove existing indices from the edge and set locations to '-1'.

Returns the number of changes.

Definition at line 381 of file edgeI.H.

References erase().

Here is the call graph for this function:

◆ erase() [4/7]

label erase ( const FixedList< label, N > &  list)
inline

Remove existing indices from the edge and set locations to '-1'.

Returns the number of changes.

◆ erase() [5/7]

Foam::label erase ( const labelUList list)
inline

Remove existing indices from the edge and set locations to '-1'.

Returns the number of changes.

Definition at line 394 of file edgeI.H.

References UList< T >::begin(), UList< T >::end(), and erase().

Here is the call graph for this function:

◆ centre()

Foam::point centre ( const UList< point > &  pts) const
inline

Return centre point (centroid) of the edge.

No special handling of negative point labels.

Definition at line 402 of file edgeI.H.

References Foam::abort(), Foam::FatalError, and FatalErrorInFunction.

Referenced by surfaceFeatures::nearestEdges().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vec()

Foam::vector vec ( const UList< point > &  pts) const
inline

Return the vector (end - start)

No special handling of negative point labels.

Definition at line 417 of file edgeI.H.

References Foam::abort(), Foam::FatalError, and FatalErrorInFunction.

Referenced by searchableExtrudedCircle::findParametricNearest(), slidingInterface::modifyMotionPoints(), surfaceFeatures::nearestFeatEdge(), extendedEdgeMesh::sortPointsAndEdges(), and cuttingSurfaceBase::walkCellCuts().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ unitVec()

Foam::vector unitVec ( const UList< point > &  pts) const
inline

Return the unit vector (end - start)

No special handling of negative point labels.

Definition at line 432 of file edgeI.H.

References Foam::abort(), Foam::FatalError, FatalErrorInFunction, Foam::mag(), s, and Foam::Zero.

Referenced by cellFeatures::isFeaturePoint().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ mag()

Foam::scalar mag ( const UList< point > &  pts) const
inline

Return scalar magnitude of the edge.

No special handling of negative point labels.

Definition at line 450 of file edgeI.H.

References Foam::mag().

Referenced by face::longestEdge(), and surfaceFeatures::trimFeatures().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ line()

Foam::linePointRef line ( const UList< point > &  pts) const
inline

Return edge line.

No special handling of negative point labels.

Definition at line 456 of file edgeI.H.

References Foam::abort(), Foam::FatalError, and FatalErrorInFunction.

Referenced by slidingInterface::modifyMotionPoints(), and syncTools::syncEdgeList().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ compare()

int compare ( const edge a,
const edge b 
)
inlinestatic

Compare edges.

Returns
  • 0: different
  • +1: identical values and order used
  • -1: identical values, but in different order

Definition at line 33 of file edgeI.H.

References Foam::constant::physicoChemical::b, and Pair< label >::compare().

Referenced by Foam::operator!=(), Foam::operator==(), and syncTools::syncEdgeList().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ operator[]() [1/2]

Foam::label & operator[] ( const label  i)
inline

Return edge element. Index should be limited to 0/1.

Definition at line 473 of file edgeI.H.

References Foam::abort(), Foam::FatalError, and FatalErrorInFunction.

Here is the call graph for this function:

◆ operator[]() [2/2]

const Foam::label & operator[] ( const label  i) const
inline

Return constant edge element. Index should be limited to 0/1.

Definition at line 486 of file edgeI.H.

References Foam::abort(), Foam::FatalError, and FatalErrorInFunction.

Here is the call graph for this function:

◆ hash_code()

unsigned hash_code ( unsigned  seed = 0) const
inline

The (commutative) hash value for edge, hashes lower value first.

Definition at line 288 of file edge.H.

References Pair< label >::second().

Referenced by edge::hasher::operator()().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ insert() [6/7]

Foam::label insert ( InputIterator  begIter,
InputIterator  endIter 
)
inline

Definition at line 293 of file edgeI.H.

References insert().

Here is the call graph for this function:

◆ insert() [7/7]

Foam::label insert ( const FixedList< label, N > &  list)
inline

Definition at line 322 of file edgeI.H.

References FixedList< T, N >::begin(), FixedList< T, N >::end(), and insert().

Here is the call graph for this function:

◆ erase() [6/7]

Foam::label erase ( InputIterator  begIter,
InputIterator  endIter 
)
inline

Definition at line 362 of file edgeI.H.

References erase().

Here is the call graph for this function:

◆ erase() [7/7]

Foam::label erase ( const FixedList< label, N > &  list)
inline

Definition at line 388 of file edgeI.H.

References FixedList< T, N >::begin(), FixedList< T, N >::end(), and erase().

Here is the call graph for this function:

Member Data Documentation

◆ typeName

const char *const typeName = "edge"
static

Definition at line 71 of file edge.H.


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