原 璐 ,崔 雋
(海工英派爾工程有限公司,山東青島 266061)
PRO/Ⅱ是一種通用的化工過程模擬、優(yōu)化和設計軟件。PRO/Ⅱ可以對各種化工過程進行嚴格的質量和能量衡算。它的應用包括:設計新的工藝過程;評價和比較可供選擇的工藝方案;改造現(xiàn)有的工藝;操作故障分析和打破裝置操作的瓶頸;優(yōu)化和改善裝置的產量和效益;評價與環(huán)境的適應性等。
一個模擬軟件的產生有其限制,隨著時間的推移及理論研究的進展,必須將新的設計思想與理論研究成果融入到系統(tǒng)內,不斷擴充和更新其內容以提高系統(tǒng)的性能。這項工作不僅是軟件開發(fā)者的任務,用戶也應當參與進來,運用他們所掌握的知識和經驗,進行軟件的二次開發(fā)。同時,由于某些化工生產過程的復雜性和具體性,模擬軟件現(xiàn)有的功能模塊不可能模擬所有的實際過程,這也要求用戶根據實際過程自行開發(fā)用戶模型,并將模型添加到軟件中去,結合軟件已有的數(shù)據庫和功能模塊來進行模擬。而軟件開發(fā)者應向用戶提供這樣一個二次開發(fā)接口。PRO/Ⅱ就向用戶提供了這樣一個接口,用戶可以利用它將用戶模型添加到PRO/Ⅱ體系中,在其系統(tǒng)框架中使用。該接口賦予PRO/Ⅱ極大的擴展能力,而且有助于保護用戶已有的開發(fā)成果。
PRO/Ⅱ的用戶模型使用Fortran語言開發(fā),本文將對PRO/Ⅱ二次開發(fā)方法進行探討,給出其開發(fā)步驟和方法,說明用戶模型規(guī)范及PRO/Ⅱ系統(tǒng)對用戶模型的調用方式,并將舉一個用戶模型實例來說明該方法。
PRO/Ⅱ用戶模型是指當PRO/Ⅱ體系提供模塊不能滿足用戶需求時,由用戶自行開發(fā)的模塊,它由一個或者若干用戶添加的子程序構成。PRO/Ⅱ支持四種用戶模型,即單元操作模型,熱力學方法模型,傳遞性質方法模型和反應動力學模型[1-2]。
不同于一般Fortran程序的開發(fā),PRO/Ⅱ用戶模型的開發(fā)涉及到調用PRO/Ⅱ系統(tǒng)的一些接口子程序及完成與系統(tǒng)間的參數(shù)傳遞,所以其開發(fā)有特定的步驟和方法。編寫用戶模型是完成一個用戶模型開發(fā)的核心部分,本文第3部分將對用戶模型的編寫規(guī)范進行詳細說明;編譯和鏈接用戶模型,PRO/Ⅱ用戶模型的編譯和連接使用的是Windows XP操作系統(tǒng)下的DEC Visual FORTRAN5.0 D或6.0。步驟為:①在 Windows XP系統(tǒng)下運行 DEC Visual FORTRAN 5.0D or 6.0。②新建一個工作空間(workspace),將編寫好的.for文件添加到該工作空間中,編譯通過。③編寫一個.def(模塊定義)文件,該文件用于生成動態(tài)鏈接庫。運行build.dll命令,生成動態(tài)鏈接庫,即一個.dll文件。提供動態(tài)鏈接庫到PRO/Ⅱ體系中,復制動態(tài)鏈接庫即.dll文件到PRO/Ⅱ的執(zhí)行目錄下。
不論開發(fā)哪一類用戶模型,其子程序源代碼的編寫都要遵循一些通用的規(guī)則,現(xiàn)將這些通用規(guī)則總結如下:
①用戶添加的子程序必須使用ANSI標準的FORTRANⅣ或者FORTRAN 77來書寫,以便保持與PRO/Ⅱ的兼容性。②存儲變量應當被初始化,因為許多操作系統(tǒng)不能執(zhí)行該功能。③用戶添加的子程序應當能夠測試計算錯誤,例如0分母,指數(shù)溢出等。④PRO/Ⅱ接口子程序可以返回錯誤指示,這些錯誤指示應當被用戶添加的子程序測試,再采取適當?shù)男袆?。⑤不能改?PRO/Ⅱ公用區(qū)/XPROPX/、/CUDATA/、 /OUTFAC/和/FACTOR/里的公用存儲信息,不能改變在用戶添加的公用區(qū)/UTHERX/里的任何變量的值。⑥用FIGETU程序來取得特殊順序的輸入輸出文件的FORTRAN單元數(shù)。⑦執(zhí)行計算時必須考慮單位。(在PRO/Ⅱ系統(tǒng)里的所有存儲數(shù)據是按照輸入單位的,除了/XPROPX/里的臨界質。)⑧應當規(guī)范的書寫 FORTRAN源代碼,尤其是那些會被重復使用的用戶添加子程序,例如熱力學函數(shù)或者在迭代計算里的函數(shù)。⑨用戶添加子程序里的循環(huán)應預先給以限制。
用戶添加子程序和PRO/Ⅱ之間的信息交流被通過三種方式完成:①子程序參數(shù)列表;②接口子程序;③公用存儲區(qū)。
表1 用戶模型子程序參數(shù)列表
用戶添加的計算子程序代替一個已經在PRO/Ⅱ里存在的虛擬子程序。因此,用戶寫的子程序必須與那些虛擬子程序使用相同的參數(shù)列表。表1給出了針對每種用戶模型的子程序參數(shù)列表。
表2給出了執(zhí)行各種功能的接口子程序。這些接口子程序可以被用戶添加的子程序調用來實現(xiàn)與PRO/Ⅱ的存儲區(qū)的信息傳遞。用戶在編寫用戶模型過程中需要調用這些接口子程序時,使用下列命令:call subrname(subrname為接口子程序名)。
表2 PRO/Ⅱ接口子程序
表3給出了PRO/Ⅱ的公用區(qū),用戶可以從組分性質,熱力學數(shù)據,和轉換因子公用區(qū)取得信息。用戶在編寫用戶模型過程需要調用這些公用區(qū)時,使用命令:INCLUDE'* .CMN'(* 為公用區(qū)名)。
表3 PRO/Ⅱ公用區(qū)
本文開發(fā)了反應精餾用戶模型,以此為例說明PRO/Ⅱ的功能擴展方法。此用戶模型選取的是均相板式塔連續(xù)反應精餾過程的平衡級數(shù)學模型(EQ),求解方法采用的是方程解離法——泡點法。此用戶模型進行的是操作型計算,即已知輸入和模型參數(shù)求輸出。其程序框圖如圖1所示[3-14]。
圖1 反應精餾塔程序框圖
①PRO/Ⅱ用戶模型也是由一個或者若干用戶添加的子程序構成。PRO/Ⅱ支持四種用戶模型,即單元操作模型,熱力學方法模型,傳遞性質方法模型和反應動力學模型。②用戶添加子程序和PRO/Ⅱ之間的信息交流被通過三種方式完成:子程序變量列表;接口子程序;公用存儲區(qū)。用戶模型中的主子例行程序代替一個已經在PRO/Ⅱ里存在的虛擬子程序。因此,用戶寫的主子例行程序必須那些虛擬子程序使用相同的變量列表。PRO/Ⅱ提供了11種執(zhí)行不同功能的接口子程序和6種公用存儲區(qū),這些接口子程序和公用存儲區(qū)可以通過特定方式被用戶模型調用來實現(xiàn)與PRO/Ⅱ系統(tǒng)間的信息傳遞。
③PRO/Ⅱ用戶模型的編譯和連接使用的是Windows XP操作系統(tǒng)下的DEC Visual FORTRAN 5.0D或6.0,并通過編寫一個模塊定義文件生成動態(tài)鏈接庫。復制動態(tài)鏈接庫即.dll文件到PRO/Ⅱ的執(zhí)行目錄下,即完成用戶模型的開發(fā)。
[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]劉慶林,夏建軍,張志炳.反應精餾過程模擬與參數(shù)的影響[J].計算機與應用化學,2000,17(3),219 -223.
[6]唐正嬌,韋藤幼,童張法.反應精餾過程模擬仿真軟件開發(fā)[J].廣西民族學院學報:自然科學版,2000,6(4):272-274.
[7]劉訓峰,張瑞生,袁渭康,等.伴有平衡反應的分離過程的數(shù)學模擬[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.