找回密码
 注册
查看: 1298|回复: 6

[求助]高手帮我看看程序吧

[复制链接]
发表于 2008-3-28 09:25:13 | 显示全部楼层 |阅读模式

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

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

x
我的课题是模拟沸腾,想先从简单的情况入手,模拟一杯水的沸腾看看。
我的函数编译和初始化都通过了,可是一开始计算就出现错误..
是不是DEFINE_ADJUST() 函数里面不可以用多相流的参数呢,比方说C_VOF之类?
另外,我觉得杯中水由开始加热到完全沸腾,应该先是层流然后是湍流,这个在fluent里面怎么设置呢??
请大家帮忙,先谢谢各位了

附:
#include "udf.h"  /*包括常规宏 */
#include "sg_mphase.h"  /*包括体积分数宏C_VOF(C,T) */
#define T_SAT 373    /*定义蒸发温度100℃ */
DEFINE_ADJUST(my_adjust, d)
{
Thread *t;  
cell_t c;
Thread *sec_th;
sec_th = THREAD_SUB_THREAD(d, 1); /*指向混合区的液相的指针*/
thread_loop_c (t,sec_th)
{
  begin_c_loop (c,t)
      if(C_T(c,t)>T_SAT)
          C_VOF(c,t)=0;
  end_c_loop (c,t)
}

}
 楼主| 发表于 2008-3-28 09:27:33 | 显示全部楼层

[求助]高手帮我看看程序吧

错误提示如下:
Error:
FLUENT received fatal signal (ACCESS_VIOLATION)
1. Note exact events leading to error.
2. Save case/data under new name.
3. Exit program and restart to continue.
4. Report error to your distributor.
Error Object: ()
似乎不太容易从这里找出问题的根源吧,是不是模型的设置不对引起的呢?
 楼主| 发表于 2008-3-28 09:43:01 | 显示全部楼层

[求助]高手帮我看看程序吧

对了,忘了说了
这个udf加进去以后,有时候就不提示有错误,能计算下去;有时候却一步都算不了就提示错误。这个是怎么回事呢?
发表于 2008-3-28 11:31:38 | 显示全部楼层

[求助]高手帮我看看程序吧

你好像没有搞清domain 和thread的区别和循环loop用法
 楼主| 发表于 2008-3-28 14:43:20 | 显示全部楼层

[求助]高手帮我看看程序吧

非常感谢您的指导,我的确是刚刚学udf这块,好多地方都不太清楚。
我看到帮助中有个例子是这样的:
thread_loop_c (t,d)
  {
   begin_c_loop (c,t)
       sum_diss += C_D(c,t)*
       C_VOLUME(c,t);
   end_c_loop (c,t)
  }
上面的程序就是参照例子做的,
我再去看看帮助文件吧。
我的想法是在迭代的每一步中,把液相的区域循环一遍。找出其中温度大于沸点的cell,把这些cell指定为气相。
您觉得这种想法能实现么?如果可以的话,用哪个宏呢?给点指导意见:)
谢谢啦!![br][br][以下内容由 bbcd 在 2008年03月28日 02:44pm 时添加] [br]
[br][br][以下内容由 bbcd 在 2008年03月28日 02:45pm 时添加] [br]
再多问一句,3楼的问题是怎么回事呢?
发表于 2008-3-28 17:00:08 | 显示全部楼层

[求助]高手帮我看看程序吧

sec_th这个变量应该是domain值,而不是thread值。[br][br][以下内容由 梅花雪剑 在 2008年03月28日 05:02pm 时添加] [br]
sec_th = THREAD_SUB_THREAD(d, 1);
这句你给的sec_th变量是thread值,而不是domain值。把这句修改一下就可以了。
 楼主| 发表于 2008-3-31 15:03:10 | 显示全部楼层

[求助]高手帮我看看程序吧

多谢高人指点,呵呵
太感谢了。这就去试试!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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