找回密码
 注册
查看: 5499|回复: 10

udf的一个疑问,关于ADJUST的.

[复制链接]
发表于 2011-8-2 09:29:57 | 显示全部楼层 |阅读模式

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

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

x
这个udf用的是DEFINE_ADJUST,目的在于在每步迭代完成之后将特定区域的速度分量调整为零。可是我使用自己编写的这个达不到预期的效果,不知道问题出在什么地方。
#include "udf.h"
#include<math.h>
#define tg 1700
#define tl 904
DEFINE_ADJUST(my_adjust,d)
{
  Thread *t;
  cell_t c;
  thread_loop_c(t,d)
  {
   begin_c_loop(c,t)
           if(C_T(c,t)>=tg||C_T(c,t)<=tl)
           {
                   C_U(c,t)=C_V(c,t)=C_W(c,t)=0;
           }
         
   end_c_loop(c,t)
  }
}
现在的问题是:1.我不知道是不是ADJUST是自动遍历所有cell还是需要像我一样采用   begin_c_loop(c,t)?期盼高手给予解答。
2.假设要调整某个特定区域温度的时候,是不是F_U(f,t)=F_V(f,t)=F_W(f,t)=0;这个也要进行调整?
发表于 2011-8-10 09:16:38 | 显示全部楼层

udf的一个疑问,关于ADJUST的.

你的特定区域怎么体现? 是通过hook吗?AFJUST宏是不是只有在hook之后才会在下拉菜单中出现?

[ 本帖最后由 hjbf 于 2011-8-10 10:56 编辑 ]
发表于 2011-9-16 09:30:10 | 显示全部楼层

回复 1# coldplay 的帖子

C_U(c,t)=C_V(c,t)=C_W(c,t)=0;用的肯定不对
应该
C_U(c,t)=0;
C_V(c,t)=0;
C_W(c,t)=0;
发表于 2011-9-19 09:21:26 | 显示全部楼层


连等是可以的,相当于
C_W(c,t)=0;
C_V(c,t)=C_W(c,t);
C_U(c,t)=C_V(c,t);
不过这些取速度的宏是fluent内置的数值,手动修改会不会产生连续性方程不能满足的问题,导致残差乱跳?
发表于 2011-9-19 11:49:09 | 显示全部楼层
你还需要增加一个define_execute at end的宏,其中的内容是相同的,将特定区域内的速度设为0.
这是因为define_adjust是在迭代一开始就执行的,迭代之后,速度又会被赋给一个值。所以达不到你的设想。
发表于 2011-9-23 10:42:06 | 显示全部楼层
个人感觉5楼说的有些道理
发表于 2011-11-14 10:21:37 | 显示全部楼层
define_execute_at_end,在每次迭代的最后一步或者最后一个时间步执行,对于非稳态的计算,的确效果更佳好。
DEFINE_ADJUST,在每次迭代之前执行。

所以,如果是非稳定计算,你可以考虑采用define_execute_at_end。

[ 本帖最后由 030301029 于 2011-12-8 01:15 编辑 ]
发表于 2011-12-7 23:42:33 | 显示全部楼层

回复 5# aaa-1234 的帖子

我觉得就算fluent每一步结束时会有一个结果,但下一步的计算还是会将define_adjust 设定的值附给下一步计算作为开始的,所以不会采纳计算值。那要不这个宏还有意义吗
发表于 2011-12-8 01:36:41 | 显示全部楼层
而且你可以看一下udf的使用手册,define_adjust这个宏在每一步解控制方程和其它传递方程之前都要调用的
发表于 2013-10-10 09:33:31 | 显示全部楼层

回复 1# coldplay 的帖子

请问楼主的问题解决了吗?我也遇到类似的问题,adjust宏命令编译成功,可是没有效果。
发表于 2013-12-14 10:52:14 | 显示全部楼层

回复 10# jinzw1988 的帖子

我也遇到了同样的问题,adjust速度没有任何效果,可是我查了UDF Mannul,说ADJUST是可以调整速度的,请问你是怎么解决的?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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