新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载

Fluent UDF

许多学习了一段时间Fluent的朋友们会开始接触到一个叫UDF的东东,这个东东的全称叫User Define Function,翻译成中文可以是“用户自定义功能”或“用户自定义函数”。

许多想入门UDF的朋友在学习UDF前面临的第一个问题应该是UDF环境变量设置的问题,这个问题可能已经成为新手入门UDF的一个门槛了。UDF环境变量设置现在网上百度也能搜到一些教程,这里我不操作如何进行UDF环境变量设置,这个可以自行找资料解决。

在设置好环境变量后,大家接下来关心的应该是Fluent支持的串行与并行了,因为在编写UDF时,这个UDF可以编写成串行的也可以编写成并行的,但不同版本Fluent对于它的真串行和真并行还是有区别的。本人是在学习过程中从一些前辈们处了解到大概从Fluent 17.2或是Fluent 18.0开始,Fluent启动界面中Processing Options下的Serial不再是真串行了,而是单核并行,所以许多新手入门UDF时总是容易碰到编写的UDF在Serial方式启动后进行UDF编译,易出现报错的情况。报错可能有两种原因,一种可能是你的UDF环境变量没有设置好,另一种可能是Fluent串行或是并行的启动方式不正确。建议大家最好安装Visual Studio 2010版本,因为该版本搭配各种Fluent版本算是最稳定的,本人是用Visual Studio 2013版本,暂时没有出现任何问题,但还是建议新手安装Visual Studio 2010版本,稳一些!

本人电脑系统为Windows10专业版,电脑上安装了多个Fluent版本,皆能正常使用,将Fluent UDF环境变量设置好。接下来我将和大家分享如下一些Fluent版本它们具体的真串行和真并行情况,为新手入门UDF提供一些微不足道的帮助!

编译UDF时常出现的问题

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图1

这个界面应该是许多入门UDF的新手熟悉的界面了。报错可能有两种原因,一种可能是你的UDF环境变量没有设置好,另一种可能是Fluent串行或是并行的启动方式不正确。

二 本人电脑系统及Fluent版本

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图2

环境变量设置操作是在所有Fluent安装好后进行,并设置成功。

三 用于测试的简单UDF程序

#include "udf.h"
DEFINE_ON_DEMAND(
my_udf)
{
 Message("
Welcome to Fluent!\n");
}

该C程序参考UDF帮助手册编写,将用于编译UDF测试。

四 Fluent各版本串行与并行测试

下面将使用 Fluent 17.0/17.2/18.0/18.2/19.0/19.2/2019R3/2020R1 进行串行与并行下UDF编译情况测试。
4.1
Fluent 17.0

Serial方式

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图3

我们以Serial串行方式启动Fluent 17.0。

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图4

可以在控制台中读取到一些信息。

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图5

C程序已经编写好,可用于导入Fluent进行编译。

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图6

在User-Defined Functions下点击Compiled...这种编译方式。

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图7

将C程序Add...到Source Files中。

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图8

点击Build后弹出框点击OK,进行生成libudf文件。

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图9

控制台中显示了如上信息。

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图10

点击Load。

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图11

可以在控制台中发现生成了动态库文件。

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图12

▼ 因为我们用的是DEFINE_ON_DEMAND函数(该函数具体有哪些格式要求和功能请自行查阅UDF帮助手册),所以点击Excute on Demand...。

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图13

执行该UDF程序,在控制台发现生成了我们在C程序中编写的信息,该测试完成。

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图14

点击Exit退出。

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图15

进行下一个测试时一定记得将生成的libudf文件夹删除。

这里我们发现,我们以串行方式启动编译的UDF生成的是单句信息,生成的动态库文件也是单个,这里的串行方式是真串行方式。

Parallel -1 方式

这里的并行我设置了1线程,我在尝试设置为0线程时发现,点击启动Fluent时,线程数自动变为了1。

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图16

以1线程启动Fluent。

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图17

从控制台发现,主机节点host和0节点n0都使用了,刚刚设置的1线程也就生效了。

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图18

执行完该UDF程序生成了两个动态库文件,一个是主机节点host生成的,一个是0节点n0生成的,信息语句也生成了两条。

这里我们发现,这种并行方式启动是一种真的并行启动,不仅有主机节点进行计算还有所开另外线程的节点进行计算。
4.2
Fluent 17.2

Serial方式

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图19

我们以Serial串行方式启动Fluent 17.2。

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图20

可以在控制台中读取到一些信息。

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图21

执行该UDF程序,在控制台发现生成了我们在C程序中编写的信息,该测试完成。

这里我们发现,我们以串行方式启动编译的UDF生成的是单句信息,生成的动态库文件也是单个,这里的串行方式是真串行方式。

Parallel -1 方式

这里的并行我设置了1线程,我在尝试设置为0线程时发现,点击启动Fluent时,线程数自动变为了1。

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图22

以1线程启动Fluent。

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图23

从控制台发现,主机节点host和0节点n0都使用了,刚刚设置的1线程也就生效了。

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图24

执行完该UDF程序生成了两个动态库文件,一个是主机节点host生成的,一个是0节点n0生成的,信息语句也生成了两条。
这里我们发现,这种并行方式启动是一种真的并行启动,不仅有主机节点进行计算还有所开另外线程的节点进行计算。
4.3
Fluent 18.0

Serial方式

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图25

我们以Serial串行方式启动Fluent 18.0。

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图26

可以在控制台中读取到一些信息。

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图27

执行该UDF程序,在控制台发现生成了我们在C程序中编写的信息,该测试完成。

这里我们发现,我们以串行方式启动编译的UDF生成的是单句信息,生成的动态库文件也是单个,这里的串行方式是真串行方式。

Parallel -1 方式

这里的并行我设置了1线程,我在尝试设置为0线程时发现,点击启动Fluent时,线程数自动变为了1。

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图28

以1线程启动Fluent。

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图29

从控制台发现,主机节点host和0节点n0都使用了,刚刚设置的1线程也就生效了。

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图30

执行完该UDF程序生成了两个动态库文件,一个是主机节点host生成的,一个是0节点n0生成的,信息语句也生成了两条。
这里我们发现,这种并行方式启动是一种真的并行启动,不仅有主机节点进行计算还有所开另外线程的节点进行计算。
4.4
Fluent 18.2

Serial方式

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图31

我们以Serial串行方式启动Fluent 18.2。

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图32

但发现控制台中出现了两个节点,一个是主机host节点,一个是n0节点,可以判断Fluent 18.2的Serial串行是伪串行,实际上是单线程并行方式启动,在编写UDF时尤其是编写并行UDF时一定要注意。

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图33

从控制台中发现,动态库文件生成了两个,但信息语句只生成了一个。

这里我们发现,Fluent 18.2的Serial串行启动是一种伪串行,实际是一种单线程并行启动方式,在编译UDF时一定要注意这个问题,否则就很容易出现最开始那种报错提示。

Parallel -0 方式

在使用Fluent 18.2的朋友们如果想使用真正的串行方式启动,请看如下操作。

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图34

应该将打开Parallel中的线程数设置为0。

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图35

可以在控制台中读取到一些信息。

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图36

这里我们可以看到控制台中只显示生成了一个动态库文件,信息语句也只生成了一个。

因为没有安装Fluent 18.1版本,所以不知道是不是从18.1开始,Fluent的串行改为了单线程并行,0线程并行实际为串行,但18.0还没有出现,18.2出现了。
4.5
Fluent 19.0

Serial方式

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图37

我们以Serial串行方式启动Fluent 19.0。

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图38

从上一个版本18.2开始,19.0也是这样了。

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图39

两个动态库文件,一条信息语句,很明显的伪串行。

Parallel -0 方式

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图40

将线程设置为0启动。

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图41

可以在控制台中读取到一些信息。

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图42

这里我们可以看到控制台中只显示生成了一个动态库文件,信息语句也只生成了一个。

4.6
Fluent 19.2

Serial方式

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图43

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图44

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图45

Parallel -0 方式

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图46

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图47

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图48

4.7
Fluent 2019R3

Serial方式

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图49

我们以Serial串行方式启动Fluent 2019R3。

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图50

可以在控制台中读取到一些信息。

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图51

这里的Fluent 2019R3和Fluent 19.2的伪串行又有些区别了,这里不仅生成了两个动态库文件,还生成了两条信息语句。

Parallel -0 方式

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图52

这里用0线程并行方式启动。

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图53

在控制台中显示如上信息。

这是谷歌翻译的内容,请参考着理解。

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图54

Fluent现在默认使用并行模式和单个进程来执行“串行”。您已选择在旧版串行模式(也称为“-t0”)中启动Fluent。此模式与Fluent中的许多较新增强功能不兼容,并且可能在将来的版本中删除。建议您改用默认的串行模式。如果使用默认模式是因为使用默认模式时遇到问题,请让ANSYS支持联系人了解详细信息,以便我们改进产品。

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图55

只生成了一个动态库文件和一条信息语句。

4.8
Fluent 2020R1

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图56

从Fluent 2020R1启动界面已经找不到Serial这个英文单词了,而且红色框中的Solver Processes线程数最小只能设置为1,已经不存在所谓的串行或是0线程并行了。

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图57

使用了主机节点host和n0节点两个节点计算。

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的图58

生成了两个动态库文件和两条信息语句。

在这里,大家要明白这一点,Fluent 2020R1已经不存在以-t0方式启动串行了,现在只有并行了,编写UDF时更要注意这个问题。

下载地址:Fluent UDF中文教程


fluent

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的评论2条

新手入门Fluent UDF较关注的几个问题 附Fluent UDF中文教程下载的相关案例教程

虽说fluent现在有了和comsol类似的表达式功能,但有些地方还是要用到UDF的(主要是别人的算例用的udf。。。) udf需要编译,编译时udf源文件需要和算例文件在一个文件夹。但在编译时,可能会出现奇怪的错误,分享一下我的踩坑经过。 1、visual c++位置不对,导致fluent编译时找不到编译器。 fluent只能用visual c++编译UDF,所以编译前需要安装visual c+
前面我们所讲述的Fluent的相关知识只是很少很少的一部分,但是今天我们还是开始一部分新的知识。之所以这样做,是因为今天所讲述的知识在大家以后的学习中用途很广泛,同时这部分知识需要大家提前学习一些基础知识。 图1.UDF用户手册 UDF介绍:所谓UDF-用户自定义函数(User-defined functions),学习过编程语言的同学对此应该并不陌生,无论是C语言、JAVA还是Python,自定
1. 简介 今天我们接着说Fluent UDF功能,我们经常使用的UDF宏主要有以下几种: DEFINE_PROFILE: 定义模型边界 DEFINE_ADJUST: 用于协调计算过程中物理量 DEFINE_INIT: 初始化宏,用于自定义初始化 DEFINE_PROPERTY: 定义材料物性 上述的几种宏基本上无论使用什么物理模型都会用到,还有部分宏是在特定的模型下才会使用,如使用DPM模型时用
昨天有 道 友说可以尝试使用ChatGPT写Fluent UDF,然后我就试了一下。 为了不为难机器人,这里挑了一个最简单的。比如经常使用UDF定义随空间变化的边界条件,如定义一个入口速度与y坐标成函数关系的边界条件: 先把家伙事儿都准备好(板凳和ChatGPT),然后开干。 首先我提出自己的需求。 Fluent UDF是Fluent中利用C语言自定义其功能的工具。请编写一段Fluent UDF程
1. 简介 上一篇文章提到过,编译型的UDF相较于解释型的UDF更加通用,但是使用编译型UDF之前必须进行Fluent环境配置。Fluent环境配置虽然听起来似乎很简单,但是实际上确实一个很玄学的东西。有的人可能安装Fluent之后,就已经配置好了环境,而有的人可能自己搞了几天,甚至重装软件,重装系统还是搞不好。 Fluent环境变量的配置网上介绍的很多很杂,这里我介绍几种配置环境变量的方法,不能
影响力
粉丝
内容
获赞
收藏
    项目客服
    培训客服
    2 15