フローシートの管理
バイオ・リファイナリー(再生可能資源であるバイオマスを原料にバイオ燃料や樹脂などを製造するプラントや技術)のシミュレーションソフト"BioSTEAM"で各機器のつながりを登録するフローシートの管理について説明しています。
オリジナルのページはManaging flowsheetsです。
ソースコードは以下の実行環境で確認しています。
- Visual Studio Code バージョン: 1.104.2
- 拡張機能:Jupyter バージョン 2025.8.0
- Python 3.12.10
- biosteam 2.52.13
- graphviz-14.0.2
フローシートの操作
IDで任意のユニットやシステム、ストリームの情報を取得
- フローシート 全てのBioSTEAMのオブジェクトはメインフローシートに登録されます。最初にBioSTEAMがインポートされたとき、デフォルトでは
- 機器ユニット 例として使用するミキサーを設定。
- 流出ストリーム 流出ストリームのみ、
- フローシート もう一つ、ミキサーを設定します。2つのユニットは一つの図として表示されます。
- ストリーム
- 機器ユニット
- システム
デフォルトフォローシートが設定されます。
from biosteam import main_flowsheet as F, settings, units
import biosteam as bst
bst.nbtutorial() # ライトモードの図、ウォーニングの抑制を設定
F
<MainFlowsheet: default>
Fに登録されているため、F.M1で内容が取得できます。
settings.set_thermo(['Water', 'Ethanol'])
units.Mixer('M1')
F.M1.diagram()
F.M1.show()
Mixer: M1
ins...
[0] -
phase: 'l', T: 298.15 K, P: 101325 Pa
flow: 0
[1] -
phase: 'l', T: 298.15 K, P: 101325 Pa
flow: 0
outs...
[0] s1
phase: 'l', T: 298.15 K, P: 101325 Pa
flow: 0
s1というIDがデフォルトで設定されたため、内容を確認します。
F.s1.show()
Stream: s1 from <Mixer: M1> phase: 'l', T: 298.15 K, P: 101325 Pa flow: 0
units.Mixer('M2')
F.diagram()
全てのストリーム、機器ユニット、システムは、Registryオブジェクトとしてメインフローシートに登録されています。
F.stream
Registry: <Stream: s1> <Stream: s2>
F.unit
Registry: <Mixer: M1> <Mixer: M2>
F.system
Registry: (Empty)システムとして登録されているものは、ありません。
他のフローシートへの切り替え
- 新規フローシート 新規のフローシートを作成し、メインフローシートとして設定します。
- 新規の機器ユニット 以降、新しい機器ユニットは、新しいフローシートに登録されます。
- 元のフローシートを参照 元のフローシートに登録されていたものは新しいフローシートにはなく、参照しようとするとエラーが出ます。
- フローシートの切り替え 全てのオブジェクトはフローシートに登録されます。フローシート間の切り替えも簡単です。
- バイオリファイナリー シミュレーションモデル Bioindustrial-Park 内のバイオリファイナリー シミュレーションモデルは、インポート時にそれぞれ独自のフローシートを用意しています。
F.set_flowsheet('new_flowsheet')
F
<MainFlowsheet: new_flowsheet>メインフローシートとして
new_flowsheetが設定されました。
units.Mixer('M3')
F.diagram()
F.M1
--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) Cell In[14], line 1 ----> 1 F.M1 File ~\biosteam\_flowsheet.py:131, in Flowsheet.__getattr__(self, name) 127 def __getattr__(self, name): 128 obj = (self.stream.search(name) 129 or self.unit.search(name) 130 or self.system.search(name)) --> 131 if not obj: raise AttributeError(f"no registered item '{name}'") 132 return obj AttributeError: no registered item 'M1'
F.set_flowsheet('default') # デフォルトのフローシートに戻します
F
<MainFlowsheet: default>今度はエラーは出ません。
F.M1
Mixer: M1
ins...
[0] -
phase: 'l', T: 298.15 K, P: 101325 Pa
flow: 0
[1] -
phase: 'l', T: 298.15 K, P: 101325 Pa
flow: 0
outs...
[0] s1
phase: 'l', T: 298.15 K, P: 101325 Pa
flow: 0
from biorefineries.sugarcane import sugarcane_sys
F.diagram(format='png')
※biorefineriesをインストールしておく必要があります。
$ pip install biorefineries




