ANSYS Fluent能够求解自定义标量输运方程。本文描述在Fluent中求解自定义标量方程需要使用的一些UDF宏。
对于用户在ANSYS Fluent模型中指定的每个标量方程,可以为标量输运方程中的扩散系数、通量以及瞬态项提供单独的UDF进行指定。对于多相流问题,用户还可以为每一相指定UDF。另外,用户还可以利用UDF为标量方程指定源项以及边界条件。
1、 扩散系数
用户可以利用UDF为流体或固体材料指定各向同性或各向异性的扩散系数。
各相同性扩散系数通过UDF宏DEFINE_DIFFUSIVITY指定,而各向异性则使用UDF宏DEFINE_ANISOTROPIC_DIFFUSIVITY进行定义。
2、通量
利用UDF宏DEFINE_UDS_FLUX来指定通量。
3、源项
UDS中的源项采用UDF宏DEFINE_SOURCE进行指定,定义方式与普通的源项定义方式相同。
4、边界条件
与一般的边界定义相同,UDS中采用DEFINE_PROFILE宏来指定边界条件。
宏DEFINE_ANISOTROPIC_DIFFUSIVITY用于定义各相异性扩散系数。
宏描述:
宏参数包括:
name:宏名称,可以随便定义,symbol
类型
c:网格单元索引,由Fluent传入。cell_t
类型
t:网格索引指针,由Fluent传入。Thread *
类型
i:标量索引。int
类型
dmatrix:一个real类型的数组,其定义为real dmatrix[ND_ND][ND_ND]
返回值:void
该宏利用dmatrix返回扩散系数数据,因此在程序中要为dmatrix赋值,对于二维问题,dmatix是一个2x2的数组,对于三维问题,则是一个3x3的数组。
DEFINE_UDS_FLUX宏用于指定UDS中对流项的计算方式。
宏描述:
宏参数:
name
:宏名称
f
:面索引,由Fluent传入,类型为face_t
t
:面线索指针,由Fluent传入,数据类型为Thread *
i
:标量索引,int
类型,由Fluent传入
函数返回 :real
DEFIEN_UDS_FLUX宏包括四个参数,其中name由用户指定,f,t,i由Fluent传入。该宏需要利用return显式返回值。
微分形式的传输方程对流项通常具有以下的通用形式:
式中,ϕ为用于自定义的守恒标量,
使用宏DFFINE_UDS_FLUX定义对流项时,UDF必须返回标量值,其中
注意:UDF提供的通量场应当满足连续方程。意味着离散条件下每一个单元的通量之和应当为零。
在UDF中需要计算Ψ,利用Fluent提供的预制宏计算速度及密度等参数,如下面的代码片段:
real NV_VEC(psi), NV_VEC(A);
NV_D(psi, =, F_U(f,t), F_V(f,t), F_W(f,t));
NV_S(psi, *=, F_R(f,t)) ;
F_AREA(A,f,t);
return NV_DOT(psi,A);
可以利用DEFINE_UDS_UNSTEADY宏自定义标量方程的瞬态项。
宏定义:
参数定义:
symbol name
:自定义的UDF名称
cell_t c
:网格索引
Thread *t
:网格索引指针
int i
:标量方程索引
real *apu
:中间系数指针
real *su
:源项指针
返回值:void
宏DEFINE_UDS_UNSTEADY包含6个参数,其中name为用户提供,c,t,i由Fluent传入,在UDF中需要设定参数apu及su的值。
在ANSYS Fluent中,瞬态项被分解为源项su和中中间系数项
式中第一项为apu,第二项为su。
如下面的代码片段:
#include "udf.h"
DEFINE_UDS_UNSTEADY(my_uds_unsteady,c,t,i,apu,su)
{
real physical_dt, vol, rho, phi_old;
physical_dt = RP_Get_Real("physical-time-step");
vol = C_VOLUME(c,t);
rho = C_R_M1(c,t);
*apu = -rho*vol;
phi_old = C_STORAGE_R(c,t,SV_UDSI_M1(i));
*su = rho*vol*phi_old/physical_dt;
}
本篇文章来源于微信公众号: CFD之道
评论前必须登录!
注册