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

Fluent UDF【13】:循环操作宏

内容纲要

UDF使用过程中,经常要通过循环遍历的方式对数据进行操作,如设置边界条件时,需要给每一个边界网格面赋值,此时需要通过逐层循环的方式访问每一个边界网格面。Fluent UDF中提供了众多循环来实现此功能。这些宏包括:

  • 区域中单元循环thread_loop_c

  • 区域中网格面循环thread_loop_f

  • 单元中单元循环begin...end_c_loop

  • 面中面循环begin...end_f_loop

  • 单元中面循环c_face_loop

  • 单元中的节点循环c_node_loop

  • 单元面中的节点循环f_node_loop

1

遍历区域中的网格单元

利用thread_loop_c在指定domain中遍历所有的网格单元(cell)。使用方式非常简单,如下:

Domain *domain; Thread *c_thread; thread_loop_c(c_thread,domain) {      
   /*对单元进行操作*/    ... }

2

遍历区域中的面网格

利用宏thread_loop_f来遍历domain中的所有网格面(face)。与遍历网格单元类似的使用。如:

Thread *f_thread; Domain *domain; thread_loop_f(f_thread,domain) {    
  /*对网格面进行操作*/
}

3

遍历网格单元集合中的所有单元

使用宏begin_c_loopend_c_loop对所给定的网格单元集合中的所有单元进行遍历。

使用方式:

cell_t c; Thread *c_thread; begin_c_loop(c, c_thread) {  }  end_c_loop(c, c_thread)

例如下面程序计算c_thread中的所有单元的温度和:

begin_c_loop(c, c_thread) {     temp += C_T(c, c_thread); } end_c_loop(c, c_thread)

4

遍历面几何中的所有网格面

利用宏begin_f_loopend_f_loop来遍历给定face集合中的所有网格面。

使用方式:

face_t f; Thread *f_thread; begin_f_loop(f, f_thread) { } end_f_loop(f, f_thread)

以下例程计算给定网格几何f_thread上的所有网格面上温度总和。

begin_f_loop(f, f_thread) {     temp += F_T(f, f_thread); } end_f_loop(f, f_thread)

5

遍历一个网格单元上的所有网格面

利用宏c_face_loop来实现遍历网格单元上的所有网格面。如:

cell_t c; Thread *t; face_t f; Thread *tf;int n; c_face_loop(c, t, n)  {    f = C_FACE(c,t,n);   tf = C_FACE_THREAD(c,t,n); }

6

遍历网格单元中的所有节点

利用宏c_node_loop来实现遍历网格单元中的所有网格节点。

cell_t c; Thread *t; int n; Node *node; c_node_loop(c,t,n) {     node = C_NODE(c,t,n); }

7

遍历网格中的所有节

利用宏f_node_loop来实现此目的。

face_t f; Thread *t;
int n; Node *node; f_node_loop(f,t,n) {  node = F_NODE(f,t,n); }

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

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

说两句 抢沙发

评论前必须登录!

 

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

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

支付宝扫一扫

微信扫一扫

登录

找回密码

注册