第10章 应用举例
10.1 边界条件
10.2源项
10.3物理属性
10.4反应速率(Reacting Rates)
10.5 用户定义标量(User_Defined Scalars)
10.1边界条件
这部分包含了边界条件UDFs的两个应用。两个在FLUENT中都是作为解释式UDFs被执行的。
10.1.1涡轮叶片的抛物线速度入口分布
要考虑的涡轮叶片显示在Figure 10.1.1中。非结构化网格用于模拟叶片周围的流场。区域从底部周期性边界延伸到顶部周期性边界,左边是速度入口,右边是压力出口。
Figure 10.1.1: The Grid for the Turbine Vane Example |
常数速度应用于入口的流场与抛物线速度应用于入口的流场作了比较。当采用分段线性分布的型线的应用是有效的对边界型线选择,多项式的详细说明只能通过用户定义函数来完成。
常数速度应用于流场入口的结果显示在Figure 10.1.2和Figure 10.1.3中。当流动移动到涡轮叶片周围时初始常速度场被扭曲。
Figure 10.1.2: Velocity Magnitude Contours for a Constant Inlet x Velocity |
Figure 10.1.3: Velocity Vectors for a Constant Inlet x Velocity |
现在入口速度将用以下型线描述:
这里变量在人口中心是0.0,在顶部和底部其值分别延伸到。这样速度在入口中心为20m/sec,在边缘为0。
UDF用于传入入口上的这个抛物线分布。C源代码(vprofile.c)显示如下。函数使用了Section 5.3中描述的Fluent提供的求解器函数。 /***********************************************************************/
/* vprofile.c */
/* UDF for specifying steady-state velocity profile boundary condition */
/***********************************************************************/
#include "udf.h"
DEFINE_PROFILE(inlet_x_velocity, thread, position)
{
real x[ND_ND]; /* this will hold the position vector */
real y;
face_t f;
begin_f_loop(f, thread)
{
F_CENTROID(x,f,thread);
y = x[1];
F_PROFILE(f, thread, position) = 20. - y*y/(.0745*.0745)*20.;
}
end_f_loop(f, thread)
}
函数,被命名为inlet_x_velocity,使用了DEFINE_PROFILE定义并且有两个自变量:thread 和position。Thread是一个指向面的thread的指针,position是一个整数,它是每个循环(loo
p)内为变量设置的数值标签。
函数通过声名变量f作为face_t的数据类型。一维数组x和变量y被定义为real数据类型。循环宏用于循环区域内每个面来创建型线,或数据数组。每个循环内,F_CENTROIDS为带指标f的面输出面质心(数组x)的值,指标f在被thread指向的线(thread)上。存储在x[1]中的y坐标用于为变量y赋值,然后用于计算x速度。这个值接着被分配到F_PROFILE,使用整数position(在你从Velocity Inlet面板中选择的UDF作为x速度的边界条件的基础上通过求解器传递给它)来设置内存中x速度面值。
为了在FLUENT中使用这个解释式UDF,你必须首先编译它。
Define User-Defined Functions
在Interpreted UDFs面板中,在Source File Name区域命名你的函数。如果必要,在CPP Command Name区域输入你的C预处理程序类型和在Stack Size下输入堆栈大小。打开Display Assembly Listing在你的控制台窗口中能看到汇编列表,当函数编译时。点击Compile然后Close面板。
为了选择这个用户定义函数作为所选区域的速度边界条件,打开Velocity Inlet面板。
在X-Velocity下拉列表下,选择udf inlet_x_velocity,这个名字在上面已经命名给函数。这个函数将被使用,而不是出现在X-Velocity区域的0值(在这个例子中)。点OK接受这个新边界条件并关闭面板。
在求解运行到收敛之后,获得了一个修正的速度场如Figure 10.1.4 and 10.1.5所示。速度场在入口中心显示了最大值,到边缘上降为0。
Figure 10.1.4: Velocity Magnitude Contours for a Parabolic Inlet x Velocity |
Figure 10.1.5: Velocity Vectors for a Parabolic Inlet x Velocity |
10.1.2管内流动的瞬态速度入口分布
这个例子中,瞬时的周期性的速度边界条件使用UDF应用于管子的入口。速度形式为:
(10.1.1)
管子长1m,半径为0.2m。假设充满密度为1kg/m3和粘度为kg/m-s的空气。空气速度关于平衡值的波动振幅为5m/s,频率为10rad/s。
速度分布UDF(unsteady.c)的源代码显示如下。 /**********************************************************************/
/* unsteady.c */
/* UDF for specifying a transient velocity profile boundary condition */
/**********************************************************************/
#include "udf.h"
DEFINE_PROFILE(unsteady_velocity, thread, position)
{
face_t f;
begin_f_loop(f, thread)
{
real t = RP_Get_Real("flow-time");
F_PROFILE(f, thread, position) = 20. + 5.0*sin(10.*t);
}
end_f_loop(f, thread)
}
函数,被命名为unsteady_velocity,使用DEFINE_PROFILE macro定义。The utility RP_Get_Real("flow-time")用于访问real流动时间,它被分配给变量t。(RP_Get_Real的详细内容见Section 6.9)。
在你编译这个UDF之前,你必须在Solver面板中指定为非稳态流动计算。
Define Models
接下来你将打开Interpreted UDFs面板。在Source File Name下面的文本框内输入函数的名字,如果必要,还有你的C预处理程序的名字。打开Display Assembly Listing。点击Compile然后关闭面板。
Define User-Defined Functions
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论