CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Meshing & Mesh Conversion (https://www.cfd-online.com/Forums/openfoam-meshing/)
-   -   [Technical] checkMesh states that faces do not form a cell, mesh appears correct (https://www.cfd-online.com/Forums/openfoam-meshing/131611-checkmesh-states-faces-do-not-form-cell-mesh-appears-correct.html)

assert March 18, 2014 05:33

checkMesh states that faces do not form a cell, mesh appears correct
 
I try to create the mesh of a cube consisting of two adjacent prisms, using the points, faces, boundary, owner and neighbour files. It should be easy, but checkMesh states:

Code:

The mesh has multiple regions which are not connected by any face.
and

Code:

***Boundary openness (0 0.171573 0) possible hole in boundary description.
 ***Open cells found, max cell openness: 1, number of open cells 1

Checking the points and faces files, I conclude the point and face indices as put in the picture below:


http://www.richelbilderbeek.nl/ToolO...CellsFound.png

Although my research appears thorough to me, I appear to overlook something. I am pretty sure the windings are correct, as this was the previous aspect checkMesh made me correct.

The files used and generated, of which I think of to be most important, I paste below, all and the compete files can be viewed at http://www.richelbilderbeek.nl/ToolO...CellsFound.htm .

I have tried hard to make it clear to deduce what I overlooked, so I am very curious what it is.

Thanks, Richel Bilderbeek


checkMesh output:

Code:

Build  : 2.1-88b2f2ae3a0b
Exec  : checkmesh
Date  : Mar 18 2014
Time  : 08:52:39
Host  : "AIRBEAR-W7-I5"
PID    : 1524
Case  : D:/Projects/Tools/build-ToolTestTriangleMeshConsole-Desktop_Qt_5_1_1_Mi
nGW_32bit-Debug
nProcs : 1
SigFpe : Enabling floating point exception trapping (FOAM_SIGFPE).
fileModificationChecking : Monitoring run-time modified files using timeStampMas
ter
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:  0
    cells:            2
    boundary patches: 6
    point zones:      0
    face zones:      0
    cell zones:      0

Overall number of cells of each type:
    hexahedra:    0
    prisms:        1
    wedges:        0
    pyramids:      0
    tet wedges:    1
    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: 2
    The mesh has multiple regions which are not connected by any face.
  <<Writing region information to "0/cellToRegion"

Checking patch topology for multiply connected surfaces ...
    Patch              Faces    Points  Surface topology
    back                1        4        ok (non-closed singly connected)
    bottom              2        4        ok (non-closed singly connected)
    front              1        4        ok (non-closed singly connected)
    left                1        4        ok (non-closed singly connected)
    right              1        4        ok (non-closed singly connected)
    top                2        4        ok (non-closed singly connected)

Checking geometry...
    Overall domain bounding box (-1 -1 0) (1 1 1)
    Mesh (non-empty, non-wedge) directions (1 1 1)
    Mesh (non-empty) directions (1 1 1)
 ***Boundary openness (0 0.171573 0) possible hole in boundary description.
 ***Open cells found, max cell openness: 1, number of open cells 1
  <<Writing 1 non closed cells to set nonClosedCells
    Minimum face area = 1. Maximum face area = 2.  Face area magnitudes OK.
    Min volume = 0.722222. Max volume = 1.  Total volume = 1.72222.  Cell volume
s OK.
    Non-orthogonality check OK.
    Face pyramids OK.
    Max skewness = 0.421474 OK.
    Coupled point location match (average 0) OK.

Failed 2 mesh checks.

End

boundary, appears correct:

Code:

FoamFile
{
  version  2.0;
  format  ascii;
  class    polyBoundaryMesh;
  location "constant\polyMesh";
  object  boundary;
}


6
(
  back
  {
    type zeroGradient;
    nFaces 1;
    startFace 0;
  }

  bottom
  {
    type zeroGradient;
    nFaces 2;
    startFace 1;
  }

  front
  {
    type zeroGradient;
    nFaces 1;
    startFace 3;
  }

  left
  {
    type zeroGradient;
    nFaces 1;
    startFace 4;
  }

  right
  {
    type zeroGradient;
    nFaces 1;
    startFace 5;
  }

  top
  {
    type zeroGradient;
    nFaces 2;
    startFace 6;
  }

)

faces (also shown in image):

Code:

FoamFile
{    version    2.0;
    format    ascii;
    class    faceList;
    location    "constant/polyMesh";
    object    faces;
}

9
(
4(0 2 6 1)
3(5 6 4)
3(4 6 2)
4(1 6 5 3)
4(4 7 3 5)
4(0 7 4 2)
3(3 7 1)
3(1 7 0)
4(1 7 4 6)
)

neighbour, checked to be correct:

Code:

FoamFile
{    version    2.0;
    format    ascii;
    class    labelList;
    note    "nPoints: 8 nCells: 2 nFaces: 9";
    location    "constant/polyMesh";
    object    neighbour;
}

9
(
-1
-1
-1
-1
-1
-1
-1
-1
1
)

owner, checked to be correct:

Code:

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

points (also shown in image):

Code:

FoamFile
{    version    2.0;
    format    ascii;
    class    vectorField;
    location    "constant/polyMesh";
    object    points;
}

8
(
(0 1 1)
(-1 0 1)
(0 1 0)
(0 -1 1)
(1 -0 0)
(0 -1 0)
(-1 0 0)
(1 -0 1)
)

nonClosedCells, generated by checkMesh:

Code:

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

1
(
1
)

cellToRegion, generated by checkMesh:

Code:

FoamFile
{
    version    2.0;
    format      ascii;
    class      labelList;
    location    "0";
    object      cellToRegion;
}

2(0 1)


assert March 20, 2014 04:46

A non-solution
 
I noted that after doing a renumberMesh and zipUpMesh I get a 'correct' mesh (that is: a mesh in which checkMesh does find errors in).

What is strange, it has two bent pentagons in:

http://www.richelbilderbeek.nl/ToolO...dCorrected.png

I posted the question
http://www.cfd-online.com/Forums/ope...tml#post481044 , with a lot more detail.

How can my -as far as I can see- correct mesh be labeled incorrect?
How can my -as far as I can see- incorrect mesh be labeled correct?

assert March 24, 2014 09:08

Solved
 
I found out what caused the error: in the file 'boundary', the (unnamed) internal faces must be put first. Modifying 'boundary', reordering the files 'faces', 'neighbour' and 'owner' resulted in checkMesh reporting no errors. Below an image with face indices.

Complete files can be found at http://richelbilderbeek.nl/ToolOpenF...FoundFixed.htm

http://richelbilderbeek.nl/ToolOpenF...FoundFixed.png



KateEisenhower December 7, 2015 11:14

Hello Richel,

thanks for this interesting topic! What do you mean with internal faces in the boundary file? My boundary file usually only consists of my defined patches.

Best regards,

Kate
Quote:

Originally Posted by assert (Post 481779)
I found out what caused the error: in the file 'boundary', the (unnamed) internal faces must be put first. Modifying 'boundary', reordering the files 'faces', 'neighbour' and 'owner' resulted in checkMesh reporting no errors. Below an image with face indices.

Complete files can be found at http://richelbilderbeek.nl/ToolOpenF...FoundFixed.htm

http://richelbilderbeek.nl/ToolOpenF...FoundFixed.png





All times are GMT -4. The time now is 22:46.