首页/文章/ 详情

八十六、Fluent UDF中特殊的数据结构

3月前浏览2588

1. UDF数据结构介绍

虽然Fluent UDF是用C语言书写的,但是UDF的代码和逻辑和C语言有很大的不同,你的C语言写的很好,并不代表就一定能写好Fluent UDF代码。


 



我们必须在了解C语言数据结构的基础上,还要对UDF内置的数据结构非常熟悉才可以。



2. C语言数据结构类型

2.1 基本数据类型

整型:

•  int:标准整型,通常用于存储整数。

•  short:短整型,存储范围比int小。

•  long:长整型,存储范围比int大。

•  long long:更长的整型,提供更大的存储范围。

 


在UDF中,经常会使用到整型变量,甚至一些内置的数据结构就是整型变量。比如cell_t,face_t等。




字符型:

•  char:用于存储单个字符,通常是8位。

UDF经常用字符类型来存储字符,一方面可以用于文本输出,另外一方面还可以用来动态读取文件名。

 


浮点型:

•  float:单精度浮点数,用于存储小数点数。

•  double:双精度浮点数,比float提供更高的精度和更大的存储范围。

•  long double:比double更高精度的浮点数

 


浮点型是fluent UDF最为广泛使用的数据类型,虽然在UDF代码中,几乎看不到float、double这类关键字,这是因为fluent使用了内置的关键字。


2.2  数组

•  一维数组:存储一系列相同类型的数据。

•  二维数组或多维数组:可以存储矩阵或张量数据,用于复杂的数据关系。

 


数组类型也经常被使用,这是因为fluent经常涉及到矢量的计算,比如速度场u、v、w,坐标x、y、z等。


2.3  指针

•  指针变量存储内存地址,指向数据结构或基本数据类型的实例。如int *表示指向int类型数据的指针。

 


通过指针,UDF可以动态地访问和修改数据。



2.4 结构体

结构体通过使用struct关键字定义,后面跟上结构体的名称和一组声明的成员(变量),每个成员可以是基本数据类型或其它派生数据类型

 


Fluent的很多内置数据结构都是结构体类型,比如最常见的thread


3.  Fluent内置数据结构


3.1  cell_t

cell_t是表示计算域中单个控制体积(单元)的数据结构。它包含了单元的各种信息,如体积、面、相邻单元等。实际上cell_t就是上面提到的整型变量,每个网格都有一个序号来标识

 


通过cell_t,用户可以在UDF中访问和修改特定单元的属性。


3.2 face_t

face_t表示单元的一个面,是用于处理边界条件和面相关的物理量的数据结构。每个face_t与两个相邻的单元相关联(除非是边界面),可以访问面的面积、法向量等属性。


face_t同样是整型变量,用来存储fluent 网格的face序号

 


3.3  Thread

thread是UDF特有的数据结构,本质上是一个结构体,包含了一系列的cell和face。通过thread逐次查找,最终可以查找到网格和面。

 



3.4 Domain


domain表示整个计算域,是所有单元和边界的集 合。通过domain,用户可以访问整个计算域的属性,如总体积、边界条件等。通过domain,可以逐次查找到thread------ cell----- face。

 


3.5  Fluent UDF特有的数据访问函数


如C_T、C_P、C_U等,用于访问Fluent计算的标量场(如温度、压力)和向量场(如速度)。

 


来源:Fluent学习笔记

FluentUDF理论控制
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-08-19
最近编辑:3月前
Fluent学习笔记
博士 签名征集中
获赞 125粉丝 332文章 136课程 3
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈