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

这里提供一种借助于VC++ UDF Studio插件 (https://vcudfstudio.github.io)实现调用Matlab函数的方法,且编译好以后的UDF库拿到没有安装对应Matlab版本的机器上仍然可以使用。以前硫酸亚铜博客(https://www.cnblogs.com/liusuanyatong/p/12128082.html)提供的方法是依赖于Matlab运行库,编译好的UDF库如果拿到没有安装相应Matlab版本机器上是没法运行的。

下面我们以调用Matlab中的erf误差函数为例来说明整个使用过程。

1. 官网下载VC++ UDF Studio插件并安装,建议下载学术版(如想进一步采购注册,对高校老师学生比较优惠)

2. 安装Visual Studio(支持VS2008SP1~2013专业或旗舰版,建议安装VS2010旗舰版), C++和C#一起安装,对于64位Fluent还要勾选X64编译器。

3. 安装Matlab 2014a ~ 2021b任一版本,必须勾选Matlab Coder,其它视自己喜好安装。

4. 管理员权限打开桌面图标,选择需要的版本并勾选“调用Matlab”后会自动启动Fluent,读入case并点击Fluent嵌入菜单中的“Start Visual Studio”子菜单。

  

5. 把自带的matlab函数文件MatlabAdd.m改名为MatlabErf.m,另外一个自动生成的文件MatlabFunctionTester.m是用来在Matlab中测试调试函数文件用的,这里可以不用管。然后双击打开编辑MatlabErf.m,输入以下自定义Matlab函数体。因为这个函数很简单,肯定正确,所以不需要利用MatlabFunctionTester.m来调试它。

function [out]= MatlabErf(in)out = erf(in)
end

6. 点击工具栏上“将.m文件转为cpp”按钮,输入参数“in”设为float类型,矩阵不需要设置,然后点击“确定”开始转换。

7. 等待片刻,转换完成后,会自动将对应的转换得到的C++头文件MatlabLibrary.h加入到UDF工程中。

8. 在udf_source.cpp文件中输入如下示例源代码,并点击“编译UDF”按钮直到编译通过。有任何错误提示,可以双击提示行直接定位到源码中的错误行。编译通过后按“UDF库加载到Fluent”按钮即可载入到Fluent中。

#include "udf.h"
#include "MatlabLibrary.h" //调用Matlab函数声明的头文件
DEFINE_ON_DEMAND(testMatlab)
{// 调用Matlab中Erf函数real MatErf = MatlabErf(1.0);Message0("Matlab Erf(1.0)=%g\n", MatErf);
}

9. 执行DEFINE宏,本例由于erf函数放在DEFINE_ON_DEMAND宏中,所以在Execute On Demand对话框里面手动执行。

10. 运行结果如下,结果是正确的。

Fluent UDF中调用Matlab函数(以误差函数erf为例)相关推荐

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

    Fluent UDF中经常需要用到一些常见算法,例如插值.拟合.矩阵运算等等,这些在UDF中是没有现成函数实现的,理论上需要我们自己去写函数.另一方面我们又注意到这些运算恰恰是Matlab的强项,几乎 ...

  2. C/C++ VS中调用matlab函数的方法

    C/C++ VS中调用matlab函数的方法 [尊重原创,转载请注明出处] http://blog.csdn.net/guyuealian/article/details/73743654 Matla ...

  3. Fluent UDF中调用变量的梯度及其注意点

    Fluent UDF中有时候需要调用变量的梯度,例如温度梯度,压力梯度,VOF梯度等等,一般是在C_T,C_P,C_VOF后面加上"_G"来获取,例如C_T_G,C_VOF_G.看 ...

  4. 关于python文件中调用matlab函数的打包问题

    1.首先说明python如何调用matlab函数的? 这里我参考的是这篇文章:(3条消息) pythonGUI调用matlab并打包成可执行文件的解决方法_白金之星1717的博客-CSDN博客_pyt ...

  5. linux平台下通过mcr方式从c++程序中调用matlab函数

    小细节很多,所以容易出错. 平台:linux gcc matlab2010a 1 在matlab中写好函数例如branch,调用命令 mcc -W cpplib:libbranch -T link:l ...

  6. 【Matlab】在Java中调用matlab函数

    考虑到计算的各种情况,有些用Java代码实现的计算难免会显得不够高效.而利用MATLAB写好相应的计算函数,然后打包成jar包供Java调用,在某些情况下会更加方便.现在就来说一下如何实现这一过程: ...

  7. 一文实现:在python中调用matlab程序,保姆级安装windows环境下的matlab.engine教程

    一.前言   我最近在做一个基于图像融合的目标检测工程,我经常用matlab去研究和创新新型的图像融合算法,因为matlab有着python所不可比拟的数据可视化功能和大量的滤波分解框架包:在目标检测 ...

  8. C++ MATLAB 混合编程——VS项目调用MATLAB函数

    引言 MATLAB无疑是一款强大的矩阵运算与数据分析软件,内部集成了众多函数.如果在C++编程时可以调用相关的函数将对我们的数据分析研究带来极大的方便.这里就总结一下如何在VS工程中调用MATLAB函 ...

  9. Simulink代码生成: 调用Matlab函数

    本文研究Simulink模型中调用Matlab函数的方法. 文章目录 1 Matlab Function模块 2 建模与代码生成 3 Matlab Function中的数据管理 3.1 关联Signa ...

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

    我们知道误差函数定义为 这是一个带积分的函数,Fluent UDF中想自己写代码实现起来相当不方便,精度还不一定能保证.幸好C++11中为我们将这个函数内置在数学头文件math.h中,但是想要兼容C+ ...

最新文章

  1. docker错误 /usr/bin/docker-current: No port specified: xxx:empty
  2. 边缘深度学习设备基准评测:英伟达Jetson Nano胜出
  3. linux安装界面意思,为linux安装图形化界面
  4. php增加vip等级设置,xiu主题添加vip等级评论样式
  5. [开源]快速构建文件下载,支持文件加密,自定义限速
  6. bzoj 3027: [Ceoi2004]Sweet(母函数+组合数)
  7. c语言中文件的存储,急求如何将下列C语言程序数据存储到文件中?
  8. 汇编语言debug的使用
  9. 2022年上半年系统分析师上午真题及答案解析
  10. matlab中dzdx,MatConvnet工具箱使用手册翻译理解一
  11. mysql的etl工具是什么意思_数据同步工具ETL、ELT傻傻分不清楚?3分钟看懂两者区别...
  12. STM32与MPC-6050通讯
  13. numpy 求矩阵非零元素的均值
  14. 全网各编程语言的爱心代码合集
  15. Java 微服务架构
  16. echarts图表给柱形图的每个柱子设置不同颜色(包括每个柱子设置渐变颜色)
  17. HDF5 windows编译 release版本、Debug版本
  18. C语言初步-顺序结构-已知三边求三角形面积-海伦公式
  19. java毕业生设计园艺生活网站计算机源码+系统+mysql+调试部署+lw
  20. 如何 修炼 软件测试这门 手艺

热门文章

  1. kindle电子书转换成pdf azw转pdf
  2. maven命令上传jar、pom到Nexus
  3. IDEA中使用Maven命令失败解决办法
  4. 用Python解读房贷利率,有没有套路?这是我见过最透彻的Python版解读!
  5. QT项目:linux资源监视器
  6. CATIA怎么约束快捷键_CATIA快捷键和Solidworks快捷键
  7. 浏览器密码查看工具-WebBrowserPassView使用实验 ——合天网安实验室学习笔记
  8. Java并发编程思维导图
  9. java 当天日期 dateutil_Java时间日期DateUtil
  10. java cmd 编译jar_Java程序在命令行下编译运行打Jar包