26 template<
class Gt,
class Cb>
34 for (
int i = 0; i < 4; i++)
36 Vertex_handle v = this->vertex(i);
39 tVGI[i] = globalDelaunayVertexIndices.
toGlobal 52 template<
class Gt,
class Cb>
61 template<
class Gt,
class Cb>
73 template<
class Gt,
class Cb>
86 Cb(v0, v1, v2, v3, n0, n1, n2, n3),
94 template<
class Gt,
class Cb>
101 template<
class Gt,
class Cb>
110 template<
class Gt,
class Cb>
113 return reinterpret_cast<const Foam::point&
>(this->circumcenter());
118 template<
class Gt,
class Cb>
121 const typename Gt::Point_3& P = this->circumcenter();
125 CGAL::to_double(P.x()),
126 CGAL::to_double(P.y()),
127 CGAL::to_double(P.z())
134 template<
class Gt,
class Cb>
141 template<
class Gt,
class Cb>
148 template<
class Gt,
class Cb>
155 template<
class Gt,
class Cb>
161 this->vertex(0)->
real()
162 || this->vertex(1)->
real()
163 || this->vertex(2)->
real()
164 || this->vertex(3)->
real()
168 this->vertex(0)->farPoint()
169 || this->vertex(1)->farPoint()
170 || this->vertex(2)->farPoint()
171 || this->vertex(3)->farPoint()
177 template<
class Gt,
class Cb>
182 this->vertex(0)->farPoint()
183 || this->vertex(1)->farPoint()
184 || this->vertex(2)->farPoint()
185 || this->vertex(3)->farPoint()
190 template<
class Gt,
class Cb>
195 this->vertex(0)->referred()
196 || this->vertex(1)->referred()
197 || this->vertex(2)->referred()
198 || this->vertex(3)->referred()
203 template<
class Gt,
class Cb>
208 this->vertex(0)->featurePoint()
209 || this->vertex(1)->featurePoint()
210 || this->vertex(2)->featurePoint()
211 || this->vertex(3)->featurePoint()
216 template<
class Gt,
class Cb>
221 this->vertex(0)->seedPoint()
222 || this->vertex(1)->seedPoint()
223 || this->vertex(2)->seedPoint()
224 || this->vertex(3)->seedPoint()
229 template<
class Gt,
class Cb>
234 this->vertex(0)->internalPoint()
235 || this->vertex(1)->internalPoint()
236 || this->vertex(2)->internalPoint()
237 || this->vertex(3)->internalPoint()
242 template<
class Gt,
class Cb>
247 this->vertex(0)->boundaryPoint()
248 || this->vertex(1)->boundaryPoint()
249 || this->vertex(2)->boundaryPoint()
250 || this->vertex(3)->boundaryPoint()
255 template<
class Gt,
class Cb>
260 this->vertex(0)->constrained()
261 || this->vertex(1)->constrained()
262 || this->vertex(2)->constrained()
263 || this->vertex(3)->constrained()
268 template<
class Gt,
class Cb>
276 this->vertex(0)->referred()
277 || this->vertex(1)->referred()
278 || this->vertex(2)->referred()
279 || this->vertex(3)->referred()
283 this->vertex(0)->
real()
284 || this->vertex(1)->
real()
285 || this->vertex(2)->
real()
286 || this->vertex(3)->
real()
292 template<
class Gt,
class Cb>
297 for (
int i = 0; i < 4; ++i)
299 if (this->vertex(i)->referred())
301 lowestProc =
min(lowestProc, this->vertex(i)->procIndex());
309 template<
class Gt,
class Cb>
317 = unsortedVertexGlobalIndices(globalDelaunayVertexIndices);
320 for (
int i = 0; i < tVGI.
size(); i++)
322 for (
int j = tVGI.
size() - 1 ; j > i; j--)
324 if (tVGI[j - 1] > tVGI[j])
335 template<
class Gt,
class Cb>
344 = unsortedVertexGlobalIndices(globalDelaunayVertexIndices);
349 for (
int i = 0; i < tVGI.
size(); i++)
351 for (
int j = tVGI.
size() - 1 ; j > i; j--)
353 if (tVGI[j - 1] > tVGI[j])
361 for (
int i = 0; i < 4; i++)
363 tVGI[i] = vertexMap[i];
370 template<
class Gt,
class Cb>
375 this->vertex(0)->internalOrBoundaryPoint()
376 || this->vertex(1)->internalOrBoundaryPoint()
377 || this->vertex(2)->internalOrBoundaryPoint()
378 || this->vertex(3)->internalOrBoundaryPoint()
383 template<
class Gt,
class Cb>
388 this->vertex(0)->internalOrBoundaryPoint()
389 || this->vertex(0)->externalBoundaryPoint()
390 || this->vertex(1)->internalOrBoundaryPoint()
391 || this->vertex(1)->externalBoundaryPoint()
392 || this->vertex(2)->internalOrBoundaryPoint()
393 || this->vertex(2)->externalBoundaryPoint()
394 || this->vertex(3)->internalOrBoundaryPoint()
395 || this->vertex(3)->externalBoundaryPoint()
400 template<
class Gt,
class Cb>
414 this->vertex(0)->internalBoundaryPoint()
415 || this->vertex(1)->internalBoundaryPoint()
416 || this->vertex(2)->internalBoundaryPoint()
417 || this->vertex(3)->internalBoundaryPoint()
420 this->vertex(0)->externalBoundaryPoint()
421 || this->vertex(1)->externalBoundaryPoint()
422 || this->vertex(2)->externalBoundaryPoint()
423 || this->vertex(3)->externalBoundaryPoint()
443 template<
class Gt,
class Cb>
449 this->vertex(0)->internalBaffleSurfacePoint()
450 || this->vertex(1)->internalBaffleSurfacePoint()
451 || this->vertex(2)->internalBaffleSurfacePoint()
452 || this->vertex(3)->internalBaffleSurfacePoint()
455 this->vertex(0)->externalBaffleSurfacePoint()
456 || this->vertex(1)->externalBaffleSurfacePoint()
457 || this->vertex(2)->externalBaffleSurfacePoint()
458 || this->vertex(3)->externalBaffleSurfacePoint()
464 template<
class Gt,
class Cb>
470 this->vertex(0)->internalBaffleEdgePoint()
471 || this->vertex(1)->internalBaffleEdgePoint()
472 || this->vertex(2)->internalBaffleEdgePoint()
473 || this->vertex(3)->internalBaffleEdgePoint()
476 this->vertex(0)->externalBaffleEdgePoint()
477 || this->vertex(1)->externalBaffleEdgePoint()
478 || this->vertex(2)->externalBaffleEdgePoint()
479 || this->vertex(3)->externalBaffleEdgePoint()
485 template<
class Gt,
class Cb>
490 this->vertex(0)->featureEdgePoint()
491 && this->vertex(1)->featureEdgePoint()
492 && this->vertex(2)->featureEdgePoint()
493 && this->vertex(3)->featureEdgePoint()
523 template<
class Gt,
class Cb>
528 this->vertex(0)->featurePoint()
529 && this->vertex(1)->featurePoint()
530 && this->vertex(2)->featurePoint()
531 && this->vertex(3)->featurePoint()
536 template<
class Gt,
class Cb>
549 template<
class Gt,
class Cb>
562 if (v->internalBoundaryPoint())
568 if (v->externalBoundaryPoint())
577 if (nMasters == 2 && nSlaves == 2)
584 vM[0]->
type() == vS[0]->index()
585 && vM[0]->index() == vS[0]->
type()
588 vp0 =
reinterpret_cast<const Foam::point&
>(vM[0]->point())
589 - reinterpret_cast<const Foam::point&>(vS[0]->
point());
594 vM[0]->
type() == vS[1]->index()
595 && vM[0]->index() == vS[1]->type()
598 vp0 =
reinterpret_cast<const Foam::point&
>(vM[0]->point())
599 - reinterpret_cast<const Foam::point&>(vS[1]->
point());
605 vM[1]->
type() == vS[0]->index()
606 && vM[1]->index() == vS[0]->type()
609 vp1 =
reinterpret_cast<const Foam::point&
>(vM[1]->point())
610 - reinterpret_cast<const Foam::point&>(vS[0]->
point());
615 vM[1]->
type() == vS[1]->index()
616 && vM[1]->index() == vS[1]->type()
619 vp1 =
reinterpret_cast<const Foam::point&
>(vM[1]->point())
620 - reinterpret_cast<const Foam::point&>(vS[1]->
point());
639 template<
class Gt,
class Cb>
642 int featureVertex = -1;
643 for (
int i = 0; i < 4; ++i)
645 if (this->vertex(i)->constrained())
653 if (featureVertex != -1)
656 this->vertex(Tds::vertex_triple_index(featureVertex, 0));
658 this->vertex(Tds::vertex_triple_index(featureVertex, 1));
660 this->vertex(Tds::vertex_triple_index(featureVertex, 2));
662 if (v1->internalBoundaryPoint())
666 v2->externalBoundaryPoint()
667 && v3->externalBoundaryPoint()
673 else if (v2->internalBoundaryPoint())
677 v1->externalBoundaryPoint()
678 && v3->externalBoundaryPoint()
684 else if (v3->internalBoundaryPoint())
688 v1->externalBoundaryPoint()
689 && v2->externalBoundaryPoint()
701 template<
class Gt,
class Cb>
704 int featureVertex = -1;
705 for (
int i = 0; i < 4; ++i)
707 if (this->vertex(i)->constrained())
715 if (featureVertex != -1)
718 this->vertex(Tds::vertex_triple_index(featureVertex, 0));
720 this->vertex(Tds::vertex_triple_index(featureVertex, 1));
722 this->vertex(Tds::vertex_triple_index(featureVertex, 2));
724 if (v1->externalBoundaryPoint())
728 v2->internalBoundaryPoint()
729 && v3->internalBoundaryPoint()
735 else if (v2->externalBoundaryPoint())
739 v1->internalBoundaryPoint()
740 && v3->internalBoundaryPoint()
746 else if (v3->externalBoundaryPoint())
750 v1->internalBoundaryPoint()
751 && v2->internalBoundaryPoint()
bool potentialCoplanarCell() const
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
label toGlobal(const label i) const
From local to global.
bool hasConstrainedPoint() const
CGAL::indexedCell< K > Cb
A 1D vector of objects of type <T> with a fixed size <Size>.
Foam::label & cellIndex()
Cb::Cell_handle Cell_handle
bool featurePointExternalCell() const
static int myProcNo(const label communicator=0)
Number of this process (starting from masterNo() = 0)
Ostream & endl(Ostream &os)
Add newline and flush stream.
Foam::FixedList< Foam::label, 4 > globallyOrderedCellVertices(const Foam::globalIndex &globalDelaunayVertexIndices) const
Using the globalIndex object, return a list of four vertices with.
An indexed form of CGAL::Triangulation_cell_base_3<K> used to keep track of the Delaunay cells (tets)...
bool hasSeedPoint() const
Does the Delaunay cell have a seed point.
labelList identity(const label len)
Create identity map (map[i] == i) of given length.
Cb::Vertex_handle Vertex_handle
bool hasInternalPoint() const
bool featurePointDualVertex() const
A dual vertex on a feature point will result from this Delaunay cell.
Foam::tetCell vertexGlobalIndices(const Foam::globalIndex &globalDelaunayVertexIndices) const
Using the globalIndex object, return a list of four (sorted) global.
bool featureEdgeDualVertex() const
A dual vertex on a feature edge will result from this Delaunay cell.
bool hasFeaturePoint() const
Does the Delaunay cell have a feature point.
Calculates a unique integer (label so might not have enough room - 2G max) for processor + local inde...
bool hasBoundaryPoint() const
bool parallelDualVertex() const
Does the Dual vertex form part of a processor patch.
A tetrahedral cell primitive.
label size() const
Return the number of elements in the FixedList.
bool internalOrBoundaryDualVertex() const
Is the Delaunay cell part of the final dual mesh, i.e. any vertex.
prefixOSstream Pout(cout,"Pout")
bool anyInternalOrBoundaryDualVertex() const
Is the Delaunay cell real or referred (or mixed), i.e. all vertices.
dimensioned< Type > min(const dimensioned< Type > &, const dimensioned< Type > &)
bool boundaryDualVertex() const
A dual vertex on the boundary will result from a Delaunay cell with.
vector point
Point is a vector.
fileName::Type type(const fileName &)
Return the file type: DIRECTORY or FILE.
bool baffleEdgeDualVertex() const
bool nearProcBoundary() const
bool hasReferredPoint() const
Does the Delaunay cell have a referred point.
bool baffleSurfaceDualVertex() const
bool hasFarPoint() const
Does the Delaunay cell have a far point.
Foam::label vertexLowestProc() const
bool featurePointInternalCell() const
bool real() const
Is the Delaunay cell real, i.e. any real vertex.