当前位置:首页 > 中科大FLUENT讲稿 第七章 自定义函数
NULL != T_STORAGE_R_NV(t,SV_UDSI_G(T4))) {
begin_c_loop (c,t) {
C_UDSI(c,t,MAG_GRAD_T4) = NV_MAG(C_UDSI_G(c,t,T4)); }
end_c_loop (c,t) }
}
thread_loop_f (t,domain) {
if (NULL != THREAD_STORAGE(t,SV_UDS_I(T4)) && NULL != T_STORAGE_R_NV(t->t0,SV_UDSI_G(T4))) {
begin_f_loop (f,t) {
F_UDSI(f,t,MAG_GRAD_T4) = C_UDSI(F_C0(f,t),t->t0,MAG_GRAD_T4); }
end_f_loop (f,t) } } }
条件语句if (NULL != THREAD_STORAGE(t,SV_UDS_I(T4)))检测用户自定义标量中是否已存贮温度的四次方;条件语句NULL != T_STORAGE_R_ NV (t,SV_UDSI_G(T4))检测温度四次方的梯度是否已存入用户自定义标量之中。本例使用了用户自定义标量,所以首先要激活两个用户自定义标量输运方程。
7.5.8 可执行UDFs
本例名为demo_calc的UDF,计算打印当前数据库中的最低温度,最高温度和平均温度,并计算下面的函数,存于用户定义的内存变量中。
f?T??
T?Tmin
Tmax?Tmin/**********************************************************************/ /* demand.c */
/* UDF to calculate temperature field function and store in */
/* user-defined memory. Also print min, max, avg temperatures. */
/**********************************************************************/ #include \
extern Domain* domain;
DEFINE_ON_DEMAND(demo_calc) {
float tavg = 0.;
float tmax = 0.; float tmin = 0.;
float temp,volume,vol_tot; Thread *t; cell_t c;
/* Loop over all cells in the domain */ thread_loop_c(t,domain) {
/* Compute max, min, volume-averaged temperature */
begin_c_loop(c,t) {
volume = C_VOLUME(c,t); /* get cell volume */ temp = C_T(c,t); /* get cell temperature */ if (temp < tmin || tmin == 0.) tmin = temp; if (temp > tmax || tmax == 0.) tmax = temp; vol_tot += volume; tavg += temp*volume; }
end_c_loop(c,t) tavg /= vol_tot;
printf(\/* Compute temperature function and store in user-defined memory */ /* (location index 0) */
begin_c_loop(c,t) {
temp = C_T(c,t);
C_UDMI(c,t,0) = (temp-tmin)/(tmax-tmin); }
end_c_loop(c,t) } }
函数中使用了嵌套的loop循环,循环内部的函数体实现温度最值,平均值和函数f(T)值的求解。由于函数中用到了用户自定义内存变量,所以需要事先激活用户自定义内存变量,内存变量个数不应小于所使用的内存变量个数。
第六节 UDFs的应用
本章列举了UDFs的几个应用实例。在例子中,我们将边界条件UDFs,源项UDFs,物理性质UDFs和反应速率UDFs应用于实际的相对较简单的物理模型。我们分析这些实例的目的,是为了读者更好的了解UDFs的功能,并能熟练的掌握UDFs。
7.6.1 边界条件UDFs的应用
本节包含两个Interpreted型的例子: 1.涡轮叶片入口速度分布 2.管道入口瞬态速度分布
7.6.1.1 涡轮叶片入口速度分布
如图6.1.1,涡轮周围流体网格采用三角无结构网格,定义涡轮腔体左端为速度入口,右端为压力出口边界条件。我们分别计算恒定和抛物型入口速度边界分布的情况,比较两种情况下流场速度的分布。
图6.1.2和图6.1.3为恒定速度入口边界条件计算的结果。入口速度大小为20 m/sec,可以看出恒定速度场在涡轮叶片周围产生扭曲变形。
图6.1.1 涡轮叶片周围的网格分布
图6.1.2 恒定速度入口条件下的速度大小分布
图6.1.3 恒定速度入口条件下的速度矢量分布
抛物型速度入口边界条件速度分布满足下面的关系式:
?y? vx?20?20??
?0.0745?其中,y在入口中央取值为0.0,在入口上部和底部分别为+0.0745,-0.0745,根据入口速度分布式速度中央大小为20 m/sec,上下部值都为20 m/sec。
定义抛物型速度入口边界条件的C源程序如下:
2
共分享92篇相关文档