24小时热门版块排行榜    

查看: 992  |  回复: 5

卑良

新虫 (小有名气)

[求助] 求助帮忙改正一个FLUENT的UDF!急急急 已有1人参与

写了一个UDF,描述阀芯在弹簧力和流体压力作用下的运动,可是执行两次后压力总是变成很大的负值,进而速度、位移都变得很大,网格更新就不成功了。能否有人帮忙看一下?
附UDF源码:
#include <stdio.h>  
#include "udf.h"  
#define UDF_FILENAME "udf_loc_velo.txt"
# define K_SPRING 31400
/* read current location and velocity from file */
DEFINE_CG_MOTION(spool, dt, vel, omega, time, dtime)
{
   Thread *t = DT_THREAD (dt);
   face_t f;
   static real force;
   static real loc;
   static real velo;
   static real init_disp;
   static real s_force ;
   static real dv;
   static real total_force;
   static FILE *fp;
       
   /*  Open data files */

   fp=fopen(UDF_FILENAME,"r";
  if(fp !=NULL)
{
  float read_loc,read_velo;
  fscanf (fp,"%e %e",&read_loc,&read_velo);
  fclose(fp);
  loc=(real) read_loc;
  velo=(real) read_velo;
}
else
{
  loc=0.0;
  velo=0.0;
}


   /* compute force on piston wall */
   force = 0.0;
   begin_f_loop (f, t)
     {
       real *AA;

       AA = F_AREA_CACHE (f, t);
       force += F_P (f, t) * AA[2];
     }
   end_f_loop (f, t)

   /* add in spring force */

   init_disp = 0.01;

   s_force = K_SPRING * (loc + init_disp);

   total_force = force - s_force-346-10*velo;
  

   /* compute change in velocity */

     dv = dtime * total_force / 0.554;

     velo += dv;
     loc += velo * dtime;
         vel[2] = velo;

   write_loc_velo_file(loc,velo);

   Message ("\nUDF spool: time = %f, z_vel = %f, force = %f,total_f = %f, loc(m)= %f\n",
            time, velo, force,total_force, loc);
       
}

/* write current location and velocity in file*/
void write_loc_velo_file(real loc,real velo)
{
FILE*fp=fopen(UDF_FILENAME,"w";
  if(fp!=NULL)
{
  fprintf(fp,"%e %e",loc,velo);
fclose(fp);
}
else
Message("\n Warning:cannot write %s file",UDF_FILENAME);
}
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

微流咨询

新虫 (正式写手)


【答案】应助回帖

感谢参与,应助指数 +1
代码没问题,你需要检查相关物性参数设置是否合理,比如弹簧的倔强系数是否合理,物体质量是否合理等等





fluent培训
2楼2015-02-11 11:07:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

卑良

新虫 (小有名气)

引用回帖:
2楼: Originally posted by 微流咨询 at 2015-02-11 11:07:59
代码没问题,你需要检查相关物性参数设置是否合理,比如弹簧的倔强系数是否合理,物体质量是否合理等等





fluent培训

非常感谢!弹簧刚度和质量都是按实际来的,也可能是时间步长取得不合理?有待进一步探索。。。

[ 发自小木虫客户端 ]
3楼2015-02-15 14:44:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

某小学生

新虫 (小有名气)

楼主找到问题所在了吗?怎么解决的?
4楼2018-07-31 20:55:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

卑良

新虫 (小有名气)

引用回帖:
4楼: Originally posted by 某小学生 at 2018-07-31 20:55:12
楼主找到问题所在了吗?怎么解决的?

找到了,原因是数据类型不正确,数据类型都设置成double后,可以正常仿真计算
5楼2018-07-31 21:51:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

某小学生

新虫 (小有名气)

引用回帖:
5楼: Originally posted by 卑良 at 2018-07-31 21:51:23
找到了,原因是数据类型不正确,数据类型都设置成double后,可以正常仿真计算...

十分感谢!

发自小木虫Android客户端
6楼2018-08-05 22:33:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 卑良 的主题更新
信息提示
请填处理意见