吾生有涯 学海无涯
析模有界 知识无界

Fluent UDF【17】:UDS宏

内容纲要

ANSYS Fluent能够求解自定义标量输运方程。本文描述在Fluent中求解自定义标量方程需要使用的一些UDF宏。

1

简介

对于用户在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宏来指定边界条件。

2

DEFINE_ANISOTROPIC_DIFFUSIVITY宏

DEFINE_ANISOTROPIC_DIFFUSIVITY用于定义各相异性扩散系数。

宏描述: 

DEFINE_ANISOTROPIC_DIFFUSIVITY(name,c,t,i,dmatrix)


宏参数包括:

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的数组。

3

DEFINE_UDS_FLUX宏

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必须返回标量值,其中A为面法向方向的投影面积。

注意: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);
4

DEFINE_UDS_UNSTEADY宏

可以利用DEFINE_UDS_UNSTEADY宏自定义标量方程的瞬态项。

宏定义: 

DEFINE_UDS_UNSTEADY(name, c, t ,i ,apu ,su)


参数定义:

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之道

赞(2) 打赏
版权声明:未经允许,请勿随意用于商业用途。
文章名称:《Fluent UDF【17】:UDS宏》
文章链接:https://www.topcfd.cn/6402/
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
分享到

说两句 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者吧

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册