|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
[这个贴子最后由wteagle在 2008/05/30 01:08am 第 2 次编辑]
发现一个很奇怪的问题,Get_Domain( )到底起什么作用啊?在程序的位置有影响吗?
下面的UDF程序(前面部分),在编译过程中怎么也通不过,说是编译器不认识cell_t,Thread和real的变量类型,出现一大堆莫名其妙的错误!
#include "udf.h"
#define PI M_PI
#define TINY 1.0e-37
extern int offset,num;
extern float *diamAry;
extern real rhoPartikel,molDiam ;
static real dmaxarg1,dmaxarg2;
#define RMAX(a,b) (dmaxarg1=(a),dmaxarg2=(b),(dmaxarg1) > (dmaxarg2) ?\
(dmaxarg1) : (dmaxarg2))
DEFINE_ON_DEMAND(Auswertung)
{
cell_t c;
Thread *t;
face_t f;
Domain *d;
d=Get_Domain(1);
cell_t c0=-1;
Thread *t0=NULL;
real lossesImp,vPx,vPy,vPz,d_p,masse,konz,NV_VEC(A);
real lossesDiff,friction,B1,B2,B3,kB,diffKoeff,press,T0,nu,p_operating,C;
real freieWegl,NV_VEC(geschwPartikel),rhoGas,lossesDiffSum,lossesImpSum;
int dimension,k,equation,i;
equation=EQ_UDS+offset;
dimension=ND_ND;
(……)
我研究了很久,最后只是把 d=Get_Domain(1);这一行放到所有类型声明后面,变成了:
(……)
DEFINE_ON_DEMAND(Auswertung)
{
cell_t c;
Thread *t;
face_t f;
Domain *d;
cell_t c0=-1;
Thread *t0=NULL;
real lossesImp,vPx,vPy,vPz,d_p,masse,konz,NV_VEC(A);
real lossesDiff,friction,B1,B2,B3,kB,diffKoeff,press,T0,nu,p_operating,C;
real freieWegl,NV_VEC(geschwPartikel),rhoGas,lossesDiffSum,lossesImpSum;
int dimension,k,equation,i;
d=Get_Domain(1);
equation=EQ_UDS+offset;
dimension=ND_ND;
(……)
问题竟然就解决了,编译没问题!真是太奇怪了,难道d=Get_Domain(1)不能紧跟在Domain *d;后面,必须在所有定义完之后吗?否则FLUENT竟然不认识后面的定义?Get_Domain到底起什么作用啊,这样调整位置之后作用有区别吗?甚至删掉这一句功能会有什么区别呢? |
|