Fluent真串行假串行的问题 (学UDF前须知)

这个题目听了很多人可能有点懵圈,但一旦你涉及Fluent UDF编程就需要深入了解了。首先看一下下图中真串行和并行的差别,可以看到真串行是一个独立的计算模块,负责所有网格的单独计算,相当于自己管自己的“独行侠”,而并行则是网格剖分成若干个分区计算节点(图中举例是3个核并行计算),网格的计算都在这些分区节点上计算,然后另外多出一个host的协调模块,负责各个分区节点数据交换以及与图形界面沟通的协调工作。网上以前有个形象的比喻,分区节点类似于各个学生,专门做作业,host相当于布置作业的班主任,负责收集作业,协调学生之间关系。

早期Fluent就是如此设计的,真串行和并行是有两套独立的可执行程序,或许Fluent为了减少工作量统一到一套程序,高版本的Fluent就有抛弃真串行的趋势,引入了如下一个分区节点实现的并行,我们称之为“假串行”。这种情况实际还是并行架构,只不过网格在一个分区节点上计算,UDF时候还得按照并行来考虑

 在较高版本Fluent自带启动面板的“Serial”模式,字面意思是“串行”,实际已经不再是真串行,而是1个分区节点的并行,这就是我们称之为“假串行”的原因。

 

 当然,中期版本Fluent也给大家留了一些过渡的余地,要实现真串行可以选“Parallel”然后将分区节点数里面设为“0”,或者在命令行里面敲类似“fluent 3d -t0”的命令。

  

 可惜的是在高版本Fluent中,连这些“曲线救国”方法也取消了,只有第三方开发的VC++ UDF Studio插件才用技术手段调出了隐藏的真串行。下表列出了真串行在不同Fluent版本以及VC++ UDF Studio插件中的支持情况。

Fluent版本

Fluent自带图形启动器上Serial为真串行?

Fluent自带图形启动器上利用0核并行启动真串行?

命令行 –t0启动真串行

VC++UDF Studio插件启动真串行

6.3 ~ 18.1

允许

允许

允许

18.2 ~ 2019R3

允许

允许

允许

2020R1~2020R2

禁止

允许

允许

2021R1~2022R1

禁止

禁止

允许

2022R2禁止禁止禁止

由上表可知,Fluent越来越抛弃真串行,而将程序统一为并行架构。这无疑一下子提升了UDF的门槛,不仅要学习UDF语法,还要考虑并行网格分区,host与node的协调等,对初学者来说是个坏消息。因此,对于喜欢使用高版本Fluent的初学者,建议第一步可以借助VC++ UDF Studio插件中的串行启动来实现真串行(对Fluent 2022R2开始插件也无能为力了),这样可以暂时不考虑并行架构,等熟悉UDF基本用法后再深入学习并行的UDF架构。

  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值