2265973243 发表于 2016-8-20 20:42:23

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

各位前辈好,我最近在做一个旋转机械方面的问题,先给定旋转机械一个初始角速度,再通过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,m_glob,x_cg,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=-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,x_cg,f_glob,f_glob,m_glob,m_glob,m_glob,omega_z);
return;
}
Compute_Force_And_Moment (domain, tf1, x_cg, f_glob, m_glob, TRUE);

domega_z=m_glob*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,x_cg,f_glob,f_glob,m_glob,m_glob,m_glob,omega_z);
omega=omega_z;
}

程序可以正常运行,但就是计算出的角速度不对,我的初始角速度是--29.87,但是这里最终得到的角速度好像只有角速度增量的之和;
如果我根据上一时间步计算出了角速度的增量,那么我要得到上一时间步角速度和这个增量之和(也即当前时间步的角速度),请问这个要怎么修改呢?非常感谢,祝生活愉快!!

aaa-1234 发表于 2016-8-22 08:02:17

你的domega_z一开始定义为0,当然后面累加都是增量之和,不应该一开始定义为 初始角速度吗?
页: [1]
查看完整版本: 利用UDF控制旋转机械被动旋转问题请教各位前辈