CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > FLUENT

udf-getting the pointer to the cell containing a point

Register Blogs Members List Search Today's Posts Mark Forums Read

Reply
 
LinkBack Thread Tools Display Modes
Old   August 25, 2009, 05:16
Default udf-getting the pointer to the cell containing a point
  #1
Member
 
MOHSEN Zendehbad
Join Date: Aug 2009
Posts: 35
Rep Power: 9
mohsen zendehbad is on a distinguished road
i have an arbitrary (x,y,z) coordinate, how can i get a pointer to the cell which contains this point?
mohsen zendehbad is offline   Reply With Quote

Old   October 5, 2009, 10:27
Default
  #2
New Member
 
Join Date: Apr 2009
Location: KA, Germany
Posts: 20
Rep Power: 9
Häwimeddel is on a distinguished road
I would also like to know that.
Häwimeddel is offline   Reply With Quote

Old   October 5, 2009, 11:07
Default
  #3
Member
 
MOHSEN Zendehbad
Join Date: Aug 2009
Posts: 35
Rep Power: 9
mohsen zendehbad is on a distinguished road
hi, i have found the answer myself,here you are, in this udf the flow information in special coordinates will be calculated, at first it finds that coordinate is in which cell and then it uses the flow information in that cell and the gradient of flow information in the same cell to fulfil the task,

REGARDS
Mohsen ZENDEHBAD

#include "udf.h"

FILE *uout;
FILE *vout;
FILE *wout;
FILE *pout;
FILE *tout;

DEFINE_EXECUTE_AT_END(execute_at_end)
{
double NormalVector[ND_ND];/*face normal vector*/
double FaceCentre[ND_ND];/*centroid coordinates*/
double CellCentroid[ND_ND];
double GoalCentroid[ND_ND];
double p[1037][ND_ND];/*our arbitrary coordinates*/
double PointVector[ND_ND];/*the point subtracted by the face centre*/
int zone_ID;
int cnt;
int n;
int NumberOfPoints;
int i;
cell_t c;
cell_t Goal;
face_t f;
Thread *t;
Thread *tf;
Domain *d;

NumberOfPoints=1037;/*DON'T FORGET TO ADJUST THIS NUMBER FOR P[][ND_ND] ABOVE*/
/*Copy the data FROM here
p[0][0]=0;p[0][1]=0;p[0][2]=-.24;
p[1][0]=0;p[1][1]=0;p[1][2]=-.2;
p[2][0]=0;p[2][1]=0;p[2][2]=-.15;
p[3][0]=0;p[3][1]=0;p[3][2]=-.5;
p[4][0]=0;p[4][1]=0;p[4][2]=.1;
p[5][0]=0;p[5][1]=0;p[5][2]=.2;*/

p[0][0]=-1.080830e-003;p[0][1]=1.466203e-002;p[0][2]=-2.540000e-001;
p[1][0]=-9.981496e-004;p[1][1]=1.404256e-002;p[1][2]=-2.540000e-001;
p[2][0]=-9.278523e-004;p[2][1]=1.336367e-002;p[2][2]=-2.540000e-001;
p[3][0]=-8.680859e-004;p[3][1]=1.268488e-002;p[3][2]=-2.540000e-001;
p[4][0]=-8.172746e-004;p[4][1]=1.202529e-002;p[4][2]=-2.540000e-001;
p[5][0]=-7.740778e-004;p[5][1]=1.138906e-002;p[5][2]=-2.540000e-001;
p[6][0]=-7.372264e-004;p[6][1]=1.077418e-002;p[6][2]=-2.540000e-001;
p[7][0]=-7.056433e-004;p[7][1]=1.017768e-002;p[7][2]=-2.540000e-001;
p[8][0]=-6.785430e-004;p[8][1]=9.598250e-003;p[8][2]=-2.540000e-001;
p[9][0]=-6.552564e-004;p[9][1]=9.029795e-003;p[9][2]=-1.540000e-001;
p[10][0]=-6.352138e-004;p[10][1]=8.474297e-003;p[10][2]=-2.540000e-001;
p[11][0]=-6.179302e-004;p[11][1]=7.975751e-003;p[11][2]=-2.540000e-001;
p[12][0]=-3.241992e-003;p[12][1]=1.336879e-002;p[12][2]=-2.540000e-001;
p[13][0]=-2.993007e-003;p[13][1]=1.275664e-002;p[13][2]=-2.540000e-001;
p[14][0]=-2.781275e-003;p[14][1]=1.207569e-002;p[14][2]=-2.540000e-001;
p[15][0]=-2.601234e-003;p[15][1]=1.140090e-002;p[15][2]=-2.540000e-001;
p[16][0]=-2.448149e-003;p[16][1]=1.077010e-002;p[16][2]=-2.540000e-001;
p[17][0]=-2.317991e-003;p[17][1]=1.018746e-002;p[17][2]=-2.540000e-001;
p[18][0]=-2.206678e-003;p[18][1]=9.654449e-003;p[18][2]=-2.540000e-001;
p[19][0]=-2.110748e-003;p[19][1]=9.170797e-003;p[19][2]=-2.540000e-001;
p[20][0]=-2.027918e-003;p[20][1]=8.721691e-003;p[20][2]=-2.540000e-001;
p[21][0]=-1.956241e-003;p[21][1]=8.300717e-003;p[21][2]=-2.540000e-001;
p[22][0]=-1.894055e-003;p[22][1]=7.930605e-003;p[22][2]=-2.540000e-001;
p[23][0]=-1.839947e-003;p[23][1]=7.661217e-003;p[23][2]=-2.540000e-001;
p[24][0]=-5.400946e-003;p[24][1]=1.202775e-002;p[24][2]=-2.540000e-001;
p[25][0]=-4.981526e-003;p[25][1]=1.139269e-002;p[25][2]=-2.540000e-001;
p[26][0]=-4.624768e-003;p[26][1]=1.076338e-002;p[26][2]=-2.540000e-001;
p[27][0]=-4.321343e-003;p[27][1]=1.016211e-002;p[27][2]=-2.540000e-001;
p[28][0]=-4.063302e-003;p[28][1]=9.611193e-003;p[28][2]=-2.540000e-001;
p[29][0]=-3.843872e-003;p[29][1]=9.107834e-003;p[29][2]=-2.540000e-001;
p[30][0]=-3.655555e-003;p[30][1]=8.662894e-003;p[30][2]=-2.540000e-001;

/*Copy the data UPTO here*/
uout=fopen("uOutput.txt","w");
vout=fopen("vOutput.txt","w");
wout=fopen("wOutput.txt","w");
pout=fopen("pOutput.txt","w");
tout=fopen("tOutput.txt","w");

/*getting the the thread pointing to the default interior*/
d=Get_Domain(1);
zone_ID =9;
t = Lookup_Thread(d,zone_ID);
/*finished getting the the thread pointing to the default interior*/
for(i=0;i<NumberOfPoints;i++)
{
/*looping over cell in the requested thread*/
thread_loop_c(t,d)
{
begin_c_loop(c,t)
{
C_CENTROID(CellCentroid,c,t);
cnt=0;
c_face_loop(c, t, n)
{
f= C_FACE(c,t,n);
tf= C_FACE_THREAD(c,t,n);
F_CENTROID(FaceCentre,f,tf);
F_AREA(NormalVector,f,tf);
NV_VV(PointVector , = , FaceCentre , - , CellCentroid);
if (NV_DOT(PointVector,NormalVector)<0)
{
NormalVector[0]=-1*NormalVector[0];
NormalVector[1]=-1*NormalVector[1];
NormalVector[2]=-1*NormalVector[2];
}
NV_VV(PointVector , = , p[i] , - , FaceCentre);
if (NV_DOT(PointVector,NormalVector)>sqrt(NV_MAG(Poin tVector))*1.0e-10)
cnt=cnt+1;
}
/*Message("je suis arrivee%d\n",cnt);*/
if (cnt<1e-2)
{
Goal=c;
GoalCentroid[0]=CellCentroid[0];
GoalCentroid[1]=CellCentroid[1];
GoalCentroid[2]=CellCentroid[2];
Message("Je l'ai trouve%10d\n",i);
}
}
end_c_loop(c, t)
}
thread_loop_c(t,d)
{
NV_VV(PointVector , = , p[i] , - , GoalCentroid);
/*
Message("\nU est %g\n",C_U(Goal,t));
Message("Changement est %g\n",NV_DOT(PointVector,C_U_G(Goal,t)));
Message("totale est %g\n",C_U(Goal,t)+NV_DOT(PointVector,C_U_G(Goal,t) ));

Message("\nV est %g\n",C_V(Goal,t));
Message("Changement est %g\n",NV_DOT(PointVector,C_V_G(Goal,t)));
Message("totale est %g\n",C_V(Goal,t)+NV_DOT(PointVector,C_V_G(Goal,t) ));

Message("\nW est %g\n",C_W(Goal,t));
Message("Changement est %g\n",NV_DOT(PointVector,C_W_G(Goal,t)));
Message("totale est %g\n",C_W(Goal,t)+NV_DOT(PointVector,C_W_G(Goal,t) ));

Message("\nPresion est %g\n",C_P(Goal,t));
Message("Changement est %g\n",NV_DOT(PointVector,C_P_G(Goal,t)));
Message("totale est %g\n",C_P(Goal,t)+NV_DOT(PointVector,C_P_G(Goal,t) ));

Message("\nTemperature est %g\n",C_T(Goal,t));
Message("Changement est %g\n",NV_DOT(PointVector,C_T_G(Goal,t)));
Message("totale est %g\n",C_T(Goal,t)+NV_DOT(PointVector,C_T_G(Goal,t) ));
*/


fprintf(uout,"%e\n",C_U(Goal,t)+NV_DOT(PointVector ,C_U_G(Goal,t)));
fprintf(vout,"%e\n",C_V(Goal,t)+NV_DOT(PointVector ,C_V_G(Goal,t)));
fprintf(wout,"%e\n",C_W(Goal,t)+NV_DOT(PointVector ,C_W_G(Goal,t)));
fprintf(pout,"%e\n",C_P(Goal,t)+NV_DOT(PointVector ,C_P_G(Goal,t)));
/*fprintf(tout,"%e\n",C_T(Goal,t)+NV_DOT(PointVecto r,C_T_G(Goal,t)));*/
}
}/*the for loop closes here*/
fclose(uout);
fclose(vout);
fclose(wout);
fclose(pout);
fclose(tout);
}
mohsen zendehbad is offline   Reply With Quote

Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Point inside Cell bobatpurdue OpenFOAM Meshing & Mesh Conversion 7 November 11, 2008 21:32
udf for fuel cell pour FLUENT 0 August 4, 2008 08:13
UDF for fuel cell model Anant FLUENT 0 January 3, 2005 08:27
Warning 097- AB CD-adapco 6 November 15, 2004 05:41
udf to output velocity at some point Jun FLUENT 4 August 19, 2003 13:43


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