ENH: Disabling face centre tet decomposition quality checks.

Difficult to achieve both types of decomposition with positive tets
simultaneously in cvMeshes.
This commit is contained in:
graham
2010-09-23 18:24:58 +01:00
parent fef610ae9f
commit 04c60c46d3
2 changed files with 101 additions and 100 deletions

View File

@ -404,54 +404,54 @@ bool Foam::polyMeshTetDecomposition::checkFaceTets
{ {
const face& f = fcs[faceI]; const face& f = fcs[faceI];
forAll(f, fPtI) // forAll(f, fPtI)
{ // {
scalar tetQual = tetPointRef // scalar tetQual = tetPointRef
( // (
p[f[fPtI]], // p[f[fPtI]],
p[f.nextLabel(fPtI)], // p[f.nextLabel(fPtI)],
fc[faceI], // fc[faceI],
cc[own[faceI]] // cc[own[faceI]]
).quality(); // ).quality();
if (tetQual > -tol) // if (tetQual > -tol)
{ // {
if (setPtr) // if (setPtr)
{ // {
setPtr->insert(faceI); // setPtr->insert(faceI);
} // }
nErrorTets++; // nErrorTets++;
break; // no need to check other tets // break; // no need to check other tets
} // }
} // }
if (mesh.isInternalFace(faceI)) if (mesh.isInternalFace(faceI))
{ {
// Create the neighbour tet - it will have positive volume // Create the neighbour tet - it will have positive volume
const face& f = fcs[faceI]; const face& f = fcs[faceI];
forAll(f, fPtI) // forAll(f, fPtI)
{ // {
scalar tetQual = tetPointRef // scalar tetQual = tetPointRef
( // (
p[f[fPtI]], // p[f[fPtI]],
p[f.nextLabel(fPtI)], // p[f.nextLabel(fPtI)],
fc[faceI], // fc[faceI],
cc[nei[faceI]] // cc[nei[faceI]]
).quality(); // ).quality();
if (tetQual < tol) // if (tetQual < tol)
{ // {
if (setPtr) // if (setPtr)
{ // {
setPtr->insert(faceI); // setPtr->insert(faceI);
} // }
nErrorTets++; // nErrorTets++;
break; // break;
} // }
} // }
if (findSharedBasePoint(mesh, faceI, tol, report) == -1) if (findSharedBasePoint(mesh, faceI, tol, report) == -1)
{ {

View File

@ -309,7 +309,6 @@ Foam::scalar Foam::polyMeshGeometry::calcSkewness
} }
// Create the neighbour pyramid - it will have positive volume
bool Foam::polyMeshGeometry::checkFaceTet bool Foam::polyMeshGeometry::checkFaceTet
( (
const polyMesh& mesh, const polyMesh& mesh,
@ -803,48 +802,50 @@ bool Foam::polyMeshGeometry::checkFaceTets
label nErrorTets = 0; label nErrorTets = 0;
// bool tetError = false
forAll(checkFaces, i) forAll(checkFaces, i)
{ {
label faceI = checkFaces[i]; label faceI = checkFaces[i];
// Create the owner pyramid - note: exchange cell and face centre // Create the owner pyramid - note: exchange cell and face centre
// to get positive volume. // to get positive volume.
bool tetError = checkFaceTet // tetError = checkFaceTet
( // (
mesh, // mesh,
report, // report,
minTetQuality, // minTetQuality,
p, // p,
faceI, // faceI,
cellCentres[own[faceI]], // face centre // cellCentres[own[faceI]], // face centre
faceCentres[faceI], // cell centre // faceCentres[faceI], // cell centre
setPtr // setPtr
); // );
if (tetError) // if (tetError)
{ // {
nErrorTets++; // nErrorTets++;
} // }
if (mesh.isInternalFace(faceI)) if (mesh.isInternalFace(faceI))
{ {
// Create the neighbour tets - they will have positive volume // Create the neighbour tets - they will have positive volume
bool tetError = checkFaceTet // tetError = checkFaceTet
( // (
mesh, // mesh,
report, // report,
minTetQuality, // minTetQuality,
p, // p,
faceI, // faceI,
faceCentres[faceI], // face centre // faceCentres[faceI], // face centre
cellCentres[nei[faceI]], // cell centre // cellCentres[nei[faceI]], // cell centre
setPtr // setPtr
); // );
if (tetError) // if (tetError)
{ // {
nErrorTets++; // nErrorTets++;
} // }
if if
( (
@ -920,40 +921,40 @@ bool Foam::polyMeshGeometry::checkFaceTets
label face0 = baffles[i].first(); label face0 = baffles[i].first();
label face1 = baffles[i].second(); label face1 = baffles[i].second();
bool tetError = checkFaceTet // tetError = checkFaceTet
( // (
mesh, // mesh,
report, // report,
minTetQuality, // minTetQuality,
p, // p,
face0, // face0,
cellCentres[own[face0]], // face centre // cellCentres[own[face0]], // face centre
faceCentres[face0], // cell centre // faceCentres[face0], // cell centre
setPtr // setPtr
); // );
if (tetError) // if (tetError)
{ // {
nErrorTets++; // nErrorTets++;
} // }
// Create the neighbour tets - they will have positive volume // // Create the neighbour tets - they will have positive volume
tetError = checkFaceTet // tetError = checkFaceTet
( // (
mesh, // mesh,
report, // report,
minTetQuality, // minTetQuality,
p, // p,
face0, // face0,
faceCentres[face0], // face centre // faceCentres[face0], // face centre
cellCentres[own[face1]], // cell centre // cellCentres[own[face1]], // cell centre
setPtr // setPtr
); // );
if (tetError) // if (tetError)
{ // {
nErrorTets++; // nErrorTets++;
} // }
if if
( (