A tetrahedron primitive. More...
Public Types | |
enum | { nVertices = 4, nEdges = 6 } |
Public Member Functions | |
tetrahedron (const Point &a, const Point &b, const Point &c, const Point &d) | |
Construct from points. More... | |
tetrahedron (const UList< Point > &, const FixedList< label, 4 > &indices) | |
Construct from four points in the list of points. More... | |
tetrahedron (Istream &) | |
Construct from Istream. More... | |
const Point & | a () const |
Return vertices. More... | |
const Point & | b () const |
const Point & | c () const |
const Point & | d () const |
triPointRef | tri (const label facei) const |
Return i-th face. More... | |
vector | Sa () const |
Return face normal. More... | |
vector | Sb () const |
vector | Sc () const |
vector | Sd () const |
Point | centre () const |
Return centre (centroid) More... | |
scalar | mag () const |
Return volume. More... | |
Point | circumCentre () const |
Return circum-centre. More... | |
scalar | circumRadius () const |
Return circum-radius. More... | |
scalar | quality () const |
Return quality: Ratio of tetrahedron and circum-sphere. More... | |
Point | randomPoint (Random &rndGen) const |
Return a random point in the tetrahedron from a. More... | |
Point | barycentricToPoint (const barycentric &bary) const |
Calculate the point from the given barycentric coordinates. More... | |
barycentric | pointToBarycentric (const point &pt) const |
Calculate the barycentric coordinates from the given point. More... | |
scalar | pointToBarycentric (const point &pt, barycentric &bary) const |
Calculate the barycentric coordinates from the given point. More... | |
pointHit | nearestPoint (const point &p) const |
Return nearest point to p on tetrahedron. Is p itself. More... | |
bool | inside (const point &pt) const |
Return true if point is inside tetrahedron. More... | |
pointHit | containmentSphere (const scalar tol) const |
Return (min)containment sphere, i.e. the smallest sphere with. More... | |
void | gradNiSquared (scalarField &buffer) const |
Fill buffer with shape function products. More... | |
void | gradNiDotGradNj (scalarField &buffer) const |
void | gradNiGradNi (tensorField &buffer) const |
void | gradNiGradNj (tensorField &buffer) const |
boundBox | bounds () const |
Calculate the bounding box. More... | |
Friends | |
Istream & | operator>> (Istream &, tetrahedron &) |
Ostream & | operator (Ostream &, const tetrahedron &) |
A tetrahedron primitive.
Ordering of edges needs to be the same for a tetrahedron class, a tetrahedron cell shape model and a tetCell.
Definition at line 61 of file tetrahedron.H.
anonymous enum |
Enumerator | |
---|---|
nVertices | |
nEdges |
Definition at line 93 of file tetrahedron.H.
|
inline |
Construct from points.
Definition at line 34 of file tetrahedronI.H.
|
inline |
Construct from four points in the list of points.
Definition at line 50 of file tetrahedronI.H.
|
inline |
Construct from Istream.
Definition at line 63 of file tetrahedronI.H.
|
inline |
Return vertices.
Definition at line 72 of file tetrahedronI.H.
Referenced by tetOverlapVolume::tetOverlapVolume().
|
inline |
Definition at line 79 of file tetrahedronI.H.
Referenced by tetOverlapVolume::tetOverlapVolume().
|
inline |
Definition at line 86 of file tetrahedronI.H.
Referenced by tetOverlapVolume::tetOverlapVolume().
|
inline |
Definition at line 93 of file tetrahedronI.H.
References tetrahedron< Point, PointRef >::tri().
Referenced by tetOverlapVolume::tetOverlapVolume().
|
inline |
Return i-th face.
Definition at line 101 of file tetrahedronI.H.
References Foam::abort(), Foam::FatalError, and FatalErrorInFunction.
Referenced by tetrahedron< Point, PointRef >::d().
|
inline |
Return face normal.
Definition at line 135 of file tetrahedronI.H.
|
inline |
Definition at line 142 of file tetrahedronI.H.
|
inline |
Definition at line 149 of file tetrahedronI.H.
|
inline |
Definition at line 156 of file tetrahedronI.H.
|
inline |
Return centre (centroid)
Definition at line 163 of file tetrahedronI.H.
|
inline |
Return volume.
Definition at line 170 of file tetrahedronI.H.
Referenced by Dual< Type >::Dual(), Moment< Type >::Moment(), and AveragingMethod< Foam::Vector >::write().
|
inline |
Return circum-centre.
Definition at line 177 of file tetrahedronI.H.
References Foam::constant::physicoChemical::b, Foam::constant::universal::c, lambda(), Foam::mag(), Foam::magSqr(), and Foam::constant::physicoChemical::mu.
|
inline |
Return circum-radius.
Definition at line 204 of file tetrahedronI.H.
References Foam::constant::physicoChemical::b, Foam::constant::universal::c, lambda(), Foam::mag(), Foam::magSqr(), and Foam::constant::physicoChemical::mu.
|
inline |
Return quality: Ratio of tetrahedron and circum-sphere.
volume, scaled so that a regular tetrahedron has a quality of 1
Definition at line 230 of file tetrahedronI.H.
References Foam::mag(), Foam::min(), Foam::pow3(), tetrahedron< Point, PointRef >::randomPoint(), and Foam::sqrt().
Referenced by polyMeshTetDecomposition::minQuality().
|
inline |
Return a random point in the tetrahedron from a.
uniform distribution
Definition at line 244 of file tetrahedronI.H.
References Foam::barycentric01(), and tetrahedron< Point, PointRef >::barycentricToPoint().
Referenced by tetrahedron< Point, PointRef >::quality().
|
inline |
Calculate the point from the given barycentric coordinates.
Definition at line 254 of file tetrahedronI.H.
References tetrahedron< Point, PointRef >::pointToBarycentric().
Referenced by interpolation< Foam::Vector >::interpolate(), and tetrahedron< Point, PointRef >::randomPoint().
|
inline |
Calculate the barycentric coordinates from the given point.
Definition at line 264 of file tetrahedronI.H.
Referenced by tetrahedron< Point, PointRef >::barycentricToPoint(), and cellPointWeight::findTetrahedron().
|
inline |
Calculate the barycentric coordinates from the given point.
Returns the determinant.
Definition at line 276 of file tetrahedronI.H.
References Foam::cmptSum(), Foam::det(), Foam::inv(), Foam::mag(), tetrahedron< Point, PointRef >::nearestPoint(), Vector< Cmpt >::x(), Vector< Cmpt >::y(), and Vector< Cmpt >::z().
|
inline |
Return nearest point to p on tetrahedron. Is p itself.
if inside.
Definition at line 319 of file tetrahedronI.H.
References PointHit< Point >::distance(), p, and PointHit< Point >::rawPoint().
Referenced by cellPointWeight::findTetrahedron(), and tetrahedron< Point, PointRef >::pointToBarycentric().
|
inline |
Return true if point is inside tetrahedron.
Definition at line 413 of file tetrahedronI.H.
References IOstream::check(), Foam::mag(), n, Foam::nl, Istream::readBegin(), Istream::readEnd(), and Foam::Zero.
Referenced by polyMeshTetDecomposition::findTet().
Foam::pointHit containmentSphere | ( | const scalar | tol | ) | const |
Return (min)containment sphere, i.e. the smallest sphere with.
all points inside. Returns pointHit with:
Definition at line 34 of file tetrahedron.C.
References tetrahedron< Point, PointRef >::gradNiSquared(), Foam::magSqr(), PointHit< Point >::rawPoint(), PointHit< Point >::setDistance(), PointHit< Point >::setHit(), PointHit< Point >::setMiss(), PointHit< Point >::setPoint(), and Foam::sqrt().
void gradNiSquared | ( | scalarField & | buffer | ) | const |
Fill buffer with shape function products.
Definition at line 246 of file tetrahedron.C.
References tetrahedron< Point, PointRef >::gradNiDotGradNj(), Foam::mag(), and Foam::magSqr().
Referenced by tetrahedron< Point, PointRef >::containmentSphere().
void gradNiDotGradNj | ( | scalarField & | buffer | ) | const |
Definition at line 267 of file tetrahedron.C.
References tetrahedron< Point, PointRef >::gradNiGradNi(), and Foam::mag().
Referenced by tetrahedron< Point, PointRef >::gradNiSquared().
void gradNiGradNi | ( | tensorField & | buffer | ) | const |
Definition at line 297 of file tetrahedron.C.
References tetrahedron< Point, PointRef >::gradNiGradNj(), Foam::mag(), and Foam::sqr().
Referenced by tetrahedron< Point, PointRef >::gradNiDotGradNj().
void gradNiGradNj | ( | tensorField & | buffer | ) | const |
Definition at line 315 of file tetrahedron.C.
References Foam::mag().
Referenced by tetrahedron< Point, PointRef >::gradNiGradNi().
Foam::boundBox bounds | ( | ) | const |
Calculate the bounding box.
Definition at line 340 of file tetrahedron.C.
References Foam::constant::physicoChemical::b, Foam::constant::universal::c, Foam::max(), and Foam::min().
Referenced by tetOverlapVolume::cellCellOverlapMinDecomp(), and tetOverlapVolume::cellCellOverlapVolumeMinDecomp().
|
friend |
|
friend |