24小时热门版块排行榜    

查看: 1585  |  回复: 2

王言哲

至尊木虫 (正式写手)

[求助] FLUENT串行udf改并行

网上找到的串行udf,用于计算运动边界的力和力矩,并保存到文件。
引用回帖:
#include "udf.h"
#define pi 3.14286

define_cg_motion(motion,dt,vel,omega,time,dtime)
{
  real amp, freq;
  real f_glob[nd_nd],m_glob[nd_nd],x_cg[nd_nd];
  real f1,f3,f5;
  domain *domain= get_domain (1);
  thread *tf1 = lookup_thread (domain, 13);
  file *fp;
   //////////////////////////////////////////////////////////////////////////  
  /* reset velocities */
  nv_s(vel, =, 0.0);
  nv_s(omega, =, 0.0);

  /* compute pressure force on body by looping through all faces */
  amp = 0.3;
  freq = 0.4;
  vel[0] = amp * sin( 2.0 * pi * freq * time);
  
   // f1  f3  f5 output /////////////////////////////////////////////////////
  
   if(time>dtime){
   x_cg[0]=dt_cg(dt)[0];
    x_cg[1]=dt_cg(dt)[1];
    compute_force_and_moment (domain, tf1, x_cg, f_glob, m_glob,1);
    f1 = f_glob[0];
    f3 = f_glob[1];
    f5 = m_glob[2];
    fp=fopen("force.txt","a+";
    fprintf(fp,"%.6f %.5f %.5f %.5f %.4f %.4f
",current_time,f1,f3,f5,x_cg[0],x_cg[1]);
    fclose(fp);}
   //////////////////////////////////////////////////////////////////////////
  return;
}

自己尝试改成并行udf,但一直出错。
提示错误:存入到文件的数据溢出。(与串行计算结果不同)
引用回帖:
define_cg_motion(motion,dt,vel,omega,time,dtime)
{
  real amp, freq;
  real f_glob[nd_nd],m_glob[nd_nd],x_cg[nd_nd];
  nv_s(vel, =, 0.0);
  nv_s(omega, =, 0.0);
  amp = 0.3;
  freq = 0.4;
  vel[0] = amp * sin( 2.0 * pi * freq * time);
#if !rp_node  
  file *fp = null;
#endif  
#if !rp_host   
  domain *domain= get_domain (1);
  thread *tf1 = lookup_thread (domain, 13);
  if(time>dtime)
  {
   x_cg[0]=dt_cg(dt)[0];
   x_cg[1]=dt_cg(dt)[1];
   compute_force_and_moment (domain, tf1, x_cg, f_glob, m_glob,true);      
}
#endif   
#if rp_node
        f_glob[0]=prf_grsum1(f_glob[0]);
        f_glob[1]=prf_grsum1(f_glob[1]);
        m_glob[2]=prf_grsum1(m_glob[2]);
        x_cg[0]=prf_grsum1(x_cg[0]);
        x_cg[1]=prf_grsum1(x_cg[1]);
#endif
        node_to_host_real(f_glob,0);
        node_to_host_real(f_glob,1);
        node_to_host_real(m_glob,2);
        node_to_host_real(x_cg,0);
        node_to_host_real(x_cg,1);
#if !rp_node      
  fp=fopen("force.txt","a+";
  fprintf(fp,"%.6f %.5f %.5f %.5f %.4f %.4f
",current_time,f_glob[0],f_glob[1],m_glob[2],x_cg[0],x_cg[1]);
  fclose(fp);
#endif      
}

虫友们,帮看看。@wuming524
回复此楼
哈哈
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

王言哲

至尊木虫 (正式写手)

目前还没有搞定并行udf,但是换了思路,删掉了写入文件的代码。
哈哈
2楼2019-03-12 13:54:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xuwenhua625

银虫 (小有名气)

引用回帖:
2楼: Originally posted by 王言哲 at 2019-03-12 13:54:56
目前还没有搞定并行udf,但是换了思路,删掉了写入文件的代码。

请问楼主现在搞定了吗?
3楼2019-04-21 20:10:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 王言哲 的主题更新
信息提示
请填处理意见