CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   Fluent UDF and Scheme Programming (https://www.cfd-online.com/Forums/fluent-udf/)
-   -   global face number (https://www.cfd-online.com/Forums/fluent-udf/68922-global-face-number.html)

 Häwimeddel October 6, 2009 10:12

global face number

Question:

Is it a feasible approach to determine if two cells of bordering threads are neighbours by finding out if they share a face?

Lets say I have a cell A in thread A and I loop through the faces (four, since 2d). For every face of cell A I loop through all the cells of thread B and see if any one shares this face.

Could this work? Or is the global face number (which can be retrieved with
Code:

`C_FACE(c,t,n)`
)
different for neighbouring cells if they are of different threads?

 Häwimeddel October 7, 2009 05:00

It does not work, unfortunately.

But as an easy fix, I just compare the coords of the face centres to determine wether cell are neigbours or not.

 Häwimeddel October 7, 2009 09:07

That also did not work. My solution (which works now):

Code:

```int neighbourcell(cell_t cell0, Thread *thread0, cell_t cell1, Thread *thread1, int n) //put cell pointers and a face index (of cell 0) -> it is estimated if cell 0 is a neighbour of cell 1, connected via face {     Thread *threadf; //face thread of face     Thread *tc0; //cell threads of neighbours to face     Thread *tc1; //cell threads of neighbours to face     face_t face;     cell_t c0; //neighbour to the face     cell_t c1; //neighbour to the face     face = C_FACE(cell0,thread0,n); //the face of cell 1     threadf = C_FACE_THREAD(cell0,thread0,n); //the face thread of this face     c0 = F_C0(face,threadf);     c1 = F_C1(face,threadf);     tc0 = F_C0_THREAD(face,threadf);     tc1 = F_C1_THREAD(face,threadf);     if ( (c0 == cell0 && c1 == cell1 && tc0 == thread0 && tc1 == thread1) || (c0 == cell1 && c1 == cell0 && tc0 == thread1 && tc1 == thread0) )     {         return 1;     }         else     {         return 0;     } }```

 dmoroian October 20, 2009 03:04

Did you try these macros:
Code:

```F_C0(f,t) F_C1(f,t)```
?

 Häwimeddel October 20, 2009 03:14

Yes, see my code above. And they worked, too! ;)

 dmoroian October 20, 2009 03:24

Oh :o