【海川化工论坛】-海川网-化海川流

用户名账户登录  

用户名密码方式登录

QQ登录

只需一步,快速开始

微信登录

手机微信,扫码同步

  企业会员★↓【品牌】     统计

[原创] 基于CAPE-OPEN标准开发化工模拟单元操作模块

[复制链接]
30363 |86
阅读字号:
bcboooVIP会员 VIP会员 | 显示全部楼层 |阅读模式       最后访问IP江苏省
头衔:  TA暂未设置  已绑定手机  

服务2亿工业人 [化海川流] 一键加入

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 雲目 于 2018-10-14 13:40 编辑

之前我已经提到过CAPE-OPEN的学习方法,不再赘述,这里重点讲一下单元操作模块的开发方法。

单元模块是化工过程模拟中最基础的一部分,物性数据库是另一部分,当然还有更高端的数据求解、反应器模块的设计。物性数据库的开发复杂些,但是单元模块却要简单很多。我希望通过本文能让更多的人去接触CAPE-OPEN,去利用CAPE-OPEN开发出自己的单元模块。在没有统一的模拟软件接口标准之前,个人或者小的公司、设计院很难去开发一个像样的过程模拟软件,或者说开发出来一个模块并不能在人家的模拟软件中运行。但是自己按照CAPE-OPEN的标准去写一个模块,就可以在著名的aspen,hysys,proII等支持CAPE-OPEN的环境下运行,模块具有很强的可移植性。单元操作模块的开发者不必去关心物性数据,因为开发出来的模块可以直接调用模拟软件的物性数据库,而可以把全部的精力放在内部的计算上。

开发CAPE-OPEN模块可以利用VB 6.0或者C++,当然其他的语言java,delphi,fortran都可以的,因为CAPE-OPEN模块其实就是一个动态链接库文件(dll),只要能够生成dll文件的编程工具都能够实现CAPE-OPEN。但是CAPE-OPEN得官网建议使用VB 6.0和C++,注意这里的VB是6.0,不是后来的VB.net。我个人喜欢用C++,因为我不喜欢VB 6.0这种过时的语言,而且C++精妙复杂,具有更广泛的发挥空间。入门者可以选择VB 6.0,因为它入门很快,没有太复杂的语法,而学习C++却要费时很多。我这里都是以visual studio 2005中的C++进行演示的。

CAPE-OPEN的官网(www.colan.org)提供了一个混合分离器的示例,兼有VB和C++的版本,初学者可以把它下载下来慢慢揣摩。简单的说,所谓的CAPE-OPEN只不过是一个动态链接库,露出几个接口供模拟软件调用,而CAPE-OPEN的这些接口已被官方定义好了,所以模块的开发者这需要往各个函数填代码就可以了。下面是一个接口示意图:
QQ截图20130117085711.png
仅仅是一部分。模拟环境调用的就是这几个接口,常用的有ICapeUnit和ICapeUtilities,每个接口又包括几个函数。开发者仅需要完善这几个函数的内容就可以了。开发一个模块最简单的可以在别人代码的基础上进行改进,比如官网提供的这个混合分离器模型(MixerSplitter)。我在学习的初期,自己依照MixerSplitter的样子写了一个计算管道压降的模块。如下:
QQ截图20130117090941.png
它拥有一个独立的输入界面,可以通过这个对话框输入管线的长度、内径、出入口的位差,当然也可以进入aspen plus的Data browser窗口进行输入,两者是同步的。而流量、组成都数据则是在aspen的环境中输入的,根据流量和管内径就可以求出流速,该模块又可以从aspen的物性数据库调取粘度等数据,最后根据伯努利方程就可以求出管道的压降。这里你会发现这个模块仅仅是一个正方块,这是因为不同的模拟软件界面不同,所以CAPE-OPEN标准没有提供界面这个接口,在aspen plus环境下CAPE-OPEN是一个方块表示,而CAPE-OPEN却可以设计自己的参数输入窗口。

当然,当你的水平足够的时候,就可以自己去写一个全新的单元操作模块,CAPE-OPEN官网提供了一个叫做“CAPE-OPENv1-1-0.tlb”的接口描述文件,它提供了相关接口的标准框架,你可以根据这些框架填写代码,然后开发出一个优秀的单元模块。如果你用的C++,我建议使用visual studio 2005或更高版本,打开后点击新建项目里的C++ ATL。VB 的话肯定是用visual basic 6.0了,完整版在win7下如果有问题的话,可以下载vb 6.0 部分精简版,方便安装使用。

CAPE-OPEN的官网www.colan.org,里面全是英文,别怕,慢慢看就会看懂了。希望此文能够激发更多的人去研究CAPE-OPEN,把自己的知识封装到CAPE-OPEN的模块中,共聚智慧,定能促进化工模拟技术的进步。
接口描述文件,写模块的时候用CAPE-OPENv1-1-0.zip (29.51 KB, 下载次数: 7)

 

发表于 2013-1-17 09:39:15

psb.png

点评

有意义贴  发表于 2014-9-26 22:00

评分

7

查看全部评分

声明:

本站是提供个人知识管理及信息存储的网络存储空间,所有内容均由用户发布,不代表本站观点。

请注意甄别主题及回复内容中的联系方式、诱导购买等信息,谨防诈骗。

当前内容由会员用户名 bcbooo 发布!权益归其或其声明的所有人所有 仅代表其个人观点,仅供学习交流之用。

本主题及回复中的网友及版主依个人意愿的点评互动、推荐、评分等,均不代表本站认可其内容或确认其权益归属,

如发现有害或侵权内容,可联系我站举证删除,我站在线客服信息service@hcbbs.com 电话188-4091-1640 

xtu_xzVIP会员 VIP会员 | 显示全部楼层       最后访问IP湖南省
头衔:  TA暂未设置 
楼主真是高人啊,我也想学这个,希望楼主以后多多分享原创作品

 

发表于 2013-1-18 10:52:05

点评

有意义贴  发表于 2014-9-26 22:00

评分

2

查看全部评分

 

 

 

Peterpaul彼得保罗
回复

使用道具 举报

bcbooo楼主 VIP会员 VIP会员 | 显示全部楼层       最后访问IP江苏省
头衔:  TA暂未设置  已绑定手机  
xtu_xz 发表于 2013-1-18 10:52
楼主真是高人啊,我也想学这个,希望楼主以后多多分享原创作品

.................

 

发表于 2013-1-18 17:07:05

点评

有意义贴  发表于 2014-9-26 22:00

评分

1

查看全部评分

回复

使用道具 举报

highchem126VIP会员 VIP会员 | 显示全部楼层       最后访问IP上海市
头衔:  TA暂未设置 
1111111111111111111111111111111111111111111

 

发表于 2013-1-18 17:18:57

点评

有意义贴  发表于 2014-9-26 22:00

评分

2

查看全部评分

回复

使用道具 举报

CastroVIP会员 VIP会员 | 显示全部楼层       最后访问IP浙江省
头衔:  TA暂未设置  已绑定手机  
楼主,您好,aspen plus自带的regcounit.exe文件找不到!

 

发表于 2013-6-7 13:09:05

点评

有意义贴  发表于 2014-9-26 22:01

评分

1

查看全部评分

回复

使用道具 举报

CastroVIP会员 VIP会员 | 显示全部楼层       最后访问IP浙江省
头衔:  TA暂未设置  已绑定手机  
本人最近也在学习Cape Open 已经连接过COFE、Excel Unit Operation和Matlab Unit Operation!这几天在做Aspen Plus调用VB6.0dll,其中VB6.0dll还将调用Matlab的或者Fortran的dll文件!也遇到了许多问题,希望大家一起讨论!
还有人在学习Cape open的话 加QQ153179731!

 

发表于 2013-6-7 13:28:41

点评

有意义贴  发表于 2014-9-26 22:01

评分

1

查看全部评分

回复

使用道具 举报

bcbooo楼主 VIP会员 VIP会员 | 显示全部楼层       最后访问IP江苏省
头衔:  TA暂未设置  已绑定手机  
Castro 发表于 2013-6-7 13:28
本人最近也在学习Cape Open 已经连接过COFE、Excel Unit Operation和Matlab Unit Operation!这几天在做Asp ...

如果matlab开放了接口,通过CAPE-OPEN标准的dll调用matlab是可以实现的。但是aspen自身的fortran模块大多没有开放接口,所以实现起来有些难度。目前我已经实现调用aspen的数据库,对aspen fortran模块的调用还在研究中。

 

发表于 2013-6-7 14:55:06

点评

有意义贴  发表于 2014-9-26 22:01

评分

1

查看全部评分

回复

使用道具 举报

bcbooo楼主 VIP会员 VIP会员 | 显示全部楼层       最后访问IP江苏省
头衔:  TA暂未设置  已绑定手机  
本帖最后由 bcbooo 于 2013-6-7 14:59 编辑
Castro 发表于 2013-6-7 13:09
楼主,您好,aspen plus自带的regcounit.exe文件找不到!

用下面的代码,放在reg文件中。把红色部分换成自己的,其他部分不变:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\CLSID\{EB240CC4-5B91-47EF-BCB4-E4A5C40D6800}]
@="VB Example Mixer Splitter"

[HKEY_CLASSES_ROOT\CLSID\{EB240CC4-5B91-47EF-BCB4-E4A5C40D6800}\CapeDescription]
"Name"="VB Example Mixer Splitter"
"Description"="Visual Basic 6.0 Mixer and Splitter Example according to CAPE-OPEN Unit Operation specification"
"CapeVersion"="1.0"
"ComponentVersion"="1.0.1"
"VendorURL"="http://www.colan.org/"
"About"="See http://www.colan.org/ for more information"


[HKEY_CLASSES_ROOT\CLSID\{EB240CC4-5B91-47EF-BCB4-E4A5C40D6800}\Implemented Categories]

[HKEY_CLASSES_ROOT\CLSID\{EB240CC4-5B91-47EF-BCB4-E4A5C40D6800}\Implemented Categories\{678C09A1-7D66-11D2-A67D-00105A42887F}]

[HKEY_CLASSES_ROOT\CLSID\{EB240CC4-5B91-47EF-BCB4-E4A5C40D6800}\Implemented Categories\{678C09A5-7D66-11D2-A67D-00105A42887F}]



 

发表于 2013-6-7 14:56:30

点评

有意义贴  发表于 2014-9-26 22:01

评分

2

查看全部评分

回复

使用道具 举报

CastroVIP会员 VIP会员 | 显示全部楼层       最后访问IP浙江省
头衔:  TA暂未设置  已绑定手机  
bcbooo 发表于 2013-6-7 14:55
如果matlab开放了接口,通过CAPE-OPEN标准的dll调用matlab是可以实现的。但是aspen自身的fortran模块大多 ...

Aspen plus 可以通过调用COFE,再通过COFE调用Matlab Unit Operation的方法实现,本来Aspen plus可以直接调用Matlab Unit Operation,是有由于Aspen plus只支持thermodynamic version1.0,而Matlab仅支持thermodynamic version1.1(Cape Open的Jasper给我的答复)!

 

发表于 2013-6-8 13:35:54

点评

有意义贴  发表于 2014-9-26 22:01

评分

2

查看全部评分

回复

使用道具 举报

bcbooo楼主 VIP会员 VIP会员 | 显示全部楼层       最后访问IP江苏省
头衔:  TA暂未设置  已绑定手机  
Castro 发表于 2013-6-8 13:35
Aspen plus 可以通过调用COFE,再通过COFE调用Matlab Unit Operation的方法实现,本来Aspen plus可以直接 ...

原来如此,暂时还没有研究调用matlab模块的方法。目前我正在开发一个针对于thermodynamic version1.0的“插槽”,以方便调用1.0标准的Thermodynamic接口。1.1版本的很简单,目前已经实现。

 

发表于 2013-6-8 22:11:14

点评

有意义贴  发表于 2014-9-26 22:02

评分

1

查看全部评分

回复

使用道具 举报

CastroVIP会员 VIP会员 | 显示全部楼层       最后访问IP浙江省
头衔:  TA暂未设置  已绑定手机  
bcbooo 发表于 2013-6-8 22:11
原来如此,暂时还没有研究调用matlab模块的方法。目前我正在开发一个针对于thermodynamic version1.0的“ ...

个人认为不需要开发thermodynamic version1.0的插槽,只需将Aspen Plus通过COFE调用你写的模块就写,把你的dll文件导入到COFE中!参见http://www.amsterchem.com/downloads.html和USEA Class library with WAR(google下就能下载到)

 

发表于 2013-6-9 09:01:03

点评

有意义贴  发表于 2014-9-26 22:02

评分

2

查看全部评分

回复

使用道具 举报

bcbooo楼主 VIP会员 VIP会员 | 显示全部楼层       最后访问IP江苏省
头衔:  TA暂未设置  已绑定手机  
我之所以去开发Thermodymic 1.0的插槽,是因为我不想让自己的软件依附于COFE存在。下图是我和我的团队开发的一个模拟软件,在界面和功能上都模仿了Aspen Plus。它已经拥有一个Thermo Property Package 1.1标准的小型数据库,为了增进数据库的完整性,所以我想调用Aspen 的数据库,所以就要开发“插槽”。

相对于aspen plus,它多了两个功能:数据回归和塔盘水力学求解。水力学目前支持国内50余种常见板式塔塔盘的设计与核算。 捕获.PNG

 

发表于 2013-6-9 09:54:15

点评

有意义贴  发表于 2014-9-26 22:02

评分

3

查看全部评分

回复

使用道具 举报

CastroVIP会员 VIP会员 | 显示全部楼层       最后访问IP浙江省
头衔:  TA暂未设置  已绑定手机  
bcbooo 发表于 2013-6-9 09:54
我之所以去开发Thermodymic 1.0的插槽,是因为我不想让自己的软件依附于COFE存在。下图是我和我的团队开发的 ...

您好,请问您们是不是开发了单元操作的算法,但是热力学想直接调用Aspen plus的算法?那为什么不自己去编写热力学算法,很多热力学算法文献中都是公开的,还有aspen所用的物性库,比如dipper数据库市面上都有的!

 

发表于 2013-6-13 09:32:57

点评

有意义贴  发表于 2014-9-26 22:02

评分

3

查看全部评分

回复

使用道具 举报

bcbooo楼主 VIP会员 VIP会员 | 显示全部楼层       最后访问IP江苏省
头衔:  TA暂未设置  已绑定手机  
Castro 发表于 2013-6-13 09:32
您好,请问您们是不是开发了单元操作的算法,但是热力学想直接调用Aspen plus的算法?那为什么不自己去编 ...

在整个程序中,我觉得单元模块(也就是你说的单元操作的算法)的开发最简单,当然这是是指相对于物性数据库和模拟软件的框架。单元模块的套路相对单一,开发出来一个模板,即可让其他工程师快速独立的开发一系列的单元模块。colan实验室也提供了一个“MixerSplitter混合分离器”的模板,可以照着这个版本进行改进。我既没有采用VB语言,也没有采用C++中的ATL dll开发,而是采用C++中的MFC dll开发。我觉得C++ MFC封装了大量成熟易用的类,便于开发功能强大的单元模块。当然有人说MFC dll运行速度慢,但是随着计算机处理器的升级,这个劣势显得微不足道。

我自己用了将近半年的时间开发了模拟软件的主框架,如同12楼所示,仍有很多细节需要进行完善。我的美工能力太差,界面不是太理想。主框架更多的是编程的东西,但是撕裂物流的算法参考了两个外国人的思想。

你说的热力学算法其实就是一个CAPE-OPEN提到的Thermo Property Package,书上的确有算法,但是将其编程并应用化不是一件容易的事。比如:1、如何求取当前相态的分布。看似这是一个容易的事,但是涉及到很多问题,气液相目前已经比较成熟。但是液固相,固体可能会在液相溶解,这个怎么求解?当气液固同时存在时,这个情况更加的复杂。
2、混合性质如何求。密度,体积还有理论性的公式,但是粘度、表面张力涉及到多元交互参数,这些参数不是文献能查到了。
3、我已经实现了一个小的Thermo Property Package,但是不是太理想。一方面是迭代时间太长,而是对于有些组分或条件运行起来不太稳定。所以我想到了调用Aspen Plus的数据库。当然不能采用你提到的通过COFE的方法,我需要自己实现这个接口。

以上问题解决了,还要涉及到一个更重要的问题:求解准不准确。我想这是最难的部分。

 

发表于 2013-6-13 15:44:25

评分

3

查看全部评分

回复

使用道具 举报

253087900VIP会员 VIP会员 | 显示全部楼层       最后访问IPInvalidIPAddress
头衔:  TA暂未设置 
用下面的代码,放在reg文件中。把红色部分换成自己的,其他部分不变:
, b+ J' \1 e6 _3 K. ^8 a
5 h; Q  ?5 P0 g( P8 _9 I) b. eWindows Registry Editor Version 5.00& p- ^4 m/ l2 Y8 x) ^1 W
  {: a; p9 @0 k% v
[HKEY_CLASSES_ROOT\CLSID\{EB240CC4-5B91-47EF-BCB4-E4A5C40D6800}]8 q

请问楼主,这个我自己的红色部分如何得到。比如我修改并重新生成了MIXERSPLITTER的DLL文件,如何注册它,点击原文件里面的REG好像没有有,ASPEN里面的CAPE-OPEN组件消失了。

 

发表于 2013-6-16 11:18:33

点评

有意义贴  发表于 2014-9-26 22:03
有意义贴  发表于 2014-9-26 22:02

评分

1

查看全部评分

回复

使用道具 举报


          特别提示:

          本站系信息发布平台,仅提供信息内容存储服务。

          包括但不限于:不能公开传播或无传播权、禁止分享的出版物、涉密内容等
          不听劝告后果自负!造成平台或第三方损失的,依法追究相关责任。

          请遵守国家法规;不要散播涉爆类、涉黄毒赌类、涉及宗教、政治议题、谣言负面等信息   

     

您需要登录后才可以回帖 登录 | 注册

本版积分规则

积分获取

财富分获取方法

[签到][参与互动][每月建设者加分]

[他人给于的评分]

海川分获取方法

[每月建设者达标后加分]

[他人给于的评分]

  企业会员★↓【品牌】     统计
服务联系
微信关注
回到顶部

 

关于我们  -  隐私协议    -  网站声明   -  个人名片   -  企业会员   -  个人会员  -  记录统计

专家智库  -  海川市场    -  众包悬赏   -  分类信息   -  视频学课   -  在线计算  -  单位换算


海川网不良信息举报电话   0411-88254066     举报信箱   service@hcbbs.com     举报中心


客服#  18840911640【微信同号】   信箱   hcbbs.com@qq.com   【点我QQ联系海川客服】   

平台统计:        GMT+8, 2024-4-23 21:19

化海川流(hcbbs#2004) @Discuz! X3 . 0.262438 second(s), 58 queries , Redis On.

辽公网安备21100302203002号  | 辽ICP备17009251号  |  辽B2证-20170197