本文描述在Fluent中自定义冲蚀函数的一些问题。
Fluent GUI 中提供了一些冲蚀模型(Generic Model、Finne、McLaury、Oka、DNV),这些模型可以应付大部分工程冲蚀问题。如果有自己的冲蚀模型,可以想办法将其写成 Generic Model 的形式,或者选择使用 UDF 进行定义。
1 Generic Model
其他类型的冲蚀函数可以通过修改 的值进行改写。
2 UDF
可以使用 DEFINE_DPM_EROSION
指定颗粒冲击壁面或多孔阶跃面时的冲蚀率或沉积率。此 UDF 在颗粒遇到反弹壁面时调用。
UDF 宏的定义形式:
DEFINE_DPM_EROSION (name, tp, t, f, normal, alpha, Vmag, mdot)
参数包括:
-
symbol name
。宏名称。 -
Tracked_particle *tp
。Tracked_Particle 结构体的指针,该结构包含与被跟踪粒子相关的数据。 -
Thread *t
。指向颗粒当前冲击的壁面的 Thread 指针。 -
face_t f
。颗粒冲击壁面的面索引。 -
real normal[]
。被冲击壁面的面法向向量。 -
real alpha
。颗粒冲击角度(单位为弧度)。 -
real Vmag
。颗粒冲击速度(单位为 m/s)。 -
real mdot
。稳态流动:颗粒流冲击网格面时每随机次数的当前流量(kg/s);瞬态流动:冲击网格面的颗粒包质量(kg)。
该 UDF 没有返回值。
DEFINE_DPM_EROSION 有八个参数:name、tp、t、f、normal、alpha、Vmag 和 mdot。其中 Tp、t、f、normal、alpha、Vmag 和 mdot 是由 Fluent 求解器传递给 UDF 。UDF 中需要计算冲蚀率和/或沉积率的值,并将这些值分别存储在 F_STORAGE_R_XV (f, t, SV_DPMS_EROSION, EROSION_UDF)
和 F_STORAGE_R (f, t, SV_DPMS_ACCRETION)
中。
注:在早期 Fluent 版本(18.0 之前的版本)中,冲蚀率及沉积率返回值均通过 F_STORAGE_R 宏进行返回。18.0 之后的版本将冲蚀率和沉积率通过不同的宏进行返回。
”
另一个问题,在利用 UDF 获取冲蚀率或沉积率时,需要用冲蚀率函数乘上质量流量,然后再除以冲击面积。
3 尝试
1、改写为通用方程形式
其中:
逐项比对,可以得到:
2、利用UDF进行定义
可以直接编写UDF:
#include "udf.h"
#define PI 3.1415926
DEFINE_DPM_EROSION(Zhang,tp,t,f,normal,alpha,Vmag,mdot)
{
real Area[ND_ND],area;
real erosion;
real F_alpha;
// 模型系数
real C = 2.17e-7;
real BH = 120;
real Fs = 0.2;
real n = 2.41;
real A[5] = {5.4,-10.11,10.93,-6.33,1.42};
// 冲击角函数
F_alpha = A[0]*alpha + A[1]* pow(alpha,2) + A[2]* pow(alpha,3) + A[3]* pow(alpha,4)+A[4]* pow(alpha,5);
// 计算面积
F_AREA(Area,f,t);
area = NV_MAG(Area);
// 计算冲蚀率函数
erosion = C * pow(BH,-0.59) * Fs * pow(Vmag,n) * F_alpha * mdot / area;
// 利用UDF宏返回值
F_STORAGE_R_XV(f, t, SV_DPMS_EROSION, EROSION_UDF) += erosion;
}
// 注意:编译时建议将中文注释去掉,否则可能会有警告或错误信息。
利用UDF要更灵活,对于一些无法使用通用格式进行表达的方程,则只能使用UDF进行表达。
参考文献
Zhang, Y., Reuterfors, E.P., McLaury, B.S., Shirazi, S.A., Rybicki, E.R., 2007. Comparison of computed and measured particle velocities and erosion in water and air flows. Wear, Vol. 263, pp. 330-338.
(完)
本篇文章来源于微信公众号: CFD之道
评论前必须登录!
注册