PRO/Ⅱ功能扩展方法探讨
2012-08-15原璐,崔隽
原 璐 ,崔 隽
(海工英派尔工程有限公司,山东青岛 266061)
PRO/Ⅱ是一种通用的化工过程模拟、优化和设计软件。PRO/Ⅱ可以对各种化工过程进行严格的质量和能量衡算。它的应用包括:设计新的工艺过程;评价和比较可供选择的工艺方案;改造现有的工艺;操作故障分析和打破装置操作的瓶颈;优化和改善装置的产量和效益;评价与环境的适应性等。
一个模拟软件的产生有其限制,随着时间的推移及理论研究的进展,必须将新的设计思想与理论研究成果融入到系统内,不断扩充和更新其内容以提高系统的性能。这项工作不仅是软件开发者的任务,用户也应当参与进来,运用他们所掌握的知识和经验,进行软件的二次开发。同时,由于某些化工生产过程的复杂性和具体性,模拟软件现有的功能模块不可能模拟所有的实际过程,这也要求用户根据实际过程自行开发用户模型,并将模型添加到软件中去,结合软件已有的数据库和功能模块来进行模拟。而软件开发者应向用户提供这样一个二次开发接口。PRO/Ⅱ就向用户提供了这样一个接口,用户可以利用它将用户模型添加到PRO/Ⅱ体系中,在其系统框架中使用。该接口赋予PRO/Ⅱ极大的扩展能力,而且有助于保护用户已有的开发成果。
PRO/Ⅱ的用户模型使用Fortran语言开发,本文将对PRO/Ⅱ二次开发方法进行探讨,给出其开发步骤和方法,说明用户模型规范及PRO/Ⅱ系统对用户模型的调用方式,并将举一个用户模型实例来说明该方法。
1 用户模型简介
PRO/Ⅱ用户模型是指当PRO/Ⅱ体系提供模块不能满足用户需求时,由用户自行开发的模块,它由一个或者若干用户添加的子程序构成。PRO/Ⅱ支持四种用户模型,即单元操作模型,热力学方法模型,传递性质方法模型和反应动力学模型[1-2]。
2 用户模型开发步骤和方法
不同于一般Fortran程序的开发,PRO/Ⅱ用户模型的开发涉及到调用PRO/Ⅱ系统的一些接口子程序及完成与系统间的参数传递,所以其开发有特定的步骤和方法。编写用户模型是完成一个用户模型开发的核心部分,本文第3部分将对用户模型的编写规范进行详细说明;编译和链接用户模型,PRO/Ⅱ用户模型的编译和连接使用的是Windows XP操作系统下的DEC Visual FORTRAN5.0 D或6.0。步骤为:①在 Windows XP系统下运行 DEC Visual FORTRAN 5.0D or 6.0。②新建一个工作空间(workspace),将编写好的.for文件添加到该工作空间中,编译通过。③编写一个.def(模块定义)文件,该文件用于生成动态链接库。运行build.dll命令,生成动态链接库,即一个.dll文件。提供动态链接库到PRO/Ⅱ体系中,复制动态链接库即.dll文件到PRO/Ⅱ的执行目录下。
3 用户模型编写规范
3.1 通用编写规则
不论开发哪一类用户模型,其子程序源代码的编写都要遵循一些通用的规则,现将这些通用规则总结如下:
①用户添加的子程序必须使用ANSI标准的FORTRANⅣ或者FORTRAN 77来书写,以便保持与PRO/Ⅱ的兼容性。②存储变量应当被初始化,因为许多操作系统不能执行该功能。③用户添加的子程序应当能够测试计算错误,例如0分母,指数溢出等。④PRO/Ⅱ接口子程序可以返回错误指示,这些错误指示应当被用户添加的子程序测试,再采取适当的行动。⑤不能改变 PRO/Ⅱ公用区/XPROPX/、/CUDATA/、 /OUTFAC/和/FACTOR/里的公用存储信息,不能改变在用户添加的公用区/UTHERX/里的任何变量的值。⑥用FIGETU程序来取得特殊顺序的输入输出文件的FORTRAN单元数。⑦执行计算时必须考虑单位。(在PRO/Ⅱ系统里的所有存储数据是按照输入单位的,除了/XPROPX/里的临界质。)⑧应当规范的书写 FORTRAN源代码,尤其是那些会被重复使用的用户添加子程序,例如热力学函数或者在迭代计算里的函数。⑨用户添加子程序里的循环应预先给以限制。
3.2 与PRO/Ⅱ信息交流
用户添加子程序和PRO/Ⅱ之间的信息交流被通过三种方式完成:①子程序参数列表;②接口子程序;③公用存储区。
表1 用户模型子程序参数列表
用户添加的计算子程序代替一个已经在PRO/Ⅱ里存在的虚拟子程序。因此,用户写的子程序必须与那些虚拟子程序使用相同的参数列表。表1给出了针对每种用户模型的子程序参数列表。
表2给出了执行各种功能的接口子程序。这些接口子程序可以被用户添加的子程序调用来实现与PRO/Ⅱ的存储区的信息传递。用户在编写用户模型过程中需要调用这些接口子程序时,使用下列命令:call subrname(subrname为接口子程序名)。
表2 PRO/Ⅱ接口子程序
表3给出了PRO/Ⅱ的公用区,用户可以从组分性质,热力学数据,和转换因子公用区取得信息。用户在编写用户模型过程需要调用这些公用区时,使用命令:INCLUDE'* .CMN'(* 为公用区名)。
表3 PRO/Ⅱ公用区
4 例子
本文开发了反应精馏用户模型,以此为例说明PRO/Ⅱ的功能扩展方法。此用户模型选取的是均相板式塔连续反应精馏过程的平衡级数学模型(EQ),求解方法采用的是方程解离法——泡点法。此用户模型进行的是操作型计算,即已知输入和模型参数求输出。其程序框图如图1所示[3-14]。
图1 反应精馏塔程序框图
5 结论
①PRO/Ⅱ用户模型也是由一个或者若干用户添加的子程序构成。PRO/Ⅱ支持四种用户模型,即单元操作模型,热力学方法模型,传递性质方法模型和反应动力学模型。②用户添加子程序和PRO/Ⅱ之间的信息交流被通过三种方式完成:子程序变量列表;接口子程序;公用存储区。用户模型中的主子例行程序代替一个已经在PRO/Ⅱ里存在的虚拟子程序。因此,用户写的主子例行程序必须那些虚拟子程序使用相同的变量列表。PRO/Ⅱ提供了11种执行不同功能的接口子程序和6种公用存储区,这些接口子程序和公用存储区可以通过特定方式被用户模型调用来实现与PRO/Ⅱ系统间的信息传递。
③PRO/Ⅱ用户模型的编译和连接使用的是Windows XP操作系统下的DEC Visual FORTRAN 5.0D或6.0,并通过编写一个模块定义文件生成动态链接库。复制动态链接库即.dll文件到PRO/Ⅱ的执行目录下,即完成用户模型的开发。
[1]PRO/Ⅱ Pdts- uas(Version 5.1)[J].Simsci Technology,Inc.
[2]PRO/Ⅱ User Guide(Version 5.1)[J].Simsci Technology,Inc.
[3]漆志文,孙海军,施军民,等.反应分离过程模拟I.反应精馏过程[J].华东理工大学学报,1992,25(1):19-23.
[4]周传光,郑世清,胡仰栋,等.部分牛顿法模拟反应精馏过程[J].化学工程,1993,21(3):30 -35.
[5]刘庆林,夏建军,张志炳.反应精馏过程模拟与参数的影响[J].计算机与应用化学,2000,17(3),219 -223.
[6]唐正娇,韦藤幼,童张法.反应精馏过程模拟仿真软件开发[J].广西民族学院学报:自然科学版,2000,6(4):272-274.
[7]刘训峰,张瑞生,袁渭康,等.伴有平衡反应的分离过程的数学模拟[J].化学反应工程与工艺,1993,9(4):444-450.
[8]邱若磐.MTBE反应精馏体系汽液平衡研究[J].齐鲁石油化工,1990(4):27-33.
[9]Y A CHANG,J D SEADER.Simulation of continuous reaction distillation by a homotopy-continuation method[J].Comput Chem Engng,1988,12(12):1243 -1255.
[10]K Alejski,J Szymanowski,M Bogachi.The application of a minimization method for solving reacting-distillation problems,Comput Chem Engng,1988,12(8):833-839.
[11]Sophie UNG,Micheal F Doherty.Vapor-liquid phase equilibrium in system with mutiple chemical reactions[J].Chemical Engineering Science,1995,50(1):23 -48.
[12]A Izarraraz,G W Bentzen,R G Anthony,et al.Solve more distillation problems, Hydrocarbon Processing,1990,4:195 -203.
[13]Ciric A R,Gu Deyao,Synthesis of nonequilibrium reactive distillation processes by minlp optimization[J].AIChE J,1994,40(9):1479 -1485.