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

Fluent UDF中的数据结构

本文介绍Fluent UDF中一些常用的数据结构。

在Fluent UDF中,除了可以使用标准C/C++语言的数据类型外,还可以使用一些Fluent中特有的与求解器相关的数据类型(这些数据类型与计算网格有关)来定义UDF中的数据。这些数据类型定义的变量通常作为参数提供给DEFINE宏,用于访问和获取Fluent的求解数据。

1 常用的数据结构

一些比较常用的Fluent数据类型包括:

1、Node

结构体。用于存储与网格节点相关的数据。

2、face_t

整型数。用于标识face Thread中的特定网格面。可以将其视为网格面的编号。

3、cell_t

整型数。用于标识cell Thread中的特定网格单元。可将其视为网格单元的编号。

4、Thread

结构体。存储其所代表的网格单元或网格面的数据。在Thread数据结构中包含有一个指针数组,其中每个指针都指向一个特定场变量(如压力、速度或梯度)的网格单元值或网格面值数组。在该指针数组中,用来标识指向特定场变量(单元值或面值)数组的指针的索引为Svar类型。在多相流问题中,每一相以及Mixture相都有一个Thread结构。

5、Svar

用于标识Thread结构中存储的指针的索引。该索引变量的所有可能值都定义在文件src/storage/storage.h中所包含的关于该类型的枚举中。需要注意有些值是使用SV_[COUPLED_],SOLUTION_VAR[_WITH_FC](...), SV_UDS_I(...) or SV_UDSI_G(...)等宏生成的,这些值无法在枚举中直接找到。若数组中的指针值为NULL,那么表示还未分配相应场变量的内存,此时可以利用函数Alloc_Storage_Vars(domain, SV_..., ..., SV_NULL);分配内存。利用表达式if (NULLP(THREAD_STORAGE(t, SV_...))可以用来测试某个特定场变量的内存是否已经被分配到某个Thread上。

6、Domain

结构体。用于存储与网格节点、网格面和网格单元Thread集合相关的数据。单相流问题只有一个Domain结构;对于多相流问题,每一相、相间相互作用以及混合物都有Domain结构。

2 多相流数据结构

除了基本数据类型外,还有一些专门针对多相流UDF的特殊Thread及Domain数据结构。这些数据类型用于存储所有相的混合物的属性及变量,以及在使用多相流模型(Mixture、VOF或Eulerian)时存储每个独立的相的属性和变量。

在多相流应用中,顶层Domain被称为superdomain。每个相占据一个被称为subdomain的Domain。第三种Domain类型为相互作用Domain,其被引入以允许定义相间相互作用。当需要混合相的属性和变量时,可以利用superdomain获取信息。subdomain只存放单个相的信息,每一个相都有自己的subdomain。

求解信息存储在Thread数据结构中,Thread必须与superdomain以及每个subdomain相关联。也就是说,对于superdomain中定义的每个网格单元或网格面的Thread,每个subdomain都有一个相应的网格单元或网格面的Thread。在superdomain的一个Thread中定义的一些信息是与每个subdomain相应Thread共享的。

上图引入了domain_id和phase_domain_index的概念。domain_id可以在UDF中用来区分superdomain和主相及次相Domain。superdomain(mixture)的domain_id总是被分配为1,交互domain也用domain_id标识。domain_id不一定按顺序排列,各相的id值可以通过gui界面查看。

在UDF中,phase_domain_index可以用来区分主相和次相的phase-level thread。对于主相的phase-level Thread,其phase_domain_index总是被指定为0。


(未完待续)

本篇文章来源于微信公众号: CFD之道

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

说两句 抢沙发

评论前必须登录!

 

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

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

支付宝扫一扫

微信扫一扫

登录

找回密码

注册