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

Fluent UDF【9】:节点数据访问宏

1

在这里输入标题

1

标题

从今天开始,我们将走入UDF的核心世界,仔细剖析每个宏的使用方法及其使用过程中需要注意的事项。

1

辅助宏

前文提过,UDF程序编写的核心内容在于搞明白数据如何获取?数据如何转换?数据如何返回?Fluent提供了众多的辅助宏来实现这三个功能。主要包括:

  • 数据访问。主要功能为获取求解器中的数据,如得到单元中的温度、压力、速度等物理量。

  • 循环控制。主要提供遍历搜索功能。如设置边界条件数据,则需要利用循环控制宏遍历所有的边界面。

  • 向量操作宏。主要提供一些向量运算操作。

  • 输入输出宏。提供与外部数据交互的能力。

  • Scheme宏。主要用于GUI定制。

数据获取宏的内容很多,包括各种节点数据、网格单元数据、网格面数据、网格链接关系数据、索引数据、时间相关数据、物性数据等。本文描述其中的部分内容,剩余部分在后续文章中逐渐描述。

注意轴对称数据:当计算采用了轴对称模型或轴对称旋转模型时,需要注意利用数据获取宏得到的面数据(如利用宏F_AREA得到的截面面积)均指的是1弧长面积上的数据,如果要得到整个截面上的数据,则需要乘上2PI(可以利用宏M_PI)

2

节点数据访问宏

节点宏获取节点信息,如获取节点x,y,z三方向坐标,或获取网格面上的节点数量。

  • 获取节点位置信息

获取节点位置包括三个宏,它们在头文件metric.h中被定义。这些宏包括NODE_X,NODE_Y,NODE_Z

参数类型 返回值
NODE_X Node *node 返回node的x坐标,real类型
NODE_Y Node *node 返回node的y坐标,real类型
NODE_Z Node *node 返回node的z坐标,real类型

说明:此宏使用很简单,不过在使用之前需要定义变量Node *v,然后在循环体中利用宏F_NODE获取节点,之后直接应用宏NODE_X(v)获取节点v的x坐标。

如下程序片段取自DEFINE_GRID_MOTION宏:

{    Node *v;     
  int n;   face_t f;   Thread *tf = DT_THREAD(dt);   begin_f_loop(f,tf)   {       f_node_loop(f,tf,n)       {           v=F_NODE(f,tf,n);              
          if(NODE_X(v)>0.2)           {              ...           }        }    }  end_f_loop(f,tf);
}
  • 获取面上节点数量

宏F_NNODES可用来获取面上节点的数量信息,该宏在头文件mem.h中定义。

参数类型 返回值
F_NNODES(f,t)

face_t f

Thread *t

返回节点数量,int类型

此宏的使用更简单,直接在面循环体内调用即可,也可以在cell循环体内使用。

{  
 int number;  face_t f;  Thread *tf = DT_THREAD(dt);  begin_f_loop(f,tf)  {      number = F_NNODES(f,tf);  }  end_f_loop(f,tf); }

3

mem.h头文件

网格信息访问宏大多数放置在mem.h头文件中,更多关于节点访问的宏可以在此文件中找到。该文件位于Fluent安装目录下..ANSYS Incv180fluentfluent18.0.0srcstorage文件夹中。该文件夹中放置了众多辅助宏定义的头文件,有很多在文档中没有解释的宏都可以在这里面找到,有兴趣的可以看看,不过千万不要被里面的内容给吓到。

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

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

说两句 抢沙发

评论前必须登录!

 

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

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

支付宝扫一扫

微信扫一扫

登录

找回密码

注册