找回密码
 注册
查看: 7984|回复: 17

我做的程序,大家共享.

[复制链接]
发表于 2006-8-10 12:07:24 | 显示全部楼层 |阅读模式

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

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

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为运动物体的编号,这个在边界条件设置上可以查到。其它的我想大家都能看懂了,我就不解释了。这个程序我不要金币,大家随便看,呵呵。
不知道站长能不能给加点威望啊,这个程序我可连编再查资料再试验了好长时间啊。

点评

请问这个UDF是在fluent中的那个面板导入或者编译的,是用来设置边界条件还是求得特定的计算结果?我是没有实践经验的初学者,希望大神分享下自己经验。  发表于 2018-8-11 09:59
发表于 2006-8-10 15:03:50 | 显示全部楼层

我做的程序,大家共享.

好东东,支持
发表于 2006-8-10 21:08:23 | 显示全部楼层

我做的程序,大家共享.

zhichi
发表于 2006-8-11 19:04:04 | 显示全部楼层

我做的程序,大家共享.

的确是好东西,在这里要谢谢楼主了。
不过有点小问题!就是&#35;include "mem.h"和&#35;include "dynamesh_tools.h"这两个头文件是用来说明什么的啊?在这里分别用来说明哪些函数啊?
请楼主进一步地说明一下。谢谢。
 楼主| 发表于 2006-8-12 23:02:41 | 显示全部楼层

我做的程序,大家共享.

宏DT_CG(dt)需要dynamesh_tools.h
mem.h 没有用,是我以前调程序时忘了删掉了
发表于 2006-8-13 09:13:29 | 显示全部楼层

我做的程序,大家共享.

谢谢楼主的解惑!
发表于 2006-8-19 20:08:17 | 显示全部楼层

我做的程序,大家共享.

强烈支持!
发表于 2006-9-2 16:53:20 | 显示全部楼层

我做的程序,大家共享.

谢谢,多多指点!
发表于 2006-9-6 22:38:20 | 显示全部楼层

我做的程序,大家共享.

谢谢,好好向楼主学习!
发表于 2006-10-10 09:22:25 | 显示全部楼层

我做的程序,大家共享.

好东西,谢谢
发表于 2006-10-24 17:56:14 | 显示全部楼层

我做的程序,大家共享.

谢谢!
发表于 2006-10-24 23:13:51 | 显示全部楼层

我做的程序,大家共享.

不错,有几个问题想问问:不知道,搂主的物体形状是什么样子?domega_z=dtime*m_glob[2]/390000中的390000应该是Izz吧?如果形状不规则,它是怎么求得?CG的位置又怎么算么?谢谢!
发表于 2006-10-26 07:19:10 | 显示全部楼层

我做的程序,大家共享.

这个程序是有问题的,因为在算平动和转动时两者是耦合的,你把两者分开算就应考虑到坐标系的转换,是在局地坐标系下呢,还是在全局坐标系下,这两者的关系还得有个转换矩阵。
进一步讨论,请联系QQ:489636555
发表于 2006-10-26 09:08:37 | 显示全部楼层

我做的程序,大家共享.

嗯,谢谢分享,我也学习学习
发表于 2017-12-11 15:40:38 | 显示全部楼层
学习啦,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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