许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  【FLUENT UDF】【NIST Refprop】多组分流体物性调用以及udf

【FLUENT UDF】【NIST Refprop】多组分流体物性调用以及udf

阅读数 2
点赞 0
article_banner


通过网盘分享的文件:支持多组分混合物refprop

链接: https://pan.baidu.com/s/1UZRNAH7r86js1yQ-cVlzVg 提取码: e1r7

REFPRPp 那条报错弹出来的时候正在跑一个 R410A 的两相蒸发算例,前面稳态都收敛了,一打开相变模型求解器直接卡死,控制台刷屏“无法解析物性”。回去看 UDF 源码,**REFPRPp 那个函数名写的是 REFPROP,少了后面那个 p**,编译器没报错,运行时函数指针找不到,物理量全返回零。


装 Refprop 之后先配环境变量。RPprefix 指向安装目录,`C:\Program Files\REFPROP` 这种,PATH 里也把这个目录加进去。不配的话 UDF 里 LoadLibrary 找不到 REFPRP64.DLL,初始化就失败。安装目录下的 fluids 和 mixtures 两个文件夹也拷到 Fluent 的 libudf 工作目录下面,不然 REFPRPp 读不到工质文件,返回错误码出来一堆乱数据。D:\Fluent_work\refprop_udf\ 下面放了一份安装目录的备份。


UDF 里声明 REFPRPp 的接口跟 C 的调用约定要对上。Refprop 的 DLL 导出的是 stdcall 调用约定,`__stdcall` 那个修饰在声明里别漏了,漏了编译能过,运行时栈帧对不齐直接 ACCESS_VIOLATION 崩掉。参数列表七个,两个 double 两个 double 指针两个 double 指针一个 char 指针,逐个对一下。用 VC++ UDF Studio 的话它有现成的 Refprop 封装模板,LoadLibrary 和 GetProcAddress 都写好了,直接填工质名和参数就行。Fluent 自带编译器编译的时候把 REFPROP.h 拷到 `C:\Program Files\ANSYS Inc\v241\fluent\fluent24.1.0\src` 下面,UDF 里 `#include "REFPROP.h"` 才能找到头文件。


单组分用 REFPRPp,混合物用 REFPRPp 的字符串传法。单组分工质名直接传 `"R410A"`,混合物的话用分号把组分连起来,`"R32;R125"`,后面再跟一个数组传摩尔分数或者质量分数。多组分这个接口返回的时候组分顺序跟字符串里的顺序一致,别搞反了,R32 和 R125 的物性差挺多,顺序反了密度差 10% 以上。声明的时候 char 数组的长度给够,255 个字符,短了会被截断,截断之后找不到工质文件报“无法打开流体文件”。


Fluent 控制台里先敲 `define/user-defined/real-gas-models/nist-real-gas-model`,然后 `use NIST real gas?` 选 yes,再输工质名。这一步不做的话 NIST 的物性访问宏 `get_prop_NIST_msp` 调不了,REFPRPp 虽然能返回数值但跟 Fluent 的求解器数据结构对不上,算出来的密度和焓值不参与能量方程迭代。多组分算例里还要在材料面板里把 species transport 打开,混合物里每个组分都要勾上,漏一个组分 UDF 里的组分索引就对不上。


Fluent 自带的 NIST real gas model 有个硬限制,整个计算域只能有一种真实气体,不能跟其他流体共存,气相和液相不能同时出现,两相流不支持。做制冷剂蒸发的时候要么用 Fluent 内置的 NIST 模型配 UDRGM 写混合物,要么完全用 UDF 查表的方式绕过这个限制。查表方式从 Refprop 导温度-压力-物性数据表,UDF 里插值,精度取决于表格密度,高温段步长给小一点,低温段可以大一点。D:\Fluent_work\refprop_udf\lookup_tables\ 下面放了几组导好的数据表。


UDF 编译报“LNK2019 无法解析的外部符号”,链接器找不到 Refprop 的 lib 文件。编译的时候把 refprp64.lib 的路径加到 UDF 的编译选项里,或者在 UDF 源文件里用 `#pragma comment(lib, "C:\\Program Files\\REFPROP\\refprp64.lib")` 显式指定。路径里的反斜杠写双反斜杠,单反斜杠会被当成转义字符。Fluent 自带编译器不认中文路径,工程目录全英文,D:\Fluent_work\refprop_udf\ 这种。


“The UDF library you are trying to load (libudf) is not compiled for 3ddp on the current platform (win64)”,这个报错一般是编译的时候选错了求解器维度,3d 编译的 libudf 拿到 3ddp 上用,重新编译一遍,编译之前确认 Fluent 启动的时候是 3ddp 还是 3d。Refprop 的 DLL 位数也要对,64 位的 Fluent 配 64 位的 refprp64.dll,32 位的 DLL 放进去加载的时候直接崩,先确认安装目录下 DLL 的位数跟 Fluent 一致。


D:\Fluent_work\refprop_udf\ 下面那个 UDF 源码里 REFPRPp 的 stdcall 修饰还没加,下次编译之前补上,还有那个混合物工质字符串里的分隔符用的是逗号,Refprop 要的是分号,这个也要改,参数顺序是……



免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空