本教程演示了通过编写UDF进行沉降池内浓度场的模拟。
1 启动FLUENT并导入网格
(1)在Windows系统下执行“开始”→“所有程序”→ANSYS 2021 R1→Fluid Dynamics→Fluent 2021 R1命令,启动Fluent 2021 R1。
(2)单击主菜单中File→Read→Mesh命令,导入.msh网格文件。
(1)单击命令结构树中General按钮,弹出General(总体模型设定)面板,Solver中Time选择Transient进行瞬态模拟,2D Space选择为Axisymmetric。
3 设置湍流模型
4 设置UDF
(1)单击主菜单中User-Defined→Functions→Compiled按钮,导入UDF文件。
UDF文件内容如下:
#include "udf.h"
#include "turb.h"
#define SC_T 0.7
#define RHOP 1450.
#define RHOW 1000.
#define GX 9.81
#define US0 0.005
#define RH 0.7
#define RP 5
#define CMIN 0.01
#define USMAX 0.002
static real settling_velocity(real C)
{
real US;
if(C<CMIN)
US=0.;
else
US=US0*(exp(-RH*(C-CMIN))-exp(-RP*(C-CMIN)));
if(US>0.002)
US=0.002;
return US;
}
DEFINE_UDS_FLUX(settling_flux,f,tf,i)
{
cell_t c0=F_C0(f,tf),c1=F_C1(f,tf);
Thread *t0=THREAD_T0(tf),*t1=THREAD_T1(tf);
real face_concentration;
real gravity_vector[]={1,0,0},area[ND_ND];
if ((t1==NULL)||(THREAD_TYPE(tf)==THREAD_F_WALL))
face_concentration=F_UDSI(f,tf,0);
else
face_concentration=.5*(C_UDSI(c0,t0,0) C_UDSI(c1,t1,0));
F_AREA(area,f,tf);
if (THREAD_TYPE(tf)==THREAD_F_WALL)
return 0.;
else
return F_FLUX(f,tf) C_R(c0,t0)*settling_velocity(face_concentration)*NV_DOT(gravity_vector,area);
}
DEFINE_DIFFUSIVITY(turbulent_diff,c,tc,i)
{
return 1e-10 C_MU_T(c,tc)/SC_T;
}
DEFINE_SOURCE(X_mom_src,c,tc,ds,eqn)
{
C_UDMI(c,tc,0)=settling_velocity(C_UDSI(c,tc,0));
C_UDMI(c,tc,1)=C_MU_T(c,tc)/SC_T;
C_UDMI(c,tc,2) = GX*C_UDSI(c,tc,0)*(RHOP-C_R(c,tc))/RHOP;
return C_UDMI(c,tc,2) ;
}
DEFINE_SOURCE(turb_k_source,c,tc,ds,eqn)
{
real beta=(RHOP-RHOW)/(RHOP*RHOW);
C_UDMI(c,tc,3)=-GX*beta*C_MU_T(c,tc)/SC_T*C_UDSI_G(c,tc,0)[0];
ds[eqn]=-2*GX*beta*0.09*C_K(c,tc)/(C_D(c,tc)*SC_T)*C_UDSI_G(c,tc,0)[0];
return C_UDMI(c,tc,3);
}
DEFINE_SOURCE(turb_e_source,c,tc,ds,eqn)
{
real C3_eps=0.;
C3_eps=tanh(fabs(C_U(c,tc)/C_V(c,tc)) fabs(SMALL_VP));
C_UDMI(c,tc,4)=C3_eps*1.44*C_D(c,tc)/C_K(c,tc)*C_UDMI(c,tc,3);
return C_UDMI(c,tc,4);
}
DEFINE_PROPERTY(viscosity,c,tc)
{
if (C_UDSI(c,tc,0)>0.7)
return 0.00327*pow(10.,0.132*C_UDSI(c,tc,0));
else
if (C_UDSI(c,tc,0)>0.01)
return 0.00404527222 0.00304527222*(C_UDSI(c,tc,0)-0.7)/0.69;
else
return 0.001;
}
(2)单击主菜单中User-Defined→Functions→Scalars按钮,激活UDS。
(3)单击主菜单中User-Defined→Functions→Memory按钮,设置UDM。
5 设置材料
(1)单击主菜单中Setting Up Physics→Materials→Create/Edit,弹出Create/Edit Materials(材料)对话框。设置Viscosity和UDS Diffusivity为user-defned。
(2)单击主菜单中Setting Up Physics→Materials→Create/Edit,弹出Create/Edit Materials(材料)对话框。单击Fluent Database按钮弹出Fluent Database Materials对话框,选择water liquid,单击Copy按钮确认。
设置Viscosity和UDS Diffusivity为user-defned。
6 设置计算域
在设置计算域中,Material Name设置为water-liquid,勾选Source Terms。
Axial Momentum设置为X_mom_src::sedimentation;
Turbulent Kinetic Energy设置为udf turb_k_source::sedimentation
Turbulent Dissipation Rate设置为udf turb_k_source::sedimentation
7 设置边界条件
(1)在边界条件面板中,设置inlet,Velocity Magnitude输入0.019,User Scalar 0设置为3.2。
(2)设置outlet_top,Velocity Magnitude输入-0.04,User Scalar 0设置为3.2。
8 初始条件
单击主菜单中Solving→Initialization按钮,弹出Solution Initialization(初始化设置)面板。
Initialization Methods中选择Hyper Initialization,单击Initialize按钮进行初始化。
9 计算求解
单击主菜单中Solving→Run Calculation按钮,弹出Run Calculation(运行计算)面板。
在Time Step Size填入10,Number of Time Steps填入7300,单击Calculate开始计算。
10 结果后处理
进入CFD-Post界面,显示云图。