自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 Fluent UDF中调用Matlab的微分方程求解函数

5. 把自带的matlab函数文件MatlabAdd.m改名为MatlabOdeSolve.m,另外一个自动生成的文件MatlabFunctionTester.m是用来在Matlab中测试调试函数文件用的,下一步会介绍用法,这一步不用管。4. 打开桌面图标,选择需要的版本并勾选“调用Matlab”和“动态链接”后点“确定”会自动启动Fluent,读入case并点击Fluent嵌入菜单中的“Start Visual Studio”子菜单。(需要说明一下,“动态链接”只有注册版才能使用,试用版中处于禁用状态)

2023-12-16 21:21:38 1035

原创 Fluent UDF中调用变量的梯度及其注意点

Fluent UDF中有时候需要调用变量的梯度,例如温度梯度,压力梯度,VOF梯度等等,一般是在C_T,C_P,C_VOF后面加上“_G”来获取,例如C_T_G,C_VOF_G。看似简单,实际上里面有比较多的“坑”,现以如下实例来提请各位看官注意。

2022-12-01 22:53:55 5208 1

原创 利用VC++UDFStudio插件编译和使用真实气体模型(UDRGM)及踩过的大坑

当时,使用的Fluent版本为2020R1,由于该朋友当时手头只有18.2的UDF手册,于是将手册中如下代码复制到VC++ UDF Studio插件(http://vcudfstudio.github.io)的源代码文件udf_source.cpp中,并点击编译按钮。前阵子帮朋友解决Fluent UDF中的真实气体模型(User Defined Real Gas Model,UDRGM)编译时踩到了一个很大的坑,这里连同详细编译使用过程一起记录一下,供有需求的朋友借鉴。难怪编译老是过不了。

2022-11-29 14:46:27 1539

原创 Fluent UDF中动态调用动态链接库dll

Fluent用户经常会遇到UDF中需要调用已经写好的动态链接库dll,从而拓展UDF功能。一般来说,调用dll可以分为静态调用和动态调用。前者通常需要编译器版本一致,通用性不是非常高,而动态调用则是利用API函数LoadLibrary在需要读取dll中函数前动态加载,更加灵活方便或不受编译器版本限制。我们知道,Fluent自带传统编译方式只能使用纯C语言,无法实现对API函数的调用。想要实现对API函数的调用就只能依靠第三方工具,比如VC++ UDF Studio插件。下面就以VC++ UDF Studio

2022-11-04 21:31:05 1683

原创 Fluent UDF中调用Matlab的贝塞尔函数

有小伙伴咨询在Fluent UDF中如何使用贝塞尔函数,常规情况下需要我们自己去写函数。但我们注意到Matlab提供了丰富的各种运算函数。我们有什么办法把Matlab中的贝塞尔函数给UDF直接调用呢?

2022-10-31 22:07:58 459

原创 Fluent UDF中调用Matlab矩阵运算函数(以二维插值为例)

Fluent UDF中经常需要用到一些常见算法,例如插值、拟合、矩阵运算等等,这些在UDF中是没有现成函数实现的,理论上需要我们自己去写函数。另一方面我们又注意到这些运算恰恰是Matlab的强项,几乎调用一个现成的函数就完成了目的。所以我们有什么办法把Matlab函数给UDF直接调用呢?

2022-10-22 12:58:15 1571

原创 Fluent UDF中直接调用CoolProp物性库

众所周知,Fluent中自带的NIST真实气体(Real Gas Model)模型的收敛性不好一直是用户诟病的问题。所以,不少用户宁愿另外考虑调用三方物性库,例如RefProp或CoolProp,里面囊括了大部分的常见物质,制冷剂以及混合物的物性。然而,Fluent自带的编译方式却无法支持直接调用此类C++库。为了解决这个问题,VC++ UDF Studio插件直接将调用CoolProp函数功能内嵌,实现打开Visual Studio就能直接调用CoolProp函数的能力,适合着急赶项目进度的朋友。

2022-05-26 21:36:31 2979

原创 Fluent UDF中调用Matlab函数(以误差函数erf为例)

Fluent UDF中经常需要用到一些常见算法,例如插值、拟合、矩阵运算等等,这些在UDF中是没有现成函数实现的,理论上需要我们自己去写函数。另一方面我们又注意到这些运算恰恰是Matlab的强项,几乎调用一个现成的函数就完成了目的。所以我们有什么办法把Matlab函数给UDF直接调用呢?这里提供一种借助于VC++ UDF Studio插件实现调用Matlab函数的方法,且编译好以后的UDF库拿到没有安装对应Matlab版本的机器上仍然可以使用。以前硫酸亚铜博客(https://www.cnblogs.c

2022-04-07 20:43:13 2059

原创 Fluent UDF中直接调用math.h中的误差函数erf、erfc

我们知道误差函数定义为这是一个带积分的函数,Fluent UDF中想自己写代码实现起来相当不方便,精度还不一定能保证。幸好C++11中为我们将这个函数内置在数学头文件math.h中,但是想要兼容C++11我们必须使用Visual Studio2013和一款名为VC++ UDF Studio的专业UDF编写调试插件配合。具体过程如下:1.官网下载VC++ UDF Studio插件并安装:VC++ UDF Studio,建议下载学术版(如想进一步采购注册,对高校老师学生比较优惠)2.....

2022-04-07 16:58:55 1600

原创 Fluent UDF中获取残差并达到设定值停止计算

一般计算中,Fluent达到我们设定的残差值后就可以自动停止运算,但是有时候我们可能残差判断标准不一定是恒定的,或者有多款软件之间来回协同计算,那么就必须在Fluent UDF中判断残差标准是否达到然后停止计算,后面再进行其它UDF操作。我们知道,通常情况下开始迭代后,要停止计算只能按“Stop”按钮或者键入Ctrl+C组合键。这要改成在UDF中实现迭代停止就非常有难度了。那么我们是否可以改一种思路呢?我们可以利用Execute_At_End宏在每次迭代(或时间步)结束时候判断是否满足残差标准,如果

2022-03-20 17:20:55 4771

原创 Fluent UDF中沿指定方向获取邻接网格

有朋友在VC++UDF Studio插件群里问Fluent UDF有没有宏可以沿着指定方向搜索到下一个邻接的网格?答案是No,没有现成的宏可以实现这个目的,但是我们可以写一个函数来手动实现。这个思路如下:对于当前的网格,我们可以利用c_face_loop宏配合C_FACE及C_FACE_THREAD宏,对当前网格的所有face进行循环,例如下图中的当前网格循环会有0,1,2,3四个face。然后我们再利用F_C0分别取这四个face的c0,将c0与当前网格比较,如果c0就是当前网格,那么邻接网格就是c1,反

2022-03-09 17:32:22 3832 2

原创 Fluent真串行假串行的问题 (学UDF前须知)

这个题目听了很多人可能有点懵圈,但一旦你涉及Fluent UDF编程就需要深入了解了。首先看一下下图中真串行和并行的差别,可以看到真串行是一个独立的计算模块,负责所有网格的单独计算,相当于自己管自己的“独行侠”,而并行则是网格剖分成若干个分区计算节点(图中举例是3个核并行计算),网格的计算都在这些分区节点上计算,然后另外多出一个host的协调模块,负责各个分区节点数据交换以及与图形界面沟通的协调工作。网上以前有个形象的比喻,分区节点类似于各个学生,专门做作业,host相当于布置作业的班主任,负责收集作业,协

2022-03-09 17:28:17 2903

原创 Fluent UDF中判断壁面热边界类型

我们知道Fluent中壁面可以有不同的换热边界类型,比如给定热流量的类型,给定温度的类型,给定对流条件的类型等等。UDF中有时候需要根据类型的不同来进行不同的处理。那么在Fluent UDF中该如何判断一个壁面是什么类型的热边界呢?这里为大家解密几个未写入UDF帮助手册的宏。 宏 作用 HEAT_FLUX_WALL(Thread*tf) 判断是否是给定热流量的边界 TEMPERATURE_......

2022-03-06 22:01:53 2332

原创 借助VC++ UDF Studio探索UDF手册中没有记录的宏

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

2022-03-06 15:13:44 1917 3

原创 获取内部面几何拓扑结构(调用INTERIOR_FACE_GEOMETRY)的例子

如下图所示,等边三角形的网格单元为c0, 蓝色的网格单元为c1。两者的中心分别为ϕ0和ϕ1。网格单元c0和c1共享一个面f,如下的二维图中即为线段ab。INTERIOR_FACE_GEOMETRY宏就是用来获取关键的网格单元之间连接几何信息的。要调用该宏,首先必须加入头文件“sg.h”。INTERIOR_FACE_GEOMETRY宏的参数定义如下:以下是一个例子,用来获取网格c0到c1的矢量(采用VC++ UDF Studio插件编译通过)。#include "udf.h"exter.

2022-03-05 15:42:42 793 1

原创 利用VC++ UDF Studio编译并单步调试Fluent UDF(解决fl process could not be started错误)

Fluent调试UDF向来是一件麻烦的事情,既看不到中间变量的值,也不能一步一步跟踪程序,尤其是编译通过但出现莫名其妙错误时候更是令人郁闷。例如下面令人胆战心惊的红字“fl could not be started”提示基本就意味着你的UDF存在错误导致Fluent奔溃,需要单步跟踪调试排错了。以前调试一般只有通过Message来将关心的中间变量值打印到前台才能逐步了解UDF源程序内部的运行过程,找出错误,但这样做法相当麻烦,每次要改了重新编译来回翻找,而且容易一下子打印满屏信息,根本无法知道执行.

2022-02-27 12:23:55 8873 2

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

很多朋友在开发Fluent模型中需要用UDF获取组分传输模型中的某气体组分的摩尔分数(或体积分数)或者分压力,但是UDF自带的只有获取质量分数的宏C_YI(c,t),需要自己写额外的代码去转换,有一定难度。已经不止一次看到论坛或者我们UDF编译调试插件群里的朋友问起这个问题,这里做个标准教程记录下来,希望对大家有用。总体来说,有两种方法,一种是利用内置的函数来转换,另外一种就是自己写代码转换,这里逐一介绍。1. 利用内置函数转换内置转换方法参考了Fluent官方解决方案,稍微作了一些修改,并加了

2022-02-27 11:50:53 7495 5

原创 Fluent UDF 根据给定点坐标获取cell

很多朋友在开发Fluent模型中需要根据点的坐标来查找对应的cell。总体来说,有两种方法,一种是利用内置的函数来查找,另外一种就是自己写代码查找,这里逐一介绍。1.利用内置函数查找Fluent有一个内置函数CX_Find_Cell_With_Point可以根据点坐标查询对应cell号码。原型声明如下,注意不同Fluent版本中参数有所变化。CX_Cell_Id *CX_Find_Cell_With_Point(float v[3]); // 对于Fluent version 6.3~12.

2022-02-27 10:50:04 5652 3

原创 Fluent UDF中使用随机函数

如下给出了调用C语言或Fluent中自带随机函数的例子。利用VC++ UDF Studio插件编译通过。//利用VC++ UDF Studio插件编译通过#include "udf.h" #include "stdio.h"#include "time.h"extern "C"{ #include "random.h"};real gaussrand(){ static double U, V; static int phase = 0; real Z; if(pha

2022-02-27 10:33:07 1528 1

原创 Fluent UDF中根据zone的名字获取ID

Fluent UDF中根据zone的名字获取IDFluent UDF中经常用到thread*类型的指针,一般可以通过如下函数来获取。Lookup_Thread(Domain*domain, int id)其中id是边界面的ID或者cell区域的ID,如下图中outlet边界的ID是2。遗憾的是,网格载入Fluent后,其ID都是无法事先不确定的。很多朋友只有在UDF源码开头用如下代码根据事后查到的ID手动定义,每次网格一变化又得重新在源码里面修改,重新编译,十分影响通用性。#.

2022-02-12 15:06:54 5265

原创 Fluent UDF中使用智能动态数组

Fluent UDF中使用智能动态数组Fluent UDF中要使用动态数组在传统编译方法中只能使用纯C语言中的malloc函数。此函数无法自动释放内存,必须手动调用free函数来释放,否则就会造成内存泄漏问题。要想使用智能动态释放的数组,就必须将UDF语法拓展到C++语言,调用C++内置的智能动态数组vector支持。这里我们借助VC++ UDF Studio的插件来实现对智能动态数组的调用。例如下面例子实现将入口面的压力和温度存入动态数组,然后再将存储的压力值赋值给出口。#include "u

2022-02-07 16:09:28 1401

原创 利用VC++UdfStudio插件免配置环境直接编译UDF

搭建Fluent UDF编译环境向来是初学者头痛的问题。没有经验的朋友经常遇到类似’nmake’相关错误,”not compiled for parallel use on current platform”错误提示,甚至乱码等等问题,这些大多是由于编译环境正确配置导致的。网上充满了各种各样的教程,大多年代久远,且与版本密切关联,不一定适用于新版本,从而产生误导。这里介绍一个名叫VC++ UDF Studio的插件进行编译UDF的方法,可以供不会配置环境的初学者选择,安装完即可直接在Visual Studi

2022-01-22 14:09:52 2926 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除