找回密码
 注册
查看: 3106|回复: 9

升力、阻力系数的UDF,用于三维圆柱扰流等类似情况

[复制链接]
发表于 2014-12-4 22:39:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
现在在用Fluent做三维圆柱扰流,除了在Fluent的Monitors中设置Drag & Lift Coefficient外,想用UDF实现对升力、阻力系数的求解!
有的文献中称可以先用Fluent UDF求升力和阻力,这样的UDF程序也行。求大神帮忙,给出相应的UDF程序!
发表于 2014-12-5 10:59:49 | 显示全部楼层
有手纸,为什么还要用报纸擦屁股:lol:lol:lol
 楼主| 发表于 2014-12-5 15:07:28 | 显示全部楼层
erricyang123 发表于 2014-12-5 10:59
有手纸,为什么还要用报纸擦屁股

现在模拟的是三维倾斜圆柱扰流,只想输出圆柱中间一个圆环面的升阻力系数,以把两个端面的影响降到最低。在ICEM画的圆环面导入到Fluent中显示不出来,只好试试UDF的方法。或者您有什么高见?
发表于 2014-12-5 15:23:00 | 显示全部楼层
计算完成后,在POST中处理,可以得到力,然后自己求系数。

圆环可以在POST中切出来的。
 楼主| 发表于 2014-12-5 22:42:27 | 显示全部楼层
erricyang123 发表于 2014-12-5 15:23
计算完成后,在POST中处理,可以得到力,然后自己求系数。

圆环可以在POST中切出来的。

抱歉!又没说清楚。我是要在模拟计算过程中实时监测那个短圆环面上的升力、阻力系数,由此求Str数,并将三个参数与已有文献对比。肯定是要在开始计算前就已经定义好圆环面、且能在Fluent的Monitors中的Zones中可选。目前的状态是,圆环面在网格划分软件中很好取得,关键是如何保证这个面在网格输入到Fluent后依然存在,且在Zones中可选。
发表于 2014-12-7 18:33:49 | 显示全部楼层
那你做网格的时候就要弄好
发表于 2014-12-9 15:49:59 | 显示全部楼层
erricyang123 发表于 2014-12-7 18:33
那你做网格的时候就要弄好

您好,能否看看这个帖子?
http://www.cfluid.com/thread-145321-1-1.html
发表于 2015-7-2 11:24:48 | 显示全部楼层



你好!我现在也在研究用UDF实现对升力、阻力系数的求解,你成功了吧,能讨论下吗?
发表于 2015-7-2 15:07:44 | 显示全部楼层
#include"udf.h"
#include"mem.h"
//#include"dynamesh_tools.h"
//定义流场参考值,
#define  R2D        180./M_PI
#define A  0.7532
#define L 0.64607
#define rou 1.163357
#define velocity 291.5743
#define alpha 3.06
#define beta 0

#define ZONE_ID 15
static int j=1;//迭代次数
DEFINE_ADJUST(cal_CL,d)
{
        FILE *file_diag;
        real af_body[ND_ND];
        real m_body[ND_ND];
        real af_wind[ND_ND];
        real m_wind[ND_ND];
        real x_cg[ND_ND];
  real q=0.5*rou*velocity*velocity;//动压
        ///质心位置,自己指定,力矩产考点。
        x_cg[0]=0.0;
        x_cg[1]=0.0;
        x_cg[2]=0.0;
        Domain *d1=Get_Domain(1);
        Thread *dt=Lookup_Thread(d1,15);
        Compute_Force_And_Moment(d1,dt,x_cg,af_body,m_body,TRUE);
       
       
//定义体轴到风轴的转换矩阵
real jz[3][3];
jz[0][0]=cos(alpha/R2D)*cos(beta/R2D);
jz[0][1]=-sin(alpha/R2D)*cos(beta/R2D);
jz[0][2]=sin(beta/R2D);
jz[1][0]=sin(alpha/R2D);
jz[1][1]=cos(alpha/R2D);
jz[1][2]=0;
jz[2][0]=-cos(alpha/R2D)*sin(beta/R2D);
jz[2][1]=sin(alpha/R2D)*sin(beta/R2D);
jz[2][2]=sin(beta/R2D);
   NV_ROTN_V (af_wind, = ,af_body, jz);
   NV_ROTN_V (m_wind, = , m_body, jz);
      
         

       file_diag = fopen ("force.txt", "a");
       if(j==1)
      fprintf(file_diag,"NO\t\t   CL\t\t        CD\t\t        Cz\t\t        Mz\t\t        My\t\t        Mx\n");
      j=j+1;//j<=2位初始化步骤
      if(j>2)
              {
      fprintf (file_diag, "%d\t\t\t"        , j-2);//迭代次数
      fprintf (file_diag, "%f\t %f\t\t\t%f\t\t ", af_wind[1]/q/A, af_wind[0]/q/A, af_wind[2]/q/A);
      fprintf (file_diag, "%f\t\t   %f\t\t   %f\n", m_body[2]/q/A/L, m_body[1]/q/A/L, m_body[0]/q/A/L);
      }
      fclose(file_diag);
       
       
       
       
       
       
       
}

发表于 2015-7-6 11:39:35 | 显示全部楼层
tangshiyong2004 发表于 2015-7-2 15:07
#include"udf.h"
#include"mem.h"
//#include"dynamesh_tools.h"

非常感谢!大神啊!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表