CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   FLUENT (https://www.cfd-online.com/Forums/fluent/)
-   -   electrostatic forces between a large numbers of droplets (https://www.cfd-online.com/Forums/fluent/88545-electrostatic-forces-between-large-numbers-droplets.html)

alighaffari May 19, 2011 15:58

electrostatic forces between a large numbers of droplets
 
Hi every body
I want to calculate the electrostatic forces between a large numbers of water droplets dispersed in oil continuum under the electrostatic field. I have used lagrangian frame work in DPM model in fluent 6.3.26. and for electrostatic body forces acting on droplets I have written a UDF code according to Dipole-Dipole interaction model. My UDF searches all particles in the all cells all over the domain to calculate electrostatic forces. But this is very time consuming and for large number of droplets it is not so efficient. Some have suggested using parcel concept in this case but I don’t know how I can use parcels concept in my UDF to reduce run time. If anybody has suggestion in this case or any suggestion that help me I will be very thankful.


This is my UDF code:
/* UDF for computing the electric force on particles in all cells of a domain */

#include "udf.h"
#include "mem.h"
#include "dpm.h"
#include "surf.h"
#include "stdio.h"
#define epsoil 2.2 /* epsilon for oil */
#define E0 25 /* electric background field,v/m */
#define beta 0.9934
#define M_PI 3.14159265358979323846



DEFINE_DPM_BODY_FORCE(particle_body_force,p,i)
{
double bforce,Fr,Ft,d2,d1,s,tet,k1,k2,m;

/* get the cell and Thread that the particle is currently in */
cell_t c;
Thread *t;
Domain *d;
/* Particle index for looping over all particles in the cell */
Particle *pi;
/* loop over all particles in all cells of domain to find their position and diameter */
int ii;
double p1[2],p2[2];
Fr=0;
Ft=0;
bforce=0;

d = Get_Domain(1); /* mixture domain if multiphase */
for(ii=0;ii<2;ii++)
{p1[ii]= p->state.pos[ii];
}
d1 = P_DIAM(p);
m=P_MASS(p);

thread_loop_c(t,d) /*loops over all cell threads in domain*/
{

begin_c_loop(c,t) /* loops over cells in a cell thread */
{



begin_particle_cell_loop(pi,c,t)
{


for(ii=0;ii<2;ii++)
{
p2[ii]=pi->state.pos[ii];
}
d2=pi->state.diam;
s=sqrt(pow(p1[0]-p2[0],2)+pow(p1[1]-p2[1],2));
if (s > (d1/2+d2/2))
{
tet=atan((p2[1]-p1[1])/(p2[0]-p1[0]));
Fr=12*M_PI*pow(beta,2)*epsoil*pow(E0,2)*pow(d1/2,3)*pow(d2/2,3)*(3*k1*pow(cos(tet),2)-1)/pow(s,4);
Ft=(1)*12*M_PI*pow(beta,2)*epsoil*pow(E0,2)*pow(d1/2,3)*pow(d2/2,3)*k2*sin(2*tet)/pow(s,4);
if(i==0) bforce+=((1)*Fr*cos(tet)+(1)*Ft*cos(M_PI/2+tet));
else if(i==1) bforce+=((-1)*Fr*sin(tet)+(-1)*Ft*sin(M_PI/2+tet));


}

}
end_particle_cell_loop(pi,c,t)


}
end_c_loop(c,t)



}/*end of thread_loop_c(t,d)*/



return (bforce/m);

}

oghazian June 20, 2011 13:15

hi,

I have the similar problem, I want to simulate a single droplet of water in air under the effect of electrostatic force. could u please guide me through this ?

I am not familiar enough with the UDF in fluent?

Mamnoonam

johnwinter June 21, 2011 00:28

Hi alighaffari,

Did you get how to compute paricles in parcel method, if so could you please share it

John

alighaffari June 21, 2011 07:47

Hi oghazian
It is not so difficult to use UDF for your case study. But you should first determine your problem model clearly. It is necessary to know if your electric field is homogenous or inhomogeneous. If your droplet is a charged type or net. And so on….

alighaffari June 21, 2011 07:54

Hi john
I could not find any solution to track droplets using parcel concept so I am coping with long run time.

SJSW November 16, 2015 05:18

Some injection type allows a setup for using parcel.
Then the calculation was based on "parcel," not "particle," in my experience.


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