24小时热门版块排行榜    

查看: 4437  |  回复: 3

张跃simple

银虫 (小有名气)

[求助] 关于fluent,UDF中的begin...end_c_loop单元循环遍历的疑惑 已有2人参与

在UDF中关于begin...end_c_loop宏的解释是:
Looping over Cells in a Cell Thread,在一个单元中遍历单元
我不明白的是,cell在体网格中指的是一个网格单元,是最基本的网格单元,它内部还有什么cell可以供遍历的吗?
UDF中还有一个宏是:thread_loop_c,是遍历区域中的网格,感觉这两个宏命令是不是重叠了呢
经常看到的用法是,先采用thread_loop_c遍历区域中的单位,再在thread_loop_c作用域内部,采用begin...end_c_loop宏遍历
既然已经用thread_loop_c遍历了为什么还要用begin...end_c_loop呢,
求大神赐教
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tieA4

新虫 (初入文坛)

【答案】应助回帖

★ ★
张跃simple: 金币+2, 谢谢 2018-12-27 12:15:12
udf中的拓扑结构由大到小为:domain-thread-call/face/node
thread_loop_c(thread,domain)是在domain中查找thread;
begin...end_c_loop(c,thread)是在thread中查找cell;
所以可以遍历所有单元。

另外:Looping over Cells in a Cell Thread,Cell Thread不是指cell,是指thread。
2楼2018-12-03 11:44:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

liukan12

银虫 (小有名气)

emuch: 屏蔽内容, 违规存档, 违规发布联系方式 2018-12-04 10:15:40
本帖内容被屏蔽

3楼2018-12-03 17:11:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

liukan12

银虫 (小有名气)

【答案】应助回帖

★ ★ ★
张跃simple: 金币+3, 谢谢 2018-12-27 12:15:02
这种宏的用法有很多
一般是在单核下的_loop系列
还有在并行下的_loop_int 和_loop_ext 系列
以及用于overset的_loop_active和_loop_solve系列
总的来说 这些东西都是按照C语言的语句结果 你所说的cell 是指的cell_t 实际上只是一个循环索引的int 他并不存放任何数据
真正的数据存放在thread中
其他的也很好理解 当你在划分网格的时候 可以给不同的区域分区命名 那么这些cell zone 每一个都被存放在一个thread中 而这个thread的列表被存放在一个domain中 所以真正有数据的只有thread 和 domain 这也是为什么前面要加星(严格来说这些只是指针,内部数据由mem统一处理,每一个存放数据有一个固定的编号值,当你的模型需要哪个数据的时候,那个对应的VAR_ID就会被激活)
所以domain中间挂着thread的楼栋号 你需要先从domain中 找到thread的楼栋 比如Lookup这类 然后你再从thread中间按照房间号 比如cell_t这种索引来找到房间号
这就是为什么要用两个循环
其实非常好理解 比如你的宿舍是5舍408室 5舍就是thread_id  408就是cell_idx 你先要在学校所有宿舍(假设你们学校一个校区,显然多相流有几个校区)中找到5舍 然后进入5舍然后再找到408 (仅针对非平行世界)
ANSYSFluent流体仿真研究人员。
4楼2018-12-05 04:01:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 张跃simple 的主题更新
信息提示
请填处理意见