Fluent UDF(一)数据结构

网格组成

大多数 UDF 需对求解器数据进行访问。由于 Fluent 求解器数据是根据网格组件定义的,因此在编写UDF之前,需要学习一些基本的网格术语。

有限体积法 (FVM) 网格由一系列控制体 (control volumeCV) 即网格单元 cell 组成,每个网格单元由一组网格节点、单元中心和单元边界面组成。Fluent 内部数据结构定义网格域;为网格中的单元、单元面和节点分配顺序;以及建立相邻网格单元之间的连接关系。Fluent导入网格时,将网格拓扑信息存储在求解器中。

注:通量 F l u x Flux Flux​ 等数据储存在网格面上,一般的物理量如压力、温度、速度等储存在网格单元中心,与网格索引相关的数据储存在网格节点上。

网格由以下部分组成:

  • 2D:node(节点)、face(面)、cell(单元)
  • 3D:node(节点)、edge(边)、face(面)、cell(单元)
    在这里插入图片描述

数据类型

Fluent数据结构根据网格信息进行定义:

  • 域 (Domains) :网格节点、网格面和网格单元线程 (Threads) 的集合。
  • 线程 (Threads) :一系列网格节点 (Nodes)、 网格单元 (Cells) 和网格面 (Faces) 的集合
  • 网格单元(Cells) 和面 (Faces) 由节点 (Nodes) 组成。
    在这里插入图片描述

UDF基于C/C++编程语言编写,其支持标准的C/C++数据类型 (如real、int等),此外,Fluent 还有与网格结构相关联的特定数据类型。

常用的Fluent数据类型如下:

  • Node:结构体变量,用于存储与网格节点相关的数据。

  • face_t:整型变量,用于标识face Thread中的特定网格面。

  • cell_t:整型变量,用于标识cell Thread中的特定网格单元。

  • Thread:结构体变量,存储其所代表的网格单元或网格面的数据。

  • Domain:结构体变量。用于存储与网格节点、网格面和网格单元线程Thread集合相关的数据。

数据类型定义举例:

数据类型变量名描述
Domain*d域指针
Thread*t线程指针
cell_tc单元索引
face_tf面索引
Node*node网格节点索引

使用上述数据类型定义的变量通常作为参数提供给DEFINE宏与其他数据访问函数。

​ UDF可以访问流体域和边界区中网格单元或单元面的求解变量,访问数据首先需确定所访问的数据存储位置,面ID或单元ID本身并不能唯一标识面或单元,需要与线程指针一起使用,才能标识面或单元所属的线程。一些UDF会将单元索引 c 作为参数传递(例如 DEFINE_PROPERTY(my_function,c,t) ),或者将面索引变量 f 作为参数传递(例如 DEFINE_UDS_FLUX(my_function,f,t,i) )。如果UDF没有将单元或面索引变量作为参数传递,但需要使用这些变量,可以在函数中局部声明后使用。

​ 如果 UDF 循环遍历 Domain 中的所有单元线程或面线程(使用 thread_c_loop(c,t)thread_f_loop(f,t)),且DEFINE宏没有传递相应的指针,只需在调用循环前局部声明线程指针(以及单元或面ID),不需要使用 Lookup_Thread 来获取线程指针。

数据访问有关的循环宏变量获取宏将在后续章节叙述。

对于Fluent UDF(User Defined Function),您可以参考以下步骤进行学习: 1. 理解Fluent UDF的概念:Fluent UDF是用于扩展Fluent软件功能的用户自定义函数。它允许您通过编写自己的函数来实现特定的建模、求解或后处理任务。 2. 学习Fluent UDF的基础知识:了解Fluent UDF的基本语法、函数类型和参数传递方式。可以阅读Fluent UDF文档或参考Fluent UDF教程,以了解如何编写和使用UDF代码。 3. 选择编程语言:Fluent UDF支持多种编程语言,如C、C++和Fortran。选择一种您熟悉或感兴趣的编程语言,并学习其语法和相关开发环境。 4. 编写UDF代码:按照Fluent UDF的语法规则,编写您的自定义函数。根据您的需求,可以实现不同类型的UDF,例如边界条件、源项或用户定义的模型。 5. 编译和加载UDF:将编写好的UDF代码编译为动态链接库,并将其加载到Fluent软件中。这样,您就可以在Fluent界面中使用自定义函数。 6. 验证和调试:在Fluent软件中验证您的UDF是否正常工作。如果出现错误或问题,可以使用调试工具和日志信息进行排查。 7. 进一步学习和应用:通过解决实际问题或参与相关项目来进一步学习和应用Fluent UDF。与其他用户交流经验、参加培训课程或阅读相关文献也是提高技能的有效途径。 请注意,Fluent UDF的学习过程可能需要一定的时间和耐心。不断练习和实践,您将能够熟练地使用Fluent UDF来解决复杂的流体力学问题。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值