CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   Fluent UDF and Scheme Programming (https://www.cfd-online.com/Forums/fluent-udf/)
-   -   Gidaspow udf (https://www.cfd-online.com/Forums/fluent-udf/116318-gidaspow-udf.html)

Musa October 18, 2013 22:02

@Mohsen certainly the drag model has not been properly coded meaning the results obtained in the paper are questionable. Did the authors of the paper use the same code? If so bring it to their attention that the code has some errors! i.e. the definition of the particle reynolds number is not correct and the condition for switching to different regimes is missing.

mohsen0488 October 19, 2013 06:48

I read thesis of the paper and in appendix of the thesis that code was written for gidaspow with switch function.and i think that the code has some errors.


thanks a lot for your replies Dear Musa ,You've helped me a lot.

I wish the best for you.

Musa October 19, 2013 07:09

You are welcome buddy!

temo October 24, 2013 15:18

aoa, i have used this udf for gas solid fluidized bed and gives accurate results now i want to change from gas to liquid(water), tell me what are the changes required to do in code for this, waiting for ur reply
udf for customizing syamlal drag law in Fluent

#include "udf.h"
#define pi 4.*atan(1.)
#define diam2 3.e-4
DEFINE_EXCHANGE_PROPERTY(custom_drag, cell, mix_thread, s_col, f_col)
{
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, rho_s, mu_g, reyp, afac,
bfac, void_g, vfac, fdrgs, taup, k_g_s;
/* 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;
slip_y = y_vel_g - y_vel_s;
rho_g = C_R(cell, thread_g);
rho_s = C_R(cell, thread_s);
mu_g = C_MU_L(cell, thread_g);
/*compute slip*/
abs_v = sqrt(slip_x*slip_x + slip_y*slip_y);
/*compute Reynold's number*/
reyp = rho_g*abs_v*diam2/mu_g;
/* compute particle relaxation time */
taup = rho_s*diam2*diam2/18./mu_g;
void_g = C_VOF(cell, thread_g);/* gas vol frac*/
/*compute drag and return drag coeff, k_g_s*/
afac = pow(void_g,4.14);
if(void_g<=0.85)
bfac = 0.281632*pow(void_g, 1.28);
else
bfac = pow(void_g, 9.076960);
vfac = 0.5*(afac-0.06*reyp+sqrt(0.0036*reyp*reyp+0.12*reyp*(2.*bfac-afac)+
afac*afac));
fdrgs = void_g*(pow((0.63*sqrt(reyp)/
vfac+4.8*sqrt(vfac)/vfac),2))/24.0;
k_g_s = (1.-void_g)*rho_s*fdrgs/taup;
return k_g_s;
}

temo October 24, 2013 15:20

i have used this udf for gas solid fluidized bed and gives accurate results now i want to change from gas to liquid(water), tell me what are the changes required to do in code for this, waiting for ur reply
udf for customizing syamlal drag law in Fluent

#include "udf.h"
#define pi 4.*atan(1.)
#define diam2 3.e-4
DEFINE_EXCHANGE_PROPERTY(custom_drag, cell, mix_thread, s_col, f_col)
{
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, rho_s, mu_g, reyp, afac,
bfac, void_g, vfac, fdrgs, taup, k_g_s;
/* 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;
slip_y = y_vel_g - y_vel_s;
rho_g = C_R(cell, thread_g);
rho_s = C_R(cell, thread_s);
mu_g = C_MU_L(cell, thread_g);
/*compute slip*/
abs_v = sqrt(slip_x*slip_x + slip_y*slip_y);
/*compute Reynold's number*/
reyp = rho_g*abs_v*diam2/mu_g;
/* compute particle relaxation time */
taup = rho_s*diam2*diam2/18./mu_g;
void_g = C_VOF(cell, thread_g);/* gas vol frac*/
/*compute drag and return drag coeff, k_g_s*/
afac = pow(void_g,4.14);
if(void_g<=0.85)
bfac = 0.281632*pow(void_g, 1.28);
else
bfac = pow(void_g, 9.076960);
vfac = 0.5*(afac-0.06*reyp+sqrt(0.0036*reyp*reyp+0.12*reyp*(2.*bfac-afac)+
afac*afac));
fdrgs = void_g*(pow((0.63*sqrt(reyp)/
vfac+4.8*sqrt(vfac)/vfac),2))/24.0;
k_g_s = (1.-void_g)*rho_s*fdrgs/taup;
return k_g_s;
}

Musa October 24, 2013 20:48

@ Temour buddy sorry but I do not have any experience with gas-liquid fluidized beds!

eddy123 July 19, 2016 08:42

Quote:

Originally Posted by mohsen0488 (Post 457741)
Musa I tried with that code and the results were similar results of paper
so do you think results of this paper are incorrect?

How to write the UDF for DPM drag. I tried to write the UDF for DPM-Gidaspow drag model but it did not work properly. Any one can help me where I am wrong. Any help will be appreciated. Below is my UDF

#include "udf.h"
#include "dpm.h"
#define ZERO 0.0000001

DEFINE_DPM_DRAG(dpm_gidaspow_drag,Re,p)
{
Thread *thread_g, *thread_s, *mix_thread;
real x_vel_g, x_vel_s, y_vel_g, y_vel_s, abs_v, slip_x, slip_y,
rho_g, rho_s, mu_g, dp, reyp, reyp1,void_g, void_s, cd, D;
cell_t cell;
real left_term;
real dragcoefficient;

/*find the cell index and thread of the cell that the particle is currently in*/
cell=P_CELL_THREAD(p);
mix_thread=THREAD_SUB_THREAD(P_CELL_THREAD(p),0);

/* find the threads for the gas (primary) */

thread_g = THREAD_SUB_THREAD(mix_thread,0);/* gas phase thread */
thread_s = THREAD_SUB_THREAD(mix_thread,1);/* solid phase thread */
/* find phase velocities and properties*/

x_vel_g = C_U(cell, thread_g);
y_vel_g = C_V(cell, thread_g);

x_vel_s=P_VEL(p)[0];
y_vel_s=P_VEL(p)[1];

slip_x = x_vel_g - x_vel_s;
slip_y = y_vel_g - y_vel_s;

rho_g = C_R(cell, thread_g); /*density*/
rho_s =P_RHO(p);

mu_g = C_MU_L(cell, thread_g); /*laminar viscosity*/

dp =P_DIAM(p);

/*compute slip*/
abs_v = sqrt(slip_x*slip_x + slip_y*slip_y); /*absolute value of slip velocity*/

void_g = C_VOF(cell, thread_g);/* gas vol frac*/

Message ("Voidage of gas phase %f \n", void_g);

void_s = 1-void_g;/*particle vol frac*/

/*compute reynolds number*/
reyp =rho_g*abs_v*dp/mu_g; /*no volume fraction???*/
reyp1 = void_g*reyp;


if(reyp1<1000)
cd=24/reyp1*(1+0.15*pow(reyp1,0.687));
else
cd = 0.44;
if (void_g <=0.8)
{
/* Ergun Drag Model */
D = 150.0*void_s*void_s*mu_g/void_g/dp/dp+1.75*void_s*rho_g*abs_v/dp;
}
else
{
/* Wen & Yu Model */
D = 0.75*cd*void_g*void_s*rho_g*abs_v/dp/pow(void_g,2.65);
}

left_term=rho_s*pow(dp,2)/mu_g;
dragcoefficient=left_term*D/(abs_v+ZERO);
return dragcoefficient;

}

The_seeker December 13, 2021 04:43

Hi All,

I am trying to model 2D fluidized bed with laminar flow conditions and validate it with a paper. Following is the Gidaspow model that I wrote in UDF. Looking at the discussion in this thread, I feel that the code that I have written is correct but I am not able to get good convergence for continuity. I would appreciate if someone can guide me on this.


DEFINE_EXCHANGE_PROPERTY (custom_drag, cell, mix_thread,s_col,f_col)

{
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, reyp, void_g, k_g_s, cd;

/*find the threads for the gas (primary) */
/*and solid (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*/

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;
slip_y = y_vel_g-y_vel_s;

rho_g = C_R (cell, thread_g);
mu_g = C_MU_L (cell, thread_g);
void_g = C_VOF (cell, thread_g); /*gas vol fraction*/

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


/*compute Reynolds number*/
reyp=rho_g*abs_v*diam2/mu_g;

/*compute drag coefficient*/
if (reyp <= 1000)
cd = (24/(void_g*reyp)*(1+0.15*pow((void_g*reyp), 0.687)));
else
cd = 0.44;
if (void_g <= 0.8)
k_g_s = ((150*(1-void_g)*(1-void_g)*mu_g)/(void_g*diam2*diam2))+((1.75*rho_g*abs_v)/(diam2));
else
k_g_s = (3/4)*cd*((void_g*(1-void_g)*rho_g*abs_v*pow(void_g,-2.65))/diam2);
return k_g_s;
}

AlexanderZ December 13, 2021 22:45

if UDF works without problems, your convergence issue is related to other factors (most likely):
1. discretization scheme
2. time step resolution
3. mesh resolution
4. boundary conditions

Amin Gh February 17, 2024 08:16

asking some questions
 
Quote:

Originally Posted by Musa (Post 457739)
Mohsen you are absolutely right the reyp has to be multiplied by void_g in the equation containing Cd but this has not been done in the code although it has been shown in the paper . Secondly there is no condition for switching from one regime to the other i.e from Ergun for the dense bed (void_g > 0.8) to WenYu for ( void_g<= 0.8). The stitching function simply ensures smooth transition from one regime to the other meaning that the condition of regime change must still be given.

Hi Musa,
I'm trying to write the UDF of gidaspow drag model then I want to write my own drag model UDF buy I don't know how to do it would you please help me?


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