CAPE-OPEN标准的学习方法
注:原文于2013年由作者发表于海川论坛,因原论坛逐渐消亡,现转载于此,希望对于初学者有所帮助。《CAPE-OPEN的基础概念与学习》
CAPE-OPEN是一种标准,即Computer-Aided Process Engineering Open Simulation Environment,借助这个标准可以开发出通用的化工过程模拟模块。CAPE-OPEN是一个非常强大的工具,借助这个标准最基础的是模块开发,更高层次可以用于物性数据的调取和软件之间的交互调用。比如aspen与fluent的连接,以及自己独立软件与aspen、proII的连接。国内在这方面研究的人少之又少,国外做的比较好的是AmsterChem,其开发了大量的CAPE-OPEN模块,并有一个比较成功的模拟平台COFE。
我也只能算是CAPE-OPEN上的一个入门者,因为还有一些人需要用到CAPE-OPEN,在这里谈谈CAPE-OPEN的学习方法。
开发一个成功的CAPE-OPEN模块绝非易事,已经是化工模拟上的上乘学问。不单要有不错的化工基础和充分的化工资料,还要有扎实的编程功底,这点对于化工专业的学生很有难度,因为既要有吃苦精神,还要对编程有天生的悟性。计算机专业的学生自然不愁编程,但是要狂补一下化工知识了。
好了,开始。开发CAPE-OPEN模块之前,你至少要掌握一门编程语言,比较流行的有visual C++,VB 6.0,当然你可以用JAVA,Delphi,不过我建议用前两者。VB大学那会接触过一阵子,后来VB升级为VB.net,语法全变,我便改学了C++,VB的知识就全忘了,我现在用C++去开发CAPE-OPEN模块。以我的经验,如果想具备开发模块的能力,你的C++水平至少要很好地理解指针、类的派生、多态、虚函数、引用等概念,最好有自己开发(或模仿)一个小程序的经历。我天生愚笨,毕业于山东的一个化工不错的二流大学,所以用了近两年的业余时间自学了C++,如果你有编程基础,一年以内掌握这些没太大问题。
如果你的编程水平够了,你可以去看看关于COM的书了,不必深入研究,刚开始蜻蜓点水足够了。现在你可以去www.colan.org的官网把CAPE-OPEN标准下载下来,九几年它的版本是0.9,现在它的版本是1.1,更新是非常之慢的。它的手册挺多,但是一般人只看他的单元操作部分足够了。我建议花十几块钱(假设3毛钱/双面)把这部分打印出来,因为纸质版比电子版印象深刻。我大学那会用手机看电子新闻已开始流行,但仍坚持每天花5毛钱买一份《半岛都市报》,因为阅读的质量是不同的。刚开始反复去看单元操作的手册,反复看,反复看,然后你就可以去colan的官网看看他们提供的一个混合分离器的实例。照着写一写,不懂了回头再看一看。
然后你应该可以去尝试着写一个MixerSplliter1.1了。
再然后如果你的悟性足够的话,可以用你的智慧推动化工行业进步了。
《基于CAPE-OPEN标准开发化工模拟单元操作模块》
之前我已经提到过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的这些接口已被官方定义好了,所以模块的开发者这需要往各个函数填代码就可以了。下面是一个接口示意图:
仅仅是一部分。模拟环境调用的就是这几个接口,常用的有ICapeUnit和ICapeUtilities,每个接口又包括几个函数。开发者仅需要完善这几个函数的内容就可以了。开发一个模块最简单的可以在别人代码的基础上进行改进,比如官网提供的这个混合分离器模型(MixerSplitter)。我在学习的初期,自己依照MixerSplitter的样子写了一个计算管道压降的模块。如下:
它拥有一个独立的输入界面,可以通过这个对话框输入管线的长度、内径、出入口的位差,当然也可以进入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的模块中,共聚智慧,定能促进化工模拟技术的进步。
楼主牛!!!谢谢楼主的分享!!! 楼主厉害,向你学习 {:1110_550:} 楼主太厉害了!楼主,I*老*虎*U!我觉得马后炮化工真是个好地方! 顶楼主,希望有有志于流程模拟的兄弟姐妹们能持续学习,有所进步! 请问楼主是不是在化工流程模拟学苑的微信群里 楼主辛苦了
感谢楼主的无私分享!要想马后炮化工好 就靠你我他 楼主太厉害了!楼主,I*老*虎*U!我觉得马后炮化工真是个好地方! 易武 发表于 2022-10-28 14:51
请问楼主是不是在化工流程模拟学苑的微信群里
嗯,是的 楼主是技术牛人,感谢分享!! 谢谢楼主分享 楼主厉害啊 {:1110_550:}{:1110_550:} {:1110_550:}{:1110_550:} 谢谢楼主的分享
我看不错噢 谢谢楼主!马后炮化工越来越好!
页:
[1]