分離

バイオ・リファイナリー(再生可能資源であるバイオマスを原料にバイオ燃料や樹脂などを製造するプラントや技術)のシミュレーションソフト"BioSTEAM"のストリームを分流するモデルの使い方について説明しています。 オリジナルのページはsplittingです。 ソースコードは以下の実行環境で確認しています。
  • Visual Studio Code バージョン: 1.104.2
  • 拡張機能:Jupyter バージョン 2025.8.0
  • Python 3.12.10
  • biosteam 2.52.13
  • graphviz-14.0.2

分離

class Splitter(ID='', ins=None, outs =(), split, order=None, thermo=None, **kwargs ) [source]

混合されたストリームを指定された割合で分割する分流器のモデルです。

  • パラメータ
    • ID (str、省略可) - 一意の識別子(ID)。
    • ins (Sequence(順序付きコレクション)[Stream|str]、省略可) - 分離される流入ストリーム
    • outs (Sequence(順序付きコレクション)[Stream|str]、省略可) - 流出ストリーム
      • [0] 分離されたストリーム
      • [1] 残りのストリーム
    • split 以下のどれか
      • [float]
      • outs[0]への分離比。
      • [array_like]
      • 流入ストリームの成分ごとの分割比をouts[0]に適用
      • [dict]
      • 成分(ID)と分割比の組み合わせを辞書型配列で指定し、流入ストリームの成分ごとの分割比をouts[0]に適用
    • order (順番付き [str]) - 成分ごとの流出ストリームouts[0]への分離比を配列で指定した時の成分の順番。デフォルトはStream.chemicals.IDsで指定した順番。
  • ID指定、供給ストリームが1つで、全体の分割比をしていして2つの流出ストリームに分離する分流器を作成します。

    from biosteam import units, settings, Stream
    settings.set_thermo(['Water', 'Ethanol'], cache=True)
    feed = Stream('feed', Water=20, Ethanol=10, T=340)
    S1 = units.Splitter('S1', ins=feed, outs=('top', 'bot'), split=0.1)
    S1.simulate()
    S1.show()
    Splitter: S1
    ins...
    [0] feed  
        phase: 'l', T: 340 K, P: 101325 Pa
        flow (kmol/hr): Water    20
                        Ethanol  10
    outs...
    [0] top  
        phase: 'l', T: 340 K, P: 101325 Pa
        flow (kmol/hr): Water    2
                        Ethanol  1
    [1] bot  
        phase: 'l', T: 340 K, P: 101325 Pa
        flow (kmol/hr): Water    18
                        Ethanol  9
    次に、成分ごとの分割比を辞書形式で指定した場合を示します。
    S1 = units.Splitter('S1', ins=feed, outs=('top', 'bot'),
                        split={'Water': 0.1, 'Ethanol': 0.99})
    Splitter: S1
    ins...
    [0] feed  
        phase: 'l', T: 340 K, P: 101325 Pa
        flow (kmol/hr): Water    20
                        Ethanol  10
    outs...
    [0] top  
        phase: 'l', T: 340 K, P: 101325 Pa
        flow (kmol/hr): Water    2
                        Ethanol  9.9
    [1] bot  
        phase: 'l', T: 340 K, P: 101325 Pa
        flow (kmol/hr): Water    18
                        Ethanol  0.1
    次に、成分ごとの分割比を(タプルで)指定した場合を示します。ここではその分割比の順番をorderで指示しています。
    S1 = units.Splitter('S1', ins=feed, outs=('top', 'bot'),
                        order=('Ethanol', 'Water'),
                        split=(0.99, 0.10))
    S1.simulate()
    S1.show()
    Splitter: S1
    ins...
    [0] feed  
        phase: 'l', T: 340 K, P: 101325 Pa
        flow (kmol/hr): Water    20
                        Ethanol  10
    outs...
    [0] top  
        phase: 'l', T: 340 K, P: 101325 Pa
        flow (kmol/hr): Water    2
                        Ethanol  9.9
    [1] bot  
        phase: 'l', T: 340 K, P: 101325 Pa
        flow (kmol/hr): Water    18
                        Ethanol  0.1
    同じ結果になっていますね。なお、分割比は後でも変更できます。isplitを使って変更できます。
    S1.split = 0.5
    S1.isplit.show()
    SplitIndexer:
    Water    0.5
    Ethanol  0.5
    S1.isplit['Water'] = 1.0
    S1.isplit.show()
    SplitIndexer:
    Water    1
    Ethanol  0.5
    S1.split = [0.9, 0.8]
    S1.isplit.show()
    SplitIndexer:
    Water    0.9
    Ethanol  0.8

このブログの人気の投稿

さあ、始めよう!

蒸留塔

機器ユニットの計算結果