找回密码
 注册
查看: 4266|回复: 8

关于UDFs中DEFINE_DPM_DRAG的几个问题请教

[复制链接]
发表于 2007-11-19 12:25:23 | 显示全部楼层 |阅读模式

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

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

x
我在模拟离散相粒子加速问题时,遇到以下疑惑:
1.Fluent中提供的拖曳力将作为体力加入到颗粒的力学平衡方程中,该力FD=f(Re_p),由于Re_p和(U-U_p)有关,因此是否可以理解为在三个方向上拖曳力FD是不同的?
2.现在我想修正拖曳系数Cd,使得Cd=f(Re_p, Ma_p),在修改过程中使用DEFINE_DPM_DRAG返回的是一个拖曳力的值。由于在计算Ma_p的时候我需要引用P_VEL(p),我面临的困惑是我是否需要在三个方向上分别计算(例如令i=0,1,2)并返回力的值?如何实现?
3.由于当UDFs编译完成之后,在Fluent中的define-> discrete model-> drag law中加载,那么如何保证我返回的值都被分别加载到三个不同方向上?是由Fluent自动实现的么?
恳请高手解答疑惑,非常感谢。
发表于 2007-11-20 14:09:45 | 显示全部楼层

关于UDFs中DEFINE_DPM_DRAG的几个问题请教

应该是可以理解为在三个方向上拖曳力是不同的,但Fd计算应该是一样的,我认为
 楼主| 发表于 2007-11-21 18:31:52 | 显示全部楼层

关于UDFs中DEFINE_DPM_DRAG的几个问题请教

谢谢楼上回答。

我现在改变思路为:为了得到Cd=f(Re_p,Ma_p),先利用Re和粒子所在单元流体的相关变量(T_g, rhu_g, Cp_g..)求出Ma_p.
在此过程中需要得到粒子所在单元流体的性质。因此,先通过P_CELL(p)和P_CELL_THREAD(p)得到该单元的cell ID和Thread指针。这样,可以通过形如C_T(c,t)以及C_CP(c,t)得宏得到流体变量的值。
编写的UDFs如下:
#include "udf.h"
DEFINE_DPM_DRAG(name, Re, p)
{
...
...
cell_t c;
c=P_CELL(p);
Thread *t;
t=P_CELL_THREAD(p);
T_g=C_T(c,t);
...
...
Ma_p=f(Re_p,T_g,Cp_g....);
Cd=f(Re_p,Ma_p);
return (18*Cd*Re/24);
}
可是每次编译时总有以下问题:
(chdir "libudf")()
(chdir "ntx86\2ddp")()
henderson.c
..\..\src\henderson.c(9) : warning C4047: ';='; : ';struct thread_struct *'; differs in levels of indirection from ';int ';
# Generating udf_names.c because of makefile henderson.obj
udf_names.c
# Linking libudf.dll because of makefile user_nt.udf udf_names.obj henderson.obj
Microsoft (R) Incremental Linker Version 6.00.8168
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.
   Creating library libudf.lib and object libudf.exp
henderson.obj : error LNK2001: unresolved external symbol _RP_THREAD
henderson.obj : error LNK2001: unresolved external symbol _RP_CELL
libudf.dll : fatal error LNK1120: 2 unresolved externals
我安装Vc++ 6.0的时候选择了"注册环境变量",而且也试了其他的UDFs,编译链接都无问题。
哪位高人帮我看看问题处在什么地方???
非常感谢!
发表于 2007-11-23 12:30:17 | 显示全部楼层

关于UDFs中DEFINE_DPM_DRAG的几个问题请教

建议加上#include "dpm.h"
再建议把c=P_CELL(p);t=P_CELL_THREAD(p);分别换成 cell_t c = RP_CELL(&p->cCell);Thread *t = RP_THREAD(&p->cCell);
你再去试试看行不行?
发表于 2008-1-25 01:08:05 | 显示全部楼层

关于UDFs中DEFINE_DPM_DRAG的几个问题请教

我也面临此问题,正郁闷---,希望共同探讨。
发表于 2008-2-16 11:50:52 | 显示全部楼层

关于UDFs中DEFINE_DPM_DRAG的几个问题请教

楼主,问题现在解决了没有?
发表于 2008-2-16 23:12:22 | 显示全部楼层

关于UDFs中DEFINE_DPM_DRAG的几个问题请教

DEFINE_DPM_DRAG(name, Re, p)
{
...
不能用:"cell_t c = RP_CELL(&p->cCell);Thread *t = RP_THREAD(&p->cCell);"不知为啥?
发表于 2012-3-8 09:52:41 | 显示全部楼层
本人新手,也遇到了相似的错误,请问一下,楼主是怎样解决的
发表于 2012-4-10 21:01:17 | 显示全部楼层

回复 7# nilingy 的帖子

需要surf.h头文件
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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