CFD Online Discussion Forums

CFD Online Discussion Forums (http://www.cfd-online.com/Forums/)
-   FLUENT (http://www.cfd-online.com/Forums/fluent/)
-   -   Parallel UDF problem (http://www.cfd-online.com/Forums/fluent/49729-parallel-udf-problem.html)

Lindsay November 7, 2008 04:31

Parallel UDF problem
 
Hi,

Im having a couple of problems with running a UDF in parallel. When I compile the UDF on 2 processors, the library's are built and loaded but the simulation does not start. I receive a couple of warning signs during the build.

-In the host build:

modified_drag.c: In function `modified_drag_EMMS':

modified_drag.c:5: warning: 'k_g_s' might be used uninitialized in this function

-In the node build:

modified_drag.c: In function `modified_drag_EMMS':

modified_drag.c:80: warning: control reaches end of non-void function

modified_drag.c:10: warning: 'w' might be used uninitialized in this function

modified_drag.c:10: warning: 'cd' might be used uninitialized in this function

Firstly, I have initialised 'k_g_s', 'w' and 'cd' which confused me a bit and secondly I thought the 'warning: control reaches end of non-void function' might be why the simulation seems to stop before producing the first line of iteration.

The UDF is given as follows:

#include "udf.h"

DEFINE_EXCHANGE_PROPERTY(modified_drag_EMMS,cell,m ix_thread,s_col,f_col) { real k_g_s; #if !RP_HOST

Thread *thread_g, *thread_s; real x_vel_g, x_vel_s, y_vel_g, y_vel_s, abs_v, slip_x, slip_y,

rho_g, mu_g, Re, vf_g, vf_s, dp, w, cd;

/* find the threads for the gas (primary) */ /* and solids (secondary phases) */

thread_g = THREAD_SUB_THREAD(mix_thread, s_col); /* gas phase */ thread_s = THREAD_SUB_THREAD(mix_thread, f_col); /* solid phase*/

/* find phase velocities and properties*/

x_vel_g = C_U(cell, thread_g); y_vel_g = C_V(cell, thread_g); x_vel_s = C_U(cell, thread_s); y_vel_s = C_V(cell, thread_s); slip_x = x_vel_g - x_vel_s; /* velocity slip in the x direction */ slip_y = y_vel_g - y_vel_s; /* velocity slip in the y direction */

rho_g = C_R(cell, thread_g); /* gas density */

mu_g = C_MU_L(cell, thread_g); /* viscosity of gas */ dp = C_PHASE_DIAMETER(cell, thread_s); /* particle diameter */

vf_g = C_VOF(cell, thread_g); /* gas volume fraction */ vf_s = C_VOF(cell, thread_s); /* solid volume fraction */

/* Absolute slip velocity */ abs_v = sqrt(slip_x*slip_x + slip_y*slip_y);

/* Reynold's number */ Re = vf_g*rho_g*abs_v*dp/mu_g;

/* Reynolds conditions */

if (Re < 960)

cd = (24./(vf_g*Re))*(1+0.15*pow(vf_g*Re,0.687));

if (Re > 960)

cd = 0.44;

/* compute drag coefficient for dilute region */

if (0.74 < vf_g <= 0.82)

w = -0.1680+(0.0679/(4*pow(vf_g-0.7463,2)+0.0044));

if (0.82 < vf_g <= 0.97)

w = -0.8601+(0.0823/(4*pow(vf_g-0.7789,2)+0.0040));

if (0.97 < vf_g)

w = -31.8295+32.9895*vf_g;

k_g_s = 0.75*cd*((rho_g*vf_s*abs_v)/dp)*w;

/* drag coefficient for the dense region */

if(vf_g <= 0.74)

k_g_s = 150*((pow(vf_s,2)*mu_g)/(pow(vf_g,2)*pow(dp,2)))+1.75*((vf_s*rho_g*abs_v)/(vf_g*dp));

node_to_host_real_1(k_g_s);

#endif

#if !RP_NODE

return k_g_s;

#endif

}

I would really appreciate some guidence as to why the iterations are not starting as I am new to all this.

Thanks in advance,

Lindsay


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