‌Fluent UDF高级应用:探索为所欲为的后门技巧‌

大家都知道,Fluent UDF是基于C语言进行编程的。

C语言数据类型主要有整型int、浮点型float、指针*、数组array[]、结构体struct等。正常来说,既然UDF是以C语言进行编程的,那么UDF中的数据类型也应该是这几种才对,而不能无中生有搞出其他数据类型来。

UDF常用的数据类型如下:

1. 实数(real):

实数是Fluent UDF中最常用的数据类型之一,用于存储浮点数值。实数通常用于定义物理量,如速度、压力、温度等。具体是单精度还是双精度,取决于Fluent软件打开界面有没有勾选双精度。

2. cell_t:

cell_t是一个代表单元的整数据类型。在Fluent中,单元通常指的是三维空间中的体单元。cell_t类型用于访问单元的几何和物理特性。

#include "udf.h"

DEFINE_ON_DEMAND(cell_volume)

{

    Domain *domain;

    Thread *thread;

    cell_t c;

    domain = Get_Domain(1); /* 获取计算域 */

    thread = Lookup_Thread(domain, 1); /* 获取Thread */

    /* 遍历单元并计算体积 */

    begin_c_loop(c, thread)

        real volume = C_VOLUME(c, thread);

        Message0("单元体积为: %lf ", volume);

    end_c_loop(c, thread)

}

3. face_t:

face_t是一个代表面的整数据类型。在Fluent中,面通常指的是单元的表面,也就是单元之间的接口。face_t类型用于访问面的几何和物理特性。

4. Thread:

Thread是ANSYS Fluent中的一个非常重要的结构体数据类型。在Fluent UDF中,Thread经常用于访问单元和面,以及定义物理量和边界条件等。

5. Domain:

Domain是一个代表整个计算域的结构体数据类型。它包含了所有的Thread,每个Thread又包含了一组单元和面。在Fluent UDF中,Domain经常用于定义物理量、边界条件和求解器选项等。例如,可以使用Domain中的函数来定义流体的初始条件和边界条件。

尽管UDF使用如cell_t等特殊字符来声明变量,但是其本质还是C语言常用的数据类型。

比如上面提到的Thread和Domain都是结构体类型,其中可能包含很多数据变量,如cell,face等

而比较有意思的是cell_t和face_t数据类型,cell_t可以用来声明网格cell,face_t用来声明face,但是他们竟然是整型变量!!!!

这引出来很多有意思的问题:

1. 既然cell_t声明的是整型变量,那声明语句cell_t c中的c就是一个整数,根本不是什么特别神秘的网格,其实就是一个整型变量。

 2. begin_c_loop(c, thread)这个语句什么意思??循环遍历网格,如果c是一个整型变量,那么其实这个语句就类似于for循环,而其中的c只是循环变量。

begin_c_loop_int(c, t)

{

    Message(" c=%d  ",  c);

    C_UDMI(c, t, 0) =c;

}

end_c_loop_int_ext(c, t)

上面的代码会输出什么??c会从小到大输出0,1,2,3······

3. UDF遍历网格顺序是什么??

之前测试过UDF遍历网格的顺序,也得出来了结论,现在看来是错误的。UDF遍历网格的顺序很简单,就是c从小到大遍历,既不按照x轴坐标,也不按照y轴坐标

4. 每个网格都有一个编号,既然这样,只要知道了特定网格的编号,使用UDF似乎可以违背任何物理规律,为所欲为????

公众号:Fluent学习笔记。为了方便大家学习交流,我创建了QQ群:466988009,大家可以在其中讨论相关的问题,同时我会将所有文章的源文件都放到QQ群中,还会放一些其它的学习文件。欢迎大家加入。

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空