46 Foam::isoSurface::adaptPatchFields
73 auto& sliceFld = tslice.ref();
79 auto& sliceFldBf = sliceFld.boundaryFieldRef();
87 isA<emptyPolyPatch>(pp)
88 && pp.size() != sliceFldBf[patchi].size()
92 sliceFldBf.set(patchi,
nullptr);
100 mesh.boundary()[patchi],
108 mesh.boundary()[patchi].patch().faceCells();
117 else if (isA<cyclicPolyPatch>(pp))
121 else if (isA<processorPolyPatch>(pp))
136 collocatedFaces(refCast<const processorPolyPatch>(pp))
141 if (!isCollocated[i])
153 Type Foam::isoSurface::generatePoint
166 const scalar d = s1-s0;
170 const scalar
s = (
iso_-s0)/d;
172 if (hasSnap1 &&
s >= 0.5 &&
s <= 1)
176 else if (hasSnap0 &&
s >= 0.0 &&
s <= 0.5)
182 return s*p1 + (1.0-
s)*
p0;
189 return s*p1 + (1.0-
s)*
p0;
195 void Foam::isoSurface::generateTriPoints
217 DynamicList<Type>& pts
253 generatePoint(s0,
p0,hasSnap0,snapP0,s1,p1,hasSnap1,snapP1)
257 generatePoint(s0,
p0,hasSnap0,snapP0,s2,p2,hasSnap2,snapP2)
261 generatePoint(s0,
p0,hasSnap0,snapP0,s3,p3,hasSnap3,snapP3)
263 if (triIndex == 0x0E)
266 const label sz = pts.size();
267 Swap(pts[sz-2], pts[sz-1]);
277 generatePoint(s1,p1,hasSnap1,snapP1,s0,
p0,hasSnap0,snapP0)
281 generatePoint(s1,p1,hasSnap1,snapP1,s3,p3,hasSnap3,snapP3)
285 generatePoint(s1,p1,hasSnap1,snapP1,s2,p2,hasSnap2,snapP2)
287 if (triIndex == 0x0D)
290 const label sz = pts.size();
291 Swap(pts[sz-2], pts[sz-1]);
300 generatePoint(s0,
p0,hasSnap0,snapP0,s2,p2,hasSnap2,snapP2);
302 generatePoint(s1,p1,hasSnap1,snapP1,s3,p3,hasSnap3,snapP3);
306 generatePoint(s0,
p0,hasSnap0,snapP0,s3,p3,hasSnap3,snapP3)
314 generatePoint(s1,p1,hasSnap1,snapP1,s2,p2,hasSnap2,snapP2)
318 if (triIndex == 0x0C)
321 const label sz = pts.size();
322 Swap(pts[sz-5], pts[sz-4]);
323 Swap(pts[sz-2], pts[sz-1]);
333 generatePoint(s2,p2,hasSnap2,snapP2,s0,
p0,hasSnap0,snapP0)
337 generatePoint(s2,p2,hasSnap2,snapP2,s1,p1,hasSnap1,snapP1)
341 generatePoint(s2,p2,hasSnap2,snapP2,s3,p3,hasSnap3,snapP3)
344 if (triIndex == 0x0B)
347 const label sz = pts.size();
348 Swap(pts[sz-2], pts[sz-1]);
357 generatePoint(s0,
p0,hasSnap0,snapP0,s1,p1,hasSnap1,snapP1);
359 generatePoint(s2,p2,hasSnap2,snapP2,s3,p3,hasSnap3,snapP3);
365 generatePoint(s0,
p0,hasSnap0,snapP0,s3,p3,hasSnap3,snapP3)
371 generatePoint(s1,p1,hasSnap1,snapP1,s2,p2,hasSnap2,snapP2)
375 if (triIndex == 0x0A)
378 const label sz = pts.size();
379 Swap(pts[sz-5], pts[sz-4]);
380 Swap(pts[sz-2], pts[sz-1]);
389 generatePoint(s0,
p0,hasSnap0,snapP0,s1,p1,hasSnap1,snapP1);
391 generatePoint(s2,p2,hasSnap2,snapP2,s3,p3,hasSnap3,snapP3);
396 generatePoint(s1,p1,hasSnap1,snapP1,s3,p3,hasSnap3,snapP3)
404 generatePoint(s0,
p0,hasSnap0,snapP0,s2,p2,hasSnap2,snapP2)
407 if (triIndex == 0x09)
410 label sz = pts.size();
411 Swap(pts[sz-5], pts[sz-4]);
412 Swap(pts[sz-2], pts[sz-1]);
422 generatePoint(s3,p3,hasSnap3,snapP3,s0,
p0,hasSnap0,snapP0)
426 generatePoint(s3,p3,hasSnap3,snapP3,s2,p2,hasSnap2,snapP2)
430 generatePoint(s3,p3,hasSnap3,snapP3,s1,p1,hasSnap1,snapP1)
433 if (triIndex == 0x07)
436 label sz = pts.size();
437 Swap(pts[sz-2], pts[sz-1]);
446 Foam::label Foam::isoSurface::generateFaceTriPoints
461 const bool hasNeiSnap,
462 const Type& neiSnapPt,
468 label own = mesh_.faceOwner()[facei];
472 const face&
f = mesh_.faces()[facei];
476 label pointi =
f[fp];
477 label nextPointi =
f[
f.fcIndex(fp)];
483 snappedPoint[pointi] != -1,
485 snappedPoint[pointi] != -1
486 ? snappedPoints[snappedPoint[pointi]]
492 snappedPoint[nextPointi] != -1,
494 snappedPoint[nextPointi] != -1
495 ? snappedPoints[snappedPoint[nextPointi]]
501 snappedCc[own] != -1,
504 ? snappedPoints[snappedCc[own]]
519 for (label i = 0; i < nTris; i++)
529 void Foam::isoSurface::generateTriPoints
546 const labelList& own = mesh_.faceOwner();
547 const labelList& nei = mesh_.faceNeighbour();
551 (cVals.size() != mesh_.nCells())
552 || (pVals.size() != mesh_.nPoints())
553 || (cCoords.size() != mesh_.nCells())
554 || (pCoords.size() != mesh_.nPoints())
555 || (snappedCc.size() != mesh_.nCells())
556 || (snappedPoint.size() != mesh_.nPoints())
560 <<
"Incorrect size." <<
endl
561 <<
"mesh: nCells:" << mesh_.nCells()
562 <<
" points:" << mesh_.nPoints() <<
endl
563 <<
"cVals:" << cVals.size() <<
endl
564 <<
"cCoords:" << cCoords.size() <<
endl
565 <<
"snappedCc:" << snappedCc.size() <<
endl
566 <<
"pVals:" << pVals.size() <<
endl
567 <<
"pCoords:" << pCoords.size() <<
endl
568 <<
"snappedPoint:" << snappedPoint.size() <<
endl
576 triMeshCells.
clear();
578 for (label facei = 0; facei < mesh_.nInternalFaces(); ++facei)
580 if (faceCutType_[facei] != NOTCUT)
582 generateFaceTriPoints
597 snappedCc[nei[facei]] != -1,
599 snappedCc[nei[facei]] != -1
600 ? snappedPoints[snappedCc[nei[facei]]]
612 boolList neiSnapped(mesh_.nBoundaryFaces(),
false);
613 List<Type> neiSnappedPoint(neiSnapped.size(), Type(
Zero));
614 for (
const polyPatch& pp :
patches)
618 label facei = pp.start();
621 label bFacei = facei-mesh_.nInternalFaces();
622 label snappedIndex = snappedCc[own[facei]];
624 if (snappedIndex != -1)
626 neiSnapped[bFacei] =
true;
627 neiSnappedPoint[bFacei] = snappedPoints[snappedIndex];
639 const polyPatch& pp =
patches[patchi];
641 if (isA<processorPolyPatch>(pp))
643 const processorPolyPatch& cpp =
644 refCast<const processorPolyPatch>(pp);
646 bitSet isCollocated(collocatedFaces(cpp));
650 label facei = pp.start()+i;
652 if (faceCutType_[facei] != NOTCUT)
656 generateFaceTriPoints
671 neiSnapped[facei-mesh_.nInternalFaces()],
672 neiSnappedPoint[facei-mesh_.nInternalFaces()],
680 generateFaceTriPoints
707 label facei = pp.start();
711 if (faceCutType_[facei] != NOTCUT)
713 generateFaceTriPoints
747 Foam::isoSurface::interpolate
759 auto&
values = tvalues.ref();
768 label mergedPointi = triPointMergeMap[i];
770 if (mergedPointi >= 0)
772 values[mergedPointi] += unmergedValues[i];
773 nValues[mergedPointi]++;
781 values[i] /= scalar(nValues[i]);
789 forAll(interpolatedPoints, i)
791 label pointi = interpolatedPoints[i];
800 values[pointi] = w[j]*unmergedValues[oldPoints[j]];
810 Foam::isoSurface::interpolate
823 >>
c2(adaptPatchFields(cCoords));
832 labelList snappedPoint(mesh_.nPoints(), -1);
855 interpolatedOldPoints_,
856 interpolationWeights_,