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/)
-   -   Help With If statement (https://www.cfd-online.com/Forums/fluent-udf/137086-help-if-statement.html)

Franchijio June 10, 2014 06:37

Help With If statement
 
Hi, I am having problem with an if else statement for a UDF. It seems not to work. Please can anyone see what am not doing right.

DEFINE_ADJUST(experiment,domain)
{

Thread *t;
cell_t c;
real Z,l_x,A,x_p;
thread_loop_c (t,domain)
{
Thread **pt = THREAD_SUB_THREADS(t);
Thread *tp = pt[0];
/* gas phase */
Thread *ts = pt[1]; /* solid phase */
if (NULL != THREAD_STORAGE(t,SV_UDS_I(ADS))&& NULL != T_STORAGE_R_NV(t,SV_UDSI_M1(ADS)))
{
begin_c_loop (c,t)

{

if (C_VOF(c,ts) >= 0.00001)
{
Z = 4675.47;
x_p = 526890/C_UDSI(c,t,P);
l_x = log(x_p);
A = 8.31429*tem*l_x;
C_UDSI(c,t,ADS)=0.301555862*exp(-(A*A*A)/(Z*Z*Z));
}

else
{
Z = 4675.47;
x_p = 526890/C_UDSI(c,t,P);
l_x = log(x_p);
A = 8.31429*tem*l_x;

C_UDSI(c,t,ADS)=0;
}
}
end_c_loop(c,t)
}

}

}

C_UDSI(c,t,ADS)=0 is meant to be case when volume fraction of solid is less than 0.00001 but this is not happening for me in the simulation.


Crow June 11, 2014 09:29

I had some similar issues and just use put another if with the inverse statement. In your case it would be

if (C_VOF(c,ts) < 0.00001)

It is anoying because it is slower but it works.

Franchijio June 11, 2014 09:52

Thanks Crow. I don't seem to understand what you mean. Are you saying I should use another if with inverse of the logical expression instead of else logical expression in which case it will become

if (C_VOF(c,ts) >= 0.00001)
{
Z = 4675.47;
x_p = 526890/C_UDSI(c,t,P);
l_x = log(x_p);
A = 8.31429*tem*l_x;
C_UDSI(c,t,ADS)=0.301555862*exp(-(A*A*A)/(Z*Z*Z));
}

if
(C_VOF(c,ts) < 0.00001)
{
Z = 4675.47;
x_p = 526890/C_UDSI(c,t,P);
l_x = log(x_p);
A = 8.31429*tem*l_x;

C_UDSI(c,t,ADS)=0;
}
}
end_c_loop(c,t)
}

}

}

Thanks

Crow June 11, 2014 15:49

Yes, this is what I mean. So if the problem is with the if else statement it should solve it. If I'm not mistaken, it should make your code looks like this:

DEFINE_ADJUST(experiment,domain)
{

Thread *t;
cell_t c;
real Z,l_x,A,x_p;

thread_loop_c (t,domain)
{
Thread **pt = THREAD_SUB_THREADS(t);
Thread *tp = pt[0]; /* gas phase */
Thread *ts = pt[1]; /* solid phase */

if (NULL != THREAD_STORAGE(t,SV_UDS_I(ADS))&& NULL != T_STORAGE_R_NV(t,SV_UDSI_M1(ADS)))
{
begin_c_loop (c,t)
{
if (C_VOF(c,ts) >= 0.00001)
{
Z = 4675.47;
x_p = 526890/C_UDSI(c,t,P);
l_x = log(x_p);
A = 8.31429*tem*l_x;
C_UDSI(c,t,ADS)=0.301555862*exp(-(A*A*A)/(Z*Z*Z));
}

if (C_VOF(c,ts) < 0.00001)
{
Z = 4675.47;
x_p = 526890/C_UDSI(c,t,P);
l_x = log(x_p);
A = 8.31429*tem*l_x;

C_UDSI(c,t,ADS)=0;
}
}
end_c_loop(c,t)
}

}

}

Franchijio June 13, 2014 05:47

Thanks Crow. I have done exactly that and yet it is not working. Was your case similar to mine? If yes did you do any other thing different and how long did your simulation run for?

Thanks

Crow June 13, 2014 09:43

More information is needed in order to help you.

1) What are you trying to accomplish exactly with your UDF?

2) What is the error message/problem you are encounting to know that your UDF is not working?

Edit: 3) What is the general configuration of your simulation? What are you simulating?


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