|
[Sponsors] |
November 12, 2014, 18:03 |
checkMesh for a Hollow Cylinder
|
#1 |
Member
Join Date: Nov 2014
Posts: 88
Rep Power: 12 |
ok I am rather new to CFD and to OF as well. So please kindly be patient and forgiving.
I am now attempting a simple flow analysis to get myself started. And I have a problem understand where I have checkMesh errors. The case is a simple hollow cylinder. I need to create a mesh to represent the hollow cylinder. I used blockMesh to do this. Each block must be 8 vertices ; i have a hollow part ; so I need to have to have at least 2 blocks. When I was doing this, I used 4 blocks. These 4 blocks were in the form of 4 quadrants starting anticlock from 3 o'clock (see figure cfdonline.jpg). I defined each of the 4 blocks starting from the inner point outwards. Since it is a enclosed cylinder, I have merge the facing pairs of each quadrant using mergePatchPairs in blockMeshDict. And this I what I have previewed using paraview. Looks ok. However, checkMesh tells me I have negative volume and I do not understand since the preview in paraview looks ok. cyl.jpg That being said, running the solver also does not work, as it crashed out immediately. I assume it is the problem with the mesh. Here is the checkMesh message. Code:
Mesh stats points: 968 internal points: 0 faces: 1680 internal faces: 720 cells: 400 faces per cell: 6 boundary patches: 5 point zones: 1 face zones: 3 cell zones: 0 Overall number of cells of each type: hexahedra: 400 prisms: 0 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: 4 The mesh has multiple regions which are not connected by any face. <<Writing region information to "0/cellToRegion" <<Writing region 0 with 100 cells to cellSet region0 <<Writing region 1 with 100 cells to cellSet region1 <<Writing region 2 with 100 cells to cellSet region2 <<Writing region 3 with 100 cells to cellSet region3 Checking patch topology for multiply connected surfaces... Patch Faces Points Surface topology inlet 400 484 ok (non-closed singly connected) outlet 400 484 ok (non-closed singly connected) sideProfile 80 176 ok (non-closed singly connected) masterpatch 40 88 ok (non-closed singly connected) slavepatch 40 88 ok (non-closed singly connected) Checking geometry... Overall domain bounding box (0 0 0) (12 12 10) Mesh (non-empty, non-wedge) directions (1 1 1) Mesh (non-empty) directions (1 1 1) Boundary openness (3.8204e-17 -4.44232e-18 2.22119e-18) OK. ***High aspect ratio cells found, Max aspect ratio: 6.04165e+200, number of cells 200 <<Writing 200 cells with high aspect ratio to set highAspectRatioCells Minimum face area = 0.146461. Maximum face area = 9.41509. Face area magnitudes OK. ***Zero or negative cell volume detected. Minimum negative volume: -3.18931, Number of negative volume cells: 200 <<Writing 200 zero volume cells to set zeroVolumeCells Mesh non-orthogonality Max: 180 average: 90 ***Number of non-orthogonality errors: 360. <<Writing 360 non-orthogonal faces to set nonOrthoFaces ***Error in face pyramids: 1200 faces are incorrectly oriented. <<Writing 840 faces with incorrect orientation to set wrongOrientedFaces Max skewness = 0.187165 OK. Coupled point location match (average 0) OK. Failed 4 mesh checks. End |
|
November 13, 2014, 08:41 |
|
#2 |
Senior Member
Alex
Join Date: Oct 2013
Posts: 337
Rep Power: 22 |
Whenever you get checkMesh errors you can see where the errors are by checking the directory sets that is created within the case directory after runing checkMesh. You can see these errors in paraview so that is easier to find where you did something wrong. However I guess that the problem is wrong orientation of the blocks or patches in the blockMeshDict file....
Regards, Alex
__________________
Web site where I present my Master's Thesis: foamingtime.wordpress.com The case I talk about in this site was solved with chtMultiRegionSimpleFoam solver and involves radiation. Some basic tutorials are also resolved step by step in the web. If you are interested in these matters, you are invited to come in! |
|
November 13, 2014, 08:58 |
|
#3 | |
Member
Join Date: Nov 2014
Posts: 88
Rep Power: 12 |
Quote:
In the definition of the Blocks e.g. (0 1 2 3 4 5 6 7), must 1 and 2 be defined in the positive x1 and x2 direction or can it be negative x1 and x2 direction? Im suspecting this could be the problem. I couldnt find the answer to my question in the manual. so thats why I am asking here. |
||
November 13, 2014, 09:19 |
|
#4 |
Senior Member
Alex
Join Date: Oct 2013
Posts: 337
Rep Power: 22 |
It's not a matter of defining all the points in the positive direction of the axes, but it's a matter of the point order in the block/patch definition. Maybe you haven't paid enough attention to this section of the manual...
__________________
Web site where I present my Master's Thesis: foamingtime.wordpress.com The case I talk about in this site was solved with chtMultiRegionSimpleFoam solver and involves radiation. Some basic tutorials are also resolved step by step in the web. If you are interested in these matters, you are invited to come in! |
|
November 13, 2014, 09:56 |
|
#5 | |
Member
Join Date: Nov 2014
Posts: 88
Rep Power: 12 |
Quote:
Im asking this question cos I realised defining my 2nd quadrant in the negative x1 and x2 direction gives a different error message. However, now I have rebuilt my BlockMeshDict using just 2 blocks - top and bottom half. Also, I used the same defined vertices to define both block for the common points. so I did not have to define common faces in mergePatchPairs. Weirdly, there are still error messages in checkMesh, but only 1 Mesh has failed, which I cannot understand why. Code:
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // Create time Create polyMesh for time = 0 Time = 0 Mesh stats points: 1760 internal points: 0 faces: 3280 internal faces: 1520 cells: 800 faces per cell: 6 boundary patches: 1 point zones: 0 face zones: 0 cell zones: 0 Overall number of cells of each type: hexahedra: 800 prisms: 0 wedges: 0 pyramids: 0 tet wedges: 0 tetrahedra: 0 polyhedra: 0 Checking topology... Boundary definition OK. ***Total number of faces on empty patches is not divisible by the number of cells in the mesh. Hence this mesh is not 1D or 2D. 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 defaultFaces 1760 1760 ok (closed singly connected) Checking geometry... Overall domain bounding box (-5 -5 0) (5 5 1) Mesh (non-empty, non-wedge) directions (0 0 0) Mesh (non-empty) directions (0 0 0) ***Number of edges not aligned with or perpendicular to non-empty directions: 3370 <<Writing 1760 points on non-aligned edges to set nonAlignedEdges Boundary openness (-1.22808e-17 -1.40352e-17 1.69592e-17) OK. Max cell openness = 3.0479e-16 OK. Max aspect ratio = -1 OK. Minimum face area = 0.0170746. Maximum face area = 0.52336. Face area magnitudes OK. Min volume = 0.0170746. Max volume = 0.226217. Total volume = 77.6592. Cell volumes OK. Mesh non-orthogonality Max: 8.95528 average: 0.822375 Non-orthogonality check OK. Face pyramids OK. Max skewness = 0.586957 OK. Coupled point location match (average 0) OK. Failed 1 mesh checks. End |
||
November 13, 2014, 10:20 |
|
#6 |
Senior Member
Alex
Join Date: Oct 2013
Posts: 337
Rep Power: 22 |
You can check the fail with paraview opening the set nonAlignedEdges. Why don't you upload your blockMeshDict file so that someone can check your process?
__________________
Web site where I present my Master's Thesis: foamingtime.wordpress.com The case I talk about in this site was solved with chtMultiRegionSimpleFoam solver and involves radiation. Some basic tutorials are also resolved step by step in the web. If you are interested in these matters, you are invited to come in! |
|
November 13, 2014, 10:54 |
|
#7 | |
Member
Join Date: Nov 2014
Posts: 88
Rep Power: 12 |
Quote:
Code:
/*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 2.3.0 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; object blockMeshDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // convertToMeters 1; vertices ( (-5.000000 -0.000000 0.000000) // v0 (-2.500000 -4.330127 0.000000) // v1 (0.000000 -5.000000 0.000000) // v2 (2.500000 -4.330127 0.000000) // v3 (5.000000 -0.000000 0.000000) // v4 (2.500000 4.330127 0.000000) // v5 (0.000000 5.000000 0.000000) // v6 (-2.500000 4.330127 0.000000) // v7 (-0.500000 -0.000000 0.000000) // v8 (-0.250000 -0.433013 0.000000) // v9 (0.000000 -0.500000 0.000000) // v10 (0.250000 -0.433013 0.000000) // v11 (0.500000 -0.000000 0.000000) // v12 (0.250000 0.433013 0.000000) // v13 (0.000000 0.500000 0.000000) // v14 (-0.250000 0.433013 0.000000) // v15 (-5.000000 -0.000000 1.000000) // v16 (-2.500000 -4.330127 1.000000) // v17 (0.000000 -5.000000 1.000000) // v18 (2.500000 -4.330127 1.000000) // v19 (5.000000 -0.000000 1.000000) // v20 (2.500000 4.330127 1.000000) // v21 (0.000000 5.000000 1.000000) // v22 (-2.500000 4.330127 1.000000) // v23 (-0.500000 -0.000000 1.000000) // v24 (-0.250000 -0.433013 1.000000) // v25 (0.000000 -0.500000 1.000000) // v26 (0.250000 -0.433013 1.000000) // v27 (0.500000 -0.000000 1.000000) // v28 (0.250000 0.433013 1.000000) // v29 (0.000000 0.500000 1.000000) // v30 (-0.250000 0.433013 1.000000) // v31 ); blocks ( hex (1 9 8 0 17 25 24 16) (10 10 1) simpleGrading (1 1 1) hex (1 2 10 9 17 18 26 25) (10 10 1) simpleGrading (1 1 1) hex (2 3 11 10 18 19 27 26) (10 10 1) simpleGrading (1 1 1) hex (11 3 4 12 27 19 20 28) (10 10 1) simpleGrading (1 1 1) hex (12 4 5 13 28 20 21 29) (10 10 1) simpleGrading (1 1 1) hex (14 13 5 6 30 29 21 22) (10 10 1) simpleGrading (1 1 1) hex (15 14 6 7 31 30 22 23) (10 10 1) simpleGrading (1 1 1) hex (0 8 15 7 16 24 31 23) (10 10 1) simpleGrading (1 1 1) ); edges ( arc 0 1 (-3.750000 -3.307189 0.000000) // c0 arc 1 2 (-1.250000 -4.841229 0.000000) // c1 arc 2 3 (1.250000 -4.841229 0.000000) // c2 arc 3 4 (3.750000 -3.307189 0.000000) // c3 arc 4 5 (3.750000 3.307189 0.000000) // c4 arc 5 6 (1.250000 4.841229 0.000000) // c5 arc 6 7 (-1.250000 4.841229 0.000000) // c6 arc 7 0 (-3.750000 3.307189 0.000000) // c7 arc 8 9 (-0.375000 -0.330719 0.000000) // c8 arc 9 10 (-0.125000 -0.484123 0.000000) // c9 arc 10 11 (0.125000 -0.484123 0.000000) // c10 arc 11 12 (0.375000 -0.330719 0.000000) // c11 arc 12 13 (0.375000 0.330719 0.000000) // c12 arc 13 14 (0.125000 0.484123 0.000000) // c13 arc 14 15 (-0.125000 0.484123 0.000000) // c14 arc 15 0 (-0.375000 0.330719 0.000000) // c15 arc 16 17 (-3.750000 -3.307189 1.000000) // c16 arc 17 18 (-1.250000 -4.841229 1.000000) // c17 arc 18 19 (1.250000 -4.841229 1.000000) // c18 arc 19 20 (3.750000 -3.307189 1.000000) // c19 arc 20 21 (3.750000 3.307189 1.000000) // c20 arc 21 22 (1.250000 4.841229 1.000000) // c21 arc 22 23 (-1.250000 4.841229 1.000000) // c22 arc 23 16 (-3.750000 3.307189 1.000000) // c23 arc 24 25 (-0.375000 -0.330719 1.000000) // c24 arc 25 26 (-0.125000 -0.484123 1.000000) // c25 arc 26 27 (0.125000 -0.484123 1.000000) // c26 arc 27 28 (0.375000 -0.330719 1.000000) // c27 arc 28 29 (0.375000 0.330719 1.000000) // c28 arc 29 30 (0.125000 0.484123 1.000000) // c29 arc 30 31 (-0.125000 0.484123 1.000000) // c30 arc 31 24 (-0.375000 0.330719 1.000000) // c31 ); boundary // patches ( ); mergePatchPairs ( //( masterpatch slavepatch ) // define connecting faces ); // ************************************************************************* // |
||
November 13, 2014, 14:13 |
|
#8 |
Senior Member
Alex
Join Date: Oct 2013
Posts: 337
Rep Power: 22 |
The error shown by checkMesh only means that you forgot to define the boundary faces in your blockMeshDict file. By the way, two questions.
First one, you forgot to define one of the arcs, well actually you have defined it in a wrong way. This is the arc going from point 15 to point 8 that you have defined it from 15 to 0. Second question, why are you using such an amount of blocks to create a cylinder? You can do it with less blocks. Look at your blockMeshDict modified to create your cylinder with the half of the blocks you used: Code:
/*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 2.3.0 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; object blockMeshDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // convertToMeters 0.1; vertices ( (-5.000000 -0.000000 0.000000) // v0 (-2.500000 -4.330127 0.000000) // v1 (0.000000 -5.000000 0.000000) // v2 (2.500000 -4.330127 0.000000) // v3 (5.000000 -0.000000 0.000000) // v4 (2.500000 4.330127 0.000000) // v5 (0.000000 5.000000 0.000000) // v6 (-2.500000 4.330127 0.000000) // v7 (-0.500000 -0.000000 0.000000) // v8 (-0.250000 -0.433013 0.000000) // v9 (0.000000 -0.500000 0.000000) // v10 (0.250000 -0.433013 0.000000) // v11 (0.500000 -0.000000 0.000000) // v12 (0.250000 0.433013 0.000000) // v13 (0.000000 0.500000 0.000000) // v14 (-0.250000 0.433013 0.000000) // v15 (-5.000000 -0.000000 1.000000) // v16 (-2.500000 -4.330127 1.000000) // v17 (0.000000 -5.000000 1.000000) // v18 (2.500000 -4.330127 1.000000) // v19 (5.000000 -0.000000 1.000000) // v20 (2.500000 4.330127 1.000000) // v21 (0.000000 5.000000 1.000000) // v22 (-2.500000 4.330127 1.000000) // v23 (-0.500000 -0.000000 1.000000) // v24 (-0.250000 -0.433013 1.000000) // v25 (0.000000 -0.500000 1.000000) // v26 (0.250000 -0.433013 1.000000) // v27 (0.500000 -0.000000 1.000000) // v28 (0.250000 0.433013 1.000000) // v29 (0.000000 0.500000 1.000000) // v30 (-0.250000 0.433013 1.000000) // v31 ); blocks ( hex (2 10 8 0 18 26 24 16) (10 10 1) simpleGrading (1 1 1) //hex (1 2 10 9 17 18 26 25) (10 10 1) simpleGrading (1 1 1) hex (2 4 12 10 18 20 28 26) (10 10 1) simpleGrading (1 1 1) //hex (11 3 4 12 27 19 20 28) (10 10 1) simpleGrading (1 1 1) hex (12 4 6 14 28 20 22 30) (10 10 1) simpleGrading (1 1 1) //hex (14 13 5 6 30 29 21 22) (10 10 1) simpleGrading (1 1 1) //hex (15 14 6 7 31 30 22 23) (10 10 1) simpleGrading (1 1 1) hex (0 8 14 6 16 24 30 22) (10 10 1) simpleGrading (1 1 1) ); edges ( arc 0 2 (-3.750000 -3.307189 0.000000) // c0 //arc 1 2 (-1.250000 -4.841229 0.000000) // c1 arc 2 4 (1.250000 -4.841229 0.000000) // c2 //arc 3 4 (3.750000 -3.307189 0.000000) // c3 arc 4 6 (3.750000 3.307189 0.000000) // c4 //arc 5 6 (1.250000 4.841229 0.000000) // c5 arc 6 0 (-1.250000 4.841229 0.000000) // c6 //arc 7 0 (-3.750000 3.307189 0.000000) // c7 arc 8 10 (-0.375000 -0.330719 0.000000) // c8 //arc 9 10 (-0.125000 -0.484123 0.000000) // c9 arc 10 12 (0.125000 -0.484123 0.000000) // c10 //arc 11 12 (0.375000 -0.330719 0.000000) // c11 arc 12 14 (0.375000 0.330719 0.000000) // c12 //arc 13 14 (0.125000 0.484123 0.000000) // c13 arc 14 8 (-0.125000 0.484123 0.000000) // c14 //arc 15 8 (-0.375000 0.330719 0.000000) // c15 0->8 arc 16 18 (-3.750000 -3.307189 1.000000) // c16 //arc 17 18 (-1.250000 -4.841229 1.000000) // c17 arc 18 20 (1.250000 -4.841229 1.000000) // c18 //arc 19 20 (3.750000 -3.307189 1.000000) // c19 arc 20 22 (3.750000 3.307189 1.000000) // c20 //arc 21 22 (1.250000 4.841229 1.000000) // c21 arc 22 16 (-1.250000 4.841229 1.000000) // c22 //arc 23 16 (-3.750000 3.307189 1.000000) // c23 arc 24 26 (-0.375000 -0.330719 1.000000) // c24 //arc 25 26 (-0.125000 -0.484123 1.000000) // c25 arc 26 28 (0.125000 -0.484123 1.000000) // c26 //arc 27 28 (0.375000 -0.330719 1.000000) // c27 arc 28 30 (0.375000 0.330719 1.000000) // c28 //arc 29 30 (0.125000 0.484123 1.000000) // c29 arc 30 24 (-0.125000 0.484123 1.000000) // c30 //arc 31 24 (-0.375000 0.330719 1.000000) // c31 ); boundary // patches ( out { type wall; faces ( (0 2 18 16) (2 4 20 18) (4 6 22 20) (6 0 16 22) ); } in { type wall; faces ( (10 8 24 26) (12 10 26 28) (14 12 28 30) (8 14 30 24) ); } ); mergePatchPairs ( //( masterpatch slavepatch ) // define connecting faces ); // ************************************************************************* // Regards, Alex
__________________
Web site where I present my Master's Thesis: foamingtime.wordpress.com The case I talk about in this site was solved with chtMultiRegionSimpleFoam solver and involves radiation. Some basic tutorials are also resolved step by step in the web. If you are interested in these matters, you are invited to come in! |
|
November 13, 2014, 14:40 |
|
#9 | |
Member
Join Date: Nov 2014
Posts: 88
Rep Power: 12 |
Quote:
|
||
November 22, 2018, 08:59 |
|
#10 |
New Member
Kevin Habrock
Join Date: Oct 2018
Posts: 22
Rep Power: 8 |
Hello
based on this link (https://www.ehsanmadadi.com/cylinder-mesh/) I created a hollow cylinder as .m4 file for my project. Maybe someone can use it for other tasks. To use the file you only have to change the extension .txt to .m4. Best regards Kevin |
|
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
[snappyHexMesh] Create Cylinder (HOLLOW NO MESH OR CAVITY) inside a Cuboid | saddy | OpenFOAM Meshing & Mesh Conversion | 5 | August 8, 2023 08:10 |
solidDisplacementFoam - cylinder with heated hollow | glupieri | OpenFOAM Verification & Validation | 3 | May 22, 2017 15:03 |
FloTHERM hollow cylinder model | nirmal_singh | FloEFD, FloWorks & FloTHERM | 4 | November 1, 2015 19:55 |
[ANSYS Meshing] Regarding 3-D meshing of hollow cylinder | Thermal_engg | ANSYS Meshing & Geometry | 11 | July 6, 2013 01:22 |
Axisymmetric Flow around a hollow cylinder with an extended flair | JLight | OpenFOAM | 5 | January 28, 2013 13:11 |