许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  FLUENT UDF日记(15):DEFINE_PROFILE宏详解

FLUENT UDF日记(15):DEFINE_PROFILE宏详解

阅读数 3
点赞 0
article_banner

day 15

  • 2.3.23. DEFINE_PROFILE
  • example 1-压力分布 example 2-速度、湍流动能和湍流耗散率分布 example 3-固定速度UDF example 4-壁面产热率分布 example 5-作为物理流动时间函数的质量流量UDF example 6-质量流量入口的质量流量UDF


2.3.23. DEFINE_PROFILE

DEFINE_PROFILE可以定义随空间坐标或时间变化的边界条件或单元区域条件。

   可以自定义的变量有:

   ·速度、压力、温度、湍流动能、湍流耗散率

   ·质量流量

   ·质量流量与 物理 流动时间的函数

   ·组分质量分数(组分运输)

   ·体积分数(多相模型)

   ·壁面热条件(温度、热流、生热率、传热系数和外部发射率等)

   ·壳层发热率

   ·壁面粗糙度条件

   ·壁面剪切和应力条件

   ·孔隙率

   ·多孔阻力方向矢量

   ·壁面粘附接触角( VOF 多相模型)

   DEFINE_PROFILE仅允许修改壁面热通量的单个值。单个值在ANSYS FLUENT没有线性化的显式源项中使用。如果要线性化壁面热通量的源项并分别考虑传导和辐射传热,则需要使用DEFINE_HEAT_FLUX。

example 1-压力分布

以下名为pressure_profile的UDF根据方程生成抛物线型的压力分布。

   此UDF假定网格的生成方式是使原点位于要应用UDF的 边界 区域的几何中心。

   入口中心y值为0,延伸到入口顶部(+0.0745)和底部(-0.0745)

#include "udf.h"
 DEFINE_PROFILE(pressure_profile,t,i)
 {
    real x[ND_ND];    /* 用来存储质心坐标 */
    real y;
    face_t f;
    begin_f_loop(f,t)
      {
       F_CENTROID(x,f,t);
       y = x[1];/*将y轴坐标赋给y*/
       F_PROFILE(f,t,i) = 1.1e5 - y*y/(.0745*.0745)*0.1e5;/*计算压力,传给F_PROFILE*/
      }
    end_f_loop(f,t)
 } 

example 2-速度、湍流动能和湍流耗散率分布

在下面的示例中,DEFINE_PROFILE分别用于生成二维完全发展的管道流动的速度、湍动能和耗散率。定义了三个独立的UDF,分别命名为x_ocity、k_profile和dissip_profile。这些函数串联在单个C源文件中,可以在ANSYS Fluent中解释或编译。

#include "udf.h"
 #define YMIN 0.0      /* constants */
 #define YMAX 0.4064
 #define UMEAN 1.0
 #define B 1./7.
 #define DELOVRH 0.5
 #define VISC 1.7894e-05
 #define CMU 0.09
 #define VKC 0.41
 /*x方向速度*/
 DEFINE_PROFILE(x_velocity,t,i)
 {
    real y, del, h, x[ND_ND], ufree;  
    face_t f;
    h = YMAX - YMIN;
    del = DELOVRH*h;
    ufree = UMEAN*(B+1.);
    begin_f_loop(f,t)
      {
         F_CENTROID(x,f,t);
         y = x[1];
         if (y <= del)
           F_PROFILE(f,t,i) = ufree*pow(y/del,B);
         else
           F_PROFILE(f,t,i) = ufree*pow((h-y)/del,B);
      }
    end_f_loop(f,t)
 }
 /* 湍动能 */
 DEFINE_PROFILE(k_profile,t,i)
 {
    real y, del, h, ufree, x[ND_ND];
    real ff, utau, knw, kinf;
    face_t f;
    h = YMAX - YMIN;
    del = DELOVRH*h;
    ufree = UMEAN*(B+1.);
    ff = 0.045/pow(ufree*del/VISC,0.25);
    utau=sqrt(ff*pow(ufree,2.)/2.0);
    knw=pow(utau,2.)/sqrt(CMU);
    kinf=0.002*pow(ufree,2.);
    begin_f_loop(f,t)
      {
         F_CENTROID(x,f,t);
         y=x[1];
           if (y <= del)
             F_PROFILE(f,t,i)=knw+y/del*(kinf-knw);
           else
             F_PROFILE(f,t,i)=knw+(h-y)/del*(kinf-knw);
      }
    end_f_loop(f,t)
 }
 /* 湍流耗散率 */
 DEFINE_PROFILE(dissip_profile,t,i)
 {
    real y, x[ND_ND], del, h, ufree;
    real ff, utau, knw, kinf;
    real mix, kay;
    face_t f;
    h = YMAX - YMIN;
    del = DELOVRH*h;
    ufree = UMEAN*(B+1.);
    ff = 0.045/pow(ufree*del/VISC,0.25);
    utau=sqrt(ff*pow(ufree,2.)/2.0);
    knw=pow(utau,2.)/sqrt(CMU);
    kinf=0.002*pow(ufree,2.);
    begin_f_loop(f,t)
      {
         F_CENTROID(x,f,t);
         y=x[1];
         if (y <= del)
           kay=knw+y/del*(kinf-knw);
         else
           kay=knw+(h-y)/del*(kinf-knw);
         if (VKC*y < 0.085*del)
           mix = VKC*y;
         else
           mix = 0.085*del;
         F_PROFILE(f,t,i)=pow(CMU,0.75)*pow(kay,1.5)/mix;
      }
    end_f_loop(f,t)
 }
     real r;
    begin_c_loop(c,t)
      {
         C_CENTROID(x,c,t);
         r =x[1];
         F_PROFILE(c,t,i) =
         va1+(va2*r)+(va3*r*r)+(va4*r*r*r)+(va5*r*r*r*r);
       }
     end_c_loop(c,t)
 } 
 DEFINE_PROFILE(fixed_ke,t,i)
 {
    cell_t c;
    real x[ND_ND];
    real r;
    begin_c_loop(c,t)
      {
         C_CENTROID(x,c,t);
         r =x[1];
         F_PROFILE(c,t,i) =
         ka1+(ka2*r)+(ka3*r*r)+(ka4*r*r*r)+(ka5*r*r*r*r)+(ka6*r*r*r*r*r);
      }
    end_c_loop(c,t)
 } 

example 3-固定速度UDF

在下面的示例中,DEFINE_PROFILE用于固定在某单元区域内始终保持不变的量。其中包含FIXED_U、FIXED_V和FIXED_KE三个单独的UDF,它们定义了固定的速度,用于模拟叶轮驱动的混合罐中叶轮的瞬态启动。

#include "udf.h"
 #define FLUID_ID 1
 #define ua1 -7.1357e-2
 #define ua2 54.304
 #define ua3 -3.1345e3
 #define ua4 4.5578e4
 #define ua5 -1.9664e5
 #define va1 3.1131e-2
 #define va2 -10.313
 #define va3 9.5558e2
 #define va4 -2.0051e4
 #define va5 1.1856e5
 #define ka1 2.2723e-2
 #define ka2 6.7989
 #define ka3 -424.18
 #define ka4 9.4615e3
 #define ka5 -7.7251e4
 #define ka6 1.8410e5
 #define da1 -6.5819e-2
 #define da2 88.845
 #define da3 -5.3731e3
 #define da4 1.1643e5
 #define da5 -9.1202e5
 #define da6 1.9567e6
 DEFINE_PROFILE(fixed_u,t,i)
 {
    cell_t c;
    real x[ND_ND];
    real r;
    begin_c_loop(c,t)
      {
         C_CENTROID(x,c,t);
         r =x[1];
         F_PROFILE(c,t,i) =
             ua1+(ua2*r)+(ua3*r*r)+(ua4*r*r*r)+(ua5*r*r*r*r);
       }
    end_c_loop(c,t)
 }
 DEFINE_PROFILE(fixed_v,t,i)
 {
    cell_t c;
    real x[ND_ND];
    real r;
    begin_c_loop(c,t)
      {
         C_CENTROID(x,c,t);
         r =x[1];
         F_PROFILE(c,t,i) =
         va1+(va2*r)+(va3*r*r)+(va4*r*r*r)+(va5*r*r*r*r);
       }
     end_c_loop(c,t)
 } 
 DEFINE_PROFILE(fixed_ke,t,i)
 {
    cell_t c;
    real x[ND_ND];
    real r;
    begin_c_loop(c,t)
      {
         C_CENTROID(x,c,t);
         r =x[1];
         F_PROFILE(c,t,i) =
         ka1+(ka2*r)+(ka3*r*r)+(ka4*r*r*r)+(ka5*r*r*r*r)+(ka6*r*r*r*r*r);
      }
    end_c_loop(c,t)
 } 

example 4-壁面产热率分布

以下名为wallheatGenerate的UDF生成平面导热壁面的产热率文件。对其进行解释或编译后,可在ANSYS FLUENT中的壁面边界条件对话框中激活此UDF

 #include "udf.h"
 DEFINE_PROFILE(wallheatgenerate,t,i)
 {
    real source = 0.001;
    face_t f;
    begin_f_loop(f,t)
        F_PROFILE(f,t,i) = source;
    end_f_loop(f,t)
 } 

example 5-作为物理流动时间函数的质量流量UDF

以下名为tm_pout2的UDF在物理 时间步长 大于0.2秒时将质量流量从1kg/s调整为1.35kg/s。对其进行解释或编译后,可以在ANSYS FLUENT中的压力出口边界条件对话框中激活此UDF,方法是选择指定目标质量流量选项,然后从相应的下拉列表中选择UDF名称。

/* UDF for setting target mass flow rate in pressure-outlet   */
 /* at t0.2 sec the target mass flow rate set to 1.00 kg/s    */
 /* when t0.2 sec the target mass flow rate will change to 1.35 kg/s */
 #include "udf.h"
 DEFINE_PROFILE(tm_pout2, t, nv)
 {
    face_t f ;
    real flow_time = RP_Get_Real("flow-time");/*RP_Get_Real("flow-time")与CURRENT_TIME等价,都是用于获取当前物理时间,但RP_Get_Real不能用在cell或者face的循环中,太耗费时间*/
    if (flow_time < 0.2)
    {
         printf("Time   = %f sec. \n",flow_time);
         printf("Targeted mass-flow rate set at 1.0 kg/s \n");
         begin_f_loop(f,t)
          {
             F_PROFILE(f,t,nv) = 1.0 ;
          }
         end_f_loop(f,t)
      }
    else
      {
         printf("Time   = %f sec. \n",flow_time);
         printf("Targeted mass-flow rate set at 1.35 kg/s \n") ;
         begin_f_loop(f,t)
           {
            F_PROFILE(f,t,nv) = 1.35 ;
           }
         end_f_loop(f,t)
	  }
  } 

example 6-质量流量入口的质量流量UDF

以下名为INTERT_MF的UDF最初指定前10毫秒的质量流量为3.0千克/秒,然后在接下来的10毫秒内将其增加到4.0千克/秒,之后指定5.0千克/秒。

#include "udf.h"
  DEFINE_PROFILE(inlet_mf,th,i)
 {
   face_t f;
   real flow_time = CURRENT_TIME;/*CURRENT_TIME查找当前的流动时间,它对所有节点都可用,访问它一次并将值存储在局部变量中比为Face循环中的每个面都访问一次更有效*/
   begin_f_loop(f,th)
     {
       if(flow_time <= 0.01)
          F_PROFILE(f,th,i) = 3.0;
       else if(flow_time <=0.02)
          F_PROFILE(f,th,i) = 4.0;
       else
          F_PROFILE(f,th,i) = 5.0;
     }
    end_f_loop(f,th);
 }



免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删
相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空