本文最后更新于 2024-10-18,文章内容距离上一次更新已经过去了很久啦,可能已经过时了,请谨慎参考喵。

title: 热力学物性包开发入门3
top_img: false
tags:
  - CAPE-OPEN
categories:
  - 化工流程模拟开发
cover: '/upload/cdn5files/202401211008330.png'
abbrlink: 5155db96
date: 2024-01-21 10:04:30
copyright:
comments:

前言

这一篇应该算是完结篇了吧(应该),主要是来解决之前两篇文章中的一些遗留问题

ThermoPropertyRoutine接口

第一个呢,就是我们之前在创建物流对象模板的时候导入的 ICapeThermoPropertyRoutine 接口导致编译不通过的问题

首先先取消注释这个接口,重新引入进来:

需要注意的是,这一行取消注释之后,记得在上一行的末尾加上英文逗号

继续取消注释:

继续取消注释:

这里的内容是第二篇中学习如何实现物性计算写的,我们现在暂时注销掉我们自己写的内容,将接口重新初始化,如下:

修改 CalcAndGetLnPhi 函数中 fFlags 参数的类型为 int

现在我们重新编译一下,发现编译已经通过了,接口也可以正常使用了

也就是说,编译不通过,其实是在导入CAPE-OPEN标准接口的时候,这个参数的类型错误导致编译不通过,从这个问题可以看出来,标准有时候也是会有错误的

那么这个错误我是怎么解决的呢?还记得我们第一篇中从官网下载的那个示例文件吗,没错,就是通过示例文件代码和自己写的代码对比,看哪里不同,哪里就可能会有错误

GetCompoundList函数

在上一篇中,我们简单示例了 GetCompoundList 函数如何使用, 如何获取到组分列表和组分信息,但是讲的比较简单,并且COFE软件并没有调用成功,这一篇我们来详细讲一下这个函数的使用

首先我们注释掉之前写的简单代码,重新来进行编写:

首先我们可以看到,这个函数共有6个参数,我们就需要创建6个变量来存储对应的信息:

由于我们的组分ID要兼容中文,类似于我们在Aspen中输入组分的时候对组分进行重命名,所以需要修改为宽字符类型 wstring

接下来给参数赋值并返回:

修改一下返回的组分数:

修改一下我们在 FuildPackageManager.h 中定义的组分的类型:

编译一下,没啥问题,OK,接下来测试一下:

需要注意的是,我们在VS中生成的文件时x64位的所以COFE测试也需要是64位的才可以

首先物性包调用是没有问题的:

选中PR方程,创建一个流股:

可以看到组分也是成功调用到了!

到这里,我们的物性包开发入门篇到这里就结束了,在整个过程中,实现了对CAPE-OPEN标准接口的调用,实现了自定义状态方程的输入,自定义组分的输入,自定义热力学计算方法,唯一的遗憾是并没有实现直接从物性数据库中调用对应的组分数据

当然这只是入门篇,后续我将继续努力,完善这个物性包,本入门篇更重要的目的是让自己真正的跨入从使用流程模拟软件到开发流程模拟软件的这一步,更多的是一个抛砖引玉的作用,同时也希望自己能保持这一份热爱,继续为国产化工工艺流程模拟软件开发去做一点点自己的贡献

至此,不忘初心,方得始终。

特别鸣谢:B站up主:bcbooo

源码地址:https://github.com/laugh0608/myThermoTest