24小时热门版块排行榜    

查看: 936  |  回复: 2
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

wsb1345289

新虫 (初入文坛)

[求助] 计算弯管的磨损量,利用fluent帮助里的程序,出错了,各位帮忙看看怎么回事已有1人参与

程序代码是:
#include "udf.h"

#define MIN_IMPACT_VELO -1000

Domain *domain;

enum  
  {
    NUM_OF_HITS,
    AVG_DIAMETER,
    AVG_RADI_VELO,
    NUM_OF_USED_UDM
  };

int UDM_checked = 0;

void reset_UDM_s(void);

int check_for_UDM(void)  
{
  Thread *t;
  if (UDM_checked)
    return UDM_checked;

  thread_loop_c(t,domain)
  {      
     if (FLUID_THREAD_P(t))   if (NULLP(THREAD_STORAGE(t,SV_UDM_I)))
        return 0;
  }
  UDM_checked = 1;
  reset_UDM_s();  
  return UDM_checked;
}      

void reset_UDM_s(void)
{
  Thread *t;
  cell_t c;
  face_t f;
  int  i;
  if (!check_for_UDM())
    return;
  Message("Resetting User Defined Memory...\n";
  thread_loop_f(t, domain)
    {
      if (NNULLP(THREAD_STORAGE(t,SV_UDM_I)))
        {
          begin_f_loop(f,t)
                 {
                   for (i = 0; i < NUM_OF_USED_UDM; i++)
                           F_UDMI(f,t,i) = 0;
                 }
          end_f_loop(f, t)
        }
     else
       {
                 Message("Skipping FACE thread no. %d..\n", THREAD_ID(t));
       }
    }
  thread_loop_c(t,domain)
    {
      if (NNULLP(THREAD_STORAGE(t,SV_UDM_I)))
               {
          begin_c_loop(c,t)
                 {
                   for (i = 0; i < NUM_OF_USED_UDM; i++)
                           C_UDMI(c,t,i) = 0;
                 }
          end_c_loop(c,t)
               }
      else
               {
          Message(" Skipping CELL thread no. %d..\n", THREAD_ID(t));
               }
    }   
  
  Message(" --- Done.\n";
}

DEFINE_DPM_EROSION(dpm_accr, p, t, f, normal, alpha, Vmag, Mdot)
{
  real A[ND_ND], area;
  int num_in_data;
  Thread *t0;
  cell_t c0;
  real imp_vel[3], vel_ortho;

#if RP_2D  
  if (rp_axi)
    {
      real radi_pos[3], radius;
     
     
      
      
      radi_pos[0] = P_POS(p)[1];  
      radi_pos[1] = P_POS(p)[2];  
      radius = NV_MAG(radi_pos);
      NV_VS(radi_pos, =, radi_pos, /, radius);
     
      imp_vel[0] = P_VEL(p)[0];
      imp_vel[1] = NVD_DOT(radi_pos, P_VEL(p)[1], P_VEL(p)[2], 0);
    }
  else
#endif
    NV_V(imp_vel, =, P_VEL(p));
  
  


  vel_ortho = NV_DOT(imp_vel, normal);

  if (vel_ortho < MIN_IMPACT_VELO)
    return;
  
  if (!UDM_checked)   
    if (!check_for_UDM())
      return;   

  
  c0 = F_C0(f,t);
  t0 = THREAD_T0(t);
  
  F_AREA(A,f,t);
  area = NV_MAG(A);
  F_STORAGE_R(f,t,SV_DPMS_ACCRETION) += Mdot / area;
  
  MARK_PARTICLE(p, P_FL_REMOVED);


  if (THREAD_TYPE(t) == THREAD_F_JUMP)
    return;

  num_in_data  = F_UDMI(f,t,NUM_OF_HITS);
  

  F_UDMI(f,t,AVG_DIAMETER) = (P_DIAM(p)
                              + num_in_data * F_UDMI(f,t,AVG_DIAMETER))
                              / (num_in_data + 1);
  C_UDMI(c0,t0,AVG_DIAMETER) = F_UDMI(f,t,AVG_DIAMETER);


  F_UDMI(f,t,AVG_RADI_VELO) = (vel_ortho
                               + num_in_data * F_UDMI(f,t,AVG_RADI_VELO))
                               / (num_in_data + 1);
  C_UDMI(c0,t0,AVG_RADI_VELO) = F_UDMI(f,t,AVG_RADI_VELO);
  
  F_UDMI(f, t, NUM_OF_HITS) = num_in_data + 1;
  C_UDMI(c0,t0,NUM_OF_HITS) = num_in_data + 1;

  
}

DEFINE_ON_DEMAND(reset_UDM)
{
  
  domain = Get_Domain(1);
  reset_UDM_s();
}

各位看看哪错了,应该怎样解决

计算弯管的磨损量,利用fluent帮助里的程序,出错了,各位帮忙看看怎么回事
错误.png
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

moons2

金虫 (正式写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
wsb1345289: 金币+10 2015-04-24 15:45:02
估计是visual studio版本的问题
2楼2015-04-23 16:03:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 wsb1345289 的主题更新
信息提示
请填处理意见