FOAM FATAL ERROR: face 0 in patch 0 does not have neighbour cell face
Hello Everyone,
I am very new to OpeFoam as I only started to use it a few days ago, I am trying to generate a Mesh which is made of 3 rectangular blocks, one next to the other with the middle one slightly smaller than the other two. I get the following message: FOAM FATAL ERROR: face 0 in patch 0 does not have neighbour cell face: 4(0 12 16 3) What am I doing wrong? Thanks a lot P.S.: here is the code: convertToMeters 1; vertices ( (-5 -1 -1) (5 -1 -1) (5 1 -1) (-5 1 -1) (-5 -1 1) (5 -1 1) (5 1 1) (-5 1 1) (-2 -1 -0.5) (-2 1 -0.5) (2 1 -0.5) (2 -1 -0.5) (-2 -1 -1 ) (-2 1 -1) (2 1 -1) (2 -1 -1) (-2 -1 1) (-2 1 1) (2 1 1) (2 -1 1) ); blocks ( hex (0 4 3 7 12 13 16 17) (100 4 4) simpleGrading (1 1 1) hex (8 9 10 11 16 17 18 19) (100 4 4) simpleGrading (1 1 1) hex (1 2 5 6 14 15 18 19) (100 4 4) simpleGrading (1 1 1) ); edges ( ); boundary ( leftWall { type wall; faces ( (0 12 16 3) (8 11 19 16) (1 2 19 15) ); } rightWall { type wall; faces ( (4 7 17 13) (9 17 18 10) (14 18 6 5) ); } topWall { type wall; faces ( (7 3 16 17) (17 16 19 18) (18 19 2 6) ); } bottomWall { type wall; faces ( (0 4 13 12) (13 9 8 12) (9 10 11 8) (15 11 10 14) (14 5 1 15) ); } inlet { type patch; faces ( (0 3 7 4) ); } outlet { type patch; faces ( (6 2 1 5) ); } ); patch slave_1 ( (13 17 16 12) ); patch slave_2 ( (15 19 18 14) ) ; mergePatchPairs ( (16 17 9 8) (10 18 19 11) ); |
Hi and welcome to the forum,
face 0 in patch 0 does not have neighbour cell face: 4(0 12 16 3) actually means that you messed up the order of the points in your patch definition. In blockMesh you have to strictly follow the orders which are well explained in the user guide. However sometimes it is hard to see where the error is therefore I recommend you to type paraFoam -block which will display your blockMeshDict file without compiling it so it is very handy for error handling. Another hint for the future is try to use the forum search or google on your error message, which gives you already a lot of answers regarding your problems. I hope I could contribute regards |
FOAM FATAL ERROR: face 7 in patch 0 does not have neighbour cell face: 4(23 24 20 19
Hello Everyone...
I am very new to OF and trying to mesh a cylinder for Hagen-Poiseuille flow. I am getting error like: FOAM FATAL ERROR: face 7 in patch 0 does not have neighbour cell face: 4(19 20 24 23) From function polyMesh::facePatchFaceCells(const faceList& patchFaces,const labelListList& pointCells,const faceListList& cellsFaceShapes,const label patchID) in file meshes/polyMesh/polyMeshFromShapeMesh.C at line 127. blockMeshDict is : convertToMeters 0.1; vertices ( (0 0 0) (0.15 0.15 0) (-0.15 0.15 0) (-0.15 -0.15 0) (0.15 -0.15 0) //4 (0.3 0.3 0) (-0.3 0.3 0) (-0.3 -0.3 0) (0.3 -0.3 0)//8 (0.35 0.35 0) (-0.35 0.35 0) (-0.35 -0.35 0) (0.35 -0.35 0)//12 (0.15 0.15 30) (-0.15 0.15 30) (-0.15 -0.15 30) (0.15 -0.15 30) (0.3 0.3 30)//17 (-0.3 0.3 30) (-0.3 -0.3 30) (0.3 -0.3 30) (0.35 0.35 30) //21 (-0.35 0.35 30) (-0.35 -0.35 30) (0.35 -0.35 30) (0 0 30) //25 ); blocks ( hex (1 2 3 4 13 14 15 16) (10 10 150) simpleGrading (1 1 1) hex (1 5 6 2 13 17 18 14) (10 10 150) simpleGrading (1 1 1) hex (2 6 7 3 14 18 19 15) (10 10 150) simpleGrading (1 1 1) hex (3 7 8 4 15 19 20 16) (10 10 150) simpleGrading (1 1 1) hex (4 8 5 1 16 20 17 13) (10 10 150) simpleGrading (1 1 1) hex (5 9 10 6 17 21 22 18) (10 10 150) simpleGrading (1 1 1) hex (6 10 11 7 18 22 23 19) (10 10 150) simpleGrading (1 1 1) hex (12 9 5 8 24 21 17 20) (10 10 150) simpleGrading (1 1 1) ); edges ( arc 5 6 (0 0.42426 0) // back face arc 6 7 (-0.42426 0 0) arc 7 8 (0 -0.42426 0) arc 8 5 (0.42426 0 0) arc 9 10 (0 0.5 0) arc 10 11 (-0.5 0 0) arc 11 12 (0 -0.5 0) arc 12 9 (0.5 0 0) arc 17 18 (0 0.42426 30) // front face arc 18 19 (-0.42426 0 30) arc 19 20 (0 -0.42426 30) arc 20 17 (0.42426 0 30) arc 21 22 (0 0.5 30) arc 22 23 (-0.5 0 30) arc 23 24 (0 -0.5 30) arc 24 21 (0.5 0 30) ); boundary ( inlet { type inlet; faces ( (13 16 15 14) (13 14 18 17) (14 15 19 18) (15 16 20 19) (16 13 17 20) (17 18 22 21) (18 19 23 22) (19 20 24 23) (20 17 21 24) ); } outlet { type outlet; faces ( (1 5 6 2) (2 6 7 3) (3 7 8 4) (4 8 5 1) (1 2 3 4) (5 9 10 6) (6 10 11 7) (7 11 12 8) (8 12 9 5) ); } fixedWalls { type wall; faces ( (21 22 10 19) (22 23 11 10) (23 24 12 11) (24 21 9 12) ); } ); mergePatchPairs ( ); |
Dear apk1509,
please read my post of Feb. 7th which is right before your post. (post no. 2 of this thread) The complete answer to your question is posted there as well as hints on how to solve your problem! regards Colin |
Actually I tried to correct the order of points and still i got the same error..
Also, when i tried with "paraFoam -block", paraview opened and closed before showing anything. How to rectify this.. |
Hi,
this brings us closer to your problem. You see why it is important to explain your problem in detail as suggested here: http://www.cfd-online.com/Forums/ope...-get-help.html However two remarks to your blockMeshDict: - the way you count is wrong: blockMesh starts counting from 0 so the first point in the list with points is 0 the second is 1 and so on! - the valid entry for patchtypes are wall patch symmetry the patchtype like inlet outlet and so on will be specified in the 0 folder. see the examples for further details (like dambreak) When you have fixed that let us know what the results are! regards Colin |
FOAM FATAL ERROR: face 0 in patch 4 does not have neighbour cell face: 4(2 4 14 12)
Hello Everyone
I am very new to OF and trying to mesh. I am getting following error: FOAM FATAL ERROR: face 0 in patch 4 does not have neighbour cell face: 4(2 4 14 12) From function polyMesh::facePatchFaceCells(const faceList& patchFaces,const labelListList& pointCells,const faceListList& cellsFaceShapes,const label patchID) in file meshes/polyMesh/polyMeshFromShapeMesh.C at line 127. I even tried with "paraFoam -block", but that too gave an error. Please help me rectify this error My blockMeshDict is: convertToMeters 1; vertices ( (0 0 0) // 0 (1.5 0 0) //1 (2 0.5 0) //2 (0 0.5 0) //3 (2.5 0 0) //4 (4 0 0) //5 (4 0.5 0) //6 (0 2 0) //7 (2 2 0) //8 (4 2 0) //9 (0 0 0.1) // 10 (1.5 0 0.1) //11 (2 0.5 0.1) //12 (0 0.5 0.1) //13 (2.5 0 0.1) //14 (4 0 0.1) //15 (4 0.5 0.1) //16 (0 2 0.1) //17 (2 2 0.1) //18 (4 2 0.1) //19 ); blocks ( hex (0 1 2 3 10 11 12 13) (10 10 1) simpleGrading (1 1 1) hex (3 2 8 7 13 12 18 17) (10 10 1) simpleGrading (1 1 1) hex (4 5 6 7 14 15 16 17) (10 10 1) simpleGrading (1 1 1) hex (3 6 9 8 13 16 19 18) (10 10 1) simpleGrading (1 1 1) ); edges ( arc 1 2 (1.64644 0.35355 0) arc 2 4 (2.35355 0.35355 0) arc 11 12 (1.64644 0.35355 0.1) arc 12 14 (2.35355 0.35355 0.1) ); boundary ( down { type symmetryPlane; faces ( (0 1 11 10) (4 5 15 14) ); } right { type patch; faces ( (5 6 16 15) (6 9 19 16) ); } up { type symmetryPlane; faces ( (9 8 18 19) (8 7 17 18) ); } left { type patch; faces ( (3 0 10 13) (7 3 13 17) ); } cylinder { type symmetry; faces ( (2 4 14 12) (1 2 12 11) ); } ); mergePatchPairs ( ); |
Hi Divye,
check your points, is (2 4 14 12) really a face of your boundary? there is no hex with all the 4 points. So my suggestion is that (2 4 14 12) is just an imaginary plane between two hexes. greetings Alex |
Issue with multiple blocks of different sizes
1 Attachment(s)
Hello,
Iīve found the same error of the title of the thread: FOAM FATAL ERROR: face 0 in patch 9 does not have neigbour cell face ...And I know the reason thanks to reading this forum :) However, I do not know how to solve it in a "fast way". Attached it is a picture of my geometry: two solid blocks and two air blocks of different sizes. And my question is: what should I do with the face Air1_to_Solid2? That is, with the portion of the Solid2 face coupled with the block called Air1? Should I make a new block dividing the block Air1 so that the face Air1_to_solid2 belongs to that new block? This is probably the answer, but is there any faster way to debug the error? The utility mergepatchpairs maybe? Thanks in advance |
Hi Paula,
First of all... what are you trying to simulate? Secondly, to help you, at least the blockmeshdict would be useful too. kind regards Alex |
Hello AlexB,
Sorry, I didnīt give information enough :S Iīm doing this tutorial: http://es.slideshare.net/ARPITSINGHA...regiontutorial Iīm having troubles with the boundary Air1_to_Solid2, as it doesnīt belong to an independent block. I havenīt the blockMeshDict here, but I can attach it tomorrow :D Thanks for your reply! |
1 Attachment(s)
Hello Alexander,
This is the blocMeshDict file: HTML Code:
convertToMeters 1; Thanks! |
Hi Paula,
after a quick glance to your blockMeshDict file I think the problem is that you need to use a couple of extra blocks in order to define properly your geometry. Besides that, it makes no sense to use the same point twice with a diferent label when you define all the vertices, i.e., the point 2 is tha same than the point 17... Define each point only once in the vertices subdictionary! Your vertices list will get muc shorter. I would define your geometry by using 24 vertices and 6 blocks instead of 4, something like shown below would work. Code:
only the vertices from the bottom of the geometry are shown Code:
(...) Best regards, Alex |
Quote:
Iīve been reading the user guide and Iīd like to ask you another question: If I do not use the utility mergePatchPairs would it be the "face matching" method and if I define the patches of type Air_to_solid as boundary and then use mergePatchPairs utility, would I be using the face merging method? To clarify my question, an example of the code for only one external face (top) and one internal face (Solid_to_Air), for the face merging method: HTML Code:
boundary Thanks again! |
Hi Paula,
Forget about the coupling patches between regions at this stage, you only need to define the external ones in blockMesh, the other ones get defined after you execute splitMeshRegions and changeDictionary utilities. I see you are a bit lost when it comes to multi region cases, you need to take a look at the planeWall2D tutorial and try to understand the steps to reproduce a multi region case. I strongly recomend you to study this case before setting up any other multi region case on your own. Best regards, Alex |
2 Attachment(s)
Hello Alex,
Iīve made the tutorial you suggested (planeWall2D) and some others by Iīm afraid they havenīt clarify some of my doubts. Iīve investigated which are the files OpenFOAM ask you for, in order to set a multiRegion case step by step (without using Allrun). Attached you can find a scheme of the process. As you can see, my plan is not to use the ./Allrun command. What I want to do is to enter the following commands one by one: 1. blockMesh 2. topoSet 3. splitMeshRegions 4. script to remove fluid fields from solid regions (contained in the Allrun file) 5. chtMultiregionFoam However, I do not know how to set the changeDictionaryDict and it doesnīt help me so much to look into the example of the tutorial. Please, could you help me? |
Quote:
I don't like the fact that you don't want to use the Allrun script since it is totally helpful in any case you set up. I strongly suggest you to get used to make use of them usually! I don't understand either what you say you don't understand...:confused: I mean, the use of changeDictionary is quite obvious and it is explained in the planeWall2D tutorial Quote:
Hope it helps! Alex |
Hello Alex,
Of course the Allrun script is useful. I was only entering command by command in order to know what does it execute internally when I enter: ./Allrun in the console. I mean, what folders are created when I enter blockMesh and then SplitMeshRegions, for example. But Iīll use it, of course! :) Regarding to the changeDictionary of the tutorial WallPlane2D, what I donīt understand is (comments/questions in the own code): HTML Code:
/*--------------------------------*- C++ -*----------------------------------*\ |
Hi,
".*" is a wildcard that means "any character chain". Thus, "bottomAir_to_.*" refers to any coupling boundary condition for the region bottomAir to any solid; ".*" refers to any boundary condition found in the geometry. Hope it helps! |
Ok!
I think that little by little Iīm solving the mistery ;) Thank you very much Alex! |
All times are GMT -4. The time now is 05:17. |