本文描述在Fluent中自定义冲蚀函数的一些问题。
Fluent GUI 中提供了一些冲蚀模型(Generic Model、Finne、McLaury、Oka、DNV),这些模型可以应付大部分工程冲蚀问题。如果有自己的冲蚀模型,可以想办法将其写成 Generic Model 的形式,或者选择使用 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 获取冲蚀率或沉积率时,需要用冲蚀率函数乘上质量流量,然后再除以冲击面积。
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.
(完)