【请教】边界条件udf编译失败,关于fatal signal (Segmentation fault)的错误



  • 对入口处的指数率风剖面u、湍动能k、耗散率e写了udf

    第一次编译,报错如下

    *cpp -I"D:\Program Files\ANSYS Inc\v170\fluent\fluent17.0.0/………… -DUDFCONFIG_H="<udfconfig.h>" "C:\Users\fenzi\Desktop\cfd\noHatchSingle\prep\UDF\inlet.c"
    Error: udfconfig.h: line 16: parse error.*
    

    重试,报错信息不同如下

    *cpp -I"D:\Program Files\ANSYS Inc\v170\fluent\fluent17.0.0/…………-DUDFCONFIG_H="<udfconfig.h>" "C:\Users\fenzi\Desktop\cfd\noHatchSingle\prep\UDF\inlet.c"
    Error:  received a fatal signal (Segmentation fault).
    Error Object: #f*
    

    我的网格质量(222行列式 )如下**

    0_1505971450527_微信截图_20170921131509.png

    udf源文件如下

    *#include "udf.h"
    /*来流速度u*/
    DEFINE_PROFILE(u_expinlet,t,i)                    /*定义边界,名为u_expinlet,线程名t,位置i */     
    {
      float x[3];                                       /*3维数组,对应三个坐标 */
      float u;                                         /*浮点数u,对应来流速度 */                         
      float y;                                          /*浮点数y,对应y坐标  */                            
      face_t f;                                        /*声明面f */                                       
      begin_f_loop(f,t)                               /*开始线程t内的逐面循环 */                          
     {
       F_CENTROID(x,f,t);                               /*取得此面质心的三个坐标,赋给三位数组x */              
       y=x[1];                                         /*将三维数组第三个值赋给y */                              
       u=10.*pow(y/10.,0.16);                              /*用y表达u */                                          
       F_PROFILE(f,t,i)=u;                              /*把u赋给F_PROFILE*/                                     
     }
     end_f_loop(f,t)                                 
    }                         
    /*湍动能k*/
    DEFINE_PROFILE(kinetic,t,i)                    /*定义边界,名为kinetic,线程名t,位置i*/     
    {                                    
     float x[3];                                       /*3维数组,对应三个坐标*/                            
     float u;                                        /*浮点数u,对应来流速度 */                          
     float y;                                          /*浮点数y,对应y坐标  */                           
     float k;                                          /*浮点数k,对应湍流强度 */
     float I;                                           /*声明浮点数I,对应湍流强度  */
     face_t f;                                         /*声明面f         */
     begin_f_loop(f,t)                                 /*  开始线程t内的逐面循环    */                          
     {
      F_CENTROID(x,f,t);                                 /*  取得此面质心的三个坐标,赋给三位数组x */           
      y=x[1];                                             /*   将三维数组第三个值赋给y   */       
      u=10.*pow((y/10.),0.16);                                 /*   用y表达u     */                   
       if (y<=5.)                                          /*用y表达I    */
          I=0.23;                                         
       else
          I=0.094*pow(y/350.,0.21); 
          k=1.5*pow(u*I,2.)                             /*用I表达k*/
          F_PROFILE(f,t,i)=k                             /* 赋k的值给F_PROFILE*/      
     }
     end_f_loop(f,t)                                 
    }
    /*耗散率epsilon */
    DEFINE_PROFILE(epsilon,t,i)                    /* 定义边界,名为epsilon,线程名t,位置i  */  
    {                                                                        
     face_t f;                                         /*声明面f   */                                     
     float x[3];                                        /*3维数组,对应三个坐标   */                           
     float u;                                         /*浮点数u,对应来流速度    */                      
     float y;                                          /*浮点数y,对应y坐标      */                        
     float L;                                         /*浮点数L,对应湍流尺度     */
     float I;                                           /*声明浮点数I,对应湍流强度   */
     float k;                                          /*浮点数k,对应湍流强度/*      */
     float e;                                          /*浮点数e,对应耗散率/*         */
     begin_f_loop(f,t)                                 /*  1开始线程t内的逐面循环  */                            
     {
      F_CENTROID(x,f,t);                                 /*  取得此面质心的三个坐标,赋给三位数组x   */
      y=x[1];                                             /*   将三维数组第三个值赋给y   */  
      u=10.*pow((y/10.),0.16);                                 /*   用y表达u */                                 
       if (y<=5.)                                          /*用y表达I*/     
          I=0.23;                                         
       else
          I=0.094*pow(z/350.,0.21); 
      k=1.5*pow(u*I,2.)                                  /*用I表达k*/
      L=100.*POW(y/30.,0.5);                                /*用y表达L*/
      e=1/L*pow(0.09,0.75)*pow(k,1.5)                    /*用L和k表达e */
      F_PROFILE(f,t,i)=e                                 /* 赋e的值给F_PROFILE*/      
     }
     end_f_loop(f,t)                                 
    }*
    


  • 已解决,原因是代码里有几行没加分号和一些手误
    需要新代码可以找我


登录后回复
 

与 CFD中文网 的连接断开,我们正在尝试重连,请耐心等待