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/)
-   -   [Other] Non-orthogonality and face pyramids error (https://www.cfd-online.com/Forums/openfoam-meshing/159148-non-orthogonality-face-pyramids-error.html)

jessicabp September 9, 2015 15:15

Non-orthogonality and face pyramids error
 
Hello. I am trying to simulate a 3D platform on OpenFOAM, but as I am not really familiar with the software yet I decided to start with simpler simulations. Right now I am only simulating a squared pillar in the middle of the domain (height is 50m). It should be really simple, but I am getting the following errors when I check my mesh:

***Zero or negative cell volume detected. Minimum negative volume: -1, Number of negative volume cells: 1000000
<<Writing 1000000 zero volume cells to set zeroVolumeCells
Mesh non-orthogonality Max: 180 average: 180
***Number of non-orthogonality errors: 2960000.
<<Writing 2960000 non-orthogonal faces to set nonOrthoFaces
***Error in face pyramids: 6000000 faces are incorrectly oriented.
<<Writing 3040000 faces with incorrect orientation to set wrongOrientedFaces
Max skewness = 0 OK.
Coupled point location match (average 0) OK.


I checked every single point, face, patch and block on my blockMeshDict file and yet I cannot find anything that justifies this. Do you guys have any idea of what it can be? I am running out of time and this is being really stressful. My blockMesh informations are above:

/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.7.1 |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object blockMeshDict;
}

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

convertToMeters 1;

vertices
(
(0 0 0) //0
(50 0 0) //1
(100 0 0) //2
(150 0 0) //3
(0 0 50) //4
(50 0 50) //5
(100 0 50) //6
(150 0 50) //7
(0 0 100) //8
(50 0 100) //9
(100 0 100) //10
(150 0 100) //11

(0 0 150) //12
(50 0 150) //13
(100 0 150) //14
(150 0 150) //15
(0 50 0) //16
(50 50 0) //17
(100 50 0) //18
(150 50 0) //19
(0 50 50) //20
(50 50 50) //21
(100 50 50) //22
(150 50 50) //23

(0 50 100) //24
(50 50 100) //25
(100 50 100) //26
(150 50 100) //27
(0 50 150) //28
(50 50 150) //29
(100 50 150) //30
(150 50 150) //31


);

blocks
(
hex (0 1 5 4 16 17 21 20) (50 50 50) simpleGrading (1 1 1) //0
hex (1 2 6 5 17 18 22 21) (50 50 50) simpleGrading (1 1 1) //1
hex (2 3 7 6 18 19 23 22) (50 50 50) simpleGrading (1 1 1) //2
hex (4 5 9 8 20 21 25 24) (50 50 50) simpleGrading (1 1 1) //3
hex (6 7 11 10 22 23 27 26) (50 50 50) simpleGrading (1 1 1) //4
hex (8 9 13 12 24 25 29 28) (50 50 50) simpleGrading (1 1 1) //5
hex (9 10 14 13 25 26 30 29) (50 50 50) simpleGrading (1 1 1) //6
hex (10 11 15 14 26 27 31 30) (50 50 50) simpleGrading (1 1 1) //7

);

edges
(
);

boundary
(
inlet
{
type patch;
faces
(
(4 0 16 20)
(8 4 20 24)
(12 8 24 28)

);
}

outlet
{
type patch;
faces
(
(3 7 23 19)
(7 11 27 23)
(11 15 31 27)

);
}

bottom
{
type wall;
faces
(
(0 1 5 4 )
(1 2 6 5)
(2 3 7 6)
(4 5 9 8)
(6 7 11 10)
(8 9 13 12)
(9 10 14 13)
(10 11 15 14)

);
}

atmosphere
{
type patch;
faces
(
(16 17 21 20)
(17 18 22 21)
(18 19 23 22)
(20 21 25 24)
(22 23 27 26)
(24 25 29 28)
(25 26 30 29)
(26 27 31 30)


);
}

frontAndBack
{
type empty;
faces
(
(0 1 17 16)
(1 2 18 17)
(2 3 19 18)
(13 12 28 29)
(14 13 29 30)
(15 14 30 31)


);
}

);

// ************************************************** *********************** //

Thank you.

vabishek September 9, 2015 16:06

Quote:

Originally Posted by jessicabp (Post 563202)
Hello. I am trying to simulate a 3D platform on OpenFOAM, but as I am not really familiar with the software yet I decided to start with simpler simulations. Right now I am only simulating a squared pillar in the middle of the domain (height is 50m). It should be really simple, but I am getting the following errors when I check my mesh:

***Zero or negative cell volume detected. Minimum negative volume: -1, Number of negative volume cells: 1000000
<<Writing 1000000 zero volume cells to set zeroVolumeCells
Mesh non-orthogonality Max: 180 average: 180
***Number of non-orthogonality errors: 2960000.
<<Writing 2960000 non-orthogonal faces to set nonOrthoFaces
***Error in face pyramids: 6000000 faces are incorrectly oriented.
<<Writing 3040000 faces with incorrect orientation to set wrongOrientedFaces
Max skewness = 0 OK.
Coupled point location match (average 0) OK.


I checked every single point, face, patch and block on my blockMeshDict file and yet I cannot find anything that justifies this. Do you guys have any idea of what it can be? I am running out of time and this is being really stressful. My blockMesh informations are above:

/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.7.1 |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object blockMeshDict;
}

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

convertToMeters 1;

vertices
(
(0 0 0) //0
(50 0 0) //1
(100 0 0) //2
(150 0 0) //3
(0 0 50) //4
(50 0 50) //5
(100 0 50) //6
(150 0 50) //7
(0 0 100) //8
(50 0 100) //9
(100 0 100) //10
(150 0 100) //11

(0 0 150) //12
(50 0 150) //13
(100 0 150) //14
(150 0 150) //15
(0 50 0) //16
(50 50 0) //17
(100 50 0) //18
(150 50 0) //19
(0 50 50) //20
(50 50 50) //21
(100 50 50) //22
(150 50 50) //23

(0 50 100) //24
(50 50 100) //25
(100 50 100) //26
(150 50 100) //27
(0 50 150) //28
(50 50 150) //29
(100 50 150) //30
(150 50 150) //31


);

blocks
(
hex (0 1 5 4 16 17 21 20) (50 50 50) simpleGrading (1 1 1) //0
hex (1 2 6 5 17 18 22 21) (50 50 50) simpleGrading (1 1 1) //1
hex (2 3 7 6 18 19 23 22) (50 50 50) simpleGrading (1 1 1) //2
hex (4 5 9 8 20 21 25 24) (50 50 50) simpleGrading (1 1 1) //3
hex (6 7 11 10 22 23 27 26) (50 50 50) simpleGrading (1 1 1) //4
hex (8 9 13 12 24 25 29 28) (50 50 50) simpleGrading (1 1 1) //5
hex (9 10 14 13 25 26 30 29) (50 50 50) simpleGrading (1 1 1) //6
hex (10 11 15 14 26 27 31 30) (50 50 50) simpleGrading (1 1 1) //7

);

edges
(
);

boundary
(
inlet
{
type patch;
faces
(
(4 0 16 20)
(8 4 20 24)
(12 8 24 28)

);
}

outlet
{
type patch;
faces
(
(3 7 23 19)
(7 11 27 23)
(11 15 31 27)

);
}

bottom
{
type wall;
faces
(
(0 1 5 4 )
(1 2 6 5)
(2 3 7 6)
(4 5 9 8)
(6 7 11 10)
(8 9 13 12)
(9 10 14 13)
(10 11 15 14)

);
}

atmosphere
{
type patch;
faces
(
(16 17 21 20)
(17 18 22 21)
(18 19 23 22)
(20 21 25 24)
(22 23 27 26)
(24 25 29 28)
(25 26 30 29)
(26 27 31 30)


);
}

frontAndBack
{
type empty;
faces
(
(0 1 17 16)
(1 2 18 17)
(2 3 19 18)
(13 12 28 29)
(14 13 29 30)
(15 14 30 31)


);
}

);

// ************************************************** *********************** //

Thank you.

Hello Jess,

The issue lies with your definition of blocks in blockMeshDict file. A mesh non-orthogonality value of 180 tells you the ordering of points are reversed. It is important to remember that each block in OF has a local-coordinate system that must be right-handed. So, the order in which you pick your coordinates while defining a block matters. I suggest you carefully read through chapter 5 (I think) of the OpenFOAM user guide. I just did a quick fix of the block ordering for your case and it seems to work:

blocks
(
hex (4 5 1 0 20 21 17 16) (50 50 50) simpleGrading (1 1 1) //0
hex (5 6 2 1 21 22 18 17) (50 50 50) simpleGrading (1 1 1) //1
hex (6 7 3 2 22 23 19 18) (50 50 50) simpleGrading (1 1 1) //2
hex (8 9 5 4 24 25 21 20) (50 50 50) simpleGrading (1 1 1) //3
hex (10 11 7 6 26 27 23 22) (50 50 50) simpleGrading (1 1 1) //4
hex (12 13 9 8 28 29 25 24) (50 50 50) simpleGrading (1 1 1) //5
hex (13 14 10 9 29 30 26 25) (50 50 50) simpleGrading (1 1 1) //6
hex (14 15 11 10 30 31 27 26) (50 50 50) simpleGrading (1 1 1) //7

);


Hope that helps!

Abishek

PS: I would suggest installing pyFoam utilities when you are getting started with OpenFOAM.The pyFoamDisplayBlockMesh.py (lets you view the coordinates, blocks and patches) script really helped me in making sure I was defining my geometry correctly.

jessicabp September 10, 2015 12:12

Hi Abishek! Thank you so much for your help and your advice, it was very useful for me! I read that chapter but as I'm dealing with more blocks it can get confusing. Thanks again. :)


All times are GMT -4. The time now is 03:38.