Fluent UDF【1】:简介
前面基本完成了动网格专题的发布,不过还是有一些内容并没有更新进去,比如说in-cylinder、接触检测、2.5D网格重构等。不过这些都是小技巧,写起来挺麻烦,以后有时间再通过案例视频的方式讲解好了。从今天开始最近一段时间准备发布Fluent UDF的一些内容。
关于UDF
UDF并不是什么神秘的东西,然而在地球人的眼中,凡是与编程相关的工作,总是认为有点儿高大上罢了。其实UDF程序的编写绝对只是个体力活儿。
Fluent是一个通用软件。所谓的通用软件,意思就是说啥事儿都能做。能做流动,能做传热,能做化学反应,能做多相流,貌似与NS相关的内容都能做。然而,无所不能往往也意味着不甚精通。软件为了满足其通用性,无疑在各种参数的选取上偏于保守,比如说各种求解算法、各种模型参数,为了保证其收敛性和鲁棒性,必然会存在舍弃精度的做法。因此,通用的软件常常难以满足高级人士的计算需求。
作为商用软件,Fluent自然不愿意损失这些高级用户,因此软件给高级用户开了一扇窗口,允许用户根据自己的需求对软件进行一定程度的定制。因此就有了我们这里所说的UDF。
UDF(User Defined Functions,用户自定义功能),采用C语言进行编写,可以采用编译或解释的方式加载到Fluent中,利用UDF可以对Fluent计算过程中的一些模型参数或计算流程进行控制。
从哪儿开始?
要使用UDF,该如何入手?
Fluent帮助文档中提供了较为详尽的UDF使用方法,包含了绝大多数宏的使用描述(其实还有一部分宏并没有出现在文档中,亲们可以通过研读代码中的注释来使用这些用,见udf.h文件)。在编写UDF的过程中,UDF手册是必不可少的文档。
实际上UDF的应用过程是这样的:
- 发现需要使用UDF。Fluent毕竟是一款成熟的商用软件,大多数情况下,利用GUI就能够满足我们的计算要求。只有当我们确信Fluent的GUI并不具备某项功能,而利用UDF可以满足此要求时,才开始着手编写UDF。记住:能用GUI实现的功能,就不要用UDF去做。人家Fluent说了,不对UDF的正确性负责,他们只负责UDF与Fluent的通讯功能。能不能用UDF实现某项功能,需要翻越Fluent帮助文档。
- 编写UDF文件。这部分工作应该是UDF的核心工作。作为一个计算机程序,UDF同样有输入和输出。在翻越UDF手册的时候,搞清楚宏文件中哪些参数是输入,哪些参数是输出。最简单的方式就是直接套用UDF手册中的示例程序,在其基础基础上进行修改。
- 配置UDF环境。这部分工作实际上相当的简单。只不过在windows环境下需要安装Visual Studio,在Linux环境下需要配置GCC。需要注意在安装Visual Studio的时候一定要选择安装C++,否则不会安装c编译器。
- 在Fluent中加载UDF。加载的方式可以是解释,也可以是编译。通常解释型的程序调用要比编译型的慢,因此一些计算密集的场合,建议使用编译型。
需要的C语言知识
编写UDF使用的是C语言,我们是不是需要先学习C语言?
了解C语言是必要的,但并不需要非常精通C语言。UDF宏的编写实际上只是应用了C语言很少的一部分,但是对C语言的越熟悉,当然写起UDF来自然要更轻松一些。如果对C语言一无所知的话,至少需要看看以下的内容:
- C语言的语法结构。包括变量定义方式、条件结构、循环结构、函数定义等。
- C语言的数据结构。最需要了解是数组和指针。另外还需要了解函数参数传值与传址,否则很多的UDF宏你都搞不清楚数据怎么就能传递给Fluent。
这些基础知识后面会介绍。
要坚信UDF并没有想象中那么难,其实也没有想象中的那么高大上。
更多CFD资料可微信扫描下方二维码关注微信公众号。

Fluent UDF【1】:简介的更多相关文章
- Fluent UDF【4】:C语言
Fluent UDF利用的是C语言,本文简单介绍在UDF中经常会用到的C语言常识. 本文部分内容来自UDF手册. 1 C语言中的注释 C语言中的注释利用/*及*/来实现.例如: /*这是一个注释*/ ...
- Fluent UDF【2】:学习途径
要怎样做才能做到无畏惧编写任何UDF程序?估计很多与UDF打交道的人都会问到这个问题. 面对UDF文档中那众多的宏描述,小伙伴们是不是感觉到茫然无措,不知从何入手.有时候读别人写好的程序感觉并不难,然 ...
- 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的方式我们在知道某点运动规 ...
随机推荐
- php Socket模拟表单上传文件函数_学习
模拟上传文件的php代码 里面访问地址.主机.上传文件名.内容.分隔符可以修改 function postFile($file) { $clf = "\r\n"; ...
- 51单片机和Arduino—闪烁灯实现
技术:51单片机学习.Keil4环境安装.Arduino环境安装.闪烁灯教程 概述 本文提供51单片机.Arduino单片机入门软件安装和一些需要使用的软件介绍,为后续单片机.嵌入式开发做 ...
- 【laravel5.*】运行 php artisan --version报错:PHP Parse error: syntax error, unexpected T_CLASS, expecting T_STRING or T_VARIABLE or '$' in /www/web/crm/artisan on line 31
1. 出现以上问题 是因为 php版本低于5.6, 因为我系统原有的默认php是5.3,装laravel的php是指定的5.6.21版本,所以在执行 laravel对应的php artisan . p ...
- 【CAS单点登录视频教程】 第05集 -- CAS服务器安装
第一步: 下载cas 服务器 cas-server-3.5.2-release.zip 目录 ----------------------------------------- [CAS单点登录视频教 ...
- spring依赖注入之手工装配
2010-09-05 在spring中手工装配依赖对象,可以有两种方式: 1,在spring配置文件中,通过bean节点下配置,比如: <bean id="service" ...
- 【NotePade++】NotePade++如何直接编译运行java文件
安装Notepad++和JDK(略): Notepad++的菜单栏:插件->Plugin Manager->Show Plugin Manager,Available中勾选NppExec, ...
- Spring MVC freemarker使用
什么是 FreeMarker? FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具. 它不是面向最终用 ...
- 基于matplotlib的数据可视化 -
matplotlib.pyplot(as mp or as plt)提供基于python语言的绘图函数 引用方式: import matplotlib.pyplot as mp / as plt 本章 ...
- PHP与MYSQL中UTF8 中文排序例子
1. 需要在php数组中用中文排序,但是一般使用utf8格式的文件,直接用asort排序不行.用gbk和gb2312可以.这跟几种格式的编码有关系.gbk和gb2312本身的编码就是用拼音排序的. 代 ...
- 安卓listview滚动时背景变黑的解决方法
ListView是常用的显示控件,默认背景是和系统窗口一样的透明色,如果给ListView加上背景图片,或者背景颜色时,滚动时listView会黑掉, 原因是,滚动时,列表里面的view重绘时,用的依 ...