|
|
[交流]
Fluent udf 设置管道入口速度等于出口速度 已有2人参与
做的一个微管道气-液两相流的模拟,在管道中截取一段流动单元,流动单元的中间有一个气泡。为了维持这个气泡一直在流动单元内,需要控制入口流速,所以打算使用udf使入口速度始终等于出口速度,再加上网格区域的一个平移,应该就能实现这一过程了。写完udf可以完成interpret,但是开始计算时会出现“Error: received a fatal signal (Segmentation fault).”不是很明白为什么
用periodic好像也可以实现这个过程,但只能通过pressure gradient来控制流动状态而不能用mass flow rate。虽然说也能凑合用就是了。。。
文件什么的都传附件了。。跪!求!指!教!
udf如下:
#include "udf.h"
#define U_MAX 0.5
real store[50]={0.1,0.2,0.3,0.4,0.5};
/* 用数组store保存速度值,考虑过用UDM什么的但是还不清楚应该怎么设置;
随便取了几个初始值,在fluent里面只使用PROFILE而不使用INIT和ADJUST时,可以正常计算,并且能通过fluent里面的plot观察到与初始值对应的速度分布,但是一旦使用INIT就会立刻提示错误;
同时使用PROFILE和ADJUST能够进行一段时间的计算,随后才提示错误,而且此时plot出口速度仍为初始值对应的分布 */
DEFINE_INIT(fully_developed,d) /* 初始化管内流动为充分发展 */
{
cell_t c;
real x[ND_ND];
real y=0.;
Thread *t=Lookup_Thread(d,9);
begin_c_loop(c,t)
{
C_CENTROID(x,c,t);
y=x[1];
C_U(c,t)=U_MAX-U_MAX*y*y/(0.000055*0.000055); /* 矩形管道,宽度为0.111mm,因为取对称了所以宽度0.0555mm,速度呈抛物线形分布 */
}
end_c_loop(c,t)
}
DEFINE_ADJUST(outlet_to_inlet,d) /* 将出口thread上的速度赋予数组 */
{
int j=0;
real u=0.;
face_t f;
Thread *thread_out=Lookup_Thread(d,12);
begin_f_loop(f,thread_out)
{
u=F_U(f,thread_out);
store[j]=u;
j++;
}
end_f_loop(f,thread_out)
}
DEFINE_PROFILE(udf_inlet,thread,index) /* 将数组中存储的速度值赋予入口 */
{
int j=0;
real u=0.;
real x[ND_ND];
face_t f;
begin_f_loop(f,thread)
{
F_CENTROID(x,f,thread);
u=store[j];
F_PROFILE(f,thread,index)=u;
j++;
}
end_f_loop(f,thread);
}![Fluent udf 设置管道入口速度等于出口速度]()
unit.jpg |
» 本帖附件资源列表
-
欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
- 附件 1 : unit.zip
2017-05-08 16:37:59, 1.02 M
» 猜你喜欢
|