Fluent UDF【2】:学习途径
要怎样做才能做到无畏惧编写任何UDF程序?估计很多与UDF打交道的人都会问到这个问题。
面对UDF文档中那众多的宏描述,小伙伴们是不是感觉到茫然无措,不知从何入手。有时候读别人写好的程序感觉并不难,然而自己写的时候总是感觉不对劲。
我们今天就来聊聊UDF到底该怎么学。
关于C语言
Fluent UDF使用C语言,因此要想熟练使用UDF的话,掌握基本的C语言是很有必要的。
市面上C语言的书籍很多,其中有很多的经典教材。然而几乎每一本C语言的书籍都很厚,里面涉及的内容非常的多,如果不是专门搞程序设计的话,想要精通C语言,势必需要花费大量的时间。推荐看一些经典的C语言教材。如下面这本。

其实UDF只是利用了C语言很少的一部分,我们利用UDF,只需要掌握C语言的最核心的内容,包括:
- 基本语法:语法重要性自然不用多说。UDF采用C语言进行编写,自然必须符合C语言基本语法习惯,否则解释和编译都难以通过。C语言的语法很多,可以找一本经典C语言书籍,照着写一两个程序基本就熟悉了。
- 控制结构:包括逻辑控制、循环控制等。虽然说UDF中的控制形式有特别的宏来完成,然而掌握C语言的控制结构更有助于理解UDF中的各种稀奇古怪的循环结构。
- 数组与指针:这个需要重点理解,在UDF中有很多的内置变量类型是数组或指针,不理解的话后面写程序会抓破脑袋。指针也是C语言的特色。
- 函数与宏:搞清楚C语言函数传值调用与传址调用的区别。尤其是搞明白传址调用,在UDF宏中,好多的传址调用。弄清楚C语言宏定义的方式,这个稍加注意就能够看懂。 
 其他的也没什么需要去关注的了。- 关于UDF代码编写- UDF文件可以用任何文本编辑器编写,记事本、写字板都可以。当然如果想要有语法高亮效果的话,可以找一些专业的编辑器。像免费的Notepad++,Atom等,还有其他的要钱的软件如ultraEdit,EditPlus、Sublime text等,都是非常不错的选择。 
 该如何编写呢?Fluent提供了大量的UDF宏,单单帮助文档里头就有好几百个,当然如果你记忆力超群能够把这些宏的用法全都记住,自然是很不错的。但是大多数人估计是记不住的,幸好UDF手册写得很详细,各种宏的用途及其程序实例都很齐全。因此在实际的代码编写过程中,最简单的做法是根据UDF手册中各种程序实例改写自己的程序代码。- UDF的数据操作- UDF的本质工作还是操纵数据,这是所有计算机程序的共性。 
 那么问题来了。操纵什么数据?数据从哪里来?数据修改之后往哪里去?
 很多人觉得UDF难写,其实是没搞清楚上面的三个问题。
- 操纵什么数据?这个是最难的,需要些什么数据,这个问不了别人,只有自己才清楚。这里要说的是,当你把要修改的模型数据拿出来之后,需要将其转化为用基本物理量进行表达。我们可以通过查询UDF手册,看看那些数据获取宏能够得到哪些数据。
- 数据从哪里来?有一些数据是通过宏直接获取得到,我们姑且将其称之为基础数据,如要获取压力,单元的压力可以用C_P宏获取,面压力可以用F_P获取。而有些数据则没办法直接通过宏得到,此时我们需要利用基础数据进行代数运算来得到这些值。
- 数据往哪里去?操纵完毕的数据自然是要返回给Fluent。令人迷惑的是返回的形式,有些宏采用显式方式返回,例如在DEFINE_PROFILE宏中,采用F_PROFILE宏返回数据给Fluent。而有些宏则没有这些显式的返回形式。此时要仔细查阅UDF手册中关于宏的描述。还有一些传址调用也能返回数据。 
 其实只要搞清楚了这三个问题,UDF并不是什么很难的东西。- 总结- 对于UDF程序的编写工作,总的来说需要注意: 
- UDF手册是最主要的参考文档。
- UDF的核心工作在于数据处理。 
更多CFD资料可微信扫描下方二维码关注微信公众号。

Fluent UDF【2】:学习途径的更多相关文章
- Fluent UDF【1】:简介
		前面基本完成了动网格专题的发布,不过还是有一些内容并没有更新进去,比如说in-cylinder.接触检测.2.5D网格重构等.不过这些都是小技巧,写起来挺麻烦,以后有时间再通过案例视频的方式讲解好了. ... 
- Fluent UDF【4】:C语言
		Fluent UDF利用的是C语言,本文简单介绍在UDF中经常会用到的C语言常识. 本文部分内容来自UDF手册. 1 C语言中的注释 C语言中的注释利用/*及*/来实现.例如: /*这是一个注释*/ ... 
- Fluent UDF【8】:编译型UDF
		UDF除了可以以解释的方式外,其还可以以编译的方式被Fluent加载.解释型UDF只能使用部分C语言功能,而编译型UDF则可以全面使用C语言的所有功能. 1 编译型UDF介绍 编译型UDF的构建方式与 ... 
- Fluent UDF【7】:解释型UDF
		UDF宏有两种方式可以被Fluent所接受:编译和解释.其中有一些宏既可以被解释也可以被编译,而一些宏则只能被解释.有一些场合只接受编译后的UDF(如动网格中的一些宏),而有些场合既可以接受编译的UD ... 
- Fluent UDF【6】:预处理命令
		今天要讲的内容是关于C语言的预处理.搞清楚了这个,就可以分析UDF中的各种头文件源代码,从此写UDF不求人. 1 关于预处理 在UDF的各种头文件中(文件路径D:\Program Files\ANSY ... 
- Fluent UDF【5】:第一个UDF
		这里以一个简单的初始化案例来描述UDF的使用过程. 0 Fluent中的Patch Fluent中提供了全域初始化以及局部Patch功能.对于整体区域的全局初始化可以采用starndard及hybri ... 
- Fluent UDF【3】:环境配置
		windows操作系统下UDF的编译需要借助Visual Studio中的C编译器.因此若要想编译UDF,则必须事先配置好编译环境. Visual Studio Visual Stuido(后面简称V ... 
- Serial Fluent UDF  on Windows
		test test Table of Contents 1. Serial UDF on Windows OS 1 Serial UDF on Windows OS Note: Udf has to ... 
- Fluent——UDF监测指定点的物理量
		Fluent版本:19.0 Fluent当中提供了监测某一点物理量随迭代次数或者随时间变化的功能,下面我们就介绍如何在UDF当中实现相同的功能,并且UDF更加灵活,通过UDF的方式我们在知道某点运动规 ... 
随机推荐
- 利用JQuery 来操作 ListBox和ListBox内移动
			[导读]利用jquery 来操作 listbox和listbox内移动function listbox_move(listfrom,listto) { var size = $(" &quo ... 
- awbeci—一个帮助你快速处理日常工作的网址收集网站
			大家好,我是awbeci作者,awbeci网站是一个能够快速处理日常工作的网址收集网站,为什么这样说呢?下面我将为大家介绍这个网站的由来,以及设计它的初衷和如何使用以及对未来的展望和计划,以及bug反 ... 
- Utils--封装好的下载图片的方法
			/** * 封装下载图片方法 * @param url 下载地址 * @param filename * @return 下载成功为true */ public boolean downfile(St ... 
- [转载]eclipse的远程调试功能配置
			原文地址:eclipse的远程调试功能配置作者:我的 用途:web应用部署并运行于外部(区别于eclipse环境中启动的)应用服务器中,当出现问题时,可以使用eclipse工程的源代码进行跟踪调试. ... 
- CocoaAsyncSocket UDP发送数据超过包大小限制(Message too long)
			最近在做iOS上,基于UDP传输音视频时遇到的一个问题,这边纪录一下: 由于考虑实时性比较高,所以采用了 CocoaAsyncSocket 的UDP框架来实现,将视频切割成一帧帧的图片发给服务端,不过 ... 
- 事务的四个属性ACID
			事务四大特征:原子性,一致性,隔离性和持久性. 1. 原子性(Atomicity) 一个原子事务要么完整执行,要么干脆不执行.这意味着,工作单元中的每项任务都必须正确执行.如果有任一任务执行失败,则整 ... 
- HanLP自定义词典注意事项
			对于词典,直接加载文本会很慢,所以HanLP对于文本文件做了一些预处理,生成了后缀名为.txt.bin的二进制文件. 这些二进制文件相当于缓存,避免了每次加载去读取多个文件. 通过这种txt和bin结 ... 
- Raspberry pi 使用python+pySerial实现串口通信(转)
			Raspberry pi 使用python+pySerial实现串口通信 转:http://blog.csdn.net/homeway999/article/details/8642353 目录( ... 
- 使用ant优化android项目编译速度,提高工作效率
			1.Android项目编译周期长,编译项目命令取消困难 2.在进行Android项目的编译的同时,Eclipse锁定工作区不能进行修改操作 3.在只进行资源文件的修改时,Eclipse对资源文件的修改 ... 
- Mac 下查看网络端口占用情况
			1.Mac 下查看网络端口占用情况 有的时候关闭了服务器,但是端口还是占用,解决的方法是 kill 掉占用该端口的进程. # 查看 8009 端口的占用情况 $ lsof -i:8009 可以看到,该 ... 
