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 baffleSurfaceDualVertex() 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.
Foam::label vertexLowestProc() const
CGAL::indexedCell< K > Cb
bool parallelDualVertex() const
Does the Dual vertex form part of a processor patch.
A 1D vector of objects of type <T> with a fixed size <Size>.
Foam::label & cellIndex()
Cb::Cell_handle Cell_handle
bool hasFarPoint() const
Does the Delaunay cell have a far point.
bool featurePointInternalCell() const
bool featureEdgeDualVertex() const
A dual vertex on a feature edge will result from this Delaunay cell.
static int myProcNo(const label communicator=0)
Number of this process (starting from masterNo() = 0)
Ostream & endl(Ostream &os)
Add newline and flush stream.
An indexed form of CGAL::Triangulation_cell_base_3<K> used to keep track of the Delaunay cells (tets)...
labelList identity(const label len)
Create identity map (map[i] == i) of given length.
bool baffleEdgeDualVertex() const
bool featurePointExternalCell() const
Cb::Vertex_handle Vertex_handle
Calculates a unique integer (label so might not have enough room - 2G max) for processor + local inde...
bool anyInternalOrBoundaryDualVertex() const
Is the Delaunay cell real or referred (or mixed), i.e. all vertices.
bool hasInternalPoint() const
bool hasConstrainedPoint() const
A tetrahedral cell primitive.
bool hasBoundaryPoint() const
bool hasFeaturePoint() const
Does the Delaunay cell have a feature point.
label size() const
Return the number of elements in the FixedList.
bool nearProcBoundary() const
bool potentialCoplanarCell() const
dimensioned< Type > min(const dimensioned< Type > &, const dimensioned< Type > &)
label toGlobal(const label i) const
From local to global.
bool real() const
Is the Delaunay cell real, i.e. any real vertex.
vector point
Point is a vector.
prefixOSstream Pout(cout, "Pout")
fileType type(const fileName &, const bool checkVariants=true, const bool followLink=true)
Return the file type: directory or file.
Foam::FixedList< Foam::label, 4 > globallyOrderedCellVertices(const Foam::globalIndex &globalDelaunayVertexIndices) const
Using the globalIndex object, return a list of four vertices with.
bool featurePointDualVertex() const
A dual vertex on a feature point will result from this Delaunay cell.
bool hasSeedPoint() const
Does the Delaunay cell have a seed point.
bool hasReferredPoint() const
Does the Delaunay cell have a referred point.
bool internalOrBoundaryDualVertex() const
Is the Delaunay cell part of the final dual mesh, i.e. any vertex.
Foam::tetCell vertexGlobalIndices(const Foam::globalIndex &globalDelaunayVertexIndices) const
Using the globalIndex object, return a list of four (sorted) global.
bool boundaryDualVertex() const
A dual vertex on the boundary will result from a Delaunay cell with.