中科大FLUENT讲稿 第七章 自定义函数(3)
p为结构指针。函数求得的源项存贮于S指定的变量中,无返回值。使用见4.4。
7.2.6.10 DEFINE_DPM_SWITCH Name Arguments Argument Type Return Type DEFINE_DPM_SWITCH p,ci Tracked_Particle void *p,int ci 该函数是FLUENT默认的颗粒定律与用户自定义的颗粒定律之间,或不同的默认定律和自定义定律之间的开关函数。p为结构指针,ci为1时,表示连续相与离散相耦合求解,0时表示不耦合求解。
! 参数类型中的Tracked_Particle,dpms_t等是FLUENT为相关模型定义的数据类型。具体含义可以参见相应章节。
7.2.7 多相模型的宏及其定义的函数 7.2.7.1 DEFINE_DRIFT_DIAM Name Arguments Argument Type real DEFINE_DRIFT_DIAM c,t cell_t c,Thread *t real 该函数用于定义代数滑流混合模型(algebraic slip mixture model)颗粒或液滴的直径。c为网格,t为网格线。函数返回颗粒或液滴的直径。使用见4.10。
7.2.7.2 DEFINE_SLIP_VELOCITY Name Arguments Argument Type real DEFINE_SLIP_VELOCITY domain Domain *domain void 该函数用于定义代数滑流混合模型(algebraic slip mixture model)的滑流速度(slip velocity)。该函数作用范围是整个网格区域,无返回值。使用见4.9。
7.2.8 特定线的指针
在很多应用UDF的场合,需要在一条特定的线上进行操作。为满足这种要求,首先,可以从Boundary Conditions 面板得到需要操作的线的ID,然后就可用宏Lookup_Thread将指针指向该条线。
在下面的例子中, C语言函数Print_Thread_Face_Centroids调用FLUENT的宏Lookup_Thread将指针指向特定的线,然后将线上所有面的质心坐标输入文件中。宏DEFINE_ON_DEMAND定义的函数get_coords取出其中的两条线,并打印线上所有面的质心坐标。
#include “udf.h”
extern Domain *domain FILE *fout
static void
Print_Thread_Face_Centroids(Domain *domain,int id) {
real FC[2]; face_t f;
Thread *t=Lookup_Thread(domain,id);
fprintf(fout, “thread id %d\\n”,id); begin_f_loop(f,,t) {
F_CENTROID(FC,f,t);
fprintf(fout,“f%d %g %g %g\\n”,f,FC[0],FC[1],FC[2]); }
end_f_loop(f,t) fprintf(fout,“\\n”); }
DEFINE_ON_DEMAND(get_coords) {
fout = fopen(“faces.out”,“w”);
Printf_Thread_Face_Centroids(domain,2); Printf_Thread_Face_Centroids(domain,4); fclose(fout); }
7.2.9 函数体 7.2.9.1 介绍
用户自定义函数体部分包含在紧跟着宏DEFINE_定义的大括弧内,如下例。这和标准C语言函数体的定义是相同的。
DEFINE_PROPERTY(cell_viscosity,cell,thread) {
real mu_lam;
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; else
mu_lam = 1.;
return mu_lam;
}
7.2.9.2 Interpreted UDFs的限制性
Interpreted型书写函数体时并不能完全应用C语言函数,这在前面有过论述。此外,数量的单位制必须采用国际单位制。
7.2.9.3 函数的功能
UDFs执行五种功能:
1.返回变量值; 2.调节参数;
3.返回变量值并且调节参数;
4.调节FLUENT的变量(不以参数形式传递); 5.向case或data文件读写信息。
宏定义的函数返回类型如果不是void型,就返回实型值。下面的例子分别说明不同功能的函数。
7.2.9.4 返回变量值
下面的UDF计算与温度有关的粘性系数,并返回该值。
#include “udf.h”
DEFINE_PROPERTY(cell_viscosity,cell,thread)/*定义物性的宏*/ {
real mu_lam;
real temp = C_T(cell,thread);/*变量temp存放网格的温度*/
if (temp > 288.) mu_lam = 5.5e-3; else if (temp > 286.)
mu_lam = 143.2135 – 0.49725 * temp; else
mu_lam = 1.;
return mu_lam;/*变量mu_lam存放粘性系数值,函数返回该值*/ }
7.2.9.5 调节参数
下面的UDF给出简单二元气相系统的体积反应速率。
#include “udf.h”
#define K1 2.0e-2 #define K2 5.
DEFINE_VR_RATE(user_rate,cell,thread,r,mole_weight,species_mf,rate,rr_t)
{
real s1 = species_mf[0]; real mw1 = mole_weight[0];
if (FLUID_THREAD_P(thread) && THREAD_VAR(thread) .fluid. porous) *rate = K1*s1/pow((1.+K2*s1),2.)/mw1; else
*rate = 0.; }
函数名为 user_rate,函数体中用if语句判断是否处于多孔介质区,仅在多孔介质区有化学反应。
7.2.9.6 返回变量值并调节参数
下面的UDF定义的是swirl-velocity的源项。
#include “udf.h”
#define OMEGA 50 /* rotational speed of swirler */
#define WEIGHT 1.e20 /* weighting coefficients in linearized equation */
DEFINE_SOURCE(user_swirl,cell,thread,dS,eqn) {
real w_vel,x[ND_ND],y,source;
CENTROID(x,cell,thread); y = x[1];
w_vel = y*OMEGA; /* linear w_velocity at the cell */
source = WEIGHT*(w_vel – C_WSWIRL(cell,thread)); dS[eqn] = -WEIGHT;
return source; }
函数名为user_swirl,函数计算了变量source并且返回其值。函数的各项参数的意义参见2.5.10。
7.2.9.7 调节FLUENT变量
下面的函数调节存贮于内存的FLUENT变量,函数定义了x方向速度的边界条件。
#include “udf.h”
DEFINE_PROFILE(inlet_x_velocity,thread,position) {
real x[ND_ND]; 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) }
函数的参数position是个数字标签,标记每一步循环(loop)中被设置的变量。函数调节的FLUENT变量F_PROFILE。
7.2.9.8 读写data或case文件
下面的函数介绍了如何读写静态变量kount,如何计算静态变量请参见4.6。
#include “udf.h”
int kount = 0; /*定义静态变量kount*/
DEFINE_ADJUST(demo_calc,domain) {
kount ++;
printf(“kount = %d\\n”,kount); }
DEFINE_RW_FILE(writer,fp) {
printf(“Writing UDF data to data file…\\n”);
fprintf(fp,”%d”,kount); /*将kount写入data文件中*/ }
DEFINE_RW_FILE(writer,fp) {
printf(“Reading UDF data from data file…\\n”);
fscanf(fp,“%d”,&kount); /* …… 此处隐藏:2254字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [政务民生]2013年公共基础知识热点问题(七)
- [政务民生]检验检测机构资质认定评审准则及释义20
- [政务民生]关于印发重庆市房屋建筑和市政基础设施
- [政务民生]1、隧道洞身开挖支护施工技术交底书
- [政务民生]2015年山东省17地市中考语文试题分类汇
- [政务民生]2-高级会计师资格考试和评审流程图
- [政务民生]2018版中国清分机行业发展分析及前景策
- [政务民生]新课改高中政治探究
- [政务民生]2018-2024年中国新型组合房屋行业投资
- [政务民生]2015年上海市春季高考数学模拟试卷五
- [政务民生]灌砂法及环刀法测压实度(带计算过程)
- [政务民生]运筹学实验2求解非线性规划
- [政务民生]劝学、逍遥游默写(教师卷)
- [政务民生]《运筹学》 - 期末考试 - 试卷A - 答案
- [政务民生]八年级英语下册 Module 6 Hobbies测试
- [政务民生]2019年宪法知识竞赛试题库100题(含答
- [政务民生]自动化英文文献翻译
- [政务民生]公文格式实施细则
- [政务民生]高一地理上册课堂跟踪练习题6
- [政务民生]会计继续教育习题及答案
- 第三章 无约束最优化方法
- 泛读教程第三册答案
- 魏晋南北朝文学
- 幂的运算复习题
- 城市环境问题的成因与治理策略_以社会
- 钢结构行业产业链及竞争分析研究
- 新型热塑性弹性体增韧聚丙烯的研究
- 中国旅游地理B卷试题及答案
- (苏教版)五年级数学上册第三单元测试卷
- 不稳定性心绞痛诊断与治疗
- 俞氏国际后勤职能部门绩效考核办法
- GB7258-2017新标准考试题含答案
- 小学生汉字听写比赛活动方案
- 1.3《平抛运动》学案 教科版必修2
- 2011香港特别行政区公务员考试复习资料
- 考虑水力条件变化的城市给水管网可靠性
- 表面活性剂在油田开发和生产中的应用
- ITT内部培训资料-FI端吸泵的介绍
- 文明守纪,从我做起学生发言稿
- 初中读《聊斋志异》心得体会800字范文




