|
[Sponsors] |
Consulting for some issues of FLUENT UDF and UDS |
|
LinkBack | Thread Tools | Search this Thread | Display Modes |
April 19, 2012, 05:48 |
Consulting for some issues of FLUENT UDF and UDS
|
#1 |
New Member
Nick Wu
Join Date: Apr 2012
Location: Shanghai China
Posts: 1
Rep Power: 0 |
Hello everyone!
I am a new learner of FLUENT, my FLUENT version is 6.3.26. I am working on a numerical simulation project studying PM2.5 particle trajectory in a wire-plate electrostatic precipitator, I have created a UDF to do the simulation, here is the UDF: #include "udf.h" #include "dpm.h" #include "surf.h" #include "metric.h" #include "math.h" #define Pia 3.14 #define epsilon_0 8.85e-12 #define epsilon_r 4.0 #define K0 1.38e-23 #define e 1.6e-19 #define N 1.0e+15 #define number 1 #define mi 4.82E-26 #define B 0.0 enum { v, rho, N_REQUIRED_UDS }; DEFINE_SOURCE(v_source,c,t,dS,eqn) { real source; source = 0; dS[eqn] = 0; return source; } DEFINE_SOURCE(rho_source,c,t,dS,eqn) { real *grad_v, div_v, con, source; grad_v = C_UDSI_G(c,t,v); div_v = NV_DOT(grad_v, grad_v); con=div_v+C_UDSI(c,t,rho)/epsilon_0; source = con * C_UDSI(c,t,rho); dS[eqn] =div_v+2*C_UDSI(c,t,rho)/epsilon_0; return source; } DEFINE_UDS_FLUX(rho_flux,f,t,i) { cell_t c0, c1 = -1; Thread *t0, *t1 = NULL; real NV_VEC(psi_vec), NV_VEC(A), flux = 0.0; /* declaring vectors psi and A */ real *grad_v, *grad_v1; real dens; c0 = F_C0(f,t); t0 = F_C0_THREAD(f,t); F_AREA(A, f, t); /* If face lies at domain boundary, use face values; */ /* If face lies IN the domain, use average of adjacent cells. */ if (BOUNDARY_FACE_THREAD_P(t)) /*Most face values will be available*/ { /* Depending on its BC, density may not be set on face thread*/ if (NNULLP(THREAD_STORAGE(t,SV_DENSITY))) dens = F_R(f,t); /* Set dens to face value if available */ else dens = C_R(c0,t0); /* else, set dens to cell value */ NV_DS(psi_vec, =, C_UDSI_G(c0,t0,v)[0], C_UDSI_G(c0,t0,v)[1], 0, *, dens); flux = NV_DOT(psi_vec, A); /* flux through Face */ } else { c1 = F_C1(f,t); /* Get cell on other side of face */ t1 = F_C1_THREAD(f,t); grad_v = C_UDSI_G(c0,t0,v); grad_v1 = C_UDSI_G(c1,t1,v); NV_DS(psi_vec, =, grad_v[0],grad_v[1],0,*,C_R(c0,t0)); NV_DS(psi_vec, +=, grad_v1[0],grad_v1[1],0,*,C_R(c1,t1)); flux = NV_DOT(psi_vec, A)/2.0; /* Average flux through face */ } /* Fluent will multiply the returned value by phi_f (the scalar's value at the face) to get the "complete'' advective term. */ return F_FLUX(f,t) / dens; } DEFINE_DPM_BODY_FORCE(particle_body_force,p,i) { real bforce=0.,Qk,Qd,Q; real x[ND_ND]; cell_t c=RP_CELL(&(p->cCell)); Thread *t=RP_THREAD(&(p->cCell)); C_CENTROID(x,c,t); if(i==1) Qd=3*Pia*epsilon_0*(epsilon_r/(epsilon_r+2))*pow(P_DIAM(p),2.0)*C_UDSI_G(c,t,0)[1]; Qk=2*Pia*epsilon_0*K0*P_T(p)*P_DIAM(p)/e*log(1+pow(e,2.)*N*P_DIAM(p)*P_TIME(p)*number/(2*epsilon_0*sqrt(16*mi*K0*P_T(p)/3))); Q=fabs(Qd)+fabs(Qk); bforce=Q*C_UDSI_G(c,t,0)[1]+Q*B*P_VEL(p)[0]; return (bforce/P_MASS(p)); } DEFINE_DPM_DRAG(particle_drag_force, Re, p) { float w, drag_force; printf ("Re is %6.3f\n", Re); /* Note: when you print a "real" data, use "%g" instead of "%f" */ if (Re < 0.01) { drag_force=18.0; return (drag_force); } else if (Re < 20.0) { w = log10(Re); drag_force = 18.0 + 2.367*pow(Re,0.82-0.05*w) ; return (drag_force); } else /* Note: suggested valid range 20 < Re < 260 */ { drag_force = 18.0 + 3.483*pow(Re,0.6305) ; return (drag_force); } } After the UDF programming, I have copied a schematic procedure to help me complete the simulation, attached below. I don't know how to realize this process, and how to set the UDS scalar in this case, please tell me how to do? Thank you. |
|
November 3, 2012, 08:09 |
|
#2 |
New Member
IVI
Join Date: Oct 2012
Posts: 14
Rep Power: 14 |
hi Nick Wu
I also studying on ESP and need help . Do you solve your problem ? can you help me ? thank you |
|
November 12, 2012, 04:24 |
|
#3 |
Senior Member
SSL
Join Date: Oct 2012
Posts: 226
Rep Power: 15 |
There is no need of creating procedure. Fluent solves equations one by one, and then it solves UDS(s).
You should just hook functions in right places. Fluent will use them when needed. and in an iterative solution it will be converged. |
|
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Two questions on Fluent UDF | Steven | Fluent UDF and Scheme Programming | 7 | March 23, 2018 04:22 |
connection between udf and uds | a.maroofi | Fluent UDF and Scheme Programming | 1 | September 19, 2010 09:46 |
Fluent 6.3 pemfc module, UDS diffusivity | yerem3 | FLUENT | 0 | January 19, 2010 04:10 |
Fluent udf--assigning u-velocity to uds | tas38 | FLUENT | 1 | August 11, 2009 11:41 |
Associating profile files for the UDS though a UDF | Bharath | FLUENT | 0 | December 1, 2006 16:58 |