小鹿数值仿真-教程2-如何方便的调用refprop物性计算库-实现高精度计算流体物性

小鹿数值仿真-国产冷、热、电数值模拟平台

第三章 模块调用调用物性库计算流体物性



前言

流体管网、换热等都离不开精确的物性计算,matlab支持refprop的调用,可以实现至少一百多种的流体类混合计算,咱也行!咱的调用还更方便化,单位也转化为国内较为常见的单位,结合上一篇“编写第一个算法模块”的教程,可以实现不用学会高深的编程技巧,仅需会加减乘除和if/else即可随心所欲地调用refprop,并和第三方对接数据(获取传感器信息,计算完毕后输出出去)。(软件下载链接会在10月15日晚之前放上来,还在做最后的可用性优化测试)


一、refprop在算法模块库中的使用

1.新建模块,变量值准备

我选择在PUMPFAN分组中新建模块“refproptest”,新建后会自动转换为全大写“REFPROPTEST”
在这里插入图片描述
点击模块列表中的“打开”按钮,打开模块编辑器,并点击变量属性页。
在这里插入图片描述
请注意,接下来是重点,refprop是支持混合物计算的,应该说是默认混合物计算。于是乎需要两个变量输入进去,如下图,一个变量“FORM”是流体混合种类的意思缩写,另一个变量“MIX”是质量混合比例的意思。
在这里插入图片描述
切换到“变量-值-”页面,鼠标点击FORM,右下角选择所需要计算的流体种类,FORM就可以被自动编辑好:请看右下角,当我选择空气、顺丁烯、co2三种时,变量“FORM”变量变为3,11,17。也就是系统内部默认空气对应数字3,顺丁烯对应数字11,二氧化碳对应数字17。

在这里插入图片描述
然后修改MIX变量:1.0,0,0 意思是在3,11,17混合物中,3(空气)占100%质量,11、17分别占0%质量,也就是说是纯空气,如下图:(表格显示不全时,右侧有个数组辅助显示,可以看清楚)
在这里插入图片描述
点击“库值1入库”按钮,可以将刚才的编辑的库值1全部入库:
在这里插入图片描述
变量解释完毕,请注意,下面是要计算R134A的物性的,上面的3,11,17混合,仅是为了讲解变量意义与用法,下面会更改。

2.物性库调用

上截图:
FUD_PH这个函数,就是根据压强IM0_PRE、焓值IM0_ENTHALPY、组分质量百分比IM0_X,来计算其他综合属性,包括温度IM0_TIME、密度IM0_VOLUME、液态密度(气液混合状态下有用,否则可忽略)dl、气态密度dv、液态组分质量百分比xliq、气态组分质量百分比xvap、气体占总质量数IM0_Q、内能值energy、熵值entropy、定容比热容cv、定压比热容cp、声速w
在这里插入图片描述
回到“绘制模块”页面,拖拽一个入口端口,拖拽后,变量表里面自动会生成上述IMO_端口对应的变量:
在这里插入图片描述
在这里插入图片描述
我们将FORM改为R134A(92)、IM0_X改为1.0、IM0_PRE改为0.0847MPa、IM0_ENTHALPY改为161.9(参考下表)。
在这里插入图片描述
编译模块、运行,得到了温度密度,与表中对比误差非常小:结算出来温度是-29.9197,表格里是-30度。
在这里插入图片描述
在这里插入图片描述
好啦,计算样例到这里就结束啦。

2.都有哪些函数呢?

来展示库的头文件:

void FUD_SETUP(int hf[], int& ico);//初始化函数,上面讲过
void FUD_SET_KS(double& roughness);
//接下来的全部可用,单位都是摄氏度、兆帕、千克每立方米、千焦每千克等国际单位,如有特殊会详细说明,如果没有表明单位且有疑问,请自己尝试核对
//饱和物性计算cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
//根据温度(摄氏度) 求 饱和压力(MPa)、当前饱和状态下的液态密度(Kg/m3)、气态密度、液态组分、气态组分、错误报警ierr(当不等于0时出现错误)、错误指示
//必须使i=2
void FUD_SATT(double& temp, double x[], long& i, double& pressure, double& dl, double& dv, double xliq[], double xvap[]);
//根据压力(MPa) 求 饱和温度(摄氏度)、当前饱和状态下的液态密度(Kg/m3)、气态密度、液态组分、气态组分、错误报警ierr(当不等于0时出现错误)、错误指示
void FUD_SATP(double& pressure, double x[], long& i, double& temp, double& dl, double& dv, double xliq[], double xvap[]);
//已知密度(Kg/m3) 求 饱和温度压强
void FUD_SATD(double& density, double x[], long& kph, long& i, double& temp, double& pressure, double& dl, double& dv, double xliq[], double xvap[]);
//已知温度(摄氏度)、密度(Kg/m3) 求 定压比热cp、定容比热cv,单位KJ/Kg*K(国际标准为J/Kg*K)
void FUD_CVCP(double& temp, double& density, double x[], double& cv, double& cp);
void FUD_TPRHOPR(double& temp, double& pressure, double x[], double& dl, double& dv);
void FUD_TP_FL2(double& temp, double& pressure, double x[], double& dl, double& dv, double xliq[], double xvap[]);

//简单物性换算ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
//已知温度密度计算压强
void FUD_TD_P(double& temp, double& density, double x[], double& pressure);
//已知温度密度计算焓值
void FUD_TD_H(double& temp, double& density, double x[], double& enthalpy);
void FUD_PSFL1(double& pressure, double& entropy, double x[], long& khp, double& temp, double& density);
//逸度计算
void FUD_FGCTY(double& temp, double& density, double x[], double fugacity[]);
//计算第二和第三维里系数
void FUD_VIRB(double& temp, double x[], double& b);
void FUD_VIRC(double& temp, double x[], double& c);
//已知温 度密度求 动力粘度Pa.s 导热率(hcdt)W/m.K
void FUD_TRNPRP(double& temp, double& density, double x[], double& viscosity, double& hcdt);
//综合属性计算cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
//单位解释temp, pressure, x, density, dl, dv, xliq, xvap, q, energy, enthalpy, entropy, cv, cp, speed_sound,
//根据温度temp(摄氏度)、压强pressure(MPa)、物质组分x,计算综合属性:density,dl,dv,xliq[],xvap[],q
void FUD_TP(double& temp, double& pressure, double x[], double& density, double& dl, double& dv, double xliq[], double xvap[], double& q, double& energy, double& enthalpy, double& entropy, double& cv, double& cp, double& speed_sound);
//根据温度 密度计算综合属性
void FUD_TD(double& temp, double& density, double x[], double& pressure, double& dl, double& dv, double xliq[], double xvap[], double& q, double& energy, double& enthalpy, double& entropy, double& cv, double& cp, double& speed_sound);
//根据温度 焓值计算基本属性
void FUD_TH(double& temp, double& enthalpy, double x[], long& kr, double& pressure, double& density, double& dl, double& dv, double xliq[], double xvap[], double& q, double& energy, double& entropy, double& cv, double& cp, double& speed_sound);
//根据温度 熵值计算综合属性
void FUD_TS(double& temp, double& entropy, double x[], long& kr, double& pressure, double& density, double& dl, double& dv, double xliq[], double xvap[], double& q, double& energy, double& enthalpy, double& cv, double& cp, double& speed_sound);
//根据压强 密度计算综合属性
void FUD_PD(double& pressure, double& density, double x[], double& temp, double& dl, double& dv, double xliq[], double xvap[], double& q, double& energy, double& enthalpy, double& entropy, double& cv, double& cp, double& speed_sound);
//根据压强 熵值计算综合属性
void FUD_PS(double& pressure, double& entropy, double x[], double& temp, double& density, double& dl, double& dv, double xliq[], double xvap[], double& q, double& energy, double& enthalpy, double& cv, double& cp, double& speed_sound);
//根据压强 焓值计算综合属性
void FUD_PH(double& pressure, double& enthalpy, double x[], double& temp, double& density, double& dl, double& dv, double xliq[], double xvap[], double& q, double& energy, double& entropy, double& cv, double& cp, double& speed_sound);
//根据密度 焓值计算综合属性
void FUD_DH(double& density, double& enthalpy, double x[], double& temp, double& pressure, double& dl, double& dv, double xliq[], double xvap[], double& q, double& energy, double& entropy, double& cv, double& cp, double& speed_sound);
//根据密度 熵值计算综合属性
void FUD_DS(double& density, double& entropy, double x[], double& temp, double& pressure, double& dl, double& dv, double xliq[], double xvap[], double& q, double& energy, double& enthalpy, double& cv, double& cp, double& speed_sound);
//已知焓值 熵值计算综合属性
void FUD_HS(double& enthalpy, double& entropy, double x[], double& temp, double& pressure, double& density, double& dl, double& dv, double xliq[], double xvap[], double& q, double& energy, double& cv, double& cp, double& speed_sound);
//根据当前温度、当前压力求饱和湿度(g/m3)与当前相对湿度x%
void FUD_HMDT_TPGR(double& temp, double& pressure, double x[], double& content, double& rlt);
//根据当前温度,求空气饱和含水量(g/m3)
void FUD_HMDT_TG(double& temp, double x[], double& content);
//根据输入期待的相对湿度content(g/m3)以及“第几个组分为水”digit求露点温度温度(期待的相对湿度对应的温度)
void FUD_HMDT_GT(double& content, double& temp);
//状态临界计算(尽量别外部调用,仅供内部使用,单位不是国际单位制,分别是K,KPa,mol/L)
void FUD_LIMITX(char htyp[], double& temp, double& density, double& pressure, double x[], double& tmin, double& tmax, double& Dmax, double& pmax);
//对流换热计算cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
//对数平均温差逆流1、2为一侧进出口,3、4为另一侧进出口。
void DTLOG_INVERSE(double& temp0, double& temp1, double& temp2, double& temp3, double& dt);
//对数平均温差顺流1、2为一侧进出口,3、4为另一侧进出口。
void DTLOG_DOWN(double& temp0, double& temp1, double& temp2, double& temp3, double& dt);
//流动换热系数计算输入温度、密度、直径、流速、组分,输出流动换热系数和定压比容。
void SHTC_P(double& tempw, double& temp, double& density, double x[], int& DN, double& flow, double& length, double& h);
//流动换热系数计算输入温度、密度、直径、流速、组分,输出流动换热系数和定压比容。
void SHTC_S(double& temp, double& density, double& length, double& speed, double x[], double& h);

总结

`如何调用物性库就讲完啦,看似繁琐,其实这已经是我这些年见过可编程调用refprop最简单的方法了,主要是变量FROM组分选择、质量比例X编辑、写点代码编译运行就可以了。关键是变量可以直接对外对接了~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值