单元模块开发入门3
本文最后更新于 2024-11-03,文章内容距离上一次更新已经过去了很久啦,可能已经过时了,请谨慎参考喵。
title: 单元模块开发入门3
top_img: false
tags:
- CAPE-OPEN
categories:
- 化工流程模拟开发
cover: '/upload/cdn5files/202401281945116.png'
abbrlink: 2bfc8469
date: 2024-01-28 20:17:00
copyright:
comments:
前言
在单元模块开发入门篇1和2里,我们主要实现了单元模块的注册、端口的创建与流股的连接
本文着重的讲述一下单元模块计算方法的实现
获取流股信息
在前文中我们说过,单元模块获取物流对象的信息实际上是什么,是获取流股的热力学接口,那么我们再看一下热力学的接口图:
在热力学部分的接口中 ICapeThermoMaterial
接口就是主要负责获取和连接物流对象中的各个信息,那么我们也是使用这个接口来调取流股
实际上单元模块的流股端口是不止一个的,但我们为了学习和方便理解,定义了我们这个单元模块中只有一进一出,那么调取流股就很简单
实际上多个端口的时候就是按照端口的数量去获取,也就是下方代码的
getInlet(1)
、getInlet(2)
等,出口流股也类似
在 MyBlockPortsArray.h
文件中:
下面这个
getOutlet()
函数内应该是port2哈,这里我忘了改了
我们还需要修改 BlockPort.h
文件中获取物流对象的方法:
这里原本是通过 IDispatch
指针来获取的,我们更改为 IID_ICapeThermoMaterial
方法
紧接着在文件头部实现获取物流对象的函数,同时更改我们物流对象的类型:
这样我们就完成了物流对象的暴露与调用,紧接着来实现计算部分
计算实现
返回到 MyBlock.h
文件中,开始写 ICapeUnit
接口的 Calculate
部分:
这里看起来很复杂,实际上就是各种类型之间的转换而已
实际上我们这里只是举了一个调用入口流股总流量的例子
点击运行之后会有一个弹窗显示我们当前入口流股的一个总流量,如图所示:
我们虽然写了获取port2的物理对象,但是实际上并没有返回给出口流股,所以只是实现了一个调用流股流量的一个方法,这算是一个抛砖引玉,后面需要自己去写相对应的一些算法
需要注意的是:
我们这里使用的获取物流对象的这个方法 ICapeThermoMaterial
是CAPE-OPEN1.1版本的接口,但是部分模拟软件的标准很可能是1.0版本,并不兼容该接口
结语
没想到单元模块开发入门篇就这么草草结束了,奈何本人实属技术有限,很多东西我都没有琢磨透,但是希望这只是个灯塔(博主如此自恋的想到),能够引发更多的、技术比我牛逼的、天赋比我好的人去做这件事,希望国产模拟软件能够越来越好,越来越强!
当然也希望我自己在熟悉之后能继续完善入门篇,那么,拜拜~
源码地址在《单元模块开发入门实例Heater》中