前言

  經過了這麼長的流程,我們的電腦終於準備好可以掛 Fortran 的檔案給 AspenPlus 跑了,那這篇會用 Fortran 寫一個超簡單的動力式、 透過 AspenPlus 編譯、建立 AspenPlus 模擬檔案、掛到 AspenPlus 上並且成功執行!對於這個動力式我就稍微解說一下好了,整個反應式長這樣:

$$CO+\frac{1}{2} O_{2} \rightarrow CO_{2}$$

這反應在現實中好不好反應、反應的條件都先不理它,只要 AspenPlus 檔案中看到它有照我們的方式反應就好,現在我們就一步一步一起做吧~
如果需要看其他步驟,下面有目錄連結就點進去看吧~

系列文章目錄

建立 AspenPlus 模擬檔案

  雖然我也可以直接把檔案給你們跑啦,但是 AspenPlus 版本眾多,我不一定可以滿足各種版本,所以我搞了一個非常非常簡單的例子就叫大家跟著 一起做可能還比較快。首先起手式就是打開對應版本的 AspenPlus,而且那個 版本必須要前面我們已經設定好 Fortran 編譯器的版本 喔!!因為之前我都是 用 V10 來做示範,因此這邊我就開 V10,你們之前用哪個版本做就開哪個版本:
開啟Aspen+

之後就是建立一個檔案這樣,這步驟熟悉 AspenPlus 的應該都會,我只是把我的步驟 show 出來而已,不一定要照我這樣做:
建立專案

接下來把三個物質給輸入進去,分別為 \(CO\)\(O_{2}\)\(CO_{2}\) ,請各位務必化合物 順序 要跟我圖上面的一樣,不然後面寫 code 的地方會 有問題,如果真要說原因的話,其實是這樣的,我們後面在寫 code 的時候,會需要取用或輸出對應物質的性質或反應速率,就以反應速率來說好了,在我們那個 code 裡面,物質的反應速率變數名稱為 RATES(物質順序號) ,這個物質順序號就跟我們這邊輸入物質的順序有關了,依照我們剛剛輸入的物質順序,現在 1 號就是 \(CO\),2 號就是 \(O_{2}\) ,3 號就是 \(CO_{2}\),所以 RATES(1) 就是 \(CO\) 的反應速率, RATES(2) 就是 \(O_{2}\) 的反應速率, RATES(3) 就是 \(CO_{2}\) 的反應速率了~如果需要更仔細的解說, 就要去看 User Guide 了:
輸入化合物

熱力學模型就先隨便選吧,反正我們這個只是隨便弄的反應,也沒有要做分離,而且化合物都是氣體,這邊我就選 PENG-ROB
選熱力學模型

接下來我們就先存檔吧,就自己找一個位置存,記得在哪裡就好,存好就先把這檔案關掉吧:
存檔

編寫動力式 Fortran 檔

  接下來我們就先編寫動力式 Fortran 檔,但 AspenPlus 對於這個檔案的輸入輸出有制式的規定,沒看 User Guide 一定沒辦法寫的正確, 看著 User Guide 自己慢慢寫其實也不是很實際, AspenPlus 你們安裝 AspenPlus 應用程式的資料夾裡面有附贈各種 Fortran 檔的範例(如:動力式、 物性計算、質傳計算...等等),用那個改比較快且正確,那我們就先把這檔案取出來,這次我們是要撰寫動力式,使用 usrkin.f 檔,檔案位置在 C:\Program Files (x86)\AspenTech\Aspen Plus V{對應版本號}\Engine\User,看你是甚麼版本的 AspenPlus 就去對應版本的路徑, 那如果你的 AspenPlus 是 V11.0 ,應用程式就是在 Program Files 裡面(就是C:\Program Files\AspenTech\Aspen Plus V11.0\Engine\User 裡面),找到檔案就把該檔案複製到你剛剛存 AspenPlus 模擬檔案的工作目錄底下,記得你的 Fortran 檔案要跟 AspenPlus 模擬檔案在同個目錄 喔~:
找範例檔並複製到工作目錄

然後打開 usrkin.f 這個檔案,因為之前我們已經安裝 Visual Studio 了,所以我們可以用這軟體打開該檔案,或是你爽要用記事本打開也可以, 打開後拉到最下面,新增三個反應速率式:

RATES(1) = -1.0
RATES(2) = -0.5
RATES(3) = 1.0

這段的意思呼應到上面有講到的化合物順序, RATES(1) 就是化合物1的反應速率,也就是 \(CO\),它的速率不管在什麼溫度跟物質濃度下是 -1,在 Aspen 的認知裡, RATES 的單位根據不同情況會有不同指定的單位,等等我會用 PFR 來模擬反應,因此這邊 RATES 的單位就是 kmole/(meter·sec),這在 User Guide 都有寫,這邊就先講結果就好,所以 RATES(1) = -1.0 的意思就是我們的進料 \(CO\) 經過 PFR 會每秒、每公尺減少 1.0 kmole、進料 \(O_{2}\) 經過 PFR 會每秒、每公尺減少 0.5 kmole、出料 \(CO_{2}\) 經過 PFR 會每秒、每公尺增加 1.0 kmole,當然我們所輸入的反應速率要元素平衡喔,不然在 Aspen 模擬中會有錯誤的~
式子的解釋大概就是這樣,還不想知道為什麼的人就像下圖一樣照打上去就對了,打好後存檔關閉檔案: 輸入反應速率式

關閉後將檔名改成大寫(這就先不要管為什麼了,先能跑就好~):
大寫檔名

編譯動力式 Fortran 檔

  動力式檔案寫好了後就是要編譯檔案成 AspenPlus 可以讀到的檔案格式,編譯的步驟如下,首先我們先打開對應版本的 Customize Aspen Plus , 因為我整個操作都是用 V10,因此我就是打開 Customize Aspen Plus V10:
打開Customize Aspen Plus

打開來會看到一個 CMD 的介面,然後它的工作目錄是在 AspenPlus 資料夾裡面,接下來使用CD [你的工作路徑]指令將工作目錄切換到我們剛剛存放 Aspen 檔案跟 Fortran 檔的地方:
切換工作目錄

現在我們使用aspcomp [fortran檔檔名]指令來編譯我們的 Fortran 檔,按下 Enter 後如果甚麼都沒發生表示編譯成功!並且在你的工作目錄下 會看到多出一個 USRKIN.obj 檔,這個檔案就是要給 Aspen檔吃進去的:
編譯檔案
出現obj檔

在 Aspen 檔中執行 Fortran 動力式

  Fortran 的部分都結束了,接下來就是跑模擬了,首先就是打開我們剛剛的模擬檔案,新增一個動力式,它的類型是 USER
新增USER動力式

然後在 Subroutine 的標籤中,把 Name 旁邊的空格輸入我們剛剛編譯好的 OBJ 檔案檔名:
輸入檔名

  這樣動力式就新增好了,之後就是新增一個 PFR 反應器,並且把該接的物流接一接,那怎麼新增反應器跟接物流就不是我們教學內容了,我覺得 會想要搞 Fortran 動力式應該對 AspenPlus 有一定的熟悉度了((吧:
建立Flowsheet

PFR 的設定就是下面這樣:
1. Adiabatic,因為選這個不用在設定期它參數比較方便 XDD
adiabatic
2. Length 跟 Diameter 都是 1 meter,根據上面反應速率的單位(kmole/meter/sec)的單位,就看看一公尺長的 PFR 是否會讓 \(CO\) 減少 -1 kmol/s、 \(O_{2}\) 減少 -0.5 kmol/s 並產生 1 kmol/s 的 \(CO_{2}\) 吧~
長度跟直徑
3. Reaction 選剛剛的 R-1
反應
進料物流的設定就簡單了:
1. 25 攝氏溫度
2. 1 bar
3. \(CO\) 有 1 kmol/sec 、 \(O_{2}\) 有 0.5 kmol/sec 的摩爾流率,記得這邊摩爾流率的單位一定要是 kmol/sec 啊!
物流輸入

非常辛苦的把以上的步驟都做完了後,應該就會看到下圖的樣子,然後終於可以跑模擬了!
開始跑模擬

呼~看來是有成功收斂沒問題!來看看結果是不是符合預期,在 PFR 上面點右鍵,然後點擊 Stream Results
看結果

拉到下面看 Mole Flows 並把單位都改成 kmol/sec,嗯~~~看來整個反應有符合我們的預期來進行呢~
預期的結果

結語

  終於啊終於,我們走到了這步,如果跟著所有的步驟得到剛剛那樣的結果的話,表示你的 Fortran 掛 AspenPlus 是完全沒有問題了~接下來 就可以依照自己的要求來撰寫所需要的動力式,不過要注意的是,如果你有在使用各種不同版本的 AspenPlus ,每一種版本都要各別編譯一次喔,就是用 Customize Aspen Plus 各別編譯一次,這樣才比較不會有問題。
  這次的教學真的有點長,感覺好像也不是寫得特別好,或許有機會再修改吧@@之後應該還會有一些補充的文章,尤其是那個 SetCompiler 列表的 部分,雖然說去 AspenTech 官方網站更新就好,不過也是可以自己撰寫那個檔案的,想說稍微介紹一下裡面的語法之類,了解語法如果之後有甚麼問題,感覺對 處理問題上面會比較得心應手吧,我覺得啦...


Comments

comments powered by Disqus