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的方式我们在知道某点运动规 ...
随机推荐
- 转载:mysql添加用户、删除用户、授权、修改密码
mysql添加用户.删除用户.授权.修改密码等 MySql中添加用户,新建数据库,用户授权,删除用户,修改密码1.新建用户. //登录MYSQL @>mysql -u root -p @> ...
- TL Cop
第一讲 研发技术型人才的特点 一.为何要重视技术与研发技术管理 1.中国技术型企业近十年的发展路线图以及经验教训 2.技术还是营销:中国企业的痛 3.名家论技术与研发技术管理 二.研发技术人才的特点 ...
- android布局layout中的一些属性
1.可以使某些资源文件或UI组件可重用 <include layout="@layout/other"/> 2.定义一个文本编辑框,使用绝对定位 android: ...
- Axure快速原型教程02--创建页面和设置界面
目录 Axure快速原型教程02--创建页面和设置界面 Axure快速原型教程01--原型说明下载和安装 首先,在左侧的面板中,我们发现有一个叫sitemap的面板,这个面板就是我们的一个个的页面了, ...
- 简单原始的ASP.NET WEBFORM中多文件上传【参考其他资料修改】
首先是ASPX页面中添加file标签 <input onclick="addFile()" type="button" value="增加&qu ...
- 【LeetCode】215. Kth Largest Element in an Array (2 solutions)
Kth Largest Element in an Array Find the kth largest element in an unsorted array. Note that it is t ...
- Intel Galileo驱动单总线设备(DHT11\DHT22)(转)
Intel Galileo一代的IO翻转速度不够,无法直接驱动单总线设备,二代听说改进了,但没有库,于是国外开发者想出了另一种法子,转过来给大家学习下.如果后面有时间,再来翻译.原文地址:http:/ ...
- 【Struts2】SSH如何返回JSON数据
在开发中我们经常遇到客户端和后台数据的交互,使用比较多的就是json格式了.在这里以简单的Demo总结两种ssh返回Json格式的数据 项目目录如下 主要是看 上图选择的部分 WebRoot里面就 ...
- Spring Cloud问题分析
基于Spring Cloud框架开发时,经常会碰到各种开发问题,那么碰到这些问题时如何去解决呢?下面描述基于Spring Cloud问题定位的基本思路,大概可以分为如下几步: 排查配置问题 环境问题 ...
- MySQL的timestamp类型自动更新问题
今天建了一个表,里面有一个列是timestamp类型,我本意是在数据更新时,这个字段的时间能自动更新.岂知对这个类型的值还不甚了解,导致出错.发现这个字段只是在这行数据建立的时候有值,在更新的却无变化 ...