|
|

楼主 |
发表于 2017-10-20 16:20:30
|
显示全部楼层
本帖最后由 smoring2 于 2017-10-20 16:52 编辑
在solution initialization的时候,发现define_Init运行成功了,因为函数的开始和结尾分别都输出了“init begins"和”init ends" ,这是自己用message输出的。
但是运行整个udf还是出现了,segmentation fault的错误,是define_adjust出现了错误。以下为define_adjust函数,发现窗口能输出e_c的值,和输出adjust running begins的提示,但没有输出adjust running ends的提示。
所以认为该函数并没有运行成功。
请教各位大神,这个到底是什么原因啊,函数的编写是哪里有误吗,编译都完全通过了的。
DEFINE_ADJUST(f1,d)
{
real x[ND_ND];
real xx;
real rr;
real e_c;
real temp=C_T(c,t);
if(temp<=6667)
e_c=0.0;
else if(temp>6667&&temp<=25000)
e_c=0.6873*temp-4582.13;
else if(temp>25000&&temp<=30000)
e_c=(-0.1)*temp+15100;
Message("%g\n",e_c );
Message("adjust running begins\n");
thread_loop_c(t,d)
{
begin_c_loop_all(c,t)
{
C_UDMI(c,t,ec)=e_c;
C_UDMI(c,t,Tx)=C_T_G(c,t)[0];
C_UDMI(c,t,Tr)=C_T_G(c,t)[1];
C_UDMI(c,t,jx)=-C_UDMI(c,t,ec)*C_UDSI_G(c,t,Fai)[0];
C_UDMI(c,t,jr)=-C_UDMI(c,t,ec)*C_UDSI_G(c,t,Fai)[1];
C_UDMI(c,t,B_0)=C_UDSI_G(c,t,Ar)[0]-C_UDSI_G(c,t,Ax)[1];
C_CENTROID(x,c,t);
xx=x[0];
rr=x[1];
C_UDMI(c,t,s_Ar)=-miu_0*C_UDMI(c,t,jr)+C_UDSI(c,t,Ar)/rr/rr;
}
end_c_loop_all(c,t)
}
Message("adjust running ends\n");
}
|
|