|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
#include "udf.h"
#include "mem.h"
#include "dynamesh_tools.h"
static real v_x = 0.0,v_y=0.0,omega_z=0.0;
DEFINE_CG_MOTION(piston,dt,vel,omega,time,dtime)
{
face_t f;
cell_t c;
real f_glob[ND_ND],m_glob[ND_ND],x_cg[ND_ND],dv_x,dv_y,domega_z;
Domain *domain= Get_Domain (1);
Thread *tf1 = Lookup_Thread (domain, 3);
int i;
/* reset velocities */
NV_S(vel, =, 0.0);
NV_S(omega, =, 0.0);
if (!Data_Valid_P())
return;
for(i=0;i<=ND_ND;i++)
{
f_glob=0;
m_glob=0;
}
/* get the thread pointer for which this motion is defined */
for(i=0;i<ND_ND;i++)
x_cg=DT_CG(dt);
if(time<=0.001)
{
vel[1]=34.5;
Message ("\ntime=%f ,x=%.10lf ,y=%.10lf , force_x=%.1f ,force_y=%.1f ,moment_x=%f,moment_y=%f,moment_z=%f ,Vx=%f ,Vy=%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],v_x,v_y,omega_z);
return;
}
/* compute pressure force , viscosity force and moment on body by looping through all faces */
Compute_Force_And_Moment (domain, tf1, x_cg, f_glob, m_glob, TRUE);
/* compute change in velocity and angle velocity, i.e., dv = F * dt / mass
velocity update using explicit Euler formula */
dv_x = dtime * f_glob[0] / 39400;
v_x += dv_x;
dv_y = dtime * f_glob[1] / 39400;
v_y += dv_y;
domega_z=dtime*m_glob[2]/390000;
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 ,Vx=%f ,Vy=%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],v_x,v_y,omega_z);
/* set components of velocity */
vel[0] = v_x,vel[1]=v_y,omega[2]=omega_z;
}
经过多次试验,此程序在三维动网格模型下已经通过.程序的功能为(现在可以说功能了):先计算三维物体所受的力和力矩.然后能过牛顿定律,求x,y方向上的速度和绕z轴的角速度.下面就具体程序我解释一下:数组变量f_glob和m_glob为存放物体受的力和力矩,数组x_cg存放物体的转动中心坐标(对于我试验时间的模型,转动中心即为质心).宏DT_CG(dt)可以得到物体的转动中心,详见UDF手册。Compute_Force_And_Moment (domain, tf1, x_cg, f_glob, m_glob, TRUE)是FLUENT自带的宏,这个在UDF手册上没有(反正我没找到,不知除了手册还有什么其它资料有它的讲解)。指针tf1 = Lookup_Thread (domain, 3),其中3为运动物体的编号,这个在边界条件设置上可以查到。其它的我想大家都能看懂了,我就不解释了。这个程序我不要金币,大家随便看,呵呵。
不知道站长能不能给加点威望啊,这个程序我可连编再查资料再试验了好长时间啊。 |
|