richelbilderbeek / ProjectRichelBilderbeek

Richel Bilderbeek's C++ work, before splitting it up
http://richelbilderbeek.nl/
6 stars 3 forks source link

TestTriangleMesh: bypass renumberMesh use #181

Closed richelbilderbeek closed 10 years ago

richelbilderbeek commented 10 years ago

renumberMesh cannot do something I can do as well. Additionally, I have the hypothesis it messes up my face ordering.

richelbilderbeek commented 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.
richelbilderbeek commented 10 years ago

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

Other files

upperTriangularFace

FoamFile
{
    version     2.0;
    format      ascii;
    class       faceSet;
    location    "constant/polyMesh/sets";
    object      upperTriangularFace;
}

1
(
0 
)

points

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)
)

faces

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)
)

boundary

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;
  }

)

owner

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
)

neighbour

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
)
richelbilderbeek commented 10 years ago

Posted question at http://www.cfd-online.com/Forums/openfoam-meshing-technical/61938-upper-triangular-face-order.html#post486241

richelbilderbeek commented 10 years ago

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.
richelbilderbeek commented 10 years ago

Hmmm, the post above does not apply to my problem, yet I put it in my code :-)

richelbilderbeek commented 10 years ago

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

richelbilderbeek commented 10 years ago

Conformed hypothesis with 60fe526edf04eeccb7fe153e621e8121b10c4027

richelbilderbeek commented 10 years ago

Still problem with more complex meshes....

richelbilderbeek commented 10 years ago

Added debug info again

snippet from main

    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)
    };

Output

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]'

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   : 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.
richelbilderbeek commented 10 years ago

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

richelbilderbeek commented 10 years ago

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 
)
// ************************************************************************* //
richelbilderbeek commented 10 years ago

Or an even simplified one:

main.cpp

    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_out.txt

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]'

checkMesh output

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.

upperTriangularFace

FoamFile
{
    version     2.0;
    format      ascii;
    class       faceSet;
    location    "constant/polyMesh/sets";
    object      upperTriangularFace;
}

2
(
0 
9 
)

boundary

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;
  }

)

faces

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)
)

neighbour

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
)

owner

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
)

points

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)
)
richelbilderbeek commented 10 years ago

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

richelbilderbeek commented 10 years ago

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
richelbilderbeek commented 10 years ago

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
richelbilderbeek commented 10 years ago

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
richelbilderbeek commented 10 years ago

Fixed with dbe9eed22304aa303634b6a1c6a52f24e2c721a8