Closed richelbilderbeek closed 10 years ago
From http://www.cfd-online.com/Forums/openfoam-meshing-technical/61938-upper-triangular-face-order.html
[...] but I keep having problems failing the "upper triangular order" mesh check.[...]
Simply said upper-triangular order is that the order of faces corresponds to the order of the cells they connect.
- take all (higher numbered) cells connected to a cell.
- sort them according to their cell label
- the faces connecting to those cells should now also be ordered.
Following that advice, I
upperTriangularFace indicates that face 0 is incorrect, where it is the only face in its boundary. How can this be incorrectly ordered?
Here a trace of (1) face index, (2) boundary type, and (3) index of the cell owning the Face:
#Face index - Boundary type - Index of Cell owning the Face
TRACE 's.str()' line 174 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '0: inside: 1'
TRACE 's.str()' line 174 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '1: top: 0'
TRACE 's.str()' line 174 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '2: top: 1'
TRACE 's.str()' line 174 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '3: right: 0'
TRACE 's.str()' line 174 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '4: left: 0'
TRACE 's.str()' line 174 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '5: front: 1'
TRACE 's.str()' line 174 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '6: bottom: 0'
TRACE 's.str()' line 174 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '7: bottom: 1'
TRACE 's.str()' line 174 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '8: back: 1'
Still no success though, according to checkMesh:
/*---------------------------------------------------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.1 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
/* Windows 32 and 64 bit porting by blueCAPE: http://www.bluecape.com.pt *\
| Based on Windows porting (2.0.x v4) by Symscape: http://www.symscape.com |
\*---------------------------------------------------------------------------*/
Build : 2.1-88b2f2ae3a0b
Exec : checkMesh
Date : Apr 15 2014
Time : 13:41:22
Host : "AIRBEAR-W7-I5"
PID : 5668
Case : D:/Projects/Tools/build-ToolTestTriangleMeshConsole-Desktop_Qt_5_1_1_MinGW_32bit-Debug
nProcs : 1
SigFpe : Enabling floating point exception trapping (FOAM_SIGFPE).
fileModificationChecking : Monitoring run-time modified files using timeStampMaster
allowSystemOperations : Allowing user-supplied system call operations
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Create time
Create polyMesh for time = 0
Time = 0
Mesh stats
points: 8
internal points: 0
faces: 9
internal faces: 1
cells: 2
boundary patches: 6
point zones: 0
face zones: 0
cell zones: 0
Overall number of cells of each type:
hexahedra: 0
prisms: 0
wedges: 0
pyramids: 0
tet wedges: 0
tetrahedra: 0
polyhedra: 2
Checking topology...
Boundary definition OK.
Cell to face addressing OK.
Point usage OK.
***Faces not in upper triangular order.
<<Writing 1 unordered faces to set upperTriangularFace
Face vertices OK.
Number of regions: 1 (OK).
Checking patch topology for multiply connected surfaces ...
Patch Faces Points Surface topology
top 2 4 ok (non-closed singly connected)
right 1 4 ok (non-closed singly connected)
left 1 4 ok (non-closed singly connected)
front 1 4 ok (non-closed singly connected)
bottom 2 4 ok (non-closed singly connected)
back 1 4 ok (non-closed singly connected)
Checking geometry...
Overall domain bounding box (-0.92388 -0.92388 1) (0.92388 0.92388 2)
Mesh (non-empty, non-wedge) directions (1 1 1)
Mesh (non-empty) directions (1 1 1)
Boundary openness (0 1.14967e-017 0) OK.
***Open cells found, max cell openness: 1, number of open cells 2
<<Writing 2 non closed cells to set nonClosedCells
Minimum face area = 1. Maximum face area = 2. Face area magnitudes OK.
Min volume = 0.777778. Max volume = 0.777778. Total volume = 1.55556. Cell volumes OK.
Mesh non-orthogonality Max: 180 average: 180
***Number of non-orthogonality errors: 1.
<<Writing 1 non-orthogonal faces to set nonOrthoFaces
***Error in face pyramids: 2 faces are incorrectly oriented.
<<Writing 1 faces with incorrect orientation to set wrongOrientedFaces
Max skewness = 0.404762 OK.
Coupled point location match (average 0) OK.
Failed 4 mesh checks.
End
FoamFile
{
version 2.0;
format ascii;
class faceSet;
location "constant/polyMesh/sets";
object upperTriangularFace;
}
1
(
0
)
FoamFile
{ version 2.0;
format ascii;
class vectorField;
location "constant/polyMesh";
object points;
}
8
(
(-0.92388000000000003 -0.382683 1)
(-0.92388000000000003 -0.382683 2)
(-0.382683 0.92388000000000003 1)
(-0.382683 0.92388000000000003 2)
(0.382683 -0.92388000000000003 1)
(0.382683 -0.92388000000000003 2)
(0.92388000000000003 0.382683 1)
(0.92388000000000003 0.382683 2)
)
FoamFile
{ version 2.0;
format ascii;
class faceList;
location "constant/polyMesh";
object faces;
}
9
(
4(2 4 5 3)
3(5 7 3)
3(3 1 5)
4(2 3 7 6)
4(4 6 7 5)
4(0 4 5 1)
3(2 6 4)
3(4 0 2)
4(0 1 3 2)
)
FoamFile
{
version 2.0;
format ascii;
class polyBoundaryMesh;
location "constant\polyMesh";
object boundary;
}
6
(
top
{
type zeroGradient;
nFaces 2;
startFace 1;
}
right
{
type zeroGradient;
nFaces 1;
startFace 3;
}
left
{
type zeroGradient;
nFaces 1;
startFace 4;
}
front
{
type zeroGradient;
nFaces 1;
startFace 5;
}
bottom
{
type zeroGradient;
nFaces 2;
startFace 6;
}
back
{
type zeroGradient;
nFaces 1;
startFace 8;
}
)
FoamFile
{ version 2.0;
format ascii;
class labelList;
note "nPoints: 8 nCells: 2 nFaces: 9";
location "constant/polyMesh";
object owner;
}
9
(
1
0
1
0
0
1
0
1
1
)
FoamFile
{ version 2.0;
format ascii;
class labelList;
note "nPoints: 8 nCells: 2 nFaces: 9";
location "constant/polyMesh";
object neighbour;
}
9
(
0
-1
-1
-1
-1
-1
-1
-1
-1
)
Hmm, found something similar here: https://github.com/nicolasedh/salomeToOpenFOAM/blob/master/salomeToOpenFOAM.py
#Convert to "upper triangular order"
#owner is sorted, for each cell sort faces it's neighbour faces
# i.e. change
# owner neighbour owner neighbour
# 0 15 0 3
# 0 3 to 0 15
# 0 17 0 17
# 1 5 1 5
# any changes made to neighbour are repeated to faces.
Hmmm, the post above does not apply to my problem, yet I put it in my code :-)
To quote myself:
upperTriangularFace indicates that face 0 is incorrect, where it is the only face in its boundary. How > can this be incorrectly ordered?
I think the problem is that its owner has (cell) index 1 instead of zero
Conformed hypothesis with 60fe526edf04eeccb7fe153e621e8121b10c4027
Still problem with more complex meshes....
Added debug info again
const std::vector<Coordinat2D> shapes {
//ribi::TriangleFile::CreateShapePolygon(4,pi * 0.125, 1.0) //1 cube
//ribi::TriangleFile::CreateShapePolygon(4,pi * 0.125, 0.5), //? cube
ribi::TriangleFile::CreateShapePolygon(3,pi * 0.0 / 6.0, 1.0), //1 prism
ribi::TriangleFile::CreateShapePolygon(3,pi * 0.0 / 6.0, 2.0), //3 prisms
ribi::TriangleFile::CreateShapePolygon(5,pi * 0.0 / 6.0, 4.0)
};
TRACE 'v.size()' line 574 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '76'
'0: inside: 0#0: boundary type: inside, owner index: 0, neighbour index: 8'
'1: inside: 1#1: boundary type: inside, owner index: 1, neighbour index: 2'
'2: inside: 2#2: boundary type: inside, owner index: 2, neighbour index: 17'
'3: inside: 3#3: boundary type: inside, owner index: 3, neighbour index: 18'
'4: inside: 3#4: boundary type: inside, owner index: 3, neighbour index: 17'
'5: inside: 1#5: boundary type: inside, owner index: 1, neighbour index: 18'
'6: inside: 2#6: boundary type: inside, owner index: 2, neighbour index: 16'
'7: inside: 4#7: boundary type: inside, owner index: 4, neighbour index: 5'
'8: inside: 4#8: boundary type: inside, owner index: 4, neighbour index: 16'
'9: inside: 5#9: boundary type: inside, owner index: 5, neighbour index: 1'
'10: inside: 6#10: boundary type: inside, owner index: 6, neighbour index: 7'
'11: inside: 6#11: boundary type: inside, owner index: 6, neighbour index: 17'
'12: inside: 7#12: boundary type: inside, owner index: 7, neighbour index: 16'
'13: inside: 8#13: boundary type: inside, owner index: 8, neighbour index: 19'
'14: inside: 9#14: boundary type: inside, owner index: 9, neighbour index: 19'
'15: inside: 0#15: boundary type: inside, owner index: 0, neighbour index: 3'
'16: inside: 9#16: boundary type: inside, owner index: 9, neighbour index: 18'
'17: inside: 10#17: boundary type: inside, owner index: 10, neighbour index: 11'
'18: inside: 11#18: boundary type: inside, owner index: 11, neighbour index: 15'
'19: inside: 4#19: boundary type: inside, owner index: 4, neighbour index: 15'
'20: inside: 10#20: boundary type: inside, owner index: 10, neighbour index: 5'
'21: inside: 12#21: boundary type: inside, owner index: 12, neighbour index: 14'
'22: inside: 12#22: boundary type: inside, owner index: 12, neighbour index: 20'
'23: inside: 6#23: boundary type: inside, owner index: 6, neighbour index: 20'
'24: inside: 7#24: boundary type: inside, owner index: 7, neighbour index: 14'
'25: inside: 9#25: boundary type: inside, owner index: 9, neighbour index: 10'
'26: inside: 13#26: boundary type: inside, owner index: 13, neighbour index: 15'
'27: inside: 13#27: boundary type: inside, owner index: 13, neighbour index: 14'
'28: inside: 0#28: boundary type: inside, owner index: 0, neighbour index: 20'
'29: top: 14#29: boundary type: top, owner index: 14, neighbour index: [no neighbour]'
'30: top: 15#30: boundary type: top, owner index: 15, neighbour index: [no neighbour]'
'31: top: 2#31: boundary type: top, owner index: 2, neighbour index: [no neighbour]'
'32: top: 16#32: boundary type: top, owner index: 16, neighbour index: [no neighbour]'
'33: top: 17#33: boundary type: top, owner index: 17, neighbour index: [no neighbour]'
'34: top: 18#34: boundary type: top, owner index: 18, neighbour index: [no neighbour]'
'35: top: 1#35: boundary type: top, owner index: 1, neighbour index: [no neighbour]'
'36: top: 13#36: boundary type: top, owner index: 13, neighbour index: [no neighbour]'
'37: top: 11#37: boundary type: top, owner index: 11, neighbour index: [no neighbour]'
'38: top: 3#38: boundary type: top, owner index: 3, neighbour index: [no neighbour]'
'39: top: 5#39: boundary type: top, owner index: 5, neighbour index: [no neighbour]'
'40: top: 19#40: boundary type: top, owner index: 19, neighbour index: [no neighbour]'
'41: top: 10#41: boundary type: top, owner index: 10, neighbour index: [no neighbour]'
'42: top: 20#42: boundary type: top, owner index: 20, neighbour index: [no neighbour]'
'43: top: 8#43: boundary type: top, owner index: 8, neighbour index: [no neighbour]'
'44: top: 4#44: boundary type: top, owner index: 4, neighbour index: [no neighbour]'
'45: top: 0#45: boundary type: top, owner index: 0, neighbour index: [no neighbour]'
'46: top: 12#46: boundary type: top, owner index: 12, neighbour index: [no neighbour]'
'47: top: 7#47: boundary type: top, owner index: 7, neighbour index: [no neighbour]'
'48: top: 9#48: boundary type: top, owner index: 9, neighbour index: [no neighbour]'
'49: top: 6#49: boundary type: top, owner index: 6, neighbour index: [no neighbour]'
'50: right: 13#50: boundary type: right, owner index: 13, neighbour index: [no neighbour]'
'51: right: 11#51: boundary type: right, owner index: 11, neighbour index: [no neighbour]'
'52: left: 19#52: boundary type: left, owner index: 19, neighbour index: [no neighbour]'
'53: front: 8#53: boundary type: front, owner index: 8, neighbour index: [no neighbour]'
'54: bottom: 20#54: boundary type: bottom, owner index: 20, neighbour index: [no neighbour]'
'55: bottom: 8#55: boundary type: bottom, owner index: 8, neighbour index: [no neighbour]'
'56: bottom: 9#56: boundary type: bottom, owner index: 9, neighbour index: [no neighbour]'
'57: bottom: 10#57: boundary type: bottom, owner index: 10, neighbour index: [no neighbour]'
'58: bottom: 4#58: boundary type: bottom, owner index: 4, neighbour index: [no neighbour]'
'59: bottom: 0#59: boundary type: bottom, owner index: 0, neighbour index: [no neighbour]'
'60: bottom: 12#60: boundary type: bottom, owner index: 12, neighbour index: [no neighbour]'
'61: bottom: 7#61: boundary type: bottom, owner index: 7, neighbour index: [no neighbour]'
'62: bottom: 19#62: boundary type: bottom, owner index: 19, neighbour index: [no neighbour]'
'63: bottom: 5#63: boundary type: bottom, owner index: 5, neighbour index: [no neighbour]'
'64: bottom: 3#64: boundary type: bottom, owner index: 3, neighbour index: [no neighbour]'
'65: bottom: 13#65: boundary type: bottom, owner index: 13, neighbour index: [no neighbour]'
'66: bottom: 1#66: boundary type: bottom, owner index: 1, neighbour index: [no neighbour]'
'67: bottom: 11#67: boundary type: bottom, owner index: 11, neighbour index: [no neighbour]'
'68: bottom: 14#68: boundary type: bottom, owner index: 14, neighbour index: [no neighbour]'
'69: bottom: 15#69: boundary type: bottom, owner index: 15, neighbour index: [no neighbour]'
'70: bottom: 2#70: boundary type: bottom, owner index: 2, neighbour index: [no neighbour]'
'71: bottom: 16#71: boundary type: bottom, owner index: 16, neighbour index: [no neighbour]'
'72: bottom: 17#72: boundary type: bottom, owner index: 17, neighbour index: [no neighbour]'
'73: bottom: 18#73: boundary type: bottom, owner index: 18, neighbour index: [no neighbour]'
'74: bottom: 6#74: boundary type: bottom, owner index: 6, neighbour index: [no neighbour]'
'75: back: 12#75: boundary type: back, owner index: 12, neighbour index: [no neighbour]'
/*---------------------------------------------------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.1 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
/* Windows 32 and 64 bit porting by blueCAPE: http://www.bluecape.com.pt *\
| Based on Windows porting (2.0.x v4) by Symscape: http://www.symscape.com |
\*---------------------------------------------------------------------------*/
Build : 2.1-88b2f2ae3a0b
Exec : checkMesh
Date : Apr 15 2014
Time : 15:55:04
Host : "AIRBEAR-W7-I5"
PID : 5980
Case : D:/Projects/Tools/build-ToolTestTriangleMeshConsole-Desktop_Qt_5_1_1_MinGW_32bit-Debug
nProcs : 1
SigFpe : Enabling floating point exception trapping (FOAM_SIGFPE).
fileModificationChecking : Monitoring run-time modified files using timeStampMaster
allowSystemOperations : Allowing user-supplied system call operations
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Create time
Create polyMesh for time = 0
Time = 0
Mesh stats
points: 28
internal points: 0
faces: 76
internal faces: 29
cells: 21
boundary patches: 6
point zones: 0
face zones: 0
cell zones: 0
Overall number of cells of each type:
hexahedra: 0
prisms: 21
wedges: 0
pyramids: 0
tet wedges: 0
tetrahedra: 0
polyhedra: 0
Checking topology...
Boundary definition OK.
Cell to face addressing OK.
Point usage OK.
***Faces not in upper triangular order.
<<Writing 11 unordered faces to set upperTriangularFace
Face vertices OK.
Number of regions: 1 (OK).
Checking patch topology for multiply connected surfaces ...
Patch Faces Points Surface topology
top 21 14 ok (non-closed singly connected)
right 2 6 ok (non-closed singly connected)
left 1 4 ok (non-closed singly connected)
front 1 4 ok (non-closed singly connected)
bottom 21 14 ok (non-closed singly connected)
back 1 4 ok (non-closed singly connected)
Checking geometry...
Overall domain bounding box (-3.80423 -4 1) (3.80423 3.23607 2)
Mesh (non-empty, non-wedge) directions (1 1 1)
Mesh (non-empty) directions (1 1 1)
Boundary openness (-8.91782e-018 0 9.1965e-017) OK.
***Open cells found, max cell openness: 1, number of open cells 3
<<Writing 3 non closed cells to set nonClosedCells
Minimum face area = 0.433013. Maximum face area = 5.25731. Face area magnitudes OK.
Min volume = 0.240563. Max volume = 5.25731. Total volume = 37.1931. Cell volumes OK.
Mesh non-orthogonality Max: 174.01 average: 39.286
***Number of non-orthogonality errors: 2.
<<Writing 2 non-orthogonal faces to set nonOrthoFaces
***Error in face pyramids: 4 faces are incorrectly oriented.
<<Writing 2 faces with incorrect orientation to set wrongOrientedFaces
Max skewness = 0.666667 OK.
Coupled point location match (average 0) OK.
Failed 4 mesh checks.
Hypothesis of algorithm: 1) Partition faces in boundaries 2) For each face, find its owner (a cell), and assign these increasing cell indices 3) Go though all cells by increasing index. For each cell, find the faces it owns, assign an increasing face index 4) Within each boundary, sort the faces by owner index 5) Set the Faces' indices equal to their position in the vector
Still fails:
TRACE 'n_faces' line 245 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '76'
'#0: boundary type: inside, owner index: 0, neighbour index: 3'
'#1: boundary type: inside, owner index: 0, neighbour index: 8'
'#2: boundary type: inside, owner index: 0, neighbour index: 20'
'#3: boundary type: inside, owner index: 1, neighbour index: 2'
'#4: boundary type: inside, owner index: 1, neighbour index: 18'
'#5: boundary type: inside, owner index: 2, neighbour index: 16'
'#6: boundary type: inside, owner index: 2, neighbour index: 17'
'#7: boundary type: inside, owner index: 3, neighbour index: 17'
'#8: boundary type: inside, owner index: 3, neighbour index: 18'
'#9: boundary type: inside, owner index: 4, neighbour index: 5'
'#10: boundary type: inside, owner index: 4, neighbour index: 15'
'#11: boundary type: inside, owner index: 4, neighbour index: 16'
'#12: boundary type: inside, owner index: 5, neighbour index: 1'
'#13: boundary type: inside, owner index: 6, neighbour index: 7'
'#14: boundary type: inside, owner index: 6, neighbour index: 17'
'#15: boundary type: inside, owner index: 6, neighbour index: 20'
'#16: boundary type: inside, owner index: 7, neighbour index: 14'
'#17: boundary type: inside, owner index: 7, neighbour index: 16'
'#18: boundary type: inside, owner index: 8, neighbour index: 19'
'#19: boundary type: inside, owner index: 9, neighbour index: 10'
'#20: boundary type: inside, owner index: 9, neighbour index: 18'
'#21: boundary type: inside, owner index: 9, neighbour index: 19'
'#22: boundary type: inside, owner index: 10, neighbour index: 5'
'#23: boundary type: inside, owner index: 10, neighbour index: 11'
'#24: boundary type: inside, owner index: 11, neighbour index: 15'
'#25: boundary type: inside, owner index: 12, neighbour index: 14'
'#26: boundary type: inside, owner index: 12, neighbour index: 20'
'#27: boundary type: inside, owner index: 13, neighbour index: 14'
'#28: boundary type: inside, owner index: 13, neighbour index: 15'
'#29: boundary type: top, owner index: 0, neighbour index: [no neighbour]'
'#30: boundary type: top, owner index: 1, neighbour index: [no neighbour]'
'#31: boundary type: top, owner index: 2, neighbour index: [no neighbour]'
'#32: boundary type: top, owner index: 3, neighbour index: [no neighbour]'
'#33: boundary type: top, owner index: 4, neighbour index: [no neighbour]'
'#34: boundary type: top, owner index: 5, neighbour index: [no neighbour]'
'#35: boundary type: top, owner index: 6, neighbour index: [no neighbour]'
'#36: boundary type: top, owner index: 7, neighbour index: [no neighbour]'
'#37: boundary type: top, owner index: 8, neighbour index: [no neighbour]'
'#38: boundary type: top, owner index: 9, neighbour index: [no neighbour]'
'#39: boundary type: top, owner index: 10, neighbour index: [no neighbour]'
'#40: boundary type: top, owner index: 11, neighbour index: [no neighbour]'
'#41: boundary type: top, owner index: 12, neighbour index: [no neighbour]'
'#42: boundary type: top, owner index: 13, neighbour index: [no neighbour]'
'#43: boundary type: top, owner index: 14, neighbour index: [no neighbour]'
'#44: boundary type: top, owner index: 15, neighbour index: [no neighbour]'
'#45: boundary type: top, owner index: 16, neighbour index: [no neighbour]'
'#46: boundary type: top, owner index: 17, neighbour index: [no neighbour]'
'#47: boundary type: top, owner index: 18, neighbour index: [no neighbour]'
'#48: boundary type: top, owner index: 19, neighbour index: [no neighbour]'
'#49: boundary type: top, owner index: 20, neighbour index: [no neighbour]'
'#50: boundary type: right, owner index: 11, neighbour index: [no neighbour]'
'#51: boundary type: right, owner index: 13, neighbour index: [no neighbour]'
'#52: boundary type: left, owner index: 19, neighbour index: [no neighbour]'
'#53: boundary type: front, owner index: 8, neighbour index: [no neighbour]'
'#54: boundary type: bottom, owner index: 0, neighbour index: [no neighbour]'
'#55: boundary type: bottom, owner index: 1, neighbour index: [no neighbour]'
'#56: boundary type: bottom, owner index: 2, neighbour index: [no neighbour]'
'#57: boundary type: bottom, owner index: 3, neighbour index: [no neighbour]'
'#58: boundary type: bottom, owner index: 4, neighbour index: [no neighbour]'
'#59: boundary type: bottom, owner index: 5, neighbour index: [no neighbour]'
'#60: boundary type: bottom, owner index: 6, neighbour index: [no neighbour]'
'#61: boundary type: bottom, owner index: 7, neighbour index: [no neighbour]'
'#62: boundary type: bottom, owner index: 8, neighbour index: [no neighbour]'
'#63: boundary type: bottom, owner index: 9, neighbour index: [no neighbour]'
'#64: boundary type: bottom, owner index: 10, neighbour index: [no neighbour]'
'#65: boundary type: bottom, owner index: 11, neighbour index: [no neighbour]'
'#66: boundary type: bottom, owner index: 12, neighbour index: [no neighbour]'
'#67: boundary type: bottom, owner index: 13, neighbour index: [no neighbour]'
'#68: boundary type: bottom, owner index: 14, neighbour index: [no neighbour]'
'#69: boundary type: bottom, owner index: 15, neighbour index: [no neighbour]'
'#70: boundary type: bottom, owner index: 16, neighbour index: [no neighbour]'
'#71: boundary type: bottom, owner index: 17, neighbour index: [no neighbour]'
'#72: boundary type: bottom, owner index: 18, neighbour index: [no neighbour]'
'#73: boundary type: bottom, owner index: 19, neighbour index: [no neighbour]'
'#74: boundary type: bottom, owner index: 20, neighbour index: [no neighbour]'
'#75: boundary type: back, owner index: 12, neighbour index: [no neighbour]'
/*---------------------------------------------------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.1 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
/* Windows 32 and 64 bit porting by blueCAPE: http://www.bluecape.com.pt *\
| Based on Windows porting (2.0.x v4) by Symscape: http://www.symscape.com |
\*---------------------------------------------------------------------------*/
Build : 2.1-88b2f2ae3a0b
Exec : checkMesh
Date : Apr 17 2014
Time : 08:22:28
Host : "AIRBEAR-W7-I5"
PID : 5584
Case : D:/Projects/Tools/build-ToolTestTriangleMeshConsole-Desktop_Qt_5_1_1_MinGW_32bit-Debug
nProcs : 1
SigFpe : Enabling floating point exception trapping (FOAM_SIGFPE).
fileModificationChecking : Monitoring run-time modified files using timeStampMaster
allowSystemOperations : Allowing user-supplied system call operations
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Create time
Create polyMesh for time = 0
Time = 0
Mesh stats
points: 28
internal points: 0
faces: 76
internal faces: 29
cells: 21
boundary patches: 6
point zones: 0
face zones: 0
cell zones: 0
Overall number of cells of each type:
hexahedra: 0
prisms: 21
wedges: 0
pyramids: 0
tet wedges: 0
tetrahedra: 0
polyhedra: 0
Checking topology...
Boundary definition OK.
Cell to face addressing OK.
Point usage OK.
***Faces not in upper triangular order.
<<Writing 3 unordered faces to set upperTriangularFace
Face vertices OK.
Number of regions: 1 (OK).
Checking patch topology for multiply connected surfaces ...
Patch Faces Points Surface topology
top 21 14 ok (non-closed singly connected)
right 2 6 ok (non-closed singly connected)
left 1 4 ok (non-closed singly connected)
front 1 4 ok (non-closed singly connected)
bottom 21 14 ok (non-closed singly connected)
back 1 4 ok (non-closed singly connected)
Checking geometry...
Overall domain bounding box (-3.80423 -4 1) (3.80423 3.23607 2)
Mesh (non-empty, non-wedge) directions (1 1 1)
Mesh (non-empty) directions (1 1 1)
Boundary openness (-8.91782e-018 0 -1.82815e-016) OK.
***Open cells found, max cell openness: 1, number of open cells 3
<<Writing 3 non closed cells to set nonClosedCells
Minimum face area = 0.433013. Maximum face area = 5.25731. Face area magnitudes OK.
Min volume = 0.240563. Max volume = 5.25731. Total volume = 37.1931. Cell volumes OK.
Mesh non-orthogonality Max: 174.01 average: 39.286
***Number of non-orthogonality errors: 2.
<<Writing 2 non-orthogonal faces to set nonOrthoFaces
***Error in face pyramids: 4 faces are incorrectly oriented.
<<Writing 2 faces with incorrect orientation to set wrongOrientedFaces
Max skewness = 0.666667 OK.
Coupled point location match (average 0) OK.
Failed 4 mesh checks.
End
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.1 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
/* Windows 32 and 64 bit porting by blueCAPE: http://www.bluecape.com.pt *\
| Based on Windows porting (2.0.x v4) by Symscape: http://www.symscape.com |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class faceSet;
location "constant/polyMesh/sets";
object upperTriangularFace;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
3
(
4
12
22
)
// ************************************************************************* //
Or an even simplified one:
const std::vector<Coordinat2D> shapes {
ribi::TriangleFile::CreateShapePolygon(3,pi * 0.0 / 6.0, 1.0), //1 prism
ribi::TriangleFile::CreateShapePolygon(3,pi * 0.0 / 6.0, 2.0) //3 prisms
};
TRACE 'n_faces' line 274 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '38'
'#0: boundary type: inside, owner index: 0, neighbour index: 8'
'#1: boundary type: inside, owner index: 1, neighbour index: 6'
'#2: boundary type: inside, owner index: 1, neighbour index: 8'
'#3: boundary type: inside, owner index: 1, neighbour index: 9'
'#4: boundary type: inside, owner index: 2, neighbour index: 3'
'#5: boundary type: inside, owner index: 2, neighbour index: 5'
'#6: boundary type: inside, owner index: 3, neighbour index: 7'
'#7: boundary type: inside, owner index: 4, neighbour index: 7'
'#8: boundary type: inside, owner index: 4, neighbour index: 9'
'#9: boundary type: inside, owner index: 5, neighbour index: 0'
'#10: boundary type: inside, owner index: 5, neighbour index: 6'
'#11: boundary type: inside, owner index: 6, neighbour index: 7'
'#12: boundary type: top, owner index: 0, neighbour index: [no neighbour]'
'#13: boundary type: top, owner index: 1, neighbour index: [no neighbour]'
'#14: boundary type: top, owner index: 2, neighbour index: [no neighbour]'
'#15: boundary type: top, owner index: 3, neighbour index: [no neighbour]'
'#16: boundary type: top, owner index: 4, neighbour index: [no neighbour]'
'#17: boundary type: top, owner index: 5, neighbour index: [no neighbour]'
'#18: boundary type: top, owner index: 6, neighbour index: [no neighbour]'
'#19: boundary type: top, owner index: 7, neighbour index: [no neighbour]'
'#20: boundary type: top, owner index: 8, neighbour index: [no neighbour]'
'#21: boundary type: top, owner index: 9, neighbour index: [no neighbour]'
'#22: boundary type: right, owner index: 0, neighbour index: [no neighbour]'
'#23: boundary type: right, owner index: 8, neighbour index: [no neighbour]'
'#24: boundary type: left, owner index: 2, neighbour index: [no neighbour]'
'#25: boundary type: front, owner index: 3, neighbour index: [no neighbour]'
'#26: boundary type: bottom, owner index: 0, neighbour index: [no neighbour]'
'#27: boundary type: bottom, owner index: 1, neighbour index: [no neighbour]'
'#28: boundary type: bottom, owner index: 2, neighbour index: [no neighbour]'
'#29: boundary type: bottom, owner index: 3, neighbour index: [no neighbour]'
'#30: boundary type: bottom, owner index: 4, neighbour index: [no neighbour]'
'#31: boundary type: bottom, owner index: 5, neighbour index: [no neighbour]'
'#32: boundary type: bottom, owner index: 6, neighbour index: [no neighbour]'
'#33: boundary type: bottom, owner index: 7, neighbour index: [no neighbour]'
'#34: boundary type: bottom, owner index: 8, neighbour index: [no neighbour]'
'#35: boundary type: bottom, owner index: 9, neighbour index: [no neighbour]'
'#36: boundary type: back, owner index: 4, neighbour index: [no neighbour]'
'#37: boundary type: back, owner index: 9, neighbour index: [no neighbour]'
Build : 2.1-88b2f2ae3a0b
Exec : checkMesh
Date : Apr 17 2014
Time : 11:49:15
Host : "AIRBEAR-W7-I5"
PID : 5064
Case : D:/Projects/Tools/build-ToolTestTriangleMeshConsole-Desktop_Qt_5_1_1_MinGW_32bit-Debug
nProcs : 1
SigFpe : Enabling floating point exception trapping (FOAM_SIGFPE).
fileModificationChecking : Monitoring run-time modified files using timeStampMaster
allowSystemOperations : Allowing user-supplied system call operations
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Create time
Create polyMesh for time = 0
Time = 0
Mesh stats
points: 18
internal points: 0
faces: 38
internal faces: 12
cells: 10
boundary patches: 6
point zones: 0
face zones: 0
cell zones: 0
Overall number of cells of each type:
hexahedra: 0
prisms: 10
wedges: 0
pyramids: 0
tet wedges: 0
tetrahedra: 0
polyhedra: 0
Checking topology...
Boundary definition OK.
Cell to face addressing OK.
Point usage OK.
***Faces not in upper triangular order.
<<Writing 2 unordered faces to set upperTriangularFace
Face vertices OK.
Number of regions: 1 (OK).
Checking patch topology for multiply connected surfaces ...
Patch Faces Points Surface topology
top 10 9 ok (non-closed singly connected)
right 2 6 ok (non-closed singly connected)
left 1 4 ok (non-closed singly connected)
front 1 4 ok (non-closed singly connected)
bottom 10 9 ok (non-closed singly connected)
back 2 6 ok (non-closed singly connected)
Checking geometry...
Overall domain bounding box (-1.73205 -2 1) (1.73205 1 2)
Mesh (non-empty, non-wedge) directions (1 1 1)
Mesh (non-empty) directions (1 1 1)
Boundary openness (0 -1.06831e-017 5.34156e-018) OK.
***Open cells found, max cell openness: 0.666667, number of open cells 2
<<Writing 2 non closed cells to set nonClosedCells
Minimum face area = 0.433013. Maximum face area = 1.73205. Face area magnitudes OK.
Min volume = 0.336788. Max volume = 1.29904. Total volume = 5.0037. Cell volumes OK.
Mesh non-orthogonality Max: 130.893 average: 44.0269
***Number of non-orthogonality errors: 1.
<<Writing 1 non-orthogonal faces to set nonOrthoFaces
***Error in face pyramids: 2 faces are incorrectly oriented.
<<Writing 1 faces with incorrect orientation to set wrongOrientedFaces
Max skewness = 0.666667 OK.
Coupled point location match (average 0) OK.
Failed 4 mesh checks.
FoamFile
{
version 2.0;
format ascii;
class faceSet;
location "constant/polyMesh/sets";
object upperTriangularFace;
}
2
(
0
9
)
FoamFile
{
version 2.0;
format ascii;
class polyBoundaryMesh;
location "constant\polyMesh";
object boundary;
}
6
(
top
{
type zeroGradient;
nFaces 10;
startFace 12;
}
right
{
type zeroGradient;
nFaces 2;
startFace 22;
}
left
{
type zeroGradient;
nFaces 1;
startFace 24;
}
front
{
type zeroGradient;
nFaces 1;
startFace 25;
}
bottom
{
type zeroGradient;
nFaces 10;
startFace 26;
}
back
{
type zeroGradient;
nFaces 2;
startFace 36;
}
)
FoamFile
{ version 2.0;
format ascii;
class faceList;
location "constant/polyMesh";
object faces;
}
38
(
4(12 13 17 16)
4(4 12 13 5)
4(10 11 13 12)
4(4 5 11 10)
4(6 7 9 8)
4(8 9 15 14)
4(2 3 9 8)
4(2 4 5 3)
4(0 1 5 4)
4(12 14 15 13)
4(8 9 13 12)
4(4 8 9 5)
3(13 15 17)
3(5 13 11)
3(9 7 15)
3(9 3 7)
3(1 3 5)
3(15 13 9)
3(9 13 5)
3(5 3 9)
3(13 17 11)
3(11 1 5)
4(14 16 17 15)
4(10 11 17 16)
4(6 14 15 7)
4(2 6 7 3)
3(16 14 12)
3(10 12 4)
3(14 6 8)
3(6 2 8)
3(4 2 0)
3(8 12 14)
3(4 12 8)
3(8 2 4)
3(10 16 12)
3(4 0 10)
4(0 2 3 1)
4(0 1 11 10)
)
FoamFile
{ version 2.0;
format ascii;
class labelList;
note "nPoints: 18 nCells: 10 nFaces: 38";
location "constant/polyMesh";
object neighbour;
}
38
(
8
6
8
9
3
5
7
7
9
0
6
7
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
)
FoamFile
{ version 2.0;
format ascii;
class labelList;
note "nPoints: 18 nCells: 10 nFaces: 38";
location "constant/polyMesh";
object owner;
}
38
(
0
1
1
1
2
2
3
4
4
5
5
6
0
1
2
3
4
5
6
7
8
9
0
8
2
3
0
1
2
3
4
5
6
7
8
9
4
9
)
FoamFile
{ version 2.0;
format ascii;
class vectorField;
location "constant/polyMesh";
object points;
}
18
(
(-1.732051 1 1)
(-1.732051 1 2)
(-0.8660255 -0.5 1)
(-0.8660255 -0.5 2)
(-0.86602500000000004 0.5 1)
(-0.86602500000000004 0.5 2)
(0 -2 1)
(0 -2 2)
(0 -1 1)
(0 -1 2)
(0 1 1)
(0 1 2)
(0.86602500000000004 0.5 1)
(0.86602500000000004 0.5 2)
(0.8660255 -0.5 1)
(0.8660255 -0.5 2)
(1.732051 1 1)
(1.732051 1 2)
)
Observation: only the internal faces mess up. Internal faces have an owner and a neighbour. Hypothesis: an internal Face its owner must have a lower cell index than its neighbour
OK, this works, in commit 4820b493fff0e4a687742df7f93ca256e8b8efd5 :
TRACE 'n_faces' line 395 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '38'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#0: boundary type: inside, owner index: 0, neighbour index: 7'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#1: boundary type: inside, owner index: 0, neighbour index: 9'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#2: boundary type: inside, owner index: 1, neighbour index: 5'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#3: boundary type: inside, owner index: 1, neighbour index: 7'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#4: boundary type: inside, owner index: 1, neighbour index: 8'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#5: boundary type: inside, owner index: 2, neighbour index: 3'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#6: boundary type: inside, owner index: 2, neighbour index: 9'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#7: boundary type: inside, owner index: 3, neighbour index: 6'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#8: boundary type: inside, owner index: 4, neighbour index: 6'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#9: boundary type: inside, owner index: 4, neighbour index: 8'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#10: boundary type: inside, owner index: 5, neighbour index: 6'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#11: boundary type: inside, owner index: 5, neighbour index: 9'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#12: boundary type: top, owner index: 0, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#13: boundary type: top, owner index: 1, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#14: boundary type: top, owner index: 2, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#15: boundary type: top, owner index: 3, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#16: boundary type: top, owner index: 4, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#17: boundary type: top, owner index: 5, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#18: boundary type: top, owner index: 6, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#19: boundary type: top, owner index: 7, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#20: boundary type: top, owner index: 8, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#21: boundary type: top, owner index: 9, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#22: boundary type: right, owner index: 0, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#23: boundary type: right, owner index: 7, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#24: boundary type: left, owner index: 2, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#25: boundary type: front, owner index: 3, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#26: boundary type: bottom, owner index: 0, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#27: boundary type: bottom, owner index: 1, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#28: boundary type: bottom, owner index: 2, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#29: boundary type: bottom, owner index: 3, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#30: boundary type: bottom, owner index: 4, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#31: boundary type: bottom, owner index: 5, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#32: boundary type: bottom, owner index: 6, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#33: boundary type: bottom, owner index: 7, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#34: boundary type: bottom, owner index: 8, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#35: boundary type: bottom, owner index: 9, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#36: boundary type: back, owner index: 4, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#37: boundary type: back, owner index: 8, neighbour index: [no neighbour]'
TRACE 'checkMesh_command' line 118 in file '..\ToolTestTriangleMesh\main.cpp': 'C:\cfd\blueCFD-SingleCore-2.1\OpenFOAM-2.1\etc\batchrc.bat "WM_COMPILER=mingw-w32" "WM_PRECISION_OPTION=DP" "WM_MPLIB=""" && D: && cd D:\Projects\Tools\build-ToolTestTriangleMeshConsole-Desktop_Qt_5_1_1_MinGW_32bit-Debug
\debug && cd .. && checkMesh'
/*---------------------------------------------------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.1 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
/* Windows 32 and 64 bit porting by blueCAPE: http://www.bluecape.com.pt *\
| Based on Windows porting (2.0.x v4) by Symscape: http://www.symscape.com |
\*---------------------------------------------------------------------------*/
Build : 2.1-88b2f2ae3a0b
Exec : checkMesh
Date : Apr 22 2014
Time : 10:38:48
Host : "AIRBEAR-W7-I5"
PID : 4028
Case : D:/Projects/Tools/build-ToolTestTriangleMeshConsole-Desktop_Qt_5_1_1_MinGW_32bit-Debug
nProcs : 1
SigFpe : Enabling floating point exception trapping (FOAM_SIGFPE).
fileModificationChecking : Monitoring run-time modified files using timeStampMaster
allowSystemOperations : Allowing user-supplied system call operations
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Create time
Create polyMesh for time = 0
Time = 0
Mesh stats
points: 18
internal points: 0
faces: 38
internal faces: 12
cells: 10
boundary patches: 6
point zones: 0
face zones: 0
cell zones: 0
Overall number of cells of each type:
hexahedra: 0
prisms: 10
wedges: 0
pyramids: 0
tet wedges: 0
tetrahedra: 0
polyhedra: 0
Checking topology...
Boundary definition OK.
Cell to face addressing OK.
Point usage OK.
Upper triangular ordering OK.
Face vertices OK.
Number of regions: 1 (OK).
Checking patch topology for multiply connected surfaces ...
Patch Faces Points Surface topology
top 10 9 ok (non-closed singly connected)
right 2 6 ok (non-closed singly connected)
left 1 4 ok (non-closed singly connected)
front 1 4 ok (non-closed singly connected)
bottom 10 9 ok (non-closed singly connected)
back 2 6 ok (non-closed singly connected)
Checking geometry...
Overall domain bounding box (-1.73205 -2 1) (1.73205 1 2)
Mesh (non-empty, non-wedge) directions (1 1 1)
Mesh (non-empty) directions (1 1 1)
Boundary openness (0 -1.06831e-017 -8.01234e-018) OK.
Max cell openness = 6.40987e-017 OK.
Max aspect ratio = 4 OK.
Minimum face area = 0.433013. Maximum face area = 1.73205. Face area magnitudes OK.
Min volume = 0.433012. Max volume = 1.29904. Total volume = 5.19615. Cell volumes OK.
Mesh non-orthogonality Max: 49.1066 average: 34.1749
Non-orthogonality check OK.
Face pyramids OK.
Max skewness = 0.666667 OK.
Coupled point location match (average 0) OK.
Mesh OK.
End
Four stacked prims with one prism removed works! With this commit ( fb764320fe07bbf8a5750cf301897726ed56c3bd ) you get this output:
TRACE '"n_face, unique:"' line 781 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': 'n_face, unique:'
TRACE 'v.size()' line 782 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '13'
TRACE 'n_faces' line 395 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '13'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#0: boundary type: inside, owner index: 0, neighbour index: 1'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#1: boundary type: inside, owner index: 0, neighbour index: 2'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#2: boundary type: top, owner index: 0, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#3: boundary type: top, owner index: 1, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#4: boundary type: right, owner index: 1, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#5: boundary type: right, owner index: 2, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#6: boundary type: left, owner index: 1, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#7: boundary type: front, owner index: 0, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#8: boundary type: front, owner index: 2, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#9: boundary type: bottom, owner index: 1, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#10: boundary type: bottom, owner index: 2, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#11: boundary type: back, owner index: 0, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#12: boundary type: back, owner index: 2, neighbour index: [no neighbour]'
TRACE 'checkMesh_command' line 117 in file '..\ToolTestTriangleMesh\main.cpp': 'C:\cfd\blueCFD-SingleCore-2.1\OpenFOAM-2.1\etc\batchrc.bat "WM_COMPILER=mingw-w32" "WM_PRECISION_OPTION=DP" "WM_MPLIB=""" && D: && cd D:\Projects\Tools\build-ToolTestTriangleMeshConsole-Desktop_Qt_5_1_1_MinGW_32bit-Debug
\debug && cd .. && checkMesh'
/*---------------------------------------------------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.1 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
/* Windows 32 and 64 bit porting by blueCAPE: http://www.bluecape.com.pt *\
| Based on Windows porting (2.0.x v4) by Symscape: http://www.symscape.com |
\*---------------------------------------------------------------------------*/
Build : 2.1-88b2f2ae3a0b
Exec : checkMesh
Date : Apr 22 2014
Time : 11:03:06
Host : "AIRBEAR-W7-I5"
PID : 1048
Case : D:/Projects/Tools/build-ToolTestTriangleMeshConsole-Desktop_Qt_5_1_1_MinGW_32bit-Debug
nProcs : 1
SigFpe : Enabling floating point exception trapping (FOAM_SIGFPE).
fileModificationChecking : Monitoring run-time modified files using timeStampMaster
allowSystemOperations : Allowing user-supplied system call operations
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Create time
Create polyMesh for time = 0
Time = 0
Mesh stats
points: 11
internal points: 0
faces: 13
internal faces: 2
cells: 3
boundary patches: 6
point zones: 0
face zones: 0
cell zones: 0
Overall number of cells of each type:
hexahedra: 0
prisms: 3
wedges: 0
pyramids: 0
tet wedges: 0
tetrahedra: 0
polyhedra: 0
Checking topology...
Boundary definition OK.
Cell to face addressing OK.
Point usage OK.
Upper triangular ordering OK.
Face vertices OK.
Number of regions: 1 (OK).
Checking patch topology for multiply connected surfaces ...
Patch Faces Points Surface topology
top 2 4 ok (non-closed singly connected)
right 2 7 ok (non-closed singly connected)
left 1 4 ok (non-closed singly connected)
front 2 6 ok (non-closed singly connected)
bottom 2 6 ok (non-closed singly connected)
back 2 6 ok (non-closed singly connected)
Checking geometry...
Overall domain bounding box (-0.92388 -0.92388 0) (0.92388 0.92388 2)
Mesh (non-empty, non-wedge) directions (1 1 1)
Mesh (non-empty) directions (1 1 1)
Boundary openness (0 -1.5329e-017 0) OK.
Max cell openness = 8.49728e-017 OK.
Max aspect ratio = 1.84776 OK.
Minimum face area = 1. Maximum face area = 2. Face area magnitudes OK.
Min volume = 1. Max volume = 1. Total volume = 3. Cell volumes OK.
Mesh non-orthogonality Max: 0 average: 0
Non-orthogonality check OK.
Face pyramids OK.
Max skewness = 0.333333 OK.
Coupled point location match (average 0) OK.
Mesh OK.
End
Complex mesh works, 3beafb49d59c997093fe34ed0daa3f3b3bf2e024 :
TRACE 'n_faces' line 395 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '91'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#0: boundary type: inside, owner index: 0, neighbour index: 11'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#1: boundary type: inside, owner index: 0, neighbour index: 17'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#2: boundary type: inside, owner index: 0, neighbour index: 24'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#3: boundary type: inside, owner index: 0, neighbour index: 25'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#4: boundary type: inside, owner index: 1, neighbour index: 9'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#5: boundary type: inside, owner index: 1, neighbour index: 14'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#6: boundary type: inside, owner index: 1, neighbour index: 15'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#7: boundary type: inside, owner index: 2, neighbour index: 20'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#8: boundary type: inside, owner index: 2, neighbour index: 21'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#9: boundary type: inside, owner index: 2, neighbour index: 22'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#10: boundary type: inside, owner index: 3, neighbour index: 18'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#11: boundary type: inside, owner index: 3, neighbour index: 20'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#12: boundary type: inside, owner index: 3, neighbour index: 26'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#13: boundary type: inside, owner index: 4, neighbour index: 5'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#14: boundary type: inside, owner index: 4, neighbour index: 14'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#15: boundary type: inside, owner index: 4, neighbour index: 20'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#16: boundary type: inside, owner index: 5, neighbour index: 18'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#17: boundary type: inside, owner index: 5, neighbour index: 19'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#18: boundary type: inside, owner index: 5, neighbour index: 24'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#19: boundary type: inside, owner index: 6, neighbour index: 11'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#20: boundary type: inside, owner index: 6, neighbour index: 15'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#21: boundary type: inside, owner index: 6, neighbour index: 19'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#22: boundary type: inside, owner index: 6, neighbour index: 24'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#23: boundary type: inside, owner index: 7, neighbour index: 14'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#24: boundary type: inside, owner index: 7, neighbour index: 15'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#25: boundary type: inside, owner index: 7, neighbour index: 19'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#26: boundary type: inside, owner index: 8, neighbour index: 12'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#27: boundary type: inside, owner index: 8, neighbour index: 20'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#28: boundary type: inside, owner index: 8, neighbour index: 22'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#29: boundary type: inside, owner index: 8, neighbour index: 26'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#30: boundary type: inside, owner index: 9, neighbour index: 16'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#31: boundary type: inside, owner index: 9, neighbour index: 17'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#32: boundary type: inside, owner index: 9, neighbour index: 23'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#33: boundary type: inside, owner index: 10, neighbour index: 12'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#34: boundary type: inside, owner index: 10, neighbour index: 16'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#35: boundary type: inside, owner index: 10, neighbour index: 22'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#36: boundary type: inside, owner index: 11, neighbour index: 23'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#37: boundary type: inside, owner index: 12, neighbour index: 17'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#38: boundary type: inside, owner index: 13, neighbour index: 18'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#39: boundary type: inside, owner index: 13, neighbour index: 24'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#40: boundary type: inside, owner index: 13, neighbour index: 25'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#41: boundary type: inside, owner index: 13, neighbour index: 26'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#42: boundary type: inside, owner index: 14, neighbour index: 21'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#43: boundary type: inside, owner index: 15, neighbour index: 23'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#44: boundary type: top, owner index: 2, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#45: boundary type: top, owner index: 3, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#46: boundary type: top, owner index: 4, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#47: boundary type: top, owner index: 5, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#48: boundary type: top, owner index: 7, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#49: boundary type: top, owner index: 14, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#50: boundary type: top, owner index: 16, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#51: boundary type: top, owner index: 17, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#52: boundary type: top, owner index: 18, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#53: boundary type: top, owner index: 19, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#54: boundary type: top, owner index: 20, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#55: boundary type: top, owner index: 21, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#56: boundary type: right, owner index: 1, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#57: boundary type: right, owner index: 2, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#58: boundary type: right, owner index: 8, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#59: boundary type: right, owner index: 10, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#60: boundary type: right, owner index: 16, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#61: boundary type: right, owner index: 21, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#62: boundary type: right, owner index: 22, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#63: boundary type: right, owner index: 22, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#64: boundary type: left, owner index: 1, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#65: boundary type: left, owner index: 7, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#66: boundary type: left, owner index: 15, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#67: boundary type: left, owner index: 23, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#68: boundary type: front, owner index: 6, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#69: boundary type: front, owner index: 11, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#70: boundary type: front, owner index: 19, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#71: boundary type: front, owner index: 24, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#72: boundary type: bottom, owner index: 0, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#73: boundary type: bottom, owner index: 4, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#74: boundary type: bottom, owner index: 9, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#75: boundary type: bottom, owner index: 10, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#76: boundary type: bottom, owner index: 11, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#77: boundary type: bottom, owner index: 12, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#78: boundary type: bottom, owner index: 16, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#79: boundary type: bottom, owner index: 17, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#80: boundary type: bottom, owner index: 21, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#81: boundary type: bottom, owner index: 23, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#82: boundary type: bottom, owner index: 25, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#83: boundary type: bottom, owner index: 26, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#84: boundary type: back, owner index: 3, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#85: boundary type: back, owner index: 12, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#86: boundary type: back, owner index: 13, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#87: boundary type: back, owner index: 18, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#88: boundary type: back, owner index: 25, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#89: boundary type: back, owner index: 25, neighbour index: [no neighbour]'
TRACE 's.str()' line 413 in file '..\..\Classes\CppTriangleMesh\trianglemeshbuilder.cpp': '#90: boundary type: back, owner index: 26, neighbour index: [no neighbour]'
TRACE 'checkMesh_command' line 117 in file '..\ToolTestTriangleMesh\main.cpp': 'C:\cfd\blueCFD-SingleCore-2.1\OpenFOAM-2.1\etc\batchrc.bat "WM_COMPILER=mingw-w32" "WM_PRECISION_OPTION=DP" "WM_MPLIB=""" && D: && cd D:\Projects\Tools\build-ToolTestTriangleMeshConsole-Desktop_Qt_5_1_1_MinGW_32bit-Debug
\debug && cd .. && checkMesh'
/*---------------------------------------------------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.1 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
/* Windows 32 and 64 bit porting by blueCAPE: http://www.bluecape.com.pt *\
| Based on Windows porting (2.0.x v4) by Symscape: http://www.symscape.com |
\*---------------------------------------------------------------------------*/
Build : 2.1-88b2f2ae3a0b
Exec : checkMesh
Date : Apr 22 2014
Time : 11:08:00
Host : "AIRBEAR-W7-I5"
PID : 4584
Case : D:/Projects/Tools/build-ToolTestTriangleMeshConsole-Desktop_Qt_5_1_1_MinGW_32bit-Debug
nProcs : 1
SigFpe : Enabling floating point exception trapping (FOAM_SIGFPE).
fileModificationChecking : Monitoring run-time modified files using timeStampMaster
allowSystemOperations : Allowing user-supplied system call operations
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Create time
Create polyMesh for time = 0
Time = 0
Mesh stats
points: 36
internal points: 0
faces: 91
internal faces: 44
cells: 27
boundary patches: 6
point zones: 0
face zones: 0
cell zones: 0
Overall number of cells of each type:
hexahedra: 0
prisms: 27
wedges: 0
pyramids: 0
tet wedges: 0
tetrahedra: 0
polyhedra: 0
Checking topology...
Boundary definition OK.
Cell to face addressing OK.
Point usage OK.
Upper triangular ordering OK.
Face vertices OK.
Number of regions: 1 (OK).
Checking patch topology for multiply connected surfaces ...
Patch Faces Points Surface topology
top 12 14 ok (non-closed singly connected)
right 8 16 multiply connected (shared edge)
left 4 12 ok (non-closed singly connected)
front 4 12 ok (non-closed singly connected)
bottom 12 17 ok (non-closed singly connected)
back 7 14 ok (non-closed singly connected)
<<Writing 2 conflicting points to set nonManifoldPoints
Checking geometry...
Overall domain bounding box (-1.73205 -2 0) (1.73205 1 3)
Mesh (non-empty, non-wedge) directions (1 1 1)
Mesh (non-empty) directions (1 1 1)
Boundary openness (0 -4.37394e-018 5.46742e-018) OK.
Max cell openness = 6.40987e-017 OK.
Max aspect ratio = 4 OK.
Minimum face area = 0.433013. Maximum face area = 1.73205. Face area magnitudes OK.
Min volume = 0.433012. Max volume = 1.29904. Total volume = 13.4234. Cell volumes OK.
Mesh non-orthogonality Max: 49.1066 average: 29.0236
Non-orthogonality check OK.
Face pyramids OK.
Max skewness = 0.666667 OK.
Coupled point location match (average 0) OK.
Mesh OK.
End
Fixed with dbe9eed22304aa303634b6a1c6a52f24e2c721a8
renumberMesh cannot do something I can do as well. Additionally, I have the hypothesis it messes up my face ordering.