
[Sponsors] 
June 10, 2014, 06:37 
Help With If statement

#1 
New Member
Join Date: Nov 2013
Posts: 6
Rep Power: 4 
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. 

June 11, 2014, 09:29 

#2 
New Member
Join Date: Mar 2014
Posts: 11
Rep Power: 4 
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. 

June 11, 2014, 09:52 

#3 
New Member
Join Date: Nov 2013
Posts: 6
Rep Power: 4 
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 

June 11, 2014, 15:49 

#4 
New Member
Join Date: Mar 2014
Posts: 11
Rep Power: 4 
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) } } } 

June 13, 2014, 05:47 

#5 
New Member
Join Date: Nov 2013
Posts: 6
Rep Power: 4 
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 

June 13, 2014, 09:43 

#6 
New Member
Join Date: Mar 2014
Posts: 11
Rep Power: 4 
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? 

Tags 
if else statement, udf, uds, volume fraction 
Thread Tools  
Display Modes  


Similar Threads  
Thread  Thread Starter  Forum  Replies  Last Post 
Help with if statement  CHARLES  OpenFOAM Programming & Development  15  September 18, 2013 18:29 
Restricting area in if statement  Blackhawks84  Fluent UDF and Scheme Programming  4  July 22, 2012 16:50 
If statement question  mariam.sara  CFX  3  May 24, 2012 02:33 
Weak statement for Galerkin Method  rugabug  Main CFD Forum  0  March 26, 2010 20:19 
Problem Statement  balkrishna  Main CFD Forum  0  October 6, 2009 23:55 