24小时热门版块排行榜    

查看: 6139  |  回复: 13

sfbook

银虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ...
歪歪_crazy: 金币+100, ★★★★★最佳答案 2016-12-01 17:05:41
引用回帖:
10楼: Originally posted by 歪歪_crazy at 2016-12-01 10:27:57
首先,我试验了一下,确实如你所说的,DEFINE_SOURCE 是自带循环的,但是它的循环应该是针对每一个 cell ,也就是说没有一个 cell ,它会循环一次,而嵌在其中的 Loop 循环也会循环一次,并且每次循环得到的也是我先 ...

同学,我感觉你需要系统的学习一下C语言和UDF的编程了。。。。。
默认单相流domain只有1,多相流才需要用到更多的domain,如果你的Phases选项没开就不用考虑Get_Domain了,有问题可以仔细看看udf帮助里的Special Macros这节。我给你修改了一下程序,有问题再跟我说。
#include "udf.h"
// #define zone_ID 0 貌似没有编号为0的区域吧。。。
double P_out=0.;

DEFINE_ADJUST(TEG_adjust,domain) //定义里面有 domain,不用自己定义
{
        Thread *t;
        cell_t c;
      //  Domain *all; 没用,你的函数就是在定义的domain里用的
        int  Zone_ID=2; //两个ID有一个就够啦,不管你是全局变量还是局部变量,你又不会给他重新赋值,除非你要算多个区域的值,这里给个 2是随意定的,而且墙壁编号通常为2
      
        face_t f;
        real temp=0.,grad=0.,source=0.;
        real a=0.,b=0.;
        real u=0.,u_sum=0.,vol=0.,vol_sum=4.752*0.00001;
        real r=0.,r_sum=0.,s=1.76*0.001;
        real p=0.;
t=Lookup_Thread(domain,Zone_ID);  
                begin_c_loop (c,t)
                {
                  temp=C_T(c,t);
                  vol=C_VOLUME(c,t);
                  grad=-0.0003*C_T_G(c,t)[0];/*0 for x,1 for y, 2 for z*/
                  
                  a=-6.035*0.0001+6.270*0.000001*temp-1.571*0.00000001*temp*temp+1.260*0.00000000001*temp*temp*temp;
                  u=a*grad*vol/vol_sum;
                  u_sum+=u;

                  b=-7.188*0.0000001+6.926*0.000000001*temp-3.573*0.000000000001*temp*temp;
                  r=b*vol/s/s;
                  r_sum+=r;
                }
                end_c_loop (c,t) //开始和结束 至少一样啊。。。。

          p=u_sum*u_sum/(2*r_sum);
         
         P_out=p;//直接输出p不好么。。。。

Message("%g, %g %g\n", u_sum,r_sum,P_out);
}
11楼2016-12-01 15:33:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

歪歪_crazy

银虫 (初入文坛)

引用回帖:
11楼: Originally posted by sfbook at 2016-12-01 15:33:16
同学,我感觉你需要系统的学习一下C语言和UDF的编程了。。。。。
默认单相流domain只有1,多相流才需要用到更多的domain,如果你的Phases选项没开就不用考虑Get_Domain了,有问题可以仔细看看udf帮助里的Special  ...

让你见笑了……  上面给的程序比较乱是因为我一直在改,在不断地试,所以有些定义就没有删去。
12楼2016-12-01 17:08:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

歪歪_crazy

银虫 (初入文坛)

引用回帖:
11楼: Originally posted by sfbook at 2016-12-01 15:33:16
同学,我感觉你需要系统的学习一下C语言和UDF的编程了。。。。。
默认单相流domain只有1,多相流才需要用到更多的domain,如果你的Phases选项没开就不用考虑Get_Domain了,有问题可以仔细看看udf帮助里的Special  ...

首先,十分感谢你的回复,给了我很大帮助。因为是刚接触UDF,并且C语言也只是会点皮毛,所以错误百出,让您见笑了。
其次我想分享一下我这几天编这个udf的一些心得,算是班门弄斧,并且给以后看到这个帖子的人一些帮助吧。
1.关于C_T_G(c,t)  这个宏的运用,需要在fluent的控制台中打开一些设置  solve/set>expert Keep temporary solver memory from being free? [yes]
通过打开这个在设置来保证 Fluent 不会在计算结束就清除数据而导致的不能计算梯度。 同时根据我的试验,发现在使用到这个语句时,如果在最初读入,Fluent没有储存值的情况下,也会报错,不能计算。这时就需要先不加载含有这个语句的udf,运行几步之后,在加载udf就能计算了。
2.在使用 Lookup_Thread 语句之后,不能使用 thread_loop_c,thread_loop_f 因为这两者都是针对 domain 全局进行的循环,跟在 Lookup_Thread 这个指定区域语句后应该是因为产生矛盾而报错。
3.还是关于  Lookup_Thread(domain,Zone_ID) 的,如果在本语句之后进行的循环是关于 cell 的 thread_loop_c,那么查找的 ID 应为 Cell Zone Conditions 中你想要计算区域的 ID,不行选择 Boundary Conditions之中的,不然也会报错。
4.上传一张关于各个函数调用位置的彩图,感觉挺有用的,有兴趣的可以看看。

最后,再次感谢 @sfbook ,谢谢你的耐心指导!如果以上我说的有么不对,还请指出。以后如果有机会,希望还能向你请教!
Fluent 中 UDF 计算结果输出到窗口问题
3333.PNG


Fluent 中 UDF 计算结果输出到窗口问题-1
1111.PNG


Fluent 中 UDF 计算结果输出到窗口问题-2
222.PNG

13楼2016-12-01 18:52:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

欧式发酵乳

银虫 (小有名气)

送红花一朵
看到你这个让我想起来我起前两天遇到的问题,跟你一模一样,不够我是通过在循环外赋值给全局变量才避免被清零的。
14楼2020-10-15 10:48:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 学员fIJLZY 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 售SCI一区T0P文章,我:8.O.55.1.O.54,科目齐全,可+急 +3 hKe7U1kad5Sg 2026-10-31 6/300 2026-11-01 22:27 by xzcv0Tehd8lQ
[考博] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +3 hKe7U1kad5Sg 2026-10-31 6/300 2026-11-01 22:11 by xzcv0Tehd8lQ
[基金申请] 售SCI一区T0P文章,我:8.O.55.1.O.54,科目齐全,可+急 +5 1uaZt2kAZj2S 2026-10-31 5/250 2026-11-01 21:45 by xzcv0Tehd8lQ
[考研] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +3 hKe7U1kad5Sg 2026-10-31 6/300 2026-11-01 19:50 by xzcv0Tehd8lQ
[基金申请] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +6 X5bHxOULxFqb 2026-10-30 22/1100 2026-11-01 16:35 by BCdvBAEpt3zm
[考博] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +5 X5bHxOULxFqb 2026-10-30 22/1100 2026-11-01 16:35 by BCdvBAEpt3zm
[硕博家园] 售SCI一区T0P文章,我:8.O.55.1.O.54,科目齐全,可+急 +5 X5bHxOULxFqb 2026-10-30 14/700 2026-11-01 16:32 by BCdvBAEpt3zm
[基金申请] 售SCI一区文章,我:8.O.551.O.5.4,科目全,可伽急 +3 hKe7U1kad5Sg 2026-10-31 7/350 2026-11-01 15:04 by BCdvBAEpt3zm
[考研] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +4 xvJS1BYDxvBS 2026-10-31 10/500 2026-11-01 14:50 by BCdvBAEpt3zm
[论文投稿] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +3 xvJS1BYDxvBS 2026-10-31 7/350 2026-11-01 14:50 by BCdvBAEpt3zm
[找工作] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +4 1uaZt2kAZj2S 2026-10-31 8/400 2026-11-01 14:48 by BCdvBAEpt3zm
[考研] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +3 xvJS1BYDxvBS 2026-10-31 5/250 2026-11-01 12:51 by BCdvBAEpt3zm
[公派出国] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +4 1uaZt2kAZj2S 2026-10-31 7/350 2026-11-01 12:40 by BCdvBAEpt3zm
[硕博家园] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +4 1uaZt2kAZj2S 2026-10-30 17/850 2026-11-01 12:24 by BCdvBAEpt3zm
[考研] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +3 1uaZt2kAZj2S 2026-10-30 16/800 2026-11-01 12:14 by BCdvBAEpt3zm
[基金申请] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +3 1uaZt2kAZj2S 2026-10-30 14/700 2026-11-01 10:43 by BCdvBAEpt3zm
[博后之家] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +3 1uaZt2kAZj2S 2026-10-30 15/750 2026-11-01 05:22 by YXM1FDCSE8Bn
[考博] 2027博士申请-临床检验诊断学、病原生物学、微生物方向 50+3 yyh@ 2026-10-28 4/200 2026-10-31 12:47 by 可淡不可忘
[硕博家园] 申博自荐 2篇一区TOP+1篇EI+2公开发明专利 2027博士申请 +3 小小阿光 2026-10-27 3/150 2026-10-29 23:56 by 起风了的快乐
[考博] 申博求助 20+3 Katrinae 2026-10-26 4/200 2026-10-27 09:56 by 北京莱茵编辑
信息提示
请填处理意见