24小时热门版块排行榜    

查看: 879  |  回复: 3

dinosaur1123

新虫 (著名写手)

[求助] UDF编程问题,试了好几天还是不对,求大神指导已有1人参与

想模拟一个管道旋转并且有水平方向的振动,即X方向做简谐运动同时绕管子轴心旋转。用滑移网格写了一个UDF,但是总是调试不对,旋转轴心的坐标不随时间变化,并且算到第11步就报错。
程序如下:
#include "udf.h"
#include "stdio.h"
#define PI 3.141592654
DEFINE_ZONE_MOTION(originx_volecity, omega, axis, origin, velocity, time, dtime)
{
   
real f, omegar, theta0, R, rpm;
real  s;
real dx, ts;
s=RP_Get_Real("flow-time";
ts=s-0.09424100816249847;    /* 这是由于前面没有加X方向的振动计算了一段时间0.09424100816249847s */
rpm = 972.683363;  /* 转速 */
f = rpm/60;
omegar = 2*PI*f;
theta0 = PI/2;
R = 0.001;           /* 幅值 */
velocity[0] = -1.* omegar * R * sin(omegar * ts + theta0);
velocity[1] = 0.0;
velocity[2] = 0.0;

dx=velocity[0]*dtime;


origin[0] = origin[0]+dx;
origin[1] = 0.0;
origin[2] = 0.0;

*omega = 2*PI*f;

Message("\n originx=%f,dx=%f",origin[0],dx);
}


DEFINE_PROFILE(inlet_z_velocity, thread, index)  /* 这是定义入口速度,和上面没关系 */
{
real x[ND_ND];        
real r,r0;
face_t f;
begin_f_loop(f, thread)
  {
   F_CENTROID(x,f,thread);

   r0=x[0]*x[0]+x[1]*x[1];
   r = sqrt(r0);
   F_PROFILE(f, thread, index) =0.51969*pow((1.0-r/0.025),0.14286);
   
  }
end_f_loop(f, thread)
}
UDF编译完就先迭代了3次,这是什么原因?(见图1UDF编程问题,试了好几天还是不对,求大神指导
然后就是origin[0]的值没有变化,第一步(图1)和第11步(图2UDF编程问题,试了好几天还是不对,求大神指导-1)都是-0.000017

另外,用全局变量把a=origin[0]的值存储再令origin[0]=a+dx也试过,也不行,求解释啊大神
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dinosaur1123

新虫 (著名写手)

s=RP_Get_Real("flow-time";那个括号自动转化成表情了
2楼2016-09-27 23:35:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mycc

专家顾问 (正式写手)

【答案】应助回帖

感谢参与,应助指数 +1
滑移网格是不是只能做旋转,平动+旋转还是用动网格试试
项目汇总:http://www.cfluid.com/forum.php?mod=viewthread&tid=114340&extra=
3楼2016-09-28 08:23:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dinosaur1123

新虫 (著名写手)

引用回帖:
3楼: Originally posted by mycc at 2016-09-28 08:23:02
滑移网格是不是只能做旋转,平动+旋转还是用动网格试试

滑移网格也有平移的吧,我就是因为滑移网格不改变网格质量采用的滑移网格,东动网格重构太难控制质量而且是三维,网格数量几十万,动网格吃不消
4楼2016-09-28 08:26:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 dinosaur1123 的主题更新
信息提示
请填处理意见