CFD Online Discussion Forums

CFD Online Discussion Forums (http://www.cfd-online.com/Forums/)
-   Fluent UDF and Scheme Programming (http://www.cfd-online.com/Forums/fluent-udf/)
-   -   global face number (http://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

Adjacent cells macros
 
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
Sorry for missreading your code.

My bad


All times are GMT -4. The time now is 00:45.