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

[讨论]如何实现一个边界有多个约束? 

[复制链接]
发表于 2006-7-25 11:23:12 | 显示全部楼层 |阅读模式

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

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

x
  Fluent中的边界条件一般都是固定为一个约束,比如只设定流量或只设定压力,能否通过UDF来实现这样的边界条件,就是既知道压力,也知道流量。我的想法是可以通过Adjust在计算中不断调整的方法来实现。关键是在adjust中如何找到我所要设定的边界。如果边界是一个平面还好,通过坐标可以找到,但是如果是个曲面,该怎么办呢?
另外,在一个边界设定两个约束在物理理论上可不可以,有没有违背流体力学的规定?
发表于 2006-7-25 20:36:34 | 显示全部楼层

[讨论]如何实现一个边界有多个约束? 

描述流体质点的运动本来就有很多相关的量,,你这里提到的想法估计有很多人想过,,违不违反规则就要看定义和不合理了,,不妨可以将两个约束集成为一个,,比如可以将静压力和速度集成为总压,按照速度的变化定义一个入口profile函数,
当然也是设想,,
你说的用adjust设定一个平面边界有试过吗,,DEFINE_ADJUST(my_adjust,d)宏调用的指针是domain的
 楼主| 发表于 2006-7-27 08:48:04 | 显示全部楼层

[讨论]如何实现一个边界有多个约束? 

[这个贴子最后由mycc在 2006/07/27 08:48am 第 1 次编辑]

#include "udf.h"
#include "global.h"
DEFINE_INIT(Pressure_init, domain)
{
cell_t c;
Thread *t;
real xc[ND_ND];
thread_loop_c (t,domain)
{
begin_c_loop_all (c,t)
{
C_CENTROID(xc,c,t);
if (fabs((xc[2]-0.168))<0.005)
C_P(c,t) = 200000.;
}
end_c_loop_all (c,t)
}
}

DEFINE_ADJUST(Pressure_adjust, d)
{
Thread *t;
cell_t c;
real xc[ND_ND];
thread_loop_c (t, d)
{
begin_c_loop_all (c,t)
{
C_CENTROID(xc,c,t);
if (fabs((xc[2]-0.168))<0.005)
C_P(c,t) = 200000.;
}
end_c_loop_all (c,t)
}
}
以上是我写的一段程序,包括初始化和调整。目的是将入口边界(z=0.168)处的压力设为200000Pa,可以调试运行。最终运算结果,此处的压力接近但是小于200000Pa。
以下是其他论坛的回复,很有帮助:
“是边界面就可以的,在边界条件面板看ID号,然后用Lookup_Thread(d,ID)来获得Thread,就可以在AJUEST里面调整了”
发表于 2006-7-27 18:48:32 | 显示全部楼层

[讨论]如何实现一个边界有多个约束? 

非常感谢楼主朋友,bakeup一份了[br][br][以下内容由 wangyunfeng 在 2006年07月27日 06:57pm 时添加] [br]
不过你上面的两个程序的作用好像不同,据我理解第一个为计算初始的初始化值只起一次作用;第二个则是在每个iteration都为那个值,这一点处的压力为定值了,,
是不是,?
发表于 2006-7-27 19:05:16 | 显示全部楼层

[讨论]如何实现一个边界有多个约束? 

DEFINE_ADJUST(print_f_centroids, domain)
{
real FC[2];
face_t f;
int ID = 1;
/* Zone ID for wall-1 zone from Boundary Conditions panel */
Thread *thread = Lookup_Thread(domain, ID);
begin_f_loop(f, thread)
{
F_CENTROID(FC,f,thread);
printf("x-coord = %f y-coord = %f", FC[0], FC[1]);
}
end_f_loop(f,thread)
}
 楼主| 发表于 2006-7-28 09:30:57 | 显示全部楼层

[讨论]如何实现一个边界有多个约束? 

你的理解是对的。
谢谢给出程序。
发表于 2006-7-30 11:43:52 | 显示全部楼层

[讨论]如何实现一个边界有多个约束? 

这里以一根直管为例说明:
一根管有两端,一端为压力和速度面,则物理场就定了,另一端用什么边界条件?
用任何边界条件都是错误的,用压力不行,用流量不行,用outflow也不行。
可见是违背流体力学的规定。
发表于 2006-7-30 11:48:36 | 显示全部楼层

[讨论]如何实现一个边界有多个约束? 

这么说吧:有几个流动面,就有几个自由度,一个边界条件限制一个自由度,
假如是直管,则只有两个自由度。
进口的速度和压力限制了两个自由度,则物理场自由度为0,就是定了。
在加一个出口条件,则自由度为-1,错误。
发表于 2006-7-30 16:07:46 | 显示全部楼层

[讨论]如何实现一个边界有多个约束? 

有道理,,可以好好的参考一下
 楼主| 发表于 2006-7-30 16:30:49 | 显示全部楼层

[讨论]如何实现一个边界有多个约束? 

谢谢hp270388026指导。
 楼主| 发表于 2006-8-4 09:03:58 | 显示全部楼层

[讨论]如何实现一个边界有多个约束? 

在工程应用中,比如有个泵,我可以调节泵的流量以及压力,那么,泵出口的流场就可以知道两个边界条件,这样的问题该如何解决?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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