27 #include "primitiveMesh.H"
31 template<
class tetPo
intsOp>
48 if (tetA.
tet().
mag() < minTetVolume_ || tetB.
tet().
mag() < minTetVolume_)
54 plane pl0(tetB[1], tetB[3], tetB[2]);
62 plane pl1(tetB[0], tetB[2], tetB[3]);
64 for (
label i = 0; i < nCutInside; i++)
75 plane pl2(tetB[0], tetB[3], tetB[1]);
77 for (
label i = 0; i < nInside; i++)
88 plane pl3(tetB[0], tetB[1], tetB[2]);
89 for (
label i = 0; i < nCutInside; i++)
97 template<
class tetsOp>
106 tetsOp& combineTetsOp
109 const cell& cFacesA = meshA.
cells()[cellAI];
112 const cell& cFacesB = meshB.
cells()[cellBI];
117 label faceAI = cFacesA[cFA];
126 bool ownA = (meshA.
faceOwner()[faceAI] == cellAI);
128 label tetBasePtAI = 0;
130 const point& tetBasePtA = meshA.
points()[fA[tetBasePtAI]];
132 for (
label tetPtI = 1; tetPtI < fA.
size() - 1; tetPtI++)
134 label facePtAI = (tetPtI + tetBasePtAI) % fA.
size();
135 label otherFacePtAI = fA.fcIndex(facePtAI);
143 pt1I = fA[otherFacePtAI];
147 pt0I = fA[otherFacePtAI];
163 label faceBI = cFacesB[cFB];
172 bool ownB = (meshB.
faceOwner()[faceBI] == cellBI);
174 label tetBasePtBI = 0;
176 const point& tetBasePtB = meshB.
points()[fB[tetBasePtBI]];
178 for (
label tetPtI = 1; tetPtI < fB.
size() - 1; tetPtI++)
180 label facePtBI = (tetPtI + tetBasePtBI) % fB.
size();
181 label otherFacePtBI = fB.fcIndex(facePtBI);
189 pt1I = fB[otherFacePtBI];
193 pt0I = fB[otherFacePtBI];
209 if (combineTetsOp(tetA, tetB))