222 CellSizeDelaunay::Finite_vertices_iterator vit =
223 finite_vertices_begin();
224 vit != finite_vertices_end();
228 std::list<Vertex_handle> verts;
229 adjacent_vertices(vit, std::back_inserter(verts));
231 bool removePt =
true;
234 std::list<Vertex_handle>::iterator aVit = verts.begin();
242 mag(avh->targetCellSize() - vit->targetCellSize())
243 /
max(vit->targetCellSize(), 1
e-6);
264 tmp<pointField> tcellCentres(
new pointField(number_of_finite_cells()));
270 CellSizeDelaunay::Finite_cells_iterator
c = finite_cells_begin();
271 c != finite_cells_end();
275 if (
c->hasFarPoint())
285 CGAL::centroid<baseK>
287 c->vertex(0)->point(),
288 c->vertex(1)->point(),
289 c->vertex(2)->point(),
290 c->vertex(3)->point()
294 cellCentres[count++] = centre;
297 cellCentres.resize(count);
307 "refinementTriangulation_"
314 Info<<
"Write refinementTriangulation" <<
endl;
318 CellSizeDelaunay::Finite_edges_iterator
e = finite_edges_begin();
319 e != finite_edges_end();
323 Cell_handle
c =
e->first;
324 Vertex_handle vA =
c->vertex(
e->second);
325 Vertex_handle vB =
c->vertex(
e->third);
328 if (vA->farPoint() || vB->farPoint())
334 if (vA->referred() && vB->referred())
347 Info<<
" Triangulation is valid" <<
endl;
352 <<
"Triangulation is not valid"
368 defaultCellSize_(0.0)
370 if (this->vertexCount())
384 if (
mesh.nPoints() == this->vertexCount())
406 mesh.time().timeName(),
415 if (alignments.size() == this->vertexCount())
419 Finite_vertices_iterator vit = finite_vertices_begin();
420 vit != finite_vertices_end();
424 vit->targetCellSize() = sizes[vit->index()];
425 vit->alignment() = alignments[vit->index()];
431 <<
"Cell alignments point field " << alignments.size()
432 <<
" is not the same size as the number of vertices"
433 <<
" in the mesh " << this->vertexCount()
461 if (dimension() > 2 && !is_infinite(ch))
467 topoint(ch->vertex(0)->point()),
468 topoint(ch->vertex(1)->point()),
469 topoint(ch->vertex(2)->point()),
470 topoint(ch->vertex(3)->point())
473 tet.barycentric(pt, bary);
480 DynamicList<Foam::point> pts(number_of_vertices());
484 Finite_vertices_iterator vit = finite_vertices_begin();
485 vit != finite_vertices_end();
491 pts.append(
topoint(vit->point()));
503 const backgroundMeshDecomposition& decomposition
506 DynamicList<Foam::point>
points(number_of_vertices());
507 DynamicList<scalar> sizes(number_of_vertices());
508 DynamicList<tensor> alignments(number_of_vertices());
510 DynamicList<Vb> farPts(8);
514 Finite_vertices_iterator vit = finite_vertices_begin();
515 vit != finite_vertices_end();
522 sizes.append(vit->targetCellSize());
523 alignments.append(vit->alignment());
525 else if (vit->farPoint())
538 farPts.last().targetCellSize() = vit->targetCellSize();
539 farPts.last().alignment() = vit->alignment();
543 autoPtr<mapDistribute> mapDist =
550 mapDist().distribute(sizes);
551 mapDist().distribute(alignments);
558 DynamicList<Vb> verticesToInsert(
points.size());
563 verticesToInsert.append(farPts[ptI]);
569 verticesToInsert.append
580 verticesToInsert.last().targetCellSize() = sizes[pI];
581 verticesToInsert.last().alignment() = alignments[pI];
584 Info<<
nl <<
" Inserting distributed background tessellation..." <<
endl;
586 this->rangeInsertWithInfo
588 verticesToInsert.begin(),
589 verticesToInsert.end(),
593 sync(decomposition.procBounds());
595 Info<<
" Total number of vertices after redistribution "
607 Finite_vertices_iterator vit = finite_vertices_begin();
608 vit != finite_vertices_end();
612 alignmentsTmp[count++] = vit->alignment();
615 return alignmentsTmp;
621 Info<<
"Writing " << meshSubDir <<
endl;
627 Finite_cells_iterator cit = finite_cells_begin();
628 cit != finite_cells_end();
632 if (!cit->hasFarPoint() && !is_infinite(cit))
634 cit->cellIndex() = cellCount++;
683 Finite_vertices_iterator vit = finite_vertices_begin();
684 vit != finite_vertices_end();
688 if (!vit->farPoint())
691 sizes[vertexMap[
labelPair(vit->index(), vit->procIndex())]] =
692 vit->targetCellSize();
694 alignments[vertexMap[
labelPair(vit->index(), vit->procIndex())]] =
731 const autoPtr<backgroundMeshDecomposition>& decomposition
736 scalar cellCount = 0;
740 Finite_cells_iterator cit = finite_cells_begin();
741 cit != finite_cells_end();
745 if (!cit->hasFarPoint() && !is_infinite(cit))
748 CGAL::Tetrahedron_3<baseK> tet
750 cit->vertex(0)->point(),
751 cit->vertex(1)->point(),
752 cit->vertex(2)->point(),
753 cit->vertex(3)->point()
761 && !decomposition().positionOnThisProcessor(centre)
767 scalar volume = CGAL::to_double(tet.volume());
769 scalar averagedPointCellSize = 0;
773 for (
label vI = 0; vI < 4; ++vI)
775 averagedPointCellSize += cit->vertex(vI)->targetCellSize();
779 averagedPointCellSize /= 4;
795 cellCount += volume/
pow(averagedPointCellSize, 3);