化工設(shè)計(jì)大賽能量衡算程序
寫在最前面
化工設(shè)計(jì)大賽已經(jīng)結(jié)束了一周多,本該認(rèn)真準(zhǔn)備考研的我卻沒法靜下心來學(xué)習(xí),這篇專欄算是對之前半年的總結(jié),也是為了讓我放下之前半年,從新找回學(xué)習(xí)狀態(tài)。本人所在的隊(duì)伍只是為了完賽,而且代碼是2小時(shí)完成的,所以很多內(nèi)容做的不是很精細(xì),屬于能用就行,達(dá)不到省賽國賽的要求,如果您有意參加省賽國賽,還請根據(jù)自己的需求進(jìn)行修改。作者本人是某四非學(xué)校拿不到獎(jiǎng)學(xué)金的彩筆,所以很多方面的知識都有欠缺,還望各位大佬海涵。
代碼思路
能量衡算所涉及的信息包括單元操作的能量消耗(包括壓力變送器的功和熱交換器(含塔附件的再沸器與冷凝器)和反應(yīng)器的熱)以及流股的部分流股信息(包括流股編號、溫度、壓力、氣相分率、摩爾流量、質(zhì)量流量、體積流量和焓流量)。而從最終的結(jié)果來看,我們需要生成一個(gè)表格,表格包含單元操作,單元操作的所有流股以及能量變化相關(guān)數(shù)據(jù)。

所以我們先定義了兩個(gè)類,分別是單元class_unit和流股class_stream。
對于單元操作,我們需要單元操作的位號、類型、功、熱、進(jìn)出流股。
對于流股,我們除了需要流股的編號、溫度、壓力、氣相分率、摩爾流量、質(zhì)量流量、體積流量和焓流量以外,還需要流股的源和目標(biāo)。
之后我們要建立流與單元之間的關(guān)系,所以給予單元的類添加流股的方法。
同時(shí)定義一個(gè)函數(shù),通過流股中包含的信息為其匹配對應(yīng)的單元。因?yàn)橛行┝鞴煽赡軟]有源或目標(biāo)單元,或者其源或目標(biāo)單元無需進(jìn)行衡算(如節(jié)流閥,分流器,混合器等)所以采用try-except防止其在找不到單元時(shí)報(bào)錯(cuò)。
這樣所有的單元操作實(shí)例中已經(jīng)包含了所有的相關(guān)信息,即可以通過一個(gè)函數(shù)來生成所需的表格。根據(jù)最終的需求,表格分為三部分:單元操作、流股匯總、能量衡算。
單元操作部分比較簡單,直接生成即可。
流股匯總部分的表頭需要通過進(jìn)料物流的數(shù)量進(jìn)行調(diào)整,所以將表頭單獨(dú)拆分出來進(jìn)行生成。
能量衡算部分也比較簡單,直接生成即可。不過需要注意的是如果單元操作是流股間換熱器(HeatX)的情況下,誤差應(yīng)該是進(jìn)出物流的總焓流量之差,而非進(jìn)出物流的總焓流量之差與單元負(fù)荷之差。這是因?yàn)镠eatX的負(fù)荷是流股間的換熱量,因此公用工程負(fù)荷為0。
有了這些函數(shù)之后,需要讀取數(shù)據(jù)并進(jìn)行批量操作。
單元與流股的數(shù)據(jù)如圖所示


將這些數(shù)據(jù)讀取到程序內(nèi),并進(jìn)行單位換算,格式化。
之后批量生產(chǎn)單元類的實(shí)例,流股類的實(shí)例,并匹配所有流股類的實(shí)例,并完成表格生成。
生成結(jié)果如圖


改進(jìn)思路與擴(kuò)展應(yīng)用
目前我能想到的改進(jìn)思路包括:
1 通過API接口讀取數(shù)據(jù),而非通過給定的表格
2 調(diào)整輸出格式,使其更加美觀
目前我能想到的擴(kuò)展應(yīng)用:
1 完成換熱網(wǎng)絡(luò)設(shè)計(jì),程序中已經(jīng)包括了所有的流股信息,可以通過遺傳算法或者夾點(diǎn)技術(shù)發(fā)進(jìn)行換熱網(wǎng)絡(luò)設(shè)計(jì)
2 管道選型
3 物料衡算
2 3兩點(diǎn)只需要在流信息中添加相關(guān)的參數(shù),后續(xù)的內(nèi)容是顯然程序化的,可以進(jìn)行批量操作
附:代碼源碼