機器ユニットの計算結果
バイオ・リファイナリー(再生可能資源であるバイオマスを原料にバイオ燃料や樹脂などを製造するプラントや技術)のシミュレーションソフト"BioSTEAM"の機器ユニットの計算結果(シミュレーション結果)の見方を蒸留塔のモデルを使って解説しています。
オリジナルのページはUnit operation resultsです。
ソースコードは以下の実行環境で確認しています。
- Visual Studio Code バージョン: 1.104.2
- 拡張機能:Jupyter バージョン 2025.8.0
- Python 3.12.10
- biosteam 2.52.13
- graphviz-14.0.2
機器ユニットの計算結果
設計とモデル化に関するメモ
BioSTEAM には、設計の教科書や文献[1–5] をもとに構成された、幅広い機器モデルとコスト相関式が含まれています。 ポンプ、熱交換器、フラッシュ蒸留器、ミキサーセトラー(媒抽出を行いながら2液に比重分離する装置)、蒸留塔などの基本的な機器ユニットは、非常に厳密にモデル化され、設計されています。 これらの基本的な機器ユニットは、運転温度と圧力、供給条件、構造材料、分離温度といった設計仕様に基づいて生成できます。 これらの設計仕様には、熱交換器の伝熱面積、圧力容器のサイズや板厚、蒸留塔の段数(ステージ数)が含まれますが、これらに限定されているわけではありません。 他の単位操作モデルは、分離器(スプリッター)としてモデル化されることが多く、これは「ユニットに流入する各成分の所定の割合が分離される」という意味です。 また、これらの装置の購入価格は、サイズ係数との相関を用いて推定されます。この相関式は最終的に、物質の流量を基にした関数として表されます。 BioSTEAMでは、各機器ユニットの設計仕様や要件に基づいて、購入コストの相関や、建設係数を選定します。 各機器ユニットの詳細なドキュメントや使用例については、機器ユニットの説明をご参照ください。
蒸留塔モデル
BioSTEAMの機器ユニットモデルがどの様に結果を算出するか、蒸留塔モデルを例に説明します。- 蒸留塔モデル
- 設計に関する結果
design_results
シミュレーションを実行する前に、結果が出力されるところに何もなく、ストリームも空で構成要素も初期化されて空になっていることを確認します。
- 購入コスト
purchase_costs
- 熱関係
heat_utilities
- 電力関係
power_utility
- 凝縮器(コンデンサー)
- シミュレーションの実行 シミュレーションを実行します。まずoutsで、insのfeedが留出製品(distillate)と塔底製品(bottoms_product)に分離された結果が分かります。それぞれ、水とエタノールがモル分率でどの程度になったかを示しています。 詳細な結果は、この機器ユニットの
- 凝縮器(コンデンサー)の計算結果 凝縮器(コンデンサー)部の流入と流出ストリームを確認します。気相の水、エタノール混合液が、気液混合になっているようです。
- 結果
design_results
設計に関わる詳細な結果を - コスト
purchase_costs
購入コストは - 熱関係
heat_utilities
熱関係は - 電力
power_utility
電力関係は results()
メソッド- 単位系 これらの結果の単位は
- 単位を変更して結果を取得 もちろん、結果を別の単位系で取得することも可能です。
- 凝縮器(コンデンサー)の結果
- リボイラーの結果
- マッケーブ・シール図 機器ユニットによっては、便利な特有のメソッドを持つものもあります。蒸留塔モデルにはマッケーブ・シール図を作成するメソッドもあります。
from biosteam import Stream, settings
import biosteam as bst
bst.nbtutorial()
# 最初に使用する物質の物性を設定します
settings.set_thermo(['Water', 'Ethanol'])
# 分離したい供給ストリームの気泡点データをストリームから取得してセットします
feed = Stream('feed', Water=1.08e+03, Ethanol=586)
bp = feed.bubble_point_at_P()
feed.T = bp.T # 供給ストリームfeedの温度をその気泡点温度にセット
# 蒸留塔モデルを生成し、シミュレーションします
# 2成分を「バイナリ蒸留塔」で分離します
# 3つ以上の成分を対象としたい場合は、「ショートカットカラム(簡易蒸留塔)」を使って下さい
# 複雑な蒸留操作を行う場合、「MESHDistillation(メッシュ蒸留塔)」を使用します
D1 = bst.BinaryDistillation(
'D1', ins=feed,
outs=('distillate', 'bottoms_product'),
LHK=('Ethanol', 'Water'), # 軽質成分と重質成分としたい成分を設定します
y_top=0.79, # 塔頂の軽質成分のモル分率
x_bot=0.001, # 塔底の軽質成分のモル分率
k=1.25, # 分離係数、実環流比/最少還流比
is_divided=True, # 濃縮部と還元部が分離されているかどうか
)
D1.diagram(format='png')
D1.show()
BinaryDistillation: D1
ins...
[0] feed
phase: 'l', T: 354.28 K, P: 101325 Pa
flow (kmol/hr): Water 1.08e+03
Ethanol 586
outs...
[0] distillate
phase: 'l', T: 298.15 K, P: 101325 Pa
flow: 0
[1] bottoms_product
phase: 'l', T: 298.15 K, P: 101325 Pa
flow: 0
bubble_point_at_P()は、ストリームの
気泡点(Bubble point)のデータを取得できます。気泡点とは、ある溶液が最初に蒸気の泡を作り、その溶液の気化を開始する温度である(圧力一定時)純粋な液体であれば、気泡点は沸点と呼ばれる。しかし、溶液が2つ以上の成分から構成されている場合、溶液の沸点は純粋な溶媒とは異なり、バブルポイントと呼ばれる[*1]そうです。
D1.design_results
{}
D1.purchase_costs
{}
D1.heat_utilities
{}
D1.power_utility
PowerUtility: consumption: 0 kW production: 0 kW power: 0 kW cost: 0 USD/hr全ての機器ユニットが
design_results、
purchase_costs、
heat_utilities、
power_utilityの計算結果の属性を持ちます。
heat_utilitiesは蒸気や冷却水などの熱源・冷却に関する熱的ユーティリティオブジェクトのリストで、
power_utilityは電力に関する電力ユーティリティオブジェクトです。 機器ユニットによっては、その機器ユニットに特有の属性や構成要素が含まれている場合もあります。蒸留塔モデルに含まれる、凝縮器(コンデンサー)を見てみましょう。
D1.condenser.diagram()
D1.condenser.show()
HXutility: condenser
ins...
[0] vapor from BinaryDistillation-D1
phase: 'g', T: 298.15 K, P: 101325 Pa
flow: 0
outs...
[0] to RefluxDrum-reflux_drum
phases: ('g', 'l'), T: 298.15 K, P: 101325 Pa
flow: 0
design_results、
purchase_costs、
utilitiesに格納されます。
D1.simulate()
D1.diagram(format='png')
D1.show(T='degC', P='atm', composition=True)
BinaryDistillation: D1
ins...
[0] feed
phase: 'l', T: 81.125 degC, P: 1 atm
composition (%): Water 64.8
Ethanol 35.2
------- 1.67e+03 kmol/hr
outs...
[0] distillate
phase: 'g', T: 78.484 degC, P: 1 atm
composition (%): Water 21
Ethanol 79
------- 741 kmol/hr
[1] bottoms_product
phase: 'l', T: 99.64 degC, P: 1 atm
composition (%): Water 99.9
Ethanol 0.1
------- 925 kmol/hr
D1.condenser.show()
HXutility: condenser
ins...
[0] vapor from BinaryDistillation-D1
phase: 'g', T: 351.72 K, P: 101325 Pa
flow (kmol/hr): Water 329
Ethanol 1.13e+03
outs...
[0] to RefluxDrum-reflux_drum
phases: ('g', 'l'), T: 351.63 K, P: 101325 Pa
flow (kmol/hr): (g) Water 156
Ethanol 585
(l) Water 173
Ethanol 540
design_resultsで確認します
D1.design_results
{'Theoretical feed stage': 26,
'Theoretical stages': 31,
'Minimum reflux': 0.7708366601477002,
'Reflux': 0.9635458251846253,
'Rectifier stages': 45.0,
'Stripper stages': 9.0,
'Rectifier height': 78.940416,
'Stripper height': 25.804416,
'Rectifier diameter': 9.960911054645866,
'Stripper diameter': 7.836649195211977,
'Rectifier wall thickness': 0.4375,
'Stripper wall thickness': 0.375,
'Rectifier weight': 41839.53745073475,
'Stripper weight': 12158.22849650827}
purchase_costsです。単位はUSDですね。
D1.purchase_costs
{'Rectifier trays': 90196.5633778153,
'Stripper trays': 19469.130282277605,
'Rectifier tower': 154208.58287314902,
'Stripper platform and ladders': 48573.03764079211,
'Stripper tower': 69659.36129843778,
'Rectifier platform and ladders': 17028.394866860577,
'Condenser - Floating head': 65776.36616982374,
'Reflux drum - Vertical pressure vessel': 40913.03779781813,
'Reflux drum - Platform and ladders': 10650.872732593733,
'Pump - Pump': 4526.29514053799,
'Pump - Motor': 440.8000416276018,
'Reboiler - Floating head': 65109.223990066734}
heat_utilitiesを見ます。
D1.heat_utilities
[>cooling_water: -2.84e+07 kJ/hr, 1.94e+04 kmol/hr, 9.45 USD/hr<, >low_pressure_steam: 6.26e+07 kJ/hr, 1.62e+03 kmol/hr, 385 USD/hr<]
power_utilityです。
D1.power_utility
PowerUtility: consumption: 2.49 kW production: 0 kW power: 2.49 kW cost: 0.195 USD/hr
results()メソッドはこれらの結果を分かりやすく表示してくれます。
| 蒸留塔 | 単位 | D1 | |
|---|---|---|---|
| Electricity (電力関係) |
Power(電力) | kW | 2.49 |
| Cost(コスト) | USD/hr | 0.195 | |
| Cooling water (冷却水) |
Duty(熱負荷) | kJ/hr | -2.84e+07 |
| Flow(流量) | kmol/hr | 1.94e+04 | |
| Cost(コスト) | USD/hr | 9.45 | |
| Low pressure steamr (低圧蒸気) |
Duty(熱負荷) | kJ/hr | 6.26e+07 |
| Flow(流量) | kmol/hr | 1.62e+03 | |
| Cost(コスト) | USD/hr | 385 | |
| Design(設計) | Theoretical feed stage(理論供給段) | 26 | |
| Theoretical stages(理論段) | 31 | ||
| Minimum reflux(最少還流比) | Ratio | 0.771 | |
| Reflux(還流比) | Ratio | 0.964 | |
| Rectifier stage(精留部の段数) | 45 | ||
| Stripper stages(脱留部の段数) | 9 | ||
| Rectifier height(精留部の高さ) | ft | 78.9 | |
| Stripper height(脱留部の高さ) | ft | 25.8 | |
| Rectifier diameter(精留部の直径) | ft | 9.96 | |
| Stripper diameter(脱留部の直径) | ft | 7.84 | |
| Rectifier wall thickness(精留部の肉厚) | in | 0.438 | |
| Stripper wall thickness(脱留部の肉厚) | in | 0.375 | |
| Rectifier weight(精留部質量) | lb | 4.18e+04 | |
| Stripper weight(脱留部質量) | lb | 1.22e+04 | |
| Purchase cost (購入コスト) |
Rectifier trays(精留部トレー) | USD | 9.02e+04 |
| Stripper trays(脱留部トレー) | USD | 1.95e+04 | |
| Rectifier tower(精留塔) | USD | 1.54e+05 | |
| Stripper platform and ladders (脱留部足場およびはしご) |
USD | 4.86e+04 | |
| Stripper tower(脱留塔) | USD | 6.97e+04 | |
| Rectifier platform and ladders (精留部足場およびはしご) |
USD | 1.7e+04 | |
| Condenser - Floating head (凝縮器 - 浮動ヘッド型) |
USD | 6.58e+04 | |
| Reflux drum - Vertical pressure vessel (リフラックスドラム - 縦型圧力容器) |
USD | 4.09e+04 | |
| Reflux drum - Platform and ladders (リフラックスドラム 足場およびはしご) |
USD | 1.07e+04 | |
| Pump - Pump(ポンプ本体) | USD | 4.53e+03 | |
| Pump - Motor(ポンプ モーター) | USD | 441 | |
| Reboiler - Floating head (浮動ヘッド型リボイラ) |
USD | 6.51e+04 | |
| 購入コスト(合計) | USD | 5.87e+05 | |
| ランニングコスト | USD/hr | 395 |
_unitsで確認することが出来ます。
D1._units
{'Minimum reflux': 'Ratio',
'Reflux': 'Ratio',
'Rectifier height': 'ft',
'Rectifier diameter': 'ft',
'Rectifier wall thickness': 'in',
'Rectifier weight': 'lb',
'Stripper height': 'ft',
'Stripper diameter': 'ft',
'Stripper wall thickness': 'in',
'Stripper weight': 'lb',
'Height': 'ft',
'Diameter': 'ft',
'Wall thickness': 'in',
'Weight': 'lb'}
rectifier_height = D1.get_design_result('Rectifier height', 'meter')
round(rectifier_height)
24完全を期すために、残りの結果も以下に示します。
D1.condenser.diagram()
D1.condenser.show()
HXutility: condenser
ins...
[0] vapor from BinaryDistillation-D1
phase: 'g', T: 351.72 K, P: 101325 Pa
flow (kmol/hr): Water 329
Ethanol 1.13e+03
outs...
[0] to RefluxDrum-reflux_drum
phases: ('g', 'l'), T: 351.63 K, P: 101325 Pa
flow (kmol/hr): (g) Water 156
Ethanol 585
(l) Water 173
Ethanol 540
D1.reboiler.diagram()
D1.reboiler.show()
HXutility: reboiler
ins...
[0] from Pump-pump
phase: 'l', T: 370.63 K, P: 101325 Pa
flow (kmol/hr): Water 2.36e+03
Ethanol 19.6
outs...
[0] to PhaseSplitter-bottoms_split
phases: ('g', 'l'), T: 372.79 K, P: 101325 Pa
flow (kmol/hr): (g) Water 1.44e+03
Ethanol 18.7
(l) Water 924
Ethanol 0.925
from matplotlib import pyplot as plt
D1.plot_stages()
plt.show()
参考文献
- Seider, W. D.; Lewin, D. R.; Seader, J. D.; Widagdo, S.; Gani, R.; Ng, M. K. Cost Accounting and Capital Cost Estimation. In Product and Process Design Principles; Wiley, 2017; pp 426−485.
- Svrcek, W. Y.; Monnery, W. D. Design Two-Phase Separators Within the Right Limits. In Chemical Engineering Progress (CEP); The American Institute of Chemical Engineers, 1993; pp 53−60.
- Apostolakou, A. A.; Kookos, I. K.; Marazioti, C.; Angelopoulos, K. C. Techno-Economic Analysis of a Biodiesel Production Process from Vegetable Oils. Fuel Process. Technol. 2009, 90, 1023−1031.
- Green, D. W. Distillation. In Perry’s Chemical Engineers’ Handbook, 9 ed.; McGraw-Hill Education, 2018.
- Duss, M.; Taylor, R. Predict Distillation Tray Efficiency. Chem. Eng. Prog. 2018, 24−30.
参考文献(今回追加したもの)
←
パイプ記法





