CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   FLUENT (https://www.cfd-online.com/Forums/fluent/)
-   -   A strange mistake (https://www.cfd-online.com/Forums/fluent/84974-strange-mistake.html)

redsnow February 14, 2011 03:53

A strange mistake
 
I met the mistake recently.http://www.cfd-online.com/Forums/C:\...9;误.bmp
This case went well under windows, but always go wrong under linux.

This is my UDF.
include <udf.h>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <math.h>
#define particle_diameter 1e-05
#define max 100
int count_bottom_num;
int kh1;
int kh2;
int coalesce_num;
int collision_num;
int random;
int count_0,count_1;
int i;
real distance_0,distance_1;
real distance_2,distance_3;
real dis[3];
DEFINE_ON_DEMAND(initial)
{
count_bottom_num=0;
kh1=0;
kh2=0;
coalesce_num=0;
collision_num=0;
for(i=0;i<ND_ND;i++)
{
dis[i]=0.0;
}
count_1=0;
}
DEFINE_DPM_SPRAY_COLLIDE(random_spray_collide,tp,p )
{
/* get the cell and Thread that the particle is currently in */
cell_t c = RP_CELL(&(tp->cCell));
Thread *t = RP_THREAD(&(tp->cCell));
Particle *pi;
/*count particle number in the cell */
count_0=0;
random=0;
begin_particle_cell_loop(pi,c,t)
{
count_0 = count_0+1;
}
end_particle_cell_loop(pi,c,t);
//Message("\n particle number in the cell is: %d\n",num);

if(P_DIAM(tp)<=(1.01*particle_diameter) && P_DIAM(tp)>=(0.99*particle_diameter))
{
distance_0=pow(dis[0]-P_POS(tp)[0],2)+pow(dis[1]-P_POS(tp)[1],2)+pow(dis[2]-P_POS(tp)[2],2);
distance_1=sqrt(distance_0);
if(distance_1>=(0.99*particle_diameter) && count_1!=0)
{
for(i=0;i<ND_ND;i++)
{
dis[i]=P_POS(tp)[i];
}
begin_particle_cell_loop(pi,c,t)
{
if(P_DIAM(pi)<=(1.01*particle_diameter) && P_DIAM(pi)>=(0.99*particle_diameter))
{
distance_2=pow(P_POS(pi)[0]-P_POS(tp)[0],2)+pow(P_POS(pi)[1]-P_POS(tp)[1],2)+pow(P_POS(pi)[2]-P_POS(tp)[2],2);
distance_3=sqrt(distance_2);
//Message("\n distance_1=%e \n",distance_1);
if(distance_3<=(1.01*particle_diameter) && distance_3>=(0.99*particle_diameter))
{
/* define random number */
srand((unsigned)time(NULL));
random=rand()%max;
/* define particle random coalesce */
if(random<20)
{
coalesce_num = coalesce_num+1;
for(i=0;i<ND_ND;i++)
{
P_VEL(tp)[i]=0.5*(P_VEL(tp)[i]+P_VEL(pi)[i]);
}
P_MASS(tp)=2*P_MASS(tp);
P_DIAM(tp)=pow(2,0.3333)*P_DIAM(tp);
P_MASS(pi)=P_MASS(pi)/100000;
P_DIAM(pi)=P_DIAM(pi)/100000;
return PATH_ACTIVE;
Message("\n coalesce_num is:%d \n",coalesce_num);
Message("\n P_MASS=%e ,P_DIAM=%e \n",P_MASS(tp),P_DIAM(tp));
}
else if(random>=20)
{
collision_num=collision_num+1;
Message("\n totle_collision_num=%d \n",collision_num);
}
}
}
}
end_particle_cell_loop(pi,c,t);
}
}
count_1=count_1+1;
}


I would appreciate it very much if anyone can correct this mistake for me.

DoHander February 14, 2011 08:25

Before using the source file on Linux have you tried to convert the end of line characters to Unix format ? If your C file is named my_file.c do this in a terminal:

dos2unix my_file.c

Try again with the file after this transformation.

Do


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