フローシートの管理

バイオ・リファイナリー(再生可能資源であるバイオマスを原料にバイオ燃料や樹脂などを製造するプラントや技術)のシミュレーションソフト"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で任意のユニットやシステム、ストリームの情報を取得

  1. フローシート
  2. 全てのBioSTEAMのオブジェクトはメインフローシートに登録されます。最初にBioSTEAMがインポートされたとき、デフォルトではデフォルトフォローシートが設定されます。
    from biosteam import main_flowsheet as F, settings, units
    import biosteam as bst
    bst.nbtutorial() # ライトモードの図、ウォーニングの抑制を設定
    F
    <MainFlowsheet: default>
  3. 機器ユニット
  4. 例として使用するミキサーを設定。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
  5. 流出ストリーム
  6. 流出ストリームのみ、s1というIDがデフォルトで設定されたため、内容を確認します。
    F.s1.show()
    Stream: s1 from <Mixer: M1>
    phase: 'l', T: 298.15 K, P: 101325 Pa
    flow: 0
  7. フローシート
  8. もう一つ、ミキサーを設定します。2つのユニットは一つの図として表示されます。
    units.Mixer('M2')
    F.diagram()
    全てのストリーム、機器ユニット、システムは、Registryオブジェクトとしてメインフローシートに登録されています。
  9. ストリーム
  10. F.stream
    Registry:
    <Stream: s1>
    <Stream: s2>
  11. 機器ユニット
  12. F.unit
    Registry:
    <Mixer: M1>
    <Mixer: M2>
  13. システム
  14. F.system
    Registry: (Empty)
    システムとして登録されているものは、ありません。

他のフローシートへの切り替え

  1. 新規フローシート
  2. 新規のフローシートを作成し、メインフローシートとして設定します。
    F.set_flowsheet('new_flowsheet')
    F
    <MainFlowsheet: new_flowsheet>
    メインフローシートとしてnew_flowsheetが設定されました。
  3. 新規の機器ユニット
  4. 以降、新しい機器ユニットは、新しいフローシートに登録されます。
    units.Mixer('M3')
    F.diagram()
  5. 元のフローシートを参照
  6. 元のフローシートに登録されていたものは新しいフローシートにはなく、参照しようとするとエラーが出ます。
    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'
  7. フローシートの切り替え
  8. 全てのオブジェクトはフローシートに登録されます。フローシート間の切り替えも簡単です。
    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
  9. バイオリファイナリー シミュレーションモデル
  10. Bioindustrial-Park 内のバイオリファイナリー シミュレーションモデルは、インポート時にそれぞれ独自のフローシートを用意しています。
    from biorefineries.sugarcane import sugarcane_sys
    F.diagram(format='png')
    ※biorefineriesをインストールしておく必要があります。
    $ pip install biorefineries

このブログの人気の投稿

さあ、始めよう!

蒸留塔

機器ユニットの計算結果