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

Fluent UDF【12】:常用的数据宏

内容纲要

除了前面提到的网格单元数据获取宏、网格面数据获取宏及节点数据获取宏外,在数据获取方面,还有几个非常常用的宏。编写UDF程序时,经常与这些宏打交道。这些宏包括:

  • Loookup_Thread

  • THREAD_ID

  • Get_Domain

  • F_PROFILE

  • THREAD_SHADOW

1

获取指定区域的Thread

Thread是UDF中一种非常重要的数据结构,有时常常需要获取某个边界的Thread进行其他操作,此时可以利用宏Lookup_Thread实现。

  • 宏描述:Lookup_Thread(d,id)

  • 宏参数:Domain *d, int id

  • 返回值:Thread *t

id值可以从边界条件面板中获取得到,如下图所示。

获取某个zone的ID之后,就可以对该区域进行操作了。下面的例程是获取ID为1的边界上各网格面中心节点坐标。

#include "udf.h"
DEFINE_ADJUST(print_f_centroids, domain) {    real FC[2];    face_t f;    int ID = 1;    Thread *thread = Lookup_Thread(domain, ID);    begin_f_loop(f, thread)    {        F_CENTROID(FC,f,thread);      
       printf("x= %f,y= %f", FC[0], FC[1]);    }    end_f_loop(f,thread) }

2

获取区域ID

获取区域的ID可以使用宏THREAD_ID来实现。

  • 宏描述:THREAD_ID(t)

  • 宏参数:Thread  *t

  • 返回值:返回相应Thread的对应ID值,int类型

调用形式:

int zone_id = THREAD_ID(t);

3

获取区域指针

获取区域指针可以通过宏Get_Domain来实现。

当区域的指针无法通过宏参数传递进来时,可以使用宏Get_Domain来获取指定id的区域的指针,利用DEFINE_ON_DEMAND宏中。

  • 宏描述:Get_Domain(id)

  • 宏参数:int id

  • 返回值:Domain *d

注意:对于单相流,id值为1;对于多相流,id值为大于1的整数。

多相流中的id值可以在Phase对话框中查看,如下图所示。

下面是一个例程:

 DEFINE_ON_DEMAND(my_udf)  {     Domain *mixture_domain;     mixture_domain = Get_Domain(1);     Domain *subdomain;     subdomain = Get_Domain(2);           ...  }

4

设置边界值

设置边界值可以利用宏F_PROFILE来实现。

  • 宏描述:F_PROFILE(f,t,i)

  • 宏参数:face_t f, Thread *t, int i

  • 返回值:void,此宏没有返回值

此宏后两个参数通过Fluent传入,第一个参数通过循环宏得到。如下例程:

#include "udf.h"DEFINE_PROFILE(pressure_profile,t,i) {       real x[ND_ND];         real y;       face_t f;       begin_f_loop(f,t)       {            F_CENTROID(x,f,t);            y = x[1];            F_PROFILE(f,t,i) = 1.1e5 - y*y;       }       end_f_loop(f,t) }

5

获取影子面的Thread

当一个面存在影子面时,可以利用宏THREAD_SHADOW获取该面的影子的Thread。

  • 宏描述:THREAD_SHADOW(t)

  • 宏参数:Thread *t

  • 返回值:Thread *t

当宏参数所对应的面没有影子面时,此宏返回NULL。

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

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

说两句 抢沙发

评论前必须登录!

 

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

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

支付宝扫一扫

微信扫一扫

登录

找回密码

注册