找回密码
 注册
查看: 5768|回复: 3

define_adjust宏请教

[复制链接]
发表于 2011-9-20 11:06:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
UDF manual上面介绍define_adjust宏说:DEFINE_ADJUST是一个用于调节和修改FLUENT变量的通用宏。例如,你可以用DEFINE_ADJUST来修改流动变量(如:速度,压力……

我想问的是这个宏可不可以用来对域中的某个单元进行这样的操作:先获取这个单元的质量,然后把这个单元的质量修改为原来质量的1/2 。 或者其它哪个宏可以实现这样的功能吗?

请大侠们指点一下啊,感谢。
发表于 2011-9-20 18:24:40 | 显示全部楼层

回复 1# kylafree 的帖子

当然可以,不仅仅是DEFINE_ADJUST,其他的宏也可以。但是在使用之前你要活得求解域,找到你说的单元格,再进行操作。
DEFINE_ADJUST(NAME,d)
{
Thread *t;
cell_t c;
d=Get_Domain(1);/*fluid domain*/
thread_loop_c(t,d)
{
    begin_c_loop(c,t)
    {
        /* statement */       
    }
    end_c_loop(c,t)
}
}
但是单元格里面不存储质量信息呀,存储有单元格体积C_VOLUME(c,t)、单元格物质密度C_R(c,t)、相质量分数C_YI(c,t,i)。所以,算法上你需要考虑一下。
 楼主| 发表于 2011-9-21 08:55:28 | 显示全部楼层

回复 2# fty0083 的帖子

你好,单元格上的质量就是体积*密度*相质量分数
UDF如下,就是不知道用什么语句修改质量,能指教一下吗?
DEFINE_ADJUST(NAME,d)
{
Thread *t;
cell_t c;
real m;
d=Get_Domain(1);/*fluid domain*/  /*此句应不需要了,此宏已经给了d,不需要再单独用语句去获得*/
thread_loop_c(t,d)
{
    begin_c_loop(c,t)
    {
    m= C_VOLUME(c,t)*C_R(c,t)  *C_YI(c,t,0)     ;
    /* 修改质量的语句。直接用m=1/m ,或是C_VOLUME(c,t)*C_R(c,t)  *C_YI(c,t,0)   =1/2C_VOLUME(c,t)*C_R(c,t)  *C_YI(c,t,0)是不行的,有专门作修改的语句吗?*/        
    }
    end_c_loop(c,t)
}
}
发表于 2011-9-22 23:02:10 | 显示全部楼层

回复 3# kylafree 的帖子

你用m=1/m或者C_VOLUME(c,t)*C_R(c,t)  *C_YI(c,t,0)   =1/2C_VOLUME(c,t)*C_R(c,t)  *C_YI(c,t,0)肯定不行。首先,m是你设的变量,而第二句的c赋值是错误的。我建议你直接修改体积流量C_VOLUME(c,t)
C_VOLUME(c,t)/=2.;
这样就取到了一半流量了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表