Cantera:バルブ開閉と流量の制御

※Canteraバージョン:3.0.0

バルブの開閉や流量の制御などを行う機能について説明する。

計算モデル

バルブ制御モデル

例えば、燃焼反応器(IdealGasReactor)に、吸気(Reservoir:Air)と、排気(Reservoir)がバルブで接続されているモデルを考える。また、燃焼器には燃料を供給するインジェクター(Reservoir:Fuel)から流量制御(MassFlowController:MFC)によって燃料が供給されるとする。

バルブのモデル

Canteraには、バルブをモデル化するオブジェクトが用意されている。バルブのモデルは、

$$\dot{m} = K g(t) f(P_1-P_2)$$

となっている。ここで、$\dot{m}$:流量、$K$:流量係数、$g(t)$:時間の関数、$f(P_1-P_2)$:圧力差の関数。

流量が圧力差と流量係数で決まるという一般的な式になっている。

例えば、吸気のReservoirと反応器をバルブで接続する例は以下のようなコードとなる。

gas.TPX = 700.0, ct.one_atm*5.0, comp_air
air_in = ct.Reservoir(gas)
def open_air(t):
  if 0.0 <= t and t <= 2.0:
    return 1.0
  else:
    return 0.0 
valve_air = ct.Valve(upstream = air_in, downstream = combustor, K = 1.0e-5)
valve_air.set_time_function(open_air)

Valve関数でバルブを定義している。上流の空気(air_in)と反応器(combustor)を接続し、係数Kを与えている。

open_air(t)関数は、上式の$g(t)$を定義したもので、set_time_functionメソッドでバルブのオブジェクトに与える。この例では、時刻が0~2秒は全開、それ以外は全閉としている。

※常にバルブがオープンの状態であれば、set_time_functionで時間関数を与える必要はない。

流量制御のモデル

流量を制御するには、MassFlowControllerというオブジェクトを定義する。質量流量$\dot{m}_0$を直接与えることができる。

$$\dot{m} =g(t)\dot{m}_0$$

今回のモデルでは、燃料を注入するために使用している。

gas.TPX = 300.0, ct.one_atm, comp_fuel
fuel_in = ct.Reservoir(gas)
mdot_fuel = 0.2
def open_fuel(t):
  if 3.0 <= t and t <= 4.0:
    return 1.0
  else:
    return 0.0  
mfc_fuel = ct.MassFlowController(upstream = fuel_in, downstream = combustor, mdot = mdot_fuel)
mfc_fuel.set_time_function(open_fuel)

MassFlowController関数で、fuel_in(燃料のReservoir)とcombustor(反応器)を接続し、mdotに質量流量[kg/s]を与える。これも時間の関数にできる。この例では、open_fuel関数で3~4秒の間、燃料を注入している。

計算結果

今回のモデルの計算結果を示す。

まず、2秒間吸気のバルブを開け空気を入れる。3~4秒の間、燃料(ドデカン)を注入し、燃焼させる。5~7秒の間、排気バルブを開け、排出させている。

バルブ制御の圧力結果

圧力

バルブ制御の温度結果

温度

バルブ開閉や燃料噴射をエンジン筒内の計算に使えば、エンジンのサイクル計算もできる。

エンジン筒内 圧力、温度

エンジン筒内計算の圧力、温度

スポンサーリンク
科学技術計算のご相談は「キャットテックラボ」へ

科学技術計算やCAEに関するご相談、計算用プログラムの開発などお困りのことは「株式会社キャットテックラボ」へお問い合わせください。

お問い合わせはこちら

フォローする

スポンサーリンク