当前位置: 首页 > 仿真模拟 >udf文件哪里错了

udf文件哪里错了

作者 ZBY右婪
来源: 小木虫 350 7 举报帖子
+关注

#include "udf.h"
#include "mem.h"
#include "sg_mphase.h"
#include "sg.h"
#include "flow.h"
#include "math.h"
#include "surf.h"
#include "stdio.h"
/**************************************************/
/***** D * E * F * I * N * E *** A * D * J * U * S * T *****/
/*************************************************/

DEFINE_ADJUST(adjust_1,domain)
{
Thread *t;
cell_t c;
real Temp,Visc,str;
real dudx, dudy, dudz, dvdx, dvdy, dvdz, dwdx, dwdy, dwdz;
real conversion_visc; /*conversion efficiency of viscous dissipation*/
conversion_visc=0.9;       
thread_loop_c(t,domain)
{
begin_c_loop(c,t)
{
Temp=C_T(c,t);                       
Visc=0.1*C_UDMI(c,t,0);          /*modified viscocity   */
dudx=C_DUDX(c,t);
dudy=C_DUDY(c,t);
dudz=C_DUDZ(c,t);
dvdx=C_DVDX(c,t);
dvdy=C_DVDY(c,t);
dvdz=C_DVDZ(c,t);
dwdx=C_DWDX(c,t);
dwdy=C_DWDY(c,t);
dwdz=C_DWDZ(c,t);                       
str=C_STRAIN_RATE_MAG(c,t);
if(str>1&&str<400)       
C_UDMI(c,t,1)=conversion_visc*Visc*fabs(2*dudx*dudx+2*dvdy*dvdy+2*dwdz*dwdz+(dvdx+dudy)*(dvdx+dudy)+(dvdz+dwdy)*(dvdz+dwdy)+(dwdx+dudz)*(dwdx+dudz));
else       
C_UDMI(c,t,1)=0;
                                                               
C_UDMI(c,t,4)=2*dudx*dudx+2*dvdy*dvdy+2*dwdz*dwdz+(dvdx+dudy)*(dvdx+dudy)+(dvdz+dwdy)*(dvdz+dwdy)+(dwdx+dudz)*(dwdx+dudz);
}
end_c_loop(c,t)
}       
}



/****************************************************************/
/***** M * A * T * E * R * I * A * L *** P * R * O * P * E * R * T * Y *****/
/**************************************************************/
DEFINE_PROPERTY(U_Visc,c,t)
{
real Temp,Visc,str,A,alfa,n,Q,Z,stress,stress_modify,R,asinh_input,asinh_output,Visc_limit_up,Visc_limit_down;
/*
real dudx, dudy, dudz, dvdx, dvdy, dvdz, dwdx, dwdy, dwdz;
  dudx=C_DUDX(c,t);
        dudy=C_DUDY(c,t);
        dudz=C_DUDZ(c,t);
        dvdx=C_DVDX(c,t);
        dvdy=C_DVDY(c,t);
        dvdz=C_DVDZ(c,t);
        dwdx=C_DWDX(c,t);
        dwdy=C_DWDY(c,t);
        dwdz=C_DWDZ(c,t);
str=sqrt(0.6667*(dudx*dudx+dvdy*dvdy+dwdz*dwdz+0.5*(dudy+dvdx)*(dudy+dvdx)+0.5*(dudz+dwdx)*(dudz+dwdx)+0.5*(dvdz+dwdy)*(dvdz+dwdy)));
*/
str=C_STRAIN_RATE_MAG(c,t);
Temp=C_T(c,t);
A=240000000;
alfa=0.000000045;
n=3.55;
Q=145000;
R=8.314; /* Specific gas constant */
Visc_limit_up=10000000;
if(str<0.1)
{
str=0.1;
Z=str*exp(Q/(R*Temp));
asinh_input=pow(Z/A,1/n);
asinh_output=log(asinh_input + sqrt(asinh_input *asinh_input + 1));
stress=(1/alfa)*asinh_output;
}
else if(str>1000)
{
str=1000;
Z=str*exp(Q/(R*Temp));
asinh_input=pow(Z/A,1/n);
asinh_output=log(asinh_input + sqrt(asinh_input *asinh_input + 1));
stress=(1/alfa)*asinh_output;
}
else
{
Z=str*exp(Q/(R*Temp));
asinh_input=pow(Z/A,1/n);
asinh_output=log(asinh_input + sqrt(asinh_input *asinh_input + 1));
stress=(1/alfa)*asinh_output;
}
stress_modify=stress;
Visc=stress_modify/(3*str);
if((Visc>Visc_limit_up)| (str == 0))       
{
Visc=Visc_limit_up;
}
C_UDMI(c,t,2)=stress_modify;
C_UDMI(c,t,0)=Visc;
return Visc;
}


/*material density */
DEFINE_PROPERTY(material_density,c,t)
{
real density;                                       
density=2770.0;
return density;
}

/*material heat capacity */
DEFINE_SPECIFIC_HEAT(cell_specific_heat,T,Tref,h,yi)
{
real cp;
cp=39.3608+4.9426*T-0.0088404*T*T+0.0000055778*T*T*T;
*h=cp*(T-Tref);
return cp;
}


/*material thermal conductivity */
DEFINE_PROPERTY(material_thermal_conductivity,c,t)
{
real k;           
real temp=C_T(c,t);                                 
k=54.7398+0.3543*temp-0.00041846*temp*temp+0.0000002392*temp*temp*temp;
return k;
}

/*************************************************************************************************/
/***** H * E * A * T *** F * L * U * X *** F * R * O * M *** T * H * E *** I * N * T * E * R * F * A * C * E *****/
/************************************************************************************************/

/*heat flux from the shoulder*/
DEFINE_PROFILE(shoulder_heat,t,i)
{
face_t f;
real b

今日热帖
  • 精华评论
  • ZBY右婪

    错误如下

  • ZBY右婪

    Erroe

  • ZBY右婪

    Error:received a fatal signal (segmentation fault)

  • ZBY右婪

    udm,应该开了吧,我使用教程的时候在workbench里点开solution后加载udf能够用,但是在steup里面自己按照教程设置加载的udf初始化后就报错

  • fluid00

    引用回帖:
    6楼: Originally posted by ZBY右婪 at 2017-09-25 10:01:45
    udm,应该开了吧,我使用教程的时候在workbench里点开solution后加载udf能够用,但是在steup里面自己按照教程设置加载的udf初始化后就报错

    这种错误一般是调用某个宏函数的时候非法,常常是你的thread指针指向错误。
    而定位是哪一个宏函数出错(例如F_C0等等),就需要你一个一个去试了,具体方法就是先注释掉所有的语句,然后一句一句打开,看当打开哪一句调用的时候出错,那就是那个宏函数出错,然后再分析出错的原因,往往就是你的thread指向问题。

    这是学生需要掌握的程序调试基本技巧

  • ZBY右婪

    谢谢

猜你喜欢