找回密码
 注册
查看: 1551|回复: 1

利用UDF控制旋转机械被动旋转问题请教各位前辈

[复制链接]
发表于 2016-8-20 20:42:23 | 显示全部楼层 |阅读模式

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

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

x
各位前辈好,我最近在做一个旋转机械方面的问题,先给定旋转机械一个初始角速度,再通过UDF计算出旋转机械受到的力矩,利用这个力矩通过相应方程计算出在一个时间步内角速度的增量,再把原来的角速度加上这个增量得到一个新的角速度,依次进行下去,我编写的UDF程序如下:
#include "udf.h"
static real omega_z=0.0,J=200;
DEFINE_CG_MOTION(ZL,dt,vel,omega,time,dtime)
{
face_t f;
cell_t c;
real f_glob[ND_ND],m_glob[ND_ND],x_cg[ND_ND],domega_z;
Domain *domain = Get_Domain (1);
Thread *tf1 = Lookup_Thread (domain,1);
int i;
NV_S(omega, =, 0.0);
if (!Data_Valid_P())
return;
for(i=0;i<=ND_ND;i++)
{
f_glob=0;
m_glob=0;
}
for(i=0;i<ND_ND;i++)
x_cg=DT_CG(dt);
if(time<=0.0002)
{
omega[2]=-29.87;
Message ("\ntime=%f ,x=%.10lf ,y=%.10lf , force_x=%.1f ,force_y=%.1f ,moment_x=%f,moment_y=%f,moment_z=%f ,omega_z=%f\n", time,x_cg[0],x_cg[1],f_glob[0],f_glob[1],m_glob[0],m_glob[1],m_glob[2],omega_z);
return;
}
Compute_Force_And_Moment (domain, tf1, x_cg, f_glob, m_glob, TRUE);

domega_z=m_glob[2]*0.0002/J;//计算得到角速度增量
omega_z+=domega_z;//原来的角速度加上增量


Message ("\ntime=%f ,x=%.10lf ,y=%.10lf , force_x=%.1f ,force_y=%.1f ,moment_x=%f,moment_y=%f,moment_z=%f ,omega_z=%f\n", time,x_cg[0],x_cg[1],f_glob[0],f_glob[1],m_glob[0],m_glob[1],m_glob[2],omega_z);
omega[2]=omega_z;
}

程序可以正常运行,但就是计算出的角速度不对,我的初始角速度是--29.87,但是这里最终得到的角速度好像只有角速度增量的之和;
如果我根据上一时间步计算出了角速度的增量,那么我要得到上一时间步角速度和这个增量之和(也即当前时间步的角速度),请问这个要怎么修改呢?非常感谢,祝生活愉快!!
发表于 2016-8-22 08:02:17 | 显示全部楼层
你的domega_z一开始定义为0,当然后面累加都是增量之和,不应该一开始定义为 初始角速度吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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