checkMesh Floating Exception
I get following error using checkMesh
Overall domain bounding box (-1.9e-16 -0.00338 -0.00202402) (0.0039 1.587e-06 0.00015)
Mesh (non-empty, non-wedge) directions (1 1 1)
Mesh (non-empty) directions (1 1 1)
Boundary openness (-2.11307e-16 -9.23555e-17 -2.76505e-17) OK.
Max cell openness = 3.16403e-15 OK.
Max aspect ratio = 166.046 OK.
***Zero or negative face area detected. Minimum area: 0
<<Writing 1 zero area faces to set zeroAreaFaces
Min volume = 7.265e-22. Max volume = 5.9482e-13. Total volume = 1.4099e-08. Cell volumes OK.
Mesh non-orthogonality Max: 159.907 average: 19.5137
*Number of severely non-orthogonal faces: 12217.
***Number of non-orthogonality errors: 204.
<<Writing 12421 non-orthogonal faces to set nonOrthoFaces
***Error in face pyramids: 2 faces are incorrectly oriented.
<<Writing 2 faces with incorrect orientation to set wrongOrientedFaces
#0 Foam::error::printStack(Foam::Ostream&) in "/soft/OpenFOAM/OpenFOAM-1.6/lib/linux64GccDPOpt/libOpenFOAM.so"
#1 Foam::sigFpe::sigFpeHandler(int) in "/soft/OpenFOAM/OpenFOAM-1.6/lib/linux64GccDPOpt/libOpenFOAM.so"
#2 ?? in "/lib/libc.so.6"
#3 Foam::primitiveMesh::checkFaceSkewness(bool, Foam::HashSet<int, Foam::Hash<int> >*) const in "/soft/OpenFOAM/OpenFOAM-1.6/lib/linux64GccDPOpt/libOpenFOAM.so"
#4 Foam::checkGeometry(Foam::polyMesh const&, bool) in "/soft/OpenFOAM/OpenFOAM-1.6/applications/bin/linux64GccDPOpt/checkMesh"
#5 main in "/soft/OpenFOAM/OpenFOAM-1.6/applications/bin/linux64GccDPOpt/checkMesh"
#6 __libc_start_main in "/lib/libc.so.6"
#7 _start at /usr/src/packages/BUILD/glibc-2.9/csu/../sysdeps/x86_64/elf/start.S:116
After removing the zero-area face, checkMesh works. So maybe there's a division by zero at some point, don't know. But I think you guys want to throw an error message and exit cleanly, so possibly this is of interest.
Do you have a testcase? My 1x1x1 simple testcase with a zero-area face (face collapsed to edge) does not give a sigfpe.
Have a look at primitiveMeshCheck.C, in primitiveMesh::checkFaceSkewness. It has got a division by face area when capculating the skewness vector - you need stabilisation on all of them:
// Skewness vector
vector sv =
Cpf - ((fAreas[faceI] & Cpf)/((fAreas[faceI] & d) + SMALL))*d;
vector svHat = sv/(mag(sv) + VSMALL);
// Normalisation distance calculated as the approximate distance
// from the face centre to the edge of the face in the direction of
// the skewness
scalar fd = 0.2*mag(d) + VSMALL;
const face& f = fcs[faceI];
fd = max(fd, mag(svHat & (p[f[pi]] - faceCtrs[faceI])));
// Normalised skewness
scalar skewness = mag(sv)/fd;
Check for SMALL/VSMALL - you need all of them.
my testcase is rather big -- to big to upload I guess (>200MB).
Could you track the problem with Hrvojes hint? If not we have to arrange how I can give you my testcase.
Thanks both. I pushed that fix to 1.6.x.
|All times are GMT -4. The time now is 02:30.|