找回密码
 注册
查看: 4181|回复: 8

[求助]DEFINE_SOURCE动量源项改错,高手看过来啊!!!

[复制链接]
发表于 2006-5-26 15:47:30 | 显示全部楼层 |阅读模式

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

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

x
大家好,我需要定义一个这样的动量源项,
首先在z正方向上以0.2m/s的速度提升2米(即运动10s),
然后在x正方向上以0.1m/s的速度平动0.5m(即运动5s),
最后在z负方向上以0.2m/s的速度下降2m(即运动10s)
关于源项的表达式,我这里就是定义source=20*v,
但是实际上,我想将源项设定为是不变的,即不随位置的变化而变化的
希望有高手能告诉我这样的源项的表达式该如何写
另外我还有个问题,我总觉得我这样写并不能体现源项随时间而在z方向和x方向运动,可是我又找不到原因在哪里,请指正啊!![br][br][以下内容由 yicannan310 在 2006年05月26日 05:07pm 时添加] [br]
源项本身的值是不随时间和位置而变化的,源项随时间在z轴和x轴上运动,
 楼主| 发表于 2006-5-26 15:48:16 | 显示全部楼层

[求助]DEFINE_SOURCE动量源项改错,高手看过来啊!!!

动量源项
z方向
#include "udf.h"
#define CON 20.0
DEFINE_SOURCE(source_z,cell,thread,dS,equ)
{
real source;
real vel_z_positive=0.2,vel_z_negative=-0.2;
real t=RP_Get_Real("flow-time");
if(0<t<=10)
{
source=CON*vel_z_positive;
dS[equ]=0;
}
else(15<t<=25)
{
source=CON*vel_z_negative;
dS[equ]=0;
}
else
source=0;
dS[equ]=0;
return source;
}
x方向
&#35;include "udf.h"
&#35;define CON 20.0
DEFINE_SOURCE(source_x,cell,thread,dS,equ)
{
real source;
real vel_x=0.1;
real t=RP_Get_Real("flow-time");
if(10<t<=15)
{
source=CON*vel_x;
dS[equ]=0;
}
else
source=0;
dS[equ]=0;
return source;
}
 楼主| 发表于 2006-5-26 17:09:05 | 显示全部楼层

[求助]DEFINE_SOURCE动量源项改错,高手看过来啊!!!

不好意思啊,由于刚学编程,有很多错误,大家看看下面这个,是否能实现源项在z方向和x方向的运动呢?
动量源项
z方向
&#35;include "udf.h"
&#35;define CON 20.0
DEFINE_SOURCE(source_z,cell,thread,dS,equ)
{
real source,z,x[ND_ND];
real vel_z_positive=0.2,vel_z_negative=-0.2;
real t=RP_Get_Real("flow-time");
C_CENTROID(x,f,thread);
z=x[2];
if(t>0&&<=10)
{
z=vel_z_positive*t;
source=CON*z;
dS[equ]=0;
}
else(t>15&&t<=25)
{
z=vel_z_negative*(25-t);
source=CON*vel_z_negative;
dS[equ]=0;
}
else
{
source=0;
dS[equ]=0;
}
return source;
}
x方向
&#35;include "udf.h"
&#35;define CON 20.0
DEFINE_SOURCE(source_x,cell,thread,dS,equ)
{
real sourcez,r[ND_ND];;
real vel_x=0.1;
real t=RP_Get_Real("flow-time");
C_CENTROID(r,f,thread);
x=r[0];
if(t>10&&t<=15)
{
x=vel_x*fabs(10-t);
source=CON*x;
dS[equ]=0;
}
else
{
source=0;
dS[equ]=0;
}
return source;
}
发表于 2006-5-27 11:00:34 | 显示全部楼层

[求助]DEFINE_SOURCE动量源项改错,高手看过来啊!!!

C_CENTROID(r,f,thread);这句明显有问题!
f是啥?
 楼主| 发表于 2006-5-28 08:52:35 | 显示全部楼层

[求助]DEFINE_SOURCE动量源项改错,高手看过来啊!!!

哦,是F_CENTROID(r,f,thread);
谢谢楼上的提醒啊~~~~~~~
发表于 2006-7-1 15:19:22 | 显示全部楼层

[求助]DEFINE_SOURCE动量源项改错,高手看过来啊!!!

首先我觉得 第一个else是不是应该变成 else if.  
 楼主| 发表于 2006-7-2 11:18:11 | 显示全部楼层

[求助]DEFINE_SOURCE动量源项改错,高手看过来啊!!!

&#35;include "udf.h"
&#35;define CON 20.0
DEFINE_SOURCE(source_y,cell,thread,dS,equ)
{
real source,vel;
real tv=RP_Get_Real("flow-time");
if (tv>0&&tv<=10)
{
vel=0.2;
source=CON*vel*tv;
dS[equ]=CON*vel;
}
else if(tv>15&&tv<=25)
{
vel=-0.2;
source=CON*vel*(tv-25);
dS[equ]=CON*vel;
}
else
{
source=0;
dS[equ]=0;
}
return source;
}

x方向
&#35;include "udf.h"
&#35;define CON 20.0
DEFINE_SOURCE(source_x,cell,thread,dS,equ)
{
real source,vel;
real tv=RP_Get_Real("flow-time");
if (tv>10&&tv<=15)
{
vel=0.1;
source=CON*vel;
dS[equ]=0;
}
else
{
source=0;
dS[equ]=0;
}
return source;
}
上面这个编译是通过了,可是结果却不如人意
无法将过程过程动态显示出来
有人告诉我要可以通过读取坐标来定义源项的位置,辅以物理时间段,这样就得到不同时间内的源项位置,可是我不会,有没有高手会啊,帮我想想看啊
popular你会吗?
发表于 2006-7-4 15:15:36 | 显示全部楼层

[求助]DEFINE_SOURCE动量源项改错,高手看过来啊!!!

问一下楼主,你觉得:
“在z正方向上以0.2m/s的速度提升2米(即运动10s)”,用你定义的源项能表达这个意思吗?
if (tv>0&&tv<=10)
{
vel=0.2;
source=CON*vel*tv;
dS[equ]=CON*vel;
}
好像你里面的源项不能表达你的物理意思吧。
 楼主| 发表于 2006-7-18 14:46:52 | 显示全部楼层

[求助]DEFINE_SOURCE动量源项改错,高手看过来啊!!!

恩,确实不能,而且这种想法到底是否确实可行我都没底,还望有高手能帖出类似的例子啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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