CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   Fluent UDF and Scheme Programming (https://www.cfd-online.com/Forums/fluent-udf/)
-   -   cell_t c0, c1 = -1 what does -1 mean, see codes inside (https://www.cfd-online.com/Forums/fluent-udf/89142-cell_t-c0-c1-1-what-does-1-mean-see-codes-inside.html)

zhaolinchen June 6, 2011 07:00

cell_t c0, c1 = -1 what does -1 mean, see codes inside
 
1 Attachment(s)
DEFINE_UDS_FLUX(my_uds_flux,f,t,i)
{
cell_t c0, c1 = -1;/*what does the -1 mean?*/
Thread *t0, *t1 = NULL;/*what does the NULL mean?*/


real NV_VEC(psi_vec), NV_VEC(A), flux = 0.0;

c0 = F_C0(f,t);
t0 = F_C0_THREAD(f,t);
F_AREA(A, f, t);

/* If face lies at domain boundary, use face values; */
/* If face lies IN the domain, use average of adjacent cells. */

if (BOUNDARY_FACE_THREAD_P(t)) /*Most face values will be available*/
{
real dens;

/* Depending on its BC, density may not be set on face thread*/
if (NNULLP(THREAD_STORAGE(t,SV_DENSITY)))
dens = F_R(f,t); /* Set dens to face value if available */
else
dens = C_R(c0,t0); /* else, set dens to cell value */

NV_DS(psi_vec, =, F_U(f,t), F_V(f,t), F_W(f,t), *, dens);

flux = NV_DOT(psi_vec, A); /* flux through Face */
}
else
{
c1 = F_C1(f,t); /* Get cell on other side of face */
t1 = F_C1_THREAD(f,t);

NV_DS(psi_vec, =, C_U(c0,t0),C_V(c0,t0),C_W(c0,t0),*,C_R(c0,t0));
NV_DS(psi_vec, +=, C_U(c1,t1),C_V(c1,t1),C_W(c1,t1),*,C_R(c1,t1));

flux = NV_DOT(psi_vec, A)/2.0; /* Average flux through face */
}

/* ANSYS FLUENT will multiply the returned value by phi_f (the scalar's
value at the face) to get the "complete'' advective term. */

return flux;
}
************************************************** ******
see the picture, am I right?
Attachment 7916

KristianEtienne June 10, 2011 08:08

Hey,

For this particular example the intialization of the neighbour cell and thread pointers does not have any significance as they are set to their correct values later in the code (i.e. c1 = F_C1(f,t); and t1 = F_C1_THREAD(f,t); ). I guess they are initialized to these values in order to handle any exceptions arising, although these should not occur for this case.

Note that the cell pointers refer to the cells adjacent to the face in question. So, in your figure, if the (face) thread pointer f is on a boundary (which is checked by BOUNDARY_FACE_THREAD_P(t) ), only one cell is available, namely C0. If you are in the interior, C0 and C1 will be the cells neighboring to the face thread in question. See section 3.2.5.1 in the R13 UDF guide for further information.

Cheers!


All times are GMT -4. The time now is 06:35.