Help with error message from checkMesh
I'm getting this error when running checkMesh. I have absolutely no idea what it means. Can anyone even give me an inkling as to how you should decipher these error messages?
Create polyMesh for time = 0
Time = 0
internal faces: 107451394
boundary patches: 73
point zones: 0
face zones: 0
cell zones: 0
Overall number of cells of each type:
tet wedges: 0
Boundary definition OK.
#0 Foam::error::printStack(Foam::Ostream&) in "/raid2/gagliard/OpenFOAM/OpenFOAM-1.6/lib/linux64GccDPOpt/libOpenFOAM.so"
#1 Foam::sigSegv::sigSegvHandler(int) in "/raid2/gagliard/OpenFOAM/OpenFOAM-1.6/lib/linux64GccDPOpt/libOpenFOAM.so"
#2 __restore_rt at sigaction.c:0
#3 void Foam::invertManyToMany<Foam::face, Foam::List<int> >(int, Foam::UList<Foam::face> const&, Foam::List<Foam::List<int> >&) in "/raid2/gagliard/OpenFOAM/OpenFOAM-1.6/lib/linux64GccDPOpt/libOpenFOAM.so"
#4 Foam::primitiveMesh::pointFaces() const in "/raid2/gagliard/OpenFOAM/OpenFOAM-1.6/lib/linux64GccDPOpt/libOpenFOAM.so"
#5 Foam::primitiveMesh::checkPoints(bool, Foam::HashSet<int, Foam::Hash<int> >*) const in "/raid2/gagliard/OpenFOAM/OpenFOAM-1.6/lib/linux64GccDPOpt/libOpenFOAM.so"
#6 Foam::checkTopology(Foam::polyMesh const&, bool, bool) in "/raid2/gagliard/OpenFOAM/OpenFOAM-1.6/applications/bin/linux64GccDPOpt/checkMesh"
#7 main in "/raid2/gagliard/OpenFOAM/OpenFOAM-1.6/applications/bin/linux64GccDPOpt/checkMesh"
#8 __libc_start_main in "/lib64/libc.so.6"
#9 _start at /usr/src/packages/BUILD/glibc-2.9/csu/../sysdeps/x86_64/elf/start.S:116
Ok, I've worked through the source.. whilst running checkPoints this line is called:
const labelListList& pf = pointFaces();
where pointFaces() calls and returns the result of:
// Invert faces()
pfPtr_ = new labelListList(nPoints());
invertManyToMany(nPoints(), faces(), *pfPtr_)
which it appears is inverting the faces... can someone tell me why? Could this error then be related to wrongly-orientated face normals? The function declaration for invertManyToMany is:
const label nEdges, // const label nPoints
const UList<InList>& pointEdges, // const UList<InList>& pointFaces
List<OutList>& edges // List<OutList>& points
The reference to edges is apparently general. <= This is a template hence the general reference.
I realise no one has replied to this, but I will persevere. If anything, it'll help me understand what is going on better and maybe help others who may encounter similar problems at a later date.
Ok, from doing some further reading and trying to understand what the routine is doing, I have this so far:
1) It iterates over all the faces and counts the number of times each node is referenced by a face.
2) It then creates a new list of size nPoints() and each index in the list is set to the number of faces expected.
3) It then iterates over all the faces and stores, at each point, which faces use that point.
It is at stage 3 it is crashing out with segmentation fault after progressing about 20% of the way through the faces. So, I'm assuming there is a mismatch between the number of faces using a particular point from Stage 1) and Stage 3). Just have to figure out why that is now!
Problem solved due to an indexing issue. It now runs through checkMesh with some errors, but hopefully renumberMesh will help there.
|All times are GMT -4. The time now is 13:36.|