Fluent UDF 第五章 使用宏访问(读写)流体求解器的变量
- 格式:pdf
- 大小:531.28 KB
- 文档页数:16
FLUENTUDF官方培训教程一、引言FLUENTUDF(UserDefinedFunctions)是一种强大的功能,允许用户在FLUENT软件中自定义自己的函数,以满足特定的模拟需求。
为了帮助用户更好地了解和使用UDF功能,FLUENT官方提供了一系列培训教程,本教程将对其中的重点内容进行详细介绍。
二、UDF基础知识1.UDF概述UDF是FLUENT软件中的一种编程接口,允许用户自定义自己的函数,包括自定义物理模型、边界条件、求解器控制等。
UDF功能使得FLUENT软件具有很高的灵活性和扩展性,能够满足各种复杂流动问题的模拟需求。
2.UDF编程语言UDF使用C语言进行编程,因此,用户需要具备一定的C语言基础。
UDF编程遵循C语言的语法规则,但为了与FLUENT软件的求解器进行交互,UDF还提供了一些特定的宏和函数。
3.UDF编译与加载编写完UDF代码后,需要将其编译成动态库(DLL)文件,然后加载到FLUENT软件中。
编译和加载UDF的过程如下:(1)编写UDF代码,保存为.c文件;(2)使用FLUENT软件提供的编译器(如gfortran)将.c文件编译成.dll文件;(3)在FLUENT软件中加载编译好的.dll文件。
三、UDF编程实例1.自定义物理模型cinclude"udf.h"DEFINE_TURBULENCE_MODEL(my_k_epsilon_model,d,q){realrho=C_R(d,Q_REYNOLDS_AVERAGE);realmu=C_MU(d,Q_REYNOLDS_AVERAGE);realk=C_K(d,Q_KINETIC_ENERGY);realepsilon=C_EPSILON(d,Q_DISSIPATION_RATE);//自定义湍流模型计算过程}2.自定义边界条件cinclude"udf.h"DEFINE_PROFILE(uniform_velocity_profile,thread,position ){face_tf;realx[ND_ND];begin_f_loop(f,thread){F_CENTROID(x,f,thread);realvelocity_magnitude=10.0;//自定义速度大小realvelocity[ND_ND];velocity[0]=velocity_magnitude;velocity[1]=0.0;velocity[2]=0.0;F_PROFILE(f,thread,position)=velocity_magnitude;}end_f_loop(f,thread)}3.自定义求解器控制cinclude"udf.h"DEFINE_CG_SUBITERATION_BEGIN(my_cg_subiteration_begin,d ,q){realdt=0.01;//自定义时间步长DT(d)=dt;}四、总结本教程对FLUENTUDF官方培训教程进行了简要介绍,包括UDF 基础知识、编程实例等内容。
A N S Y S15.0f l u e n t u d f环境变量的设置初学udf,还没进入主题就被udf问题搞死了,摸索了一两天终于让我搞出了点名堂,本人用的是ANSYS 15.0和vc 10.0.不多说,先把ANSYS 和vc都装上,网上有教程安装的,一步步来别跳步。
最好把vc6也装一下,因为里面有的东西设置环境变量要用到。
先不要打开软件。
设置环境变量:1.C:\Program Files\ANSYS Inc\v150\fluent\ntbin\win64目录下双击setenv和remenv2.设置环境变量:INCLUDEC:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include;C:\Program Files (x86)\MicrosoftSDKs\Windows\v7.0A\Include;LIBC:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\amd64;C:\Program Files (x86)\MicrosoftSDKs\Windows\v7.0A\Lib\x64;C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\lib;PATHC:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE;找个udf文件,注意udf是支持三维还是二维的,打开fluent , 设置工作目录。
如下:接着就是编译了,不用打开case的,直接就可以define ….如果出现什么xcopy….我们找到C:\Windows\System32里面的xcopy复制到C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin;C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64;如果出现“size_t”: 重定义;不同的基类型,可能是你的udf文件有问题。
环境变量设置对于编译udf程序新手来说,环境变量是第一道坎。
好多同学在compile UDF程序,会有报错,说.nmaker不是内部程序或外部程序等,不知道如何修改。
这些都是由于环境变量没有设置好。
今天就为大家介绍下两种环境变量设置方法。
第一种方法:这里以编译器vs2010为例。
1、安装完Visual Studio 2010之后到VS2010的安装目录下,例如:“D:\Program Files\Microsoft Visual Studio 10.0”。
依次打开目录“VC\bin\”,如果是32位系统直接打开文件“vcvars32.bat”,如果是64位系统进入目录“amd64”打开文件“vcvars64.bat”。
2、在文件的最后添加如下语句:set INCLUDE >> path.txtset LIB >> path.txtset PATH >> path.txt修改完成后保存,双击运行,会在当前目录下生成文件“path.txt”。
3、打开之后找到变量“INCLUDE”、“LIB”、“LIBPATH”和“PATH”。
复制等号之后的内容添加到环境变量当中,建议添加到“环境变量”中的“用户变量”当中。
4、配置完成之后进入“cmd”,输入“cl ”和“nmake ”查看配置是否成功,如果配置成功会显示cl和nmake的版本信息。
5、有些电脑在上述配置之后一定要重启,之后就可以再FLUENT中编译UDF了第二种方法:自己去找路径,将找到的路径在环境变量里设置下。
1,右键“我的电脑”—属性—高级—环境变量2,在fluent安装文件夹下双击setenv.exe 点“是”(C:\Program Files\ANSYS Inc\v130\fluent\ntbin\win64\setenv.exe)INCLUDE=C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include;LIB =C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\amd64;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib\x64Path=C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE;备注下:这里环境变量是针对VS2010软件安装在c盘路径,如果是其他路径,自己可以根据安装路径找到就可以了。
[转载]FLUENT帮助⽂件中UDF宏定义集锦原⽂地址:FLUENT帮助⽂件中UDF宏定义集锦作者:summykukuUDF宏定义是敲门砖,共同的体会。
FLUENT帮助⽂件中UDF宏定义实例集锦相关搜索: UDF, 宏定义1.DEFINE_ON_DEMAND 异步执⾏,⾃动存储温度函数2.DEFINE_ADJUST 在整个区域对湍流离散率进⾏积分3.DEFINE_ADJUST ⾃定义⼀个标量是另外⼀个⾃定义标量的函数4.DEFINE_INIT 初始化流场变量5.DEFINE_RW_FILE 将⾃定义函数写⼊data⽂件中再读出6.DEFINE_DELTAT 更改时间步长7.DEFINE_DIFFUSIVITY 应⽤⾃定义标量计算空⽓的平均扩散率8.DEFINE_HEAT_FLUX 在 P-1辐射模型中的应⽤(10.5.2)9.DEFINE_NOX_RATE 计算NOx的产⽣率和reduction rates (4.3.4)10.DEFINE_PROFILE 根据压⼒函数产⽣压⼒剖⾯(4.3.511.DEFINE_PROFILE ⾃定义x⽅向速度剖⾯,湍流动能,离散率(4.3.5)12. DEFINE_PROFILE 叶轮计算中⽤来fix flow variables13. DEFINE_PROPERTY ⾃定义粘度14.DEFINE_SCAT_PHASE_FUNC 多个UDF连接在⼀个源程序中(4.3.7)15.DEFINE_SOURCE ⾃定义源项(4.3.8)16.DEFINE_SR_RATE ⾃定义表⾯反应速率17.DEFINE_TURB_PREMIX_SOURCE 在预混燃烧模型中⾃定义湍流⽕焰速度和源项18.DEFINE_TURBULENT_VISCOSITY 标准k-e模型中⾃定义湍流粘度19.DEFINE_UDS_FLUX 返回给定⾯上的质量流率20.DEFINE_UDS_UNSTEADY 修改⾃定义的标量time derivatives21.DEFINE_VR_RATE 定义体积反应率22.DEFINE_VR_RATE 涉及到多个反应时的应⽤23.DEFINE_CAVITATION_RATE 多相混合物中液相和⽓相之间的传质(4.4.1)24.DEFINE_EXCHANGE_PROPERTY ⾃定义Syamlal drag law (4.4.2)25.DEFINE_VECTOR_EXCHANGE_PROPERTY 两相混合时⾃定义滑移速度26.DEFINE_DPM_BODY_FORCE 计算磁⼒ic force27. DEFINE_DPM_DRAG 计算颗粒的曳⼒drag force28.DEFINE_DPM_EROSION 壁⾯作⽤的后处理29.DEFINE_DPM_INJECTION_INIT 初始化颗粒的粒径30.DEFINE_DPM_LAW ⾃定义 the evaporation swelling of particles的定律31.DEFINE_DPM_OUTPUT 计算沿粒⼦轨迹的熔融指数melting index32.DEFINE_DPM_PROPERTY 两种离散相物理特性连接在⼀个C程序中33.DEFINE_DPM_SOURCE 应⽤评判标准在不同的 DPM laws 中转化34.sub_domain_loop 对某⼀特定相体积分数赋初值35.Get_Domain 在单相中的应⽤36.Lookup_Thread 找到指向给定区域thread的指针,此指针⽤于begin_f_loop and F_CENTROID。
fluent13用vc2010与vc2008编译的环境变量设置尝试fluent13与vc++2010express(这个可以在msdn直接下载使用的),编译就出现'nmake' 不是内部或外部命令,也不是可运行的程序或批处理文件。
而点击load时则出现不可编译的错误:Opening library "libudf"...Error: open_udf_library: 系统找不到指定的文件。
Error Object: ()等等错误提示,花了几天时间搜索各种办法尝试,终于搞定。
现在把步骤总结如下:1,右键“我的电脑”—属性—高级—环境变量—用户变量2,在fluent安装文件夹下双击setenv.exe 点“是”路径X:\Program Files\ANSYS Inc\v130\fluent\ntbin\ntx86之后就会看见用户变量里多了FLUENT—INC和Path两项3,设置vc的环境变量在vc6.0中,可以添加三个环境变量:lib,include,path就可以了,也可以在重装vc6.0的时候选定设置环境变量就可以了。
麻烦的是vc2008,2010,因为在这个编译器中,头文件和库函数分布在不同的位置,经过一天的实验,终于找齐了所有的位置,可以顺利编译include:vc08:X:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\includex:\Program Files\Microsoft Visual Studio 9.0\VC\include.C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include6vc2010:X:\Program Files\Microsoft Visual Studio 10.0\VC\includeC:\Program Files\Microsoft SDKs\Windows\v7.0A\Includelib:vc08X:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\libx:\Program Files\Microsoft Visual Studio 9.0\VC\libC:\Program Files\Microsoft SDKs\Windows\v6.0A\Libvc2010X:\Program Files\Microsoft Visual Studio 10.0\VC\libC:\Program Files\Microsoft SDKs\Windows\v7.0A\LibPath:08vcX:\Program Files\Microsoft Visual Studio 9.0\VC\binx:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE2010vcX:\Program Files\Microsoft Visual Studio 10.0\VC\binX:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE经过测试,这么添加环境变量之后就可以编译udf了,build与load都没问题。
Fluent用户自定义函数(UDF)VC++环境变量配置详细步骤(一)操作环境:
操作系统版本:WIN7旗舰版Service Pack 1
系统类型:64位操作系统
Fluent版本:6.3.26
VC++版本:6.0
(二)操作步骤:
(1)正确安装Fluent6.3.26和VC++6.0。
(2)鼠标右键单击“计算机”,选择“属性”选项,打开“系统”窗口,点击窗口左侧“高级系统设置”,打开“系统属性”设置面板。
(3)在“系统属性”设置面板中,点击“环境变量”按钮,打开“环境变量”设置面板。
打开“新建用户变量”对话框,开始创建环境变量。
(5)在本案例中要设置三个用户变量,分别是include、lib和path变量。
首先在“变量名”中输入“include”作为变量名,然后打开VC++6.0的安装目录,单击地址栏,使之进入可编辑状态,将路径复制到“变量值”中,单击“确定”,include变量就设置好了。
按照同样的方法设置lib变量和path变量,设置好的变量如下图所示:
未进行环境变量配置前,Fluent控制台可能显示的信息如下:
环境变量配置成功后Fluent控制台显示信息如下:。
Fluent用户自定义函数(UDF)VC++环境变量配置详细步骤(一)操作环境:
操作系统版本:WIN7旗舰版Service Pack 1
系统类型:64位操作系统
Fluent版本:6.3.26
VC++版本:6.0
(二)操作步骤:
(1)正确安装Fluent6.3.26和VC++6.0。
(2)鼠标右键单击“计算机”,选择“属性”选项,打开“系统”窗口,点击窗口左侧“高级系统设置”,打开“系统属性”设置面板。
(3)在“系统属性”设置面板中,点击“环境变量”按钮,打开“环境变量”设置面板。
打开“新建用户变量”对话框,开始创建环境变量。
(5)在本案例中要设置三个用户变量,分别是include、lib和path变量。
首先在“变量名”中输入“include”作为变量名,然后打开VC++6.0的安装目录,单击地址栏,使之进入可编辑状态,将路径复制到“变量值”中,单击“确定”,include变量就设置好了。
按照同样的方法设置lib变量和path变量,设置好的变量如下图所示:
未进行环境变量配置前,Fluent控制台可能显示的信息如下:
环境变量配置成功后Fluent控制台显示信息如下:。
Fluent_UDF_中文教程Fluent_UDF是Fluent中的用户定义函数,能够定制化模拟中的物理过程和边界条件。
通过Fluent_UDF,用户可自由地编写自己的程序,以扩展Fluent的功能。
Fluent_UDF具有灵活性和可移植性,可以用C语言或Fortran语言编写。
下面我们将介绍Fluent_UDF的使用方法和编写过程。
1. Fluent_UDF的基本概念在Fluent中运行的模拟,都是由CFD模型和相应的物理模型组成。
CFD模型负责离散化解决流动方程,在CFD模型的基础上,物理模型定义了流体在不同条件下的行为,例如燃烧过程、湍流模型、多相流模型等。
而Fluent_UDF则是一套可以编写自定义的物理模型或者边界条件的库,可以与Fluent中的各类模型进行整合工作。
用户可以通过编写Fluent_UDF来与Fluent交互,其中可以定义用户自定义的边界条件,定义新的物性模型、初始或边界条件以及仿真的物理过程等。
2. Fluent_UDF编译器Fluent_UDF需要使用自带的编译器来编译用户自定义函数,这个编译器名为Fluent_Compiler。
Windows系统下,Fluent_Compiler可在Fluent程序安装目录内找到。
在运行Fluent程序之前,用户需要确保其系统环境变量中设置了编译器路径的系统变量。
Linux系统下,Fluent_Compiler亦随Fluent程序安装,其使用方法与Windows类似。
3. Fluent_UDF文件夹的创建在Fluent安装目录下,用户必须创建一个名为udf的文件夹,以存储用户自定义的函数。
用户可以在命令行中进入Fluent 安装目录下的udf文件夹中,输入以下命令创建文件:mkdir myudf其中myudf是用户自定义的函数文件夹名称。
4. Fluent_UDF函数编写Fluent_UDF支持两种编程语言:C语言和Fortran语言。
FLUENT环境变量设置<资料汇总>前一段时间安装了ansys14,但是在编译UDF的过程中,老是出问题,现将解决过程以及解决方案,将网上的资料总结了一下:对于编译型UDF,在fluent中加载时,需要调用C编译器将其编译成DLL文件。
这里的C编译器虽说理论上是没有任何限制的,但是在windows环境下还是推荐使用microsoft visual c++,在linux环境下推荐使用GCC。
我们这里只说windows环境下编译环境的配置问题。
通常,fluent不能编译的常见错误如下:1)'nmake' 不是内部或外部命令,也不是可运行的程序。
点击load时则出现不可编译的错误:Opening library "libudf"...Error: open_udf_library: 系统找不到指定的文件。
Error Object: ()原因:环境变量有问题。
可能是安装vc++时没有勾选设置环境变量。
2)如果设置好环境变量了,build时不再出现/'nmake' 不是内部或外部命令,也不是可运行的程序。
/ 但点load时仍出现Opening library "libudf"...Error: open_udf_library: 系统找不到指定的文件。
Error Object: ()那么可能是因为没有加入头文件(Header files)udf.h。
加入source files 和header files 后重新build 再load 就OK啦。
3)在build是若出现错误:udf_names.c(40) : fatal error C1071: unexpected end of file found in comment。
一种原因是:udf定义了多个宏命,有一些不需要,加了 /* */ 引起的错误。
解决的方法就是删除这些多余的宏,只保留需要的。
7 自定义函数(UDF)7.1,概述用户自定义函数(User-Defined Functions,即UDFs)可以提高FLUENT程序的标准计算功能。
它是用C语言书写的,有两种执行方式:interpreted型和compiled型。
Interpreted型比较容易使用,但是可使用代码(C语言的函数等)和运行速度有限制。
Compiled型运行速度快,而且也没有代码使用范围的限制,但使用略为繁琐。
我们可以用UDFs来定义:a)边界条件b)源项c)物性定义(除了比热外)d)表面和体积反应速率e)用户自定义标量输运方程f)离散相模型(例如体积力,拉力,源项等)g)代数滑流(algebraic slip)混合物模型(滑流速度和微粒尺寸)h)变量初始化i)壁面热流量j)使用用户自定义标量后处理边界条件UDFs能够产生依赖于时间,位移和流场变量相关的边界条件。
例如,我们可以定义依赖于流动时间的x方向的速度入口,或定义依赖于位置的温度边界。
边界条件剖面UDFs用宏DEFINE_PROFILE定义。
有关例子可以在5.1和6.1中找到。
源项UDFs可以定义除了DO辐射模型之外的任意输运方程的源项。
它用宏DEFINE_SOURCE 定义。
有关例子在5.2和6.2中可以找到。
物性UDFs可用来定义物质的物理性质,除了比热之外,其它物性参数都可以定义。
例如,我们可以定义依赖于温度的粘性系数。
它用宏DEFINE_PROPERTY定义,相关例子在6.3中。
反应速率UDFs用来定义表面或体积反应的反应速率,分别用宏DEFINE_SR_RA TE和DEFINE_VR_RATE定义,例子见6.4。
离散相模型用宏DEFINE_DPM定义相关参数,见5.4。
UDFs还可以对任意用户自定义标量的输运方程进行初始化,定义壁面热流量,或计算存贮变量值(用用户自定义标量或用户自定义内存量)使之用于后处理。
相关的应用见于5.3,5.5,5.6和5.7。
第五章使用宏访问(读写)流体求解器的变量这章提供了预先确定的宏来访问FLUENT的求解器中的变量。
—5.1 介绍—5.2 单元格宏—5.3 面宏—5.4 几何宏—5.5 节点宏—5.6 多相宏—5.7 DPM宏—5.8 NOx宏5.1 介绍Fluent 系列软件提供了一系列预先设计的方程来从求解器中读写数据。
这些方程以宏的形式存放在代码中。
这章的所列出的宏是被定义在扩展名为.h文件里的。
例如mem.h, metric.h, 和dpm.h。
在udf.h文件中包含了宏的定义和这章中所用到的大部分宏文件和它的说明。
因此如果在你的原程序中包含了udf.h文件,那么也就包含了各种的求解器读写文件了。
(.h文件)。
下面列出了一些使用预先设计的宏来读写数据类型:——溶液变量及它们的组合变量(速度,温度,湍流量等)——几何变量(坐标,面积,体积等)——网格和节点变量(节点速度等)——材料性质变量(密度,粘度,导电性等)——分散相模拟变量。
对于除了明确的热量以外的所有数据而言,access这个词还指读写数据。
然而对于确定的热量的数据是只能读不能改的在下面章节中列出了每一个宏的包含的参数,参数的类型和返回值。
其中参数属于下面的数据类型。
cell_t c 单元格标识符face_t 面积标识符Thread *t 线指示器Thread **pt 象限矩阵指示器Int I 整数Node *node 节点指示器参数既不是方程的输入也不是方程的输出。
每一个宏返回一个值,这个值要么作为一个参数以输出值的形式返回求解器,要么是你方程中可用参数。
C_T有两个参数,单元标识符C和线指示器t。
这些参数从FLUENT求解器中返回到方程中。
C_T返回一个温度的实数值,这个值能够分配到的你的UDF变量中去。
(比如这个例子中的temp)C_CENTROID(x,c,t)有三个参数,x,c,t。
在这里单元标识符C和线指示器是输入参数,而矩阵x(单元格的质心)是以参数形式输出到FLUENT求解器中的。
第五章使用宏存取FLUENT解算器变量本章提供了可以存取FLUENT解算器中变量的预定义宏。
5.1 介绍5.2 单元宏5.3 面宏5.4 几何图形宏5.5 节点宏5.6 多相宏5.7 DPM宏5.8 NO x宏5.1 IntroductionFluent Inc. has provided you with a set of predefined functions that you can use to access data from the FLUENT solver. These functions are primarily implemented in the code as macros. The macros listed in this chapter are defined in header files such asmem.h, metric.h, and dpm.h. The udf.h file contains definitions for DEFINE macros,as well as #include directives for most of the solver access macro header files found inthis chapter. Therefore, including udf.h in your source code file will also result in theinclusion of solver access .h files.Some examples of solver data you can access using predefined macros are:_ solution variables and their derivatives (e.g., velocity, temperature, turbulencequantities)_ geometry variables (e.g., coordinates, areas, volumes)_ grid and node variables (e.g., node velocities)_ material property variables (e.g., density, viscosity, conductivity)_ discrete phase model variables5.1 介绍Fluent公司提供了一系列预定义函数来从求解器中读写数据。
第四章DEFINE宏本章介绍了Fluent公司所提供的预定义宏,我们需要用这些预定义宏来定义UDF。
在这里这些宏就是指DEFINE宏。
本章由如下几节组成:• 4.1 概述• 4.2 通用解算器DEFINE宏• 4.3 模型指定DEFINE宏• 4.4 多相DEFINE宏• 4.5 离散相模型DEFINE宏4.1 概述DEFINE宏一般分为如下四类:•通用解算器•模型指定•多相•离散相模型(DPM)对于本章所列出的每一个DEFINE宏,本章都提供了使用该宏的源代码的例子。
很多例子广泛的使用了其它章节讨论的宏,如解算器读取(第五章)和utilities (Chapter 6)。
需要注意的是,并不是本章所有的例子都是可以在FLUENT中执行的完整的函数。
这些例子只是演示一下如何使用宏。
除了离散相模型DEFINE宏之外的所有宏的定义都包含在udf.h文件中。
离散相模型DEFINE宏的定义包含在dpm.h文件中。
为了方便大家,所有的定义都列于附录A中。
其实udf.h头文件已经包含了dpm.h文件,所以在你的UDF源代码中就不必包含dpm.h文件了。
注意:在你的源代码中,DEFINE宏的所有参变量必须在同一行,如果将DEFINE声明分为几行就会导致编译错误。
4.2 通用解算器DEFINE宏本节所介绍的DEFINE宏执行了FLUENT中模型相关的通用解算器函数。
表4.2.1提供了FLUENT中DEFINE宏,以及这些宏定义的功能和激活这些宏的面板的快速参考向导。
每一个DEFINE宏的定义都在udf.h头文件中,具体可以参考附录A。
•DEFINE_ADJUST (4.2.1节)•DEFINE_INIT (4.2.2节)•DEFINE_ON_DEMAND (4.2.3节)•DEFINE_RW_FILE (4.2.4节)• 4.2.1 DEFINE_ADJUST• 4.2.2 DEFINE_INIT• 4.2.3 DEFINE_ON_DEMAND• 4.2.4 DEFINE_RW_FILE4.2.1 DEFINE_ADJUST功能和使用方法的介绍DEFINE_ADJUST是一个用于调节和修改FLUENT变量的通用宏。
第五章使用宏访问(读写)流体求解器的变量这章提供了预先确定的宏来访问FLUENT的求解器中的变量。
—5.1 介绍—5.2 单元格宏—5.3 面宏—5.4 几何宏—5.5 节点宏—5.6 多相宏—5.7 DPM宏—5.8 NOx宏5.1 介绍Fluent 系列软件提供了一系列预先设计的方程来从求解器中读写数据。
这些方程以宏的形式存放在代码中。
这章的所列出的宏是被定义在扩展名为.h文件里的。
例如mem.h, metric.h, 和dpm.h。
在udf.h文件中包含了宏的定义和这章中所用到的大部分宏文件和它的说明。
因此如果在你的原程序中包含了udf.h文件,那么也就包含了各种的求解器读写文件了。
(.h文件)。
下面列出了一些使用预先设计的宏来读写数据类型:——溶液变量及它们的组合变量(速度,温度,湍流量等)——几何变量(坐标,面积,体积等)——网格和节点变量(节点速度等)——材料性质变量(密度,粘度,导电性等)——分散相模拟变量。
对于除了明确的热量以外的所有数据而言,access这个词还指读写数据。
然而对于确定的热量的数据是只能读不能改的在下面章节中列出了每一个宏的包含的参数,参数的类型和返回值。
其中参数属于下面的数据类型。
cell_t c 单元格标识符face_t 面积标识符Thread *t 线指示器Thread **pt 象限矩阵指示器Int I 整数Node *node 节点指示器参数既不是方程的输入也不是方程的输出。
每一个宏返回一个值,这个值要么作为一个参数以输出值的形式返回求解器,要么是你方程中可用参数。
C_T有两个参数,单元标识符C和线指示器t。
这些参数从FLUENT求解器中返回到方程中。
C_T返回一个温度的实数值,这个值能够分配到的你的UDF变量中去。
(比如这个例子中的temp)C_CENTROID(x,c,t)有三个参数,x,c,t。
在这里单元标识符C和线指示器是输入参数,而矩阵x(单元格的质心)是以参数形式输出到FLUENT求解器中的。
5.2 单元格宏这章所列出的宏是由求解器返回的实数变量,并且这些变量都是定义在一个单元格中的。
这些单元格变量在单独的或是联合的求解器中都能得到。
(segregated and the coupled solvers.)这些单元格宏的定义在相关的扩展名为(.h)的文件中可以得到。
(例如mem.h等)5.2.1 用来读写流体变量的宏。
在FLUENT中可以用来读写流体变量的宏在表5.2.1中列出,注意加了_G,_ RG, _M1, 和_M2这些下标的单元格温度的宏可以应用于表5.2.1 中的所有求解器的变量中,但是除了单元格压力(C-P)。
这些下标分别表示的是矢量梯度,改造的矢量梯度,前一次的步长,和前两次的步长。
而对于单元格压力,它的矢量梯度和相应的分量是使用C_DP 得到的而不是C_P_G。
每一个下标的描述和用法在下面介绍。
表 5.2.1: 在mem.h文件中的流体变量宏名称(参数)参数类型返回值C_T(c,t) cell t c, Thread *t 温度C_T_G(c,t) cell t c, Thread *t 温度梯度矢量C_T_G(c,t)[i] cell t c, Thread *t, int i 温度梯度矢量的分量C_T_RG(c,t) cell t c, Thread *t 改造后的温度梯度矢量C_T_RG(c,t)[i] cell t c, Thread *t, int i 改造后的温度梯度矢量的分量C_T_M1(c,t) cell t c, Thread *t 温度的前一次步长C_T_M2(c,t) cell t c, Thread *t 温度的前二次步长C_P(c,t) cell t c, Thread *t 压力**C_DP in sg mem.hC_DP(c,t) cell t c, Thread *t 压力梯度矢量C_DP(c,t)[i] cell t c, Thread *t, int I 压力梯度矢量的分量C_U(c,t) cell t c, Thread *t u 方向的速度C _V(c,t) cell t c, Thread *t v方向的速度C_W(c,t) cell t c, Thread *t w方向的速度C_H(c,t) cell t c, Thread *t 焓C_YI(c,t,i) cell t c, Thread *t, int i 物质质量分数C_K(c,t) cell t c, Thread *t 湍流运动能C_D(c,t) cell t c, Thread *t 湍流运动能的分散速率C_O(c,t) cell t c, Thread *t 确定的分散速率读写梯度矢量和其分量你可以在你的宏中加入下标_G来得到梯度矢量和它的分量,例如:C_T_G(c,t); /* 返回单元格的温度梯度矢量. */注意只有当已经求解出包含这个变量的方程时才能得到梯度变量。
例如如果你定义了一个关于能量的原程序,那么你的UDF可以读写单元格的温度梯度(使用C_ T _G)但是你却不能读写X方向的速度分量(使用C_ U _G)。
而且,如果你建立了一个由使用者确定的方式转移方程,那么你就不能得到一部分的梯度了。
这是因为求解器不断的移走它不需要的数据。
你可以使用下面的方法来阻止存储器释放记忆:发出文本命令save/set/expert ,然后对计算机提出的“是否阻止暂时的求解器记忆释放”这一提问回答“是”。
按照这种做法就可以保留所有的梯度数据,但是这种计算需要更多的内存。
在调用梯度矢量时把某一分量作为参数,这样就可以得到梯度分量了,(参数0代表X方向的分量,1代表Y方向的分量,2代表Z方向的分量)例如:C_T_G(c,t)[0]; /* 返回温度梯度X方向的分量 */注意在表5.2.1中虽然只列出了温度梯度和其分量求解的宏,但是却可以扩展到除了压力以外的所有变量中去,对于压力你只能按照表5.2.1中的方法使用C_DP来得到压力梯度和其分量。
读写改造过的梯度矢量和其分量和梯度一样的方式,你可以通过加RG的下标在你的宏中来得到梯度向量和其分量。
通过使用恰当的整数作为参数来获得想要的矢量分量。
(参数0代表X方向的分量,1代表Y方向的分量,2代表Z方向的分量)当你完成你自己的插补计划时可以使用改造过的梯度。
改造过的温度梯度和其分量在表5.2.1中列出了,但是可以推广到所有的变量。
注意改造过的梯度矢量和梯度矢量一样都只有在梯度方程被求解出来时才可以得到。
读写前一步长下的时间在表5.2.1里的宏中加入下标_M1就可以得到前一次步长时间下(t-⊿t)的变量的值。
得到的这些数据可以在不稳定的模拟中使用。
例如:C_T_M1(c,t); /*返回前一步时间下的单元格温度的值 */若在表5.2.1里宏的后面加上下标M2就可以得到前两次步长下的时间(t-2⊿t)。
这些数据可用与不稳定的模拟计算中。
在表5.2.1中仅列出了温度的前一次步长的求法,但是可以扩展到其它的变量中去。
5.2.2读写导数的宏在表5.2.2中列出来的宏可以用于读写由速度导数。
5.2.3存取材料性质的宏在表5.2.3中列出的宏可以用于存取材料的性质。
表5.2.3在mem.h中存取材料性质的宏名称(参数)参数类型返回值C_FMEAN(c,t) cell t c, Thread *t 第一次混合分数的平均值C_FMEAN2(c,t) cell t c, Thread *t 第一次混合分数的平均值C_FVAR(c,t) cell t c, Thread *t 第一次混合分数变量C_FVAR2(c,t) cell t c, Thread *t 第二次混合分数变量C_PREMIXC(c,t) cell t c, Thread *t 反应过程变量C_LAM FLAME SPEED(c,t) cell t c, Thread *t 层流焰速度C_CRITICAL STRAIN cell t c, Thread *t 临界应变速度RATE(c,t)C_ POLLUT(c,t,i) cell t c, Thread *t, int i 第i个污染物质的质量分数C_R(c,t) cell t c, Thread *t 密度C_MU L(c,t) cell t c, Thread *t 层流速度C_MU T(c,t) cell t c, Thread *t 湍流速度C_MU EFF(c,t) cell t c, Thread *t 有效粘度C_K_L(c,t) cell t c, Thread *t 热传导系数C_K_T(c,t) cell t c, Thread *t 湍流热传导系数C_K_ EFF(c,t) cell t c, Thread *t 有效热传导系数C_CP(c,t) cell t c, Thread *t 确定的热量C_RGAS(c,t) cell t c, Thread *t 气体常数C_DIFF L(c,t,i,j) cell t c, Thread *t, int i,层流物质的扩散率int jC_DIFF EFF(c,t,i) cell t c, Thread *t, int i 物质的有效扩散率C_ABS COEFF(c,t) cell t c, Thread *t 吸附系数C_SCAT COEFF(c,t) cell t c, Thread *t 扩散系数C_NUT(c,t) cell t c, Thread *t 湍流速度for Spalart-Allmaras5.2.4 Macros for Accessing User-Defined Scalars and MemoryThe macros listed in Table 5.2.4 can be used to access user-defined scalars and memoryfor cells.Table 5.2.4: User-Defined Scalar and Memory Macros for Cells in mem.hTypes ReturnsName(Arguments) ArgumentC _UDSI(c,t,i) cell t c, Thread *t, int i user-defined scalar (cell)C_UDSI M(c,t,i) cell t c, Thread *t, int iuser-defined scalarprevious time step (cell)C_UDSI_DIFF(c,t,i) cell t c, Thread *t, int iuser-defined scalardi_usivity (cell)C_UDMI(c,t,i) cell t c, Thread *t, int i user-defined memory (cell)5.2.4用户定义的标量和存储器的宏的读写在表5.2.4中列出的宏可以为单元格读写用户定义的标量和存储器。