Fluent UDF【1】:简介

Fluent UDF【1】:简介前面基本完成了动网格专题的发布,不过还是有一些内容并没有更新进去,比如说incylinder、接触检测、2.5D网格重构等。不过这些都是小技巧,写起来挺麻烦,以后有时间再通过案例视频的方式讲解好了。

大家好,又见面了,我是你们的朋友全栈君。

前面基本完成了动网格专题的发布,不过还是有一些内容并没有更新进去,比如说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资料可微信扫描下方二维码关注微信公众号。

微信扫码关注公众号

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/155239.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 广告平台精准推送系统解决方案架构「建议收藏」

    广告平台精准推送系统解决方案架构「建议收藏」以上就是广告精准推送的一个架构图。广告联盟是由多家广告提供商提供形成的一个组织,提供了多个平台的收集到的数据进行整合,数据的分析、清理,计算、统计等,提供向需要投放广告的广告主提供了一个投放系统平台。当用户进入门户网站或者app时,不同的用户看到的是不同的广告,广告联盟的系统计算出了不同用户或者用户群体的不同需求,通过广告推荐引擎系统和数据仓库中的统计数据以及用户的需求,展示给对应需求的用户观看,…

    2022年10月5日
    1
  • 如何更改pycharm项目路径_怎么修改pycharm文件路径

    如何更改pycharm项目路径_怎么修改pycharm文件路径pycharm中更改python安装路径前言有时python安装的路径不太合适需要重新安装python,如果之前已经安装过pycharm,那么新装python路径发生改变就会使pycharm无法正常使用,需要更改pycharm配置。本文就是记录下pycharm中如何更改python路径。操作方法点击file->Setting依次点击上图按钮选择python新更改的安装路径即可…

    2022年8月28日
    2
  • 如何定制zencart模板「建议收藏」

    如何定制zencart模板「建议收藏」很多用户对zencart做了自己的修改,非常好!但同时,一些用户修改了很多重要的文件,例如:/includes/filenames.php/includes/languages/schinese.php/includes/languages/schinese/*.php等等…友情提示:如果你希望以后的升级更容易,不要修改这些文件!ZenCart的文件替代机制的功

    2022年7月27日
    7
  • beanCopier_cerdip封装

    beanCopier_cerdip封装BeanCopier封装

    2025年9月15日
    5
  • struts中的action_type object has no attribute

    struts中的action_type object has no attribute在Strust2中,有一个内置对象叫ActionContext,通过该对象可以获得之前Servlet中的对象,比如:requst对象,response对象…那么为什么可以通过ActionContext获得那些对象呢?那是因为在ActionContext内容引用了那些对象,也就是在ActionContext内部记录了那些对象的地址,看下图上图就是简单理解为什么通过Action

    2022年9月10日
    2
  • 程序员python表白代码[通俗易懂]

    程序员python表白代码[通俗易懂]python表白代码源代码如下:#-*-coding:utf-8-*-importturtleimporttime#画爱心的顶部defLittleHeart():foriinrange(200):turtle.right(1)turtle.forward(2)#输入表白的语句,默认ILoveyoulove…

    2022年6月2日
    140

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号