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/)
-   -   On the UDS flux (https://www.cfd-online.com/Forums/fluent-udf/230802-uds-flux.html)

Shoh October 6, 2020 22:51

On the UDS flux
 
Hi,
I currently conduct a steady-state simulation for the velocity and (passive) scalar fields.

In calculating scalar field, we should specify flux function in 'user-defined/scalars'.
Here, I don't understand the difference between the 'mass flow rate' flux function (given by fluent) and a 'DEFINE_UDS_FLUX' (provided by udf manual, see below).

I conducted simulations with both flux functions and found that the results are different.

The following is the code of 'DEFINE_UDS_FLUX' in udf manual:
(https://www.afs.enea.it/project/nept...udf/node90.htm)

/************************************************** ********************/
/* UDF that implements a simplified advective term in the */
/* scalar transport equation */
/************************************************** ********************/
#include "udf.h"
DEFINE_UDS_FLUX(my_uds_flux,f,t,i)
{
cell_t c0, c1 = -1;
Thread *t0, *t1 = NULL;
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;
}


I think the above code also returns mass flow rate (rho*u*A), and thus I expected that the results should be identical. But I don't understand why the results are different each other.

I really appreciate if you give an answer.
Best regards,


All times are GMT -4. The time now is 11:05.