UDF-自定义函数
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(Interpreted Or Compiled)-编译 • Define-BoundaryCondition-所需设置的
面-Thermal-Temperature-Bottom Temperature • (和一般计算一样,设置其它边值条件、 初值条件及求解与结果检查等)
9
侧面与地面两处UDF
10
{
F_CENTROID(x,f,thread);
y = x[0];
F_PRO) = 315. + (y-.044)*(y-.044)/.044/.044*35.;
}
end_f_loop(f, thread)
8
}
UDF设置边界温度处理要点
• (和一般计算一样设置求解器,模型等) • Define-User defined-Functions-
(t
3.49E+02 3.50E+02 3.50E+02 3.47E+02 3.46E+02 3.44E+02 3.41E+02 3.39E+02
3.36E+02 3.33E+02 3.31E+02 3.28E+02 3.26E+02 3.24E+02 3.22E+02 3.20E+02
3.19E+02 3.18E+02 3.17E+02 3.16E+02 3.16E+02 3.16E+02 3.15E+02 3.15E+02
2
UDF分类与区别
• UDFs 使用时可以被当作解释函数或编译函数 • 解释函数在运行时读入并解释 • 编译UDFs 则在编译时被嵌入共享库中并与
Fluent 连接
• 解释UDFs 用起来简单但是有源代码和速度方 面的限制不足。编译型UDFs 执行起来较快也
没有源代码限制但设置和使用较为麻烦
3
UDF的用途-满足用户个性化需求
12
}
边界温度分布
左侧温度分布
下面温度分布
13
场温度分布
14
UDF编写-用C语言
• 注释 /* 这是刘某人讲课示范用的程序 */
• 数据类型 Int:整型 Long:长整型 Real:实数 Float:浮点型 Double:双精度 Char:字符型
UDF解释函数在单精度算法中定义real类型为float型,在双精度算法宏定义 real为double型。因为解释函数自动作如此分配,所以使用在UDF中声明所有的 float和double数据变量时使用real数据类型是很好的编程习惯。
real temp = C_T(cell, thread);
if (temp > 288.)
mu_lam = 5.5e-3;
else if (temp > 286.)
mu_lam = 143.2135 - 0.49725 * temp;
用户自定义函数
UDF
1
用户自定义函数
• 用户自定义函数或UDF 是用户自编的程 序它可以被动态的连接到Fluent 求解器上 来提高求解器性能用户自定义函数用C 语言编写使用DEFINE 宏来定义UDFs 中 可使用标准C 语言的库函数也可使用预 定义宏Fluent Inc.提供通过这些预定义宏 可以获得Fluent 求解器得到的数据
(y
0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 )
15
局部变量
• 局部变量只用于单一的函数中。当函数 调用时,就被创建了,函数返回之后,这 个变量就不存在了,局部变量在函数内 部(大括号内)声明。在下面的例子中, mu_lam和temp是局部变量。
16
DEFINE_PROPERTY(cell_viscosity, cell, thread)
{
real mu_lam;
• 边界条件
• 材料性质
• 表面与体积反应速率
• 输运方程源项
• 用户标量输运方程(UDS)
• 调节每次迭代值
• 初始化流场
• 异步执行
• 后处理改善
• 模型改进(离散项模型,多相混合物模型,辐射
模型等)
4
UDF举例
上壁面温度 300K
绝
绝
热
热
壁
壁
面
面
温度: 315K
温度分布
5
百度文库 Profile处理
初值条件及求解与结果检查等)
7
UDF处理温度
#include "udf.h"
DEFINE_PRO, thread, position)
{
real x[ND_ND];
/* this will hold the position vector */
real y;
face_t f;
begin_f_loop(f, thread)
((Temp point 26)
(x
0.00E-03 2.00E-03 4.00E-03 6.00E-03 8.00E-03 1.00E-02 1.20E-02 1.40E-02 1.60E-02 1.80E-02 2.00E-02 2.20E-02 2.40E-02 2.60E-02 2.80E-02 3.00E-02 3.20E-02 3.40E-02 3.60E-02 3.80E-02 4.00E-02 4.20E-02 4.40E-02 4.60E-02 4.80E-02 5.00E-02 )
3.15E+02 3.15E+02 ))
6
Profile处理要点
• (和一般计算一样设置求解器,模型等) • Define-Profile-Read (数据) • Define-BoundaryCondition-所需设置的
面-Thermal-Temperature-Temp t • (和一般计算一样,设置其它边值条件、
定义一个以上UDF
上壁面温度 300K
温
度
绝
抛
热
物
壁
线
面
分
布
温度: 315K
温度分布
11
UDF编写
#include "udf.h"
DEFINE_PRO, thread, position)
{
程序1
}
DEFINE_PRO, thread, position)
{
程序2
}
DEFINE_PRO)
{
程序3。。。。。。
面-Thermal-Temperature-Bottom Temperature • (和一般计算一样,设置其它边值条件、 初值条件及求解与结果检查等)
9
侧面与地面两处UDF
10
{
F_CENTROID(x,f,thread);
y = x[0];
F_PRO) = 315. + (y-.044)*(y-.044)/.044/.044*35.;
}
end_f_loop(f, thread)
8
}
UDF设置边界温度处理要点
• (和一般计算一样设置求解器,模型等) • Define-User defined-Functions-
(t
3.49E+02 3.50E+02 3.50E+02 3.47E+02 3.46E+02 3.44E+02 3.41E+02 3.39E+02
3.36E+02 3.33E+02 3.31E+02 3.28E+02 3.26E+02 3.24E+02 3.22E+02 3.20E+02
3.19E+02 3.18E+02 3.17E+02 3.16E+02 3.16E+02 3.16E+02 3.15E+02 3.15E+02
2
UDF分类与区别
• UDFs 使用时可以被当作解释函数或编译函数 • 解释函数在运行时读入并解释 • 编译UDFs 则在编译时被嵌入共享库中并与
Fluent 连接
• 解释UDFs 用起来简单但是有源代码和速度方 面的限制不足。编译型UDFs 执行起来较快也
没有源代码限制但设置和使用较为麻烦
3
UDF的用途-满足用户个性化需求
12
}
边界温度分布
左侧温度分布
下面温度分布
13
场温度分布
14
UDF编写-用C语言
• 注释 /* 这是刘某人讲课示范用的程序 */
• 数据类型 Int:整型 Long:长整型 Real:实数 Float:浮点型 Double:双精度 Char:字符型
UDF解释函数在单精度算法中定义real类型为float型,在双精度算法宏定义 real为double型。因为解释函数自动作如此分配,所以使用在UDF中声明所有的 float和double数据变量时使用real数据类型是很好的编程习惯。
real temp = C_T(cell, thread);
if (temp > 288.)
mu_lam = 5.5e-3;
else if (temp > 286.)
mu_lam = 143.2135 - 0.49725 * temp;
用户自定义函数
UDF
1
用户自定义函数
• 用户自定义函数或UDF 是用户自编的程 序它可以被动态的连接到Fluent 求解器上 来提高求解器性能用户自定义函数用C 语言编写使用DEFINE 宏来定义UDFs 中 可使用标准C 语言的库函数也可使用预 定义宏Fluent Inc.提供通过这些预定义宏 可以获得Fluent 求解器得到的数据
(y
0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 )
15
局部变量
• 局部变量只用于单一的函数中。当函数 调用时,就被创建了,函数返回之后,这 个变量就不存在了,局部变量在函数内 部(大括号内)声明。在下面的例子中, mu_lam和temp是局部变量。
16
DEFINE_PROPERTY(cell_viscosity, cell, thread)
{
real mu_lam;
• 边界条件
• 材料性质
• 表面与体积反应速率
• 输运方程源项
• 用户标量输运方程(UDS)
• 调节每次迭代值
• 初始化流场
• 异步执行
• 后处理改善
• 模型改进(离散项模型,多相混合物模型,辐射
模型等)
4
UDF举例
上壁面温度 300K
绝
绝
热
热
壁
壁
面
面
温度: 315K
温度分布
5
百度文库 Profile处理
初值条件及求解与结果检查等)
7
UDF处理温度
#include "udf.h"
DEFINE_PRO, thread, position)
{
real x[ND_ND];
/* this will hold the position vector */
real y;
face_t f;
begin_f_loop(f, thread)
((Temp point 26)
(x
0.00E-03 2.00E-03 4.00E-03 6.00E-03 8.00E-03 1.00E-02 1.20E-02 1.40E-02 1.60E-02 1.80E-02 2.00E-02 2.20E-02 2.40E-02 2.60E-02 2.80E-02 3.00E-02 3.20E-02 3.40E-02 3.60E-02 3.80E-02 4.00E-02 4.20E-02 4.40E-02 4.60E-02 4.80E-02 5.00E-02 )
3.15E+02 3.15E+02 ))
6
Profile处理要点
• (和一般计算一样设置求解器,模型等) • Define-Profile-Read (数据) • Define-BoundaryCondition-所需设置的
面-Thermal-Temperature-Temp t • (和一般计算一样,设置其它边值条件、
定义一个以上UDF
上壁面温度 300K
温
度
绝
抛
热
物
壁
线
面
分
布
温度: 315K
温度分布
11
UDF编写
#include "udf.h"
DEFINE_PRO, thread, position)
{
程序1
}
DEFINE_PRO, thread, position)
{
程序2
}
DEFINE_PRO)
{
程序3。。。。。。