A face is a list of labels corresponding to mesh vertices. More...
Classes | |
struct | hasher |
Hashing functor for face. More... | |
struct | symmHasher |
Symmetric hashing functor for face. More... | |
Public Types | |
enum | proxType { NONE = 0, POINT, EDGE } |
The proximity classifications. More... | |
![]() | |
typedef SubList< label > | subList |
Declare type of subList. More... | |
Public Member Functions | |
constexpr | face () noexcept=default |
Default construct. More... | |
face (const label sz) | |
Construct given size, with invalid point labels (-1) More... | |
face (const labelUList &list) | |
Copy construct from list of point labels. More... | |
face (labelList &&list) | |
Move construct from list of point labels. More... | |
face (std::initializer_list< label > list) | |
Copy construct from an initializer list of point labels. More... | |
template<unsigned N> | |
face (const FixedList< label, N > &list) | |
Copy construct from list of point labels. More... | |
face (const labelUList &list, const labelUList &indices) | |
Copy construct from subset of point labels. More... | |
template<unsigned N> | |
face (const labelUList &list, const FixedList< label, N > &indices) | |
Copy construct from subset of point labels. More... | |
face (const triFace &f) | |
Copy construct from triFace. More... | |
face (Istream &is) | |
Construct from Istream. More... | |
label | collapse () |
Collapse face by removing duplicate point labels. More... | |
void | flip () |
Flip the face in-place. More... | |
pointField | points (const UList< point > &pts) const |
Return the points corresponding to this face. More... | |
point | centre (const UList< point > &points) const |
Centre point of face. More... | |
template<class Type > | |
Type | average (const UList< point > &meshPoints, const Field< Type > &fld) const |
Calculate average value at centroid of face. More... | |
vector | areaNormal (const UList< point > &p) const |
The area normal - with magnitude equal to area of face. More... | |
vector | unitNormal (const UList< point > &p) const |
The unit normal. More... | |
FOAM_DEPRECATED_FOR (2018-12, "areaNormal() or unitNormal()") vector normal(const UList< point > &p) const | |
Legacy name for areaNormal() More... | |
scalar | mag (const UList< point > &p) const |
Magnitude of face area. More... | |
face | reverseFace () const |
Return face with reverse direction. More... | |
label | which (const label pointLabel) const |
Find local index on face for the point label, same as find() More... | |
label | thisLabel (const label i) const |
label | nextLabel (const label i) const |
Next vertex on face. More... | |
label | prevLabel (const label i) const |
Previous vertex on face. More... | |
scalar | sweptVol (const UList< point > &oldPoints, const UList< point > &newPoints) const |
Return the volume swept out by the face when its points move. More... | |
tensor | inertia (const UList< point > &p, const point &refPt=vector::zero, scalar density=1.0) const |
pointHit | ray (const point &p, const vector &n, const UList< point > &meshPoints, const intersection::algorithm alg=intersection::FULL_RAY, const intersection::direction dir=intersection::VECTOR) const |
pointHit | intersection (const point &p, const vector &q, const point &ctr, const UList< point > &meshPoints, const intersection::algorithm alg, const scalar tol=0.0) const |
Fast intersection with a ray. More... | |
pointHit | nearestPoint (const point &p, const UList< point > &meshPoints) const |
Return nearest point to face. More... | |
pointHit | nearestPointClassify (const point &p, const UList< point > &meshPoints, label &nearType, label &nearLabel) const |
Return nearest point to face and classify it: More... | |
int | sign (const point &p, const UList< point > &points, const scalar tol=SMALL) const |
scalar | contactSphereDiameter (const point &p, const vector &n, const UList< point > &meshPoints) const |
Return contact sphere diameter. More... | |
scalar | areaInContact (const UList< point > &meshPoints, const scalarField &v) const |
Return area in contact, given the displacement in vertices. More... | |
label | nEdges () const noexcept |
Return number of edges. More... | |
Foam::edge | edge (const label edgei) const |
Return i-th face edge (forward walk order). More... | |
vector | edge (const label edgei, const UList< point > &pts) const |
Return vector of i-th face edge (forward walk order). More... | |
Foam::edge | rcEdge (const label edgei) const |
Return i-th face edge in reverse walk order. More... | |
vector | rcEdge (const label edgei, const UList< point > &pts) const |
Return vector of i-th face edge in reverse walk order. More... | |
edgeList | edges () const |
Return list of edges in forward walk order. More... | |
edgeList | rcEdges () const |
Return list of edges in reverse walk order. More... | |
int | edgeDirection (const Foam::edge &e) const |
Test the edge direction on the face. More... | |
label | longestEdge (const UList< point > &pts) const |
Find the longest edge on a face. More... | |
label | nTriangles () const |
Number of triangles after splitting. More... | |
label | nTriangles (const UList< point > &unused) const |
Number of triangles after splitting. More... | |
label | triangles (const UList< point > &points, label &triI, faceList &triFaces) const |
Split into triangles using existing points. More... | |
template<int SizeMin> | |
label | triangles (const UList< point > &points, DynamicList< face, SizeMin > &triFaces) const |
Split into triangles using existing points. More... | |
label | nTrianglesQuads (const UList< point > &points, label &nTris, label &nQuads) const |
Number of triangles and quads after splitting. More... | |
label | trianglesQuads (const UList< point > &points, label &triI, label &quadI, faceList &triFaces, faceList &quadFaces) const |
Split into triangles and quads. More... | |
unsigned | hash_code (unsigned seed=0) const |
The hash value for face. More... | |
unsigned | symmhash_code (unsigned seed=0) const |
The symmetric hash value for face. More... | |
Foam::edge | faceEdge (label edgei) const |
Identical to edge() More... | |
template<int SizeMin> | |
Foam::label | triangles (const UList< point > &points, DynamicList< face, SizeMin > &triFaces) const |
![]() | |
constexpr | List () noexcept |
Default construct. More... | |
List (const label len) | |
Construct with given size. More... | |
List (const label len, const label &val) | |
Construct with given size and value for all elements. More... | |
List (const label len, const Foam::zero) | |
Construct with given size initializing all elements to zero. More... | |
List (const Foam::one, const label &val) | |
Construct with length=1, copying the value as the only content. More... | |
List (const Foam::one, label &&val) | |
Construct with length=1, moving the value as the only content. More... | |
List (const Foam::one, const Foam::zero) | |
Construct with length=1, initializing content to zero. More... | |
List (const List< label > &a) | |
Copy construct from list. More... | |
List (const UList< label > &a) | |
Copy construct contents from list. More... | |
List (List< label > &a, bool reuse) | |
Construct as copy or re-use as specified. More... | |
List (const UList< label > &list, const labelUList &indices) | |
Copy construct subset of list. More... | |
List (const UList< label > &list, const FixedList< label, N > &indices) | |
Copy construct subset of list. More... | |
List (const FixedList< label, N > &list) | |
Construct as copy of FixedList<T, N> More... | |
List (const PtrList< label > &list) | |
Construct as copy of PtrList<T> More... | |
List (const SLList< label > &list) | |
Construct as copy of SLList<T> More... | |
List (const IndirectListBase< label, Addr > &list) | |
Construct as copy of IndirectList contents. More... | |
List (std::initializer_list< label > list) | |
Construct from an initializer list. More... | |
List (List< label > &&list) | |
Move construct from List. More... | |
List (DynamicList< label, SizeMin > &&list) | |
Move construct from DynamicList. More... | |
List (SortableList< label > &&list) | |
Move construct from SortableList. More... | |
List (SLList< label > &&list) | |
Move construct from SLList. More... | |
List (Istream &is) | |
Construct from Istream. More... | |
autoPtr< List< label > > | clone () const |
Clone. More... | |
~List () | |
Destructor. More... | |
void | clear () |
Clear the list, i.e. set size to zero. More... | |
void | resize (const label len) |
Adjust allocated size of list. More... | |
void | resize (const label len, const label &val) |
Adjust allocated size of list and set val for new elements. More... | |
void | resize (const label newLen) |
void | resize_nocopy (const label len) |
Adjust allocated size of list without necessarily. More... | |
void | setSize (const label n) |
Alias for resize() More... | |
void | setSize (const label n, const label &val) |
Alias for resize() More... | |
void | append (const label &val) |
Append an element at the end of the list. More... | |
void | append (label &&val) |
Move append an element at the end of the list. More... | |
void | append (const UList< label > &list) |
Append a List to the end of this list. More... | |
void | append (const IndirectListBase< label, Addr > &list) |
Append IndirectList contents at the end of this list. More... | |
label | appendUniq (const label &val) |
Append an element if not already in the list. More... | |
void | transfer (List< label > &list) |
void | transfer (DynamicList< label, SizeMin > &list) |
void | transfer (SortableList< label > &list) |
label & | newElmt (const label i) |
void | operator= (const UList< label > &a) |
Assignment to UList operator. Takes linear time. More... | |
void | operator= (const List< label > &list) |
Assignment operator. Takes linear time. More... | |
void | operator= (const SLList< label > &list) |
Assignment to SLList operator. Takes linear time. More... | |
void | operator= (const IndirectListBase< label, Addr > &list) |
Assignment from IndirectList. Takes linear time. More... | |
void | operator= (const FixedList< label, N > &list) |
Copy assignment from FixedList. More... | |
void | operator= (std::initializer_list< label > list) |
Assignment to an initializer list. More... | |
void | operator= (const label &val) |
Assignment of all entries to the given value. More... | |
void | operator= (const Foam::zero) |
Assignment of all entries to zero. More... | |
void | operator= (List< label > &&list) |
Move assignment. Takes constant time. More... | |
void | operator= (DynamicList< label, SizeMin > &&list) |
Move assignment. Takes constant time. More... | |
void | operator= (SortableList< label > &&list) |
Move assignment. Takes constant time. More... | |
void | operator= (SLList< label > &&list) |
Move assignment. Takes constant time. More... | |
Istream & | readList (Istream &is) |
Read List from Istream, discarding contents of existing List. More... | |
Istream & | readList (Istream &is) |
Istream & | readList (Istream &is) |
void | shallowCopy (const UList< label > &)=delete |
No shallowCopy permitted. More... | |
std::enable_if< std::is_same< bool, TypeT >::value, bool >::type | set (const label i, bool val=true) |
A bitSet::set() method for a list of bool. More... | |
Static Public Member Functions | |
static int | compare (const face &a, const face &b) |
Compare faces. More... | |
static bool | sameVertices (const face &a, const face &b) |
Return true if the faces have the same vertices. More... | |
static unsigned | symmhash_code (const UList< label > &f, unsigned seed=0) |
The symmetric hash value for face. More... | |
![]() | |
static const List< label > & | null () |
Return a null List. More... | |
Static Public Attributes | |
static const char *const | typeName = "face" |
enum proxType |
|
constexprdefaultnoexcept |
|
inlineexplicit |
|
inlineexplicit |
|
inlineexplicit |
|
inline |
|
inline |
Foam::label collapse | ( | ) |
void flip | ( | ) |
Flip the face in-place.
The starting points of the original and flipped face are identical.
Definition at line 500 of file face.C.
References n.
Referenced by createShellMesh::setRefinement().
|
inline |
Return the points corresponding to this face.
Definition at line 87 of file faceI.H.
References p.
Referenced by sensitivitySurface::addGeometricSens(), deltaBoundary::cellCenters_d(), NURBS3DVolume::computeControlPointSensitivities(), Bezier::dndbBasedSensitivities(), NURBS3DVolume::dndbBasedSensitivities(), Bezier::dxdbFace(), sensitivitySurfacePoints::finalisePointSensitivities(), NURBS3DVolume::patchDxDbFace(), and advancingFrontAMI::writeIntersectionOBJ().
Foam::point centre | ( | const UList< point > & | points | ) | const |
Centre point of face.
Definition at line 514 of file face.C.
References Foam::mag(), nPoints, points, and Foam::Zero.
Calculate average value at centroid of face.
Definition at line 53 of file faceTemplates.C.
References fld, Foam::mag(), nPoints, and Foam::Zero.
Foam::vector areaNormal | ( | const UList< point > & | p | ) | const |
|
inline |
The unit normal.
Definition at line 104 of file faceI.H.
References Foam::mag(), n, p, s, and Foam::Zero.
|
inline |
Legacy name for areaNormal()
Magnitude of face area.
Definition at line 112 of file faceI.H.
References Foam::mag(), and p.
Referenced by polyPatch::areaFraction(), face::areaInContact(), and cyclicACMIFvPatch::movePoints().
Foam::face reverseFace | ( | ) | const |
Return face with reverse direction.
The starting points of the original and reverse face are identical.
Definition at line 636 of file face.C.
References UList< T >::size().
Referenced by polyMeshAdder::add().
|
inline |
Find local index on face for the point label, same as find()
Definition at line 163 of file faceI.H.
References Foam::ListOps::find().
|
inline |
The vertex on face - identical to operator[], but with naming similar to nextLabel(), prevLabel()
|
inline |
Next vertex on face.
Definition at line 175 of file faceI.H.
Referenced by combineFaces::getOutsideFace(), boundaryCutter::setRefinement(), and tetDecomposer::setRefinement().
|
inline |
Previous vertex on face.
Definition at line 181 of file faceI.H.
Referenced by tetDecomposer::setRefinement().
Return the volume swept out by the face when its points move.
Definition at line 659 of file face.C.
References nPoints, and Foam::constant::mathematical::pi().
Foam::tensor inertia | ( | const UList< point > & | p, |
const point & | refPt = vector::zero , |
||
scalar | density = 1.0 |
||
) | const |
Return the inertia tensor, with optional reference point and density specification
Definition at line 738 of file face.C.
References forAll, p, and Foam::Zero.
Foam::pointHit ray | ( | const point & | p, |
const vector & | n, | ||
const UList< point > & | meshPoints, | ||
const intersection::algorithm | alg = intersection::FULL_RAY , |
||
const intersection::direction | dir = intersection::VECTOR |
||
) | const |
Return potential intersection with face with a ray starting at p, direction n (does not need to be normalized)
Does face-centre decomposition and returns triangle intersection point closest to p. Face-centre is calculated from point average. For a hit, the distance is signed. Positive number represents the point in front of triangle In case of miss the point is the nearest point on the face and the distance is the distance between the intersection point and the original point. The half-ray or full-ray intersection and the contact sphere adjustment of the projection vector is set by the intersection parameters
Definition at line 36 of file faceIntersection.C.
References Foam::average(), PointHit< PointType >::distance(), PointHit< PointType >::eligibleMiss(), f(), PointHit< PointType >::hit(), PointHit< PointType >::hitPoint(), Foam::mag(), PointHit< PointType >::missPoint(), n, nPoints, p, points, PointHit< PointType >::setDistance(), PointHit< PointType >::setHit(), PointHit< PointType >::setMiss(), and PointHit< PointType >::setPoint().
Foam::pointHit intersection | ( | const point & | p, |
const vector & | q, | ||
const point & | ctr, | ||
const UList< point > & | meshPoints, | ||
const intersection::algorithm | alg, | ||
const scalar | tol = 0.0 |
||
) | const |
Fast intersection with a ray.
Does face-centre decomposition and returns triangle intersection point closest to p. See triangle::intersection for details.
Definition at line 142 of file faceIntersection.C.
References PointHit< PointType >::distance(), f(), forAll, PointHit< PointType >::hit(), PointHit< PointType >::hitPoint(), Foam::mag(), p, PointHit< PointType >::setDistance(), PointHit< PointType >::setHit(), and PointHit< PointType >::setPoint().
Foam::pointHit nearestPoint | ( | const point & | p, |
const UList< point > & | meshPoints | ||
) | const |
Foam::pointHit nearestPointClassify | ( | const point & | p, |
const UList< point > & | meshPoints, | ||
label & | nearType, | ||
label & | nearLabel | ||
) | const |
Return nearest point to face and classify it:
+ near point (nearType=POINT, nearLabel=0, 1, 2) + near edge (nearType=EDGE, nearLabel=0, 1, 2) Note: edges are counted from starting vertex so e.g. edge n is from f[n] to f[0], where the face has n + 1 points
Definition at line 214 of file faceIntersection.C.
References PointHit< PointType >::distance(), f(), PointHit< PointType >::hit(), PointHit< PointType >::hitPoint(), Foam::mag(), PointHit< PointType >::missPoint(), triangle< Point, PointRef >::nearestPointClassify(), nPoints, p, PointHit< PointType >::setDistance(), PointHit< PointType >::setHit(), PointHit< PointType >::setMiss(), and PointHit< PointType >::setPoint().
The sign for the side of the face plane the point is on, using three evenly distributed face points for the estimated normal.
Uses the supplied tolerance for rounding around zero.
Definition at line 315 of file faceIntersection.C.
Foam::scalar contactSphereDiameter | ( | const point & | p, |
const vector & | n, | ||
const UList< point > & | meshPoints | ||
) | const |
Return contact sphere diameter.
Definition at line 36 of file faceContactSphere.C.
References Foam::mag(), n, and p.
Foam::scalar areaInContact | ( | const UList< point > & | meshPoints, |
const scalarField & | v | ||
) | const |
Return area in contact, given the displacement in vertices.
Definition at line 35 of file faceAreaInContact.C.
References forAll, face::mag(), Foam::mag(), and List< T >::setSize().
|
inlinenoexcept |
|
inline |
Return i-th face edge (forward walk order).
The edge 0 is from [0] to [1] and edge 1 is from [1] to [2]
Definition at line 125 of file faceI.H.
Referenced by Foam::checkFireEdges(), and face::faceEdge().
|
inline |
|
inline |
|
inline |
Foam::edgeList edges | ( | ) | const |
Return list of edges in forward walk order.
The edge 0 is from [0] to [1] and edge 1 is from [1] to [2]
Definition at line 773 of file face.C.
Referenced by Foam::polyMeshZipUpCells().
Foam::edgeList rcEdges | ( | ) | const |
int edgeDirection | ( | const Foam::edge & | e | ) | const |
Test the edge direction on the face.
Definition at line 815 of file face.C.
References Foam::constant::electromagnetic::e, and Foam::ListOps::find().
Find the longest edge on a face.
Definition at line 876 of file face.C.
References edge::mag(), and Foam::mag().
|
inline |
label triangles | ( | const UList< point > & | points, |
DynamicList< face, SizeMin > & | triFaces | ||
) | const |
Split into triangles using existing points.
Append to DynamicList. \Return number of faces created.
Compare faces.
Definition at line 281 of file face.C.
References CirculatorBase::ANTICLOCKWISE, Foam::constant::physicoChemical::b, ConstCirculator< ContainerType >::circulate(), CirculatorBase::CLOCKWISE, ConstCirculator< ContainerType >::setFulcrumToIterator(), and ConstCirculator< ContainerType >::setIteratorToFulcrum().
Referenced by Foam::operator!=(), and Foam::operator==().
Return true if the faces have the same vertices.
Definition at line 382 of file face.C.
References Foam::constant::physicoChemical::b, and forAll.
Referenced by blockFace::compare().
|
static |
The symmetric hash value for face.
Starts with lowest vertex value and walks in the direction of the next lowest value.
Definition at line 422 of file face.C.
References f().
Referenced by face::symmHasher::operator()().
|
inline |
The hash value for face.
Currently hashes as sequential contiguous data, but could/should be commutative
Definition at line 447 of file face.H.
Referenced by face::hasher::operator()().
|
inline |
|
inline |
Identical to edge()
Definition at line 482 of file face.H.
References face::edge().
Foam::label triangles | ( | const UList< point > & | points, |
DynamicList< face, SizeMin > & | triFaces | ||
) | const |
Definition at line 35 of file faceTemplates.C.
References points, DynamicList< T, SizeMin >::setSize(), and split().