33 inline Foam::scalar Foam::conformalVoronoiMesh::defaultCellSize()
const
39 inline Foam::scalar Foam::conformalVoronoiMesh::targetCellSize
44 return cellShapeControls().cellSize(pt);
48 inline Foam::scalar Foam::conformalVoronoiMesh::averageAnyCellSize
50 const Vertex_handle& vA,
51 const Vertex_handle& vB
56 (!vA->internalOrBoundaryPoint() || vA->referred())
57 && (!vB->internalOrBoundaryPoint() || vB->referred())
66 targetCellSize(
topoint(vA->point()))
67 *targetCellSize(
topoint(vB->point()))
70 else if (!vB->internalOrBoundaryPoint() || vB->referred())
72 return vA->targetCellSize();
74 else if (!vA->internalOrBoundaryPoint() || vA->referred())
76 return vB->targetCellSize();
83 inline Foam::scalar Foam::conformalVoronoiMesh::averageAnyCellSize
85 const Delaunay::Finite_facets_iterator& fit
94 const Cell_handle
c(fit->first);
95 const label oppositeVertex = fit->second;
97 for (label i = 0; i < 3; i++)
99 Vertex_handle v =
c->vertex(vertex_triple_index(oppositeVertex, i));
101 if (v->internalOrBoundaryPoint() && !v->referred())
104 sizeSum += v->targetCellSize();
115 for (label i = 0; i < 3; i++)
117 Vertex_handle v =
c->vertex(vertex_triple_index(oppositeVertex, i));
119 sizeSum += targetCellSize(
topoint(v->point()));
128 <<
"sizeSum = " << sizeSum
134 return pow(sizeSum, (1.0/nProducts));
143 return targetCellSize(pt)*foamyHexMeshControls().pointPairDistanceCoeff();
153 pointPairDistance(pt)
154 *foamyHexMeshControls().mixedFeaturePointPPDistanceCoeff();
167 *foamyHexMeshControls().featurePointExclusionDistanceCoeff()
181 *foamyHexMeshControls().featureEdgeExclusionDistanceCoeff()
195 *foamyHexMeshControls().surfacePtExclusionDistanceCoeff()
209 *foamyHexMeshControls().surfaceSearchDistanceCoeff()
221 *foamyHexMeshControls().maxSurfaceProtrusionCoeff();
225 inline void Foam::conformalVoronoiMesh::createPointPair
249 vertexCount() + pts.size(),
250 Vb::vtInternalSurface,
260 vertexCount() + pts.size(),
261 Vb::vtExternalSurface,
268 ptPairs_.addPointPair
270 pts[pts.size() - 2].index(),
271 pts[pts.size() - 1].index()
286 inline Foam::point Foam::conformalVoronoiMesh::perturbPoint
296 scalar pert = 1
e-12*defaultCellSize();
298 perturbedPt.x() += pert*(rndGen_.sample01<scalar>() - 0.5);
299 perturbedPt.y() += pert*(rndGen_.sample01<scalar>() - 0.5);
300 perturbedPt.z() += pert*(rndGen_.sample01<scalar>() - 0.5);
306 inline void Foam::conformalVoronoiMesh::createBafflePointPair
322 vertexCount() + pts.size(),
323 Vb::vtInternalSurfaceBaffle,
333 vertexCount() + pts.size(),
334 Vb::vtExternalSurfaceBaffle,
341 ptPairs_.addPointPair
343 pts[pts.size() - 2].index(),
344 pts[pts.size() - 1].index()
350 inline bool Foam::conformalVoronoiMesh::internalPointIsInside
357 !geometryToConformTo_.globalBounds().contains(pt)
358 || !geometryToConformTo_.inside(pt)
368 inline bool Foam::conformalVoronoiMesh::isBoundaryDualFace
370 const Delaunay::Finite_edges_iterator& eit
373 Cell_handle
c = eit->first;
374 Vertex_handle vA =
c->vertex(eit->second);
375 Vertex_handle vB =
c->vertex(eit->third);
399 (vA->internalOrBoundaryPoint() && !vA->referred())
400 || (vB->internalOrBoundaryPoint() && !vB->referred())
403 !vA->internalOrBoundaryPoint()
404 || !vB->internalOrBoundaryPoint()
412 const Delaunay::Finite_edges_iterator& eit
415 Cell_circulator ccStart = incident_cells(*eit);
416 Cell_circulator cc1 = ccStart;
417 Cell_circulator cc2 = cc1;
423 DynamicList<bool> tmpFaceBoundaryPoints;
427 label cc1I = cc1->cellIndex();
429 label cc2I = cc2->cellIndex();
433 if (cc1->boundaryDualVertex())
435 tmpFaceBoundaryPoints.append(
true);
439 tmpFaceBoundaryPoints.append(
false);
447 }
while (cc1 != ccStart);
449 return tmpFaceBoundaryPoints;
455 const Delaunay::Finite_facets_iterator& fit
458 DynamicList<label> procsAttached(8);
460 const Cell_handle
c1(fit->first);
461 const label oppositeVertex = fit->second;
462 const Cell_handle
c2(
c1->neighbor(oppositeVertex));
470 if (!procsAttached.found(c1Procs[aPI]))
472 procsAttached.append(c1Procs[aPI]);
475 if (!procsAttached.found(c2Procs[aPI]))
477 procsAttached.append(c2Procs[aPI]);
481 return List<label>(procsAttached);
485 inline bool Foam::conformalVoronoiMesh::isParallelDualEdge
487 const Delaunay::Finite_facets_iterator& fit
490 const Cell_handle
c1(fit->first);
491 const label oppositeVertex = fit->second;
495 c1->vertex(vertex_triple_index(oppositeVertex, 0))->referred()
496 ||
c1->vertex(vertex_triple_index(oppositeVertex, 1))->referred()
497 ||
c1->vertex(vertex_triple_index(oppositeVertex, 2))->referred()
502 inline bool Foam::conformalVoronoiMesh::isProcBoundaryEdge
504 const Delaunay::Finite_edges_iterator& eit
507 bool isProcBoundaryEdge =
false;
509 Cell_handle
c = eit->first;
510 Vertex_handle vA =
c->vertex(eit->second);
511 Vertex_handle vB =
c->vertex(eit->third);
516 (vA->referred() && !vB->referred())
517 || (vB->referred() && !vA->referred())
519 && vA->internalOrBoundaryPoint()
520 && vB->internalOrBoundaryPoint()
523 isProcBoundaryEdge =
true;
526 return isProcBoundaryEdge;
554 return geometryToConformTo_;
564 <<
"The backgroundMeshDecomposition cannot be asked for in serial."
568 return *decomposition_;
575 return cellShapeControl_;
582 return foamyHexMeshControls_;