众所周知,Fluent UDF宏十分丰富和繁杂,UDF手册中实际给出的只是一小部分。很多有用的宏在UDF手册中是根本找不到的。例如,做DPM的朋友都知道在UDF手册中可以查到提取DPM颗粒直径、速度的宏,却怎么也找不到提取颗粒曳力和体积力的宏。实际上这些量在Fluent UDF中是可以提取的,只不过他们不知道罢了。本文将告诉你如何借助VC++ UDF Studio插件探索UDF手册中没有记录的宏或变量。

以提取DPM颗粒的曳力和体积力为例。我们该如何一步一步获得这两个变量呢?

1. 首先,你要安装Fluent,VC++ UDF Studio,Visual Studio(建议2010旗舰版)。然后双击桌面图标,选择需要版本后会自动启动Fluent,读入case后点击Fluent嵌入菜单中的“Start Visual Studio”子菜单。

2. 输入如下源代码(当然探索别的宏和数据结构时可以不同的源码设计),并点击“编译”按钮直到编译通过,然后点“加载到Fluent”按钮。

#include "udf.h"
DEFINE_DPM_SCALAR_UPDATE(dpm_scalup,c,t,if_init,tp)
{
#if !RP_HOSTreal NV_VEC(vel);real diam=TP_DIAM(tp);NV_V(vel,=, TP_VEL(tp));
#endif
}

3. 将源代码中定义的dpm_scalup宏hook到Fluent中,如下图所示。记得勾选“Interaction with Continuous Phase”,并将“DPM Interation Interval”改为1。这样每次连续相迭代的时候才会追踪颗粒,从而调用我们的DPM_SCALAR_UPDATE宏。

4.点击“调试”按钮,进入调试状态。并在源码中下好断点(在需要断点的行按F9),此时在该行会出现一个红色圆球表示断点正常已经下好(即调试器已经监控Fluent中,一旦程序运行到这一行就会马上中断)。

5.在Fluent中开始迭代,过若干秒当程序运行到我们下断点的行就会马上中断,如下会出现一个黄色小箭头,表示中断在此行。此时,我们感兴趣的重点就来了。由于插件提供的实时查看变量值和内部结构的功能,所以我们对变量tp很想看看内部有些啥数据,因为我们知道tp是Tracked_Particle类型的指针,它存储了颗粒的所有相关数据。

6.点击“+”号将展开tp的数据结构并查看内部所有变量。此时,我们看到了一些熟悉的变量,例如flow_rate, Re等等,我们很容易猜出来,它们分别是颗粒的质量流量和相对雷诺数。那么UDF源代码中就可以用tp->flow_rate和tp->Re来分别提取颗粒的质量流量和相对雷诺数。相对雷诺数在UDF手册中是没有的,开始有点小小的激动了。

7. 下拉到source变量(因为我们在tp结构里面没有直接找到曳力和体积力,所以怀疑是在源项source里面),点击source左侧加号“+”。深入查看source结构体里面的内容。

结果发现了bf_acc和drag两个可疑的变量。其中,bf_acc正好是body force acceleration的缩写,且包含三个float元素,代表三个方向分量。drag无疑正好是曳力的英文。这样我们就找到了我们要的东西了。体积力加速度矢量可以用tp->source.bf_acc提取,曳力可以用tp->source.drag提取。至于如何验证,可以自己设计一个简单的已知曳力和体积力的case,这里不做赘述了。

如果再加装Visual assistant软件,可以在键入代码时就出现所有可能的宏,更方便解密未记录的宏。如下图所示,键入tp->source.后下拉框里面就出现bf_acc。鼠标在变量上短暂停留还可能出现相应注释。非常利于解密未知宏或变量的功能。

最后贴上解密出来的提取颗粒曳力、体积力加速度和颗粒相对雷诺数的代码。

//利用VC++ UDF Studio插件编译通过
#include "udf.h"
DEFINE_DPM_SCALAR_UPDATE(dpm_scalup,c,t,if_init,tp)
{
#if !RP_HOSTreal body_force_accerlation[3]={0};  //三个方向体积力加速度NV_V(body_force_accerlation,=,tp->source.bf_acc);  //体积力加速度即DPM运动方程中的greal total_drag=tp->source.drag; //drag, 即DPM运动方程中的F_DMessage("body_force_accerlation=[%f,%f,%f],drag=%f,relative Re=%f\n", body_force_accerlation[0],body_force_accerlation[1],body_force_accerlation[2], total_drag,tp->Re);
#endif
}

其中,tp->source.drag提取曳力,即如下Fluent中DPM颗粒运动方程中的

tp->source.bf_acc提取体积力加速度g,结果为带三个方向的矢量。tp->Re提取颗粒相对雷诺数,其定义如下

ρ为连续流体的密度,为颗粒直径, 为颗粒速度,u为连续流体的速度,μ为连续相流体的分子粘度。

借助VC++ UDF Studio探索UDF手册中没有记录的宏相关推荐

  1. Fluent UDF 获取组分传输模型中的摩尔分数或分压力

    很多朋友在开发Fluent模型中需要用UDF获取组分传输模型中的某气体组分的摩尔分数(或体积分数)或者分压力,但是UDF自带的只有获取质量分数的宏C_YI(c,t),需要自己写额外的代码去转换,有一定 ...

  2. 通过 Visual Studio 对 SQL Server 中的存储过程设置断点并进入存储过程对其进行调试...

    通过 Visual Studio 的 Professional 和 Team System 版本,我们可以对 SQL Server 中的存储过程设置断点并进入存储过程对其进行调试,这样我们可以象调试应 ...

  3. Pig自定义过滤UDF和加载UDF

    Pig是一种数据流编程语言,由一系列操作和变换构成,每一个操作或者变换都对输入进行处理,然后产生输出结果,整体操作表示一个数据流.Pig的执行环境将数据流翻译为可执行的内部表示,在Pig内部,这些变换 ...

  4. udf提权 udf.php,UDF提权

    1.什么是udf UDF是mysql的一个拓展接口,UDF(User defined function)可翻译为用户自定义函数,这个是用来拓展Mysql的技术手段.用户可以通过UDF添加自定义函数,在 ...

  5. 10047.GNU Make 使用手册中译版(转)

    http://blog.chinaunix.net/resserver.php?blogId=2652&resource=gunmake.htm GNU Make 使用手册(中译版) 翻译:于 ...

  6. udf开发入门(python udf、hive udf)

    开发前的声明         udf开发是在数据分析的时候如果内置的函数解析不了的情况下去做的开发,比方说你只想拆分一个字段,拼接一个字段之类的,就不要去搞udf了,这种基本的需求自带函数完全支持,具 ...

  7. 用计算机算方程近似值,借助CASIO图形计算器探索方程近似解的求解

    借助 CASIO 图形计算器探索方程近似解的求解 高建彪 (广东省中山市东升高中) 摘要:高中数学新课程标准新增了用二分法求方程近似解这一内容,重在初步理解 二分法的原理, 若要深入透彻地研究方程近似 ...

  8. LPS25HB 气压计 参考手册中关于FIFO功能的解读

    文章目录 LPS25HB 气压计 参考手册中关于FIFO功能的解读 FIFO 普通模式 FIFO Stream 模式 Stream-to-FIFO 模式 Bypass-to-Stream 模式 FIF ...

  9. matlab中存档算法代码,MATLAB 智能算法超级学习手册中程序代码

    [实例简介] MATLAB 智能算法超级学习手册中程序代码 [实例截图] [核心代码] dc90ef43-7920-434e-bdb8-0636c31c0b44 └── MATLAB 智能算法超级学习 ...

最新文章

  1. 【洛谷p1313】计算系数
  2. Spring Boot 使用slf4j+logback记录日志配置
  3. python解析dom,关于Python解析xml dom的简单应用
  4. NLP --- 产生式模型VS判别式模型
  5. oracle关闭和,ORACLE启动和关闭
  6. 智慧校园的关键技术:云计算+物联网+大数据
  7. 机器视觉培训教程-硬件选型
  8. Build/Launch EDKII emulator in Windows and Linux:编译/运行Windows和Linux环境下EDKII模拟器[4]
  9. 小白多久可以学会python?
  10. astar不能用了_截图快捷键,手把手教你截屏快捷键Ctrl+Alt+A不能用了怎么办
  11. c语言二级常考算法大全,二级C语言 常用算法.doc
  12. linux如何设置Java环境变量呢?
  13. php显示图片的广告,CBA各队第三阶段转会交易评级:辽宁北京拿A级,广东位列倒数...
  14. 通讯协议,网络通讯协议基本原理透析
  15. 重温数据结构:理解 B 树、B+ 树特点及使用场景
  16. python黑色星期五_使用Python进行黑色星期五的相关性分析
  17. PCTI8戴杨明同学在try2u.com【附上海试优网简介】
  18. 爱立信语言交换机eMG800ucp使用方法
  19. phpmyadminV4.8.1本地文件包含漏洞复现
  20. XMPP中文 XEP-0030:服务发现

热门文章

  1. jd是什么职位(Jd是什么职位的简称)
  2. 计算机教育及课程总结报告,信息技术教学工作总结范文
  3. 「Adobe国际认证」 Adobe Illustrator徽标设计
  4. 数据分析用Python的Pandas模块读写Excel数据及一些实用的变换、排序、筛选、清洗、列拆分、表合并及相关的坑
  5. [SPC]生产统计过程控制二
  6. 分布式事务之Seata常见异常
  7. [附源码]计算机毕业设计Python四川景区管理系统(程序+源码+LW文档)
  8. 网卡配置/etc/network/interfaces中的内容解释
  9. 汉图科技XPrint极印手机照片打印机发布
  10. Qt:5.7虚拟键盘中拼音输入法的使用