首页 > 编程知识 正文

fluentd日志收集,fluentudf函数

时间:2023-05-06 02:19:33 阅读:246620 作者:62

day 15 2.3.23. DEFINE_PROFILEexample 1-压力分布example 2-速度、湍流动能和湍流耗散率分布example 3-固定速度UDFexample 4-壁面产热率分布example 5-作为物理流动时间函数的质量流量UDFexample 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); }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。