找回密码
 注册
查看: 4470|回复: 10

udf运行时错误信息,帮忙分析!谢谢!

[复制链接]
发表于 2005-9-27 18:57:50 | 显示全部楼层 |阅读模式

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

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

x

udf在winxp2平台的fluent下面运行,编译没问题,计算中出现如下错误信息:
“Chip: invalid opcode 1058634706: pc=15”,
也不中断计算过程,不知到什么意思,郁闷ing。请了解的给个帮助了!谢谢!
发表于 2005-9-28 10:41:56 | 显示全部楼层

udf运行时错误信息,帮忙分析!谢谢!

头一次看到哦,我用不同版本编译的时候出现过类似问题,不果计算一般马上就停。不知道你这是怎么了。
 楼主| 发表于 2005-9-28 21:38:54 | 显示全部楼层

udf运行时错误信息,帮忙分析!谢谢!


这个问题当我重新启动及其后好像消失了.是不是因为我的cpu是64位的?
接着的替代的问题更郁闷的是这个:我想检测流场的某些点的不同时间的值,在每个时间步长后写到文件中.但是当只有一个点的时候,一切都好,可是当跟踪计算41个点的时候,就会在第一个时间步长计算完毕后出现如下错误:
Error:
FLUENT received fatal signal (ACCESS_VIOLATION)
1. Note exact events leading to error.
2. Save case/data under new name.
3. Exit program and restart to continue.
4. Report error to your distributor.
Error Object: ()
需要说明的是这些存储这些点的数组变量,都是定义好的,变量的个数没有变,只是循环的次数变多了,所以应该不是stack的问题.
而且当跟踪单点的时候写出的数据按照我的控制格式些在文件中很好,可是当跟踪计算41个时除了41个循环的控制的数据以外,多了一些按照控制格式写的不知道什么数据.
真是头痛!
谢谢大家!请继续关注!
发表于 2005-9-29 10:28:41 | 显示全部楼层

udf运行时错误信息,帮忙分析!谢谢!

ACCESS_VIOLATION一般这个问题是访问了Fluent中尚未初始化的变量造成的。肯定是跟踪更多的点的程序出了点儿小问题。能不能把udf贴上来?大家讨论这样可能会很快解决问题。如果有关问题涉及个人的隐私等等,你可以改写一个简单的。
 楼主| 发表于 2005-9-30 17:03:41 | 显示全部楼层

udf运行时错误信息,帮忙分析!谢谢!

我的udf:
#include "udf.h"
#define Npoint 50
#define N_Species 3
float X_Max[Npoint],X_Min[Npoint],Y_Max[Npoint],Y_Min[Npoint],Z_Max[Npoint],Z_Min[Npoint];
float xxxx2,yyyy2,zzzz2,Cz[N_Species];
const float X_In[Npoint]={0,71,100,150,200,364,412,510};
const float Y_In[Npoint]={0,0,0,0,0,0,0};
const float Z_In[Npoint]={0.4,0.4,0.4,0.4,0.4,0.4,0.4};
float C_In[Npoint][N_Species];  /*注意不要使用real类型的数据*/
DEFINE_PROFILE(inlet_x_velocity,thread,position)
{
real x[ND_ND];
real y;
real z0=0.010;
real z1=10.0;
face_t f;
begin_f_loop(f,thread)
       {
   F_CENTROID(x,f,thread);
   y=x[2];
   F_PROFILE(f,thread,position)=2.4*(log(y)-log(z0))/(log(z1)-log(z0));
       }
end_f_loop(f,thread)
}
DEFINE_DELTAT(my_timestep,d)
{
real time_step;
real flow_time=RP_Get_Real("flow-time");
if(flow_time<90.0)
time_step=0.1;
else
time_step=1.0;
return time_step;
}
DEFINE_INIT(my_init,domain)
{
FILE *f;
f=fopen("pointdata.txt","w");
if(f==0) printf("\n\ncan NOT open the pointdata file.");
fclose(f);
}
DEFINE_EXECUTE_AT_END(EAE_WPD)
{
Domain *d=Get_Domain(1);
Thread *t;
real x[ND_ND];
real alpha[Npoint],beta[Npoint],gama[Npoint];
real C_Near[Npoint][2][2][2][N_Species];
int i,j;
cell_t c;
FILE *f;
const real Epsilon=0.00001;
f=fopen("pointdata.txt","a");
if(f==0) printf("\n\ncan NOT open the pointdata file!");
for(i=0;i<Npoint;i++)
{
X_Max=X_In+5000;
     X_Min=X_In-5000;
     Y_Max=Y_In+5000;
     Y_Min=Y_In-5000;
     Z_Max=Z_In+5000;
     Z_Min=Z_In-5000;
}
thread_loop_c(t,d)
{
begin_c_loop_all(c,t)
{
C_CENTROID(x,c,t);
xxxx2=x[0];
yyyy2=x[1];      
zzzz2=x[2];
for(i=0;i<Npoint;i++)
{
if((xxxx2>X_In)&&(xxxx2<X_Max)) X_Max=xxxx2;
if((xxxx2<X_In)&&(xxxx2>X_Min)) X_Min=xxxx2;
    if((yyyy2>Y_In)&&(yyyy2<Y_Max)) Y_Max=yyyy2;
if((yyyy2<Y_In)&&(yyyy2>Y_Min)) Y_Min=yyyy2;
if((zzzz2>Z_In)&&(zzzz2<Z_Max)) Z_Max=zzzz2;
if((zzzz2<Z_In)&&(zzzz2>Z_Min)) Z_Min=zzzz2;
for(j=0;j<N_Species;j++)
{
Cz[j]=C_YI(c,t,j);
if((fabs(xxxx2-X_Max)<Epsilon)&&(fabs(yyyy2-Y_Max)<Epsilon)&&(fabs(zzzz2-Z_Max)<Epsilon)) C_Near[1][1][1][j]=Cz[j];
if((fabs(xxxx2-X_Max)<Epsilon)&&(fabs(yyyy2-Y_Max)<Epsilon)&&(fabs(zzzz2-Z_Min)<Epsilon)) C_Near[1][1][0][j]=Cz[j];
if((fabs(xxxx2-X_Max)<Epsilon)&&(fabs(yyyy2-Y_Min)<Epsilon)&&(fabs(zzzz2-Z_Max)<Epsilon)) C_Near[1][0][1][j]=Cz[j];
if((fabs(xxxx2-X_Max)<Epsilon)&&(fabs(yyyy2-Y_Min)<Epsilon)&&(fabs(zzzz2-Z_Min)<Epsilon)) C_Near[1][0][0][j]=Cz[j];
if((fabs(xxxx2-X_Min)<Epsilon)&&(fabs(yyyy2-Y_Max)<Epsilon)&&(fabs(zzzz2-Z_Max)<Epsilon)) C_Near[0][1][1][j]=Cz[j];
if((fabs(xxxx2-X_Min)<Epsilon)&&(fabs(yyyy2-Y_Max)<Epsilon)&&(fabs(zzzz2-Z_Min)<Epsilon)) C_Near[0][1][0][j]=Cz[j];
if((fabs(xxxx2-X_Min)<Epsilon)&&(fabs(yyyy2-Y_Min)<Epsilon)&&(fabs(zzzz2-Z_Max)<Epsilon)) C_Near[0][0][1][j]=Cz[j];
if((fabs(xxxx2-X_Min)<Epsilon)&&(fabs(yyyy2-Y_Min)<Epsilon)&&(fabs(zzzz2-Z_Min)<Epsilon)) C_Near[0][0][0][j]=Cz[j];
}
}
}end_c_loop_all(c,thread)
}
fprintf(f,"flow time:\t%5.2f\n",CURRENT_TIME);
fprintf(f,"\t|mass fraction|\t|position|\n");
for(i=0;i<Npoint;i++)
{
alpha=(X_In-X_Min)/(X_Max-X_Min);
beta=(Y_In-Y_Min)/(Y_Max-Y_Min);
gama=(Z_In-Z_Min)/(Z_Max-Z_Min);
for(j=0;j<N_Species;j++)
{
C_In[j]=0.0;
C_In[j]=(1-alpha)*(1-beta)*(1-gama)*C_Near[0][0][0][j];
C_In[j]=C_In[j]+(1-alpha)*(1-beta)*gama*C_Near[0][0][1][j];
C_In[j]=C_In[j]+(1-alpha)*beta*(1-gama)*C_Near[0][1][0][j];
C_In[j]=C_In[j]+alpha*(1-beta)*(1-gama)*C_Near[1][0][0][j];
C_In[j]=C_In[j]+alpha*beta*(1-gama)*C_Near[1][1][0][j];
C_In[j]=C_In[j]+alpha*(1-beta)*gama*C_Near[1][0][1][j];
C_In[j]=C_In[j]+(1-alpha)*beta*gama*C_Near[0][1][1][j];
C_In[j]=C_In[j]+alpha*beta*gama*C_Near[1][1][1][j];
fprintf(f,"%5.4f,",C_In[j]);
}
fprintf(f,"\t(%5.4f,%5.4f,%5.4f)\n",X_In,Y_In,Z_In);
}
fclose(f);
}
我已经接近崩溃的边缘了.
发表于 2005-10-20 15:01:49 | 显示全部楼层

udf运行时错误信息,帮忙分析!谢谢!

国庆节过后,忙得焦头烂额,没有时间坐下来,好好看看程序。估计你的程序问题就出在了excute at end 上了。我也没有找到,到底是哪里错了。能不能说一下,具体是什么问题,采用了什么模型??
是不是访问了模型中没有的数据了?
 楼主| 发表于 2005-10-24 10:42:53 | 显示全部楼层

udf运行时错误信息,帮忙分析!谢谢!

  谢谢关心!
  简单组分传输模型,无化学反应,三种物质。取得场中某些点处的各组分浓度与时间变化曲线。
  我也感觉excute_at_end 有问题,但是,只有这个才会在每一步写出数据,所以就用它了。不知还有其他办法没有?
   谢谢!
发表于 2005-11-4 16:18:23 | 显示全部楼层

udf运行时错误信息,帮忙分析!谢谢!

我觉得这个错误就是代码编写的错误,所以,我已经尝试使用了几个方法来改变这个函数(宏)的书写,
但是,不起任何作用,最后,我把函数内的内容全部删除,只留下
&#35;include "udf.h"
DEFINE_EXECUTE_AT_END(MYEXECUTE)
{
}
结果,提示错误仍然没有变化。我觉得很纳闷,不知道错误到底在什么地方,如果有高手已经解决了这个问题,还请多多指教。
我的Email:bjbjw80cn@126.com
发表于 2005-11-4 16:19:19 | 显示全部楼层

udf运行时错误信息,帮忙分析!谢谢!

我觉得这个错误就是代码编写的错误,所以,我已经尝试使用了几个方法来改变这个函数(宏)的书写,
但是,不起任何作用,最后,我把函数内的内容全部删除,只留下
&#35;include "udf.h"
DEFINE_EXECUTE_AT_END(MYEXECUTE)
{
}
结果,提示错误仍然没有变化:我觉得这个错误就是代码编写的错误,所以,我已经尝试使用了几个方法来改变这个函数(宏)的书写,
但是,不起任何作用,最后,我把函数内的内容全部删除,只留下
&#35;include "udf.h"
DEFINE_EXECUTE_AT_END(MYEXECUTE)
{
}
结果,提示错误仍然没有变化。ex4.cError: ex4.c: line 2: parse error.。我觉得很纳闷,不知道错误到底在什么地方,如果有高手已经解决了这个问题,还请多多指教。
我的Email:bjbjw80cn@126.com
发表于 2006-1-4 21:07:55 | 显示全部楼层

udf运行时错误信息,帮忙分析!谢谢!

下面引用由topshen2005/09/30 05:03pm 发表的内容:
我的udf:
&#35;include "udf.h"
&#35;define Npoint 50
&#35;define N_Species 3
...
发表于 2006-2-10 16:59:24 | 显示全部楼层

udf运行时错误信息,帮忙分析!谢谢!

你的循环次数是否大于你设定的数值容量50?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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