😪

porousGasificationFoamチュートリアル

に公開

この記事について

本記事では、実務で活用できそうなOSSツールを実際に試して、その使用感を忘備録として記録していきます。
今回取り上げるのはporousGasificationFoamというOpenFOAMベースのソルバーです。多孔質媒体内でのガス化や熱分解反応をシミュレーションできるこのツールは、化学プロセスでよく扱う触媒反応の解析にも応用できる可能性があります。

この記事で分かること
 - 前回:porousGasificationFoamの概要と特徴
 - 前回:インストール手順
 - 今回:チュートリアルケースの実行
 - 次回以降:化学プロセス解析への応用可能性(余力があれば...)

この記事は実際に手を動かしながら検証した内容を記載しています。生成AIも利用してコード解析を行っているので、誤りがあるかもしれません。間違いを見つけた方は、ぜひ優しく教えてください。

チュートリアル調査概要

チュートリアルは大きく分けて「流動・検証用(反応なし)」と「反応解析用(熱分解・ガス化)」の2種類に分類されます。特に TGA(熱重量分析) のシミュレーションが充実しており、実験データとの比較を想定した構成になっています。


1. 流動・検証用ケース(化学反応なし)

ケース名 概要・目的 詳細設定
biomassPressureDrop 圧力損失の検証
多孔質媒体中の圧力降下を計算し、ダルシー・フォルヒハイマー則の係数 (Df, f) との関係を確認する。
化学反応: OFF
流れ: 層流 (laminar)
多孔質: porosityProperties で係数を設定
flatPlate 平板周りの熱流動
加熱された平板(または多孔質ブロック)周りの流れと熱伝達の基礎解析。
化学反応: OFF
熱伝達: 定数熱伝達モデル (h=8, SAV=468)
初期場: setFields により一部領域を高温(500K)・多孔質(0.6)に設定

2. 反応解析用ケース(熱分解・ガス化)

これらは chemistry: on であり、固体バイオマスの熱分解やガス化反応を扱います。

ケース名 概要・目的 詳細設定
gasifier ガス化炉シミュレーション
木質バイオマスの酸化・ガス化反応を扱う。
反応: 木材の酸化反応を定義
構成種: CO, N2, O2
・実際のガス化炉に近い、酸化剤(空気/酸素)流入を伴う反応系
microTGA 微小スケール熱重量分析 (昇温)
粒子レベルを想定した熱分解シミュレーション。時間と共に温度が上昇する環境下での重量変化を見る。
反応: 乾燥 (hum=H2O) + 熱分解(2段階)
温度条件: 300Kから966Kまで時間変化させる昇温条件 (uniformFixedValue table使用)
macroTGA_688K マクロスケールTGA (等温 688K)
Parkらの実験データ検証用。一定温度環境下での熱分解挙動。
反応: 乾燥反応がOFF (コメントアウト)。熱分解反応のみ有効
温度条件: 初期値・境界値ともに 688K 一定
macroTGA_879K マクロスケールTGA (等温 879K)
同上の条件違い(高温条件)。
反応: 688Kケースと同様
温度条件: 初期値・境界値ともに 879K 一定
macroTGA_688K_fine メッシュ細分化版
688Kケースのグリッド依存性確認用。
・設定は macroTGA_688Kと同じ
・メッシュ分割数が約1.5倍〜2.5倍細かくなっている

チュートリアルケース:gasifier

1. 解析の概要

  • 解析対象: 円筒形状のガス化炉内における、固体燃料(木材チップ等を想定)の熱分解・燃焼・ガス化反応。
  • 物理現象:
    • 多孔質媒体(燃料層)を通る圧縮性流体の流れ。
    • 気相の化学反応と輸送。
    • 固相(燃料)の熱分解と不均一化学反応(固体酸化反応)。
    • 気相・固相間の熱移動と質量移動。

2. 数理モデルとソースコード構造

porousGasificationFoam ソルバーは、標準的な圧縮性反応流ソルバーをベースに、多孔質および固体反応のモデルが追加されています。

  • 支配方程式:
    • 運動量 (UEqn.H): ナビエ・ストークス方程式に、多孔質媒体による抵抗項(pZones.addResistance)が追加されています。
    • 化学種 (YEqn.H): 気相の各成分(O2, N2, CO等)の輸送方程式。
      • ソース項として、気相反応率 reaction->R(Yi) に加え、固体からの熱分解・ガス化による生成項 pyrolysisZone.Srho(i) が考慮されています。
    • エネルギー (EEqn.H): 気相のエンタルピー方程式。
      • 多孔質率 porosityF を考慮。
      • 固体相からの熱移動 heatTransfer や、発生ガスのエンタルピー持ち込み heatUpGas がソース項として組み込まれています。
  • 固体反応モデル (chemistryProperties):
    • 反応式: \\{wood + 1.25 O2 = 0.5 ash + 1.75 CO}
    • 木材(wood)が酸素(O2)と反応して、灰(ash)と一酸化炭素(CO)を生成する不可逆アレニウス型反応が定義されています。
  • 主要なフィールド変数:
    • porosityF: 流体の体積率(空隙率)。燃料層がある場所は 0.4、それ以外は 1.0
    • Ts: 固体温度。
    • Ywood, Yash: 固体成分(木材、灰)の質量分率。

3. 計算設定の詳細

  • 計算領域 (system/blockMeshDict):
    • 半径 0.043 m、高さ 0.26 m の円筒形状。
    • 5度の角度を持つ wedge (くさび形) メッシュとして2次元軸対称解析を行っています。
  • 初期状態の設定 (system/setFieldsDict):
    • 燃料層: 高さ 0.02m ~ 0.16m の範囲に、空隙率 0.4 の多孔質領域を設定。
    • 着火源: 高さ 0.155m 付近の固体温度 (Ts) を初期的に 800 K に設定し、反応を開始させています。
    • 初期温度: その他は 300 K。
  • 境界条件 (0, 0.orig ディレクトリ):
    • inlet (底面): 流速 0.1 m/s で空気を流入(O2: 23.3%, N2: 76.7%)。温度 300 K。
    • outlet (上面): 圧力 100,000 Pa (大気圧) 指定。
    • wall (側面): 断熱、滑りなし条件。

4. 計算実行

ターミナルで以下のコマンドを実行。ケースファイルの条件を変更して再度計算を行う場合は、./Allclean.shを実行することでフォルダを初期状態に戻せます。

./Allrun.sh

並列計算が実行されるので、計算実行後以下のコマンドを実行

reconstructPar

計算結果をParaviewにて表示します。

touch foam.foam
paraview

5. 計算結果

解析結果は、高さ 0.12 m ~ 0.15 m の領域に高温の反応帯(火炎面)が形成されていることを示しています。この領域では固体温度が1200 Kに達して激しく反応しており、酸素を消費してCOガスを生成し、その高温ガスが下流へと流れている様子が確認できました。

多孔質媒体はz = 0.02 m ~ 0.16 m の範囲に配置されており、空隙率:porosityFは0.4です。

  • 固体温度 (Ts):

    • ピーク位置: z = 0.13 m 付近で最も高く、約 1200 K に達しています。
    • 分布: z = 0.12 m ~ 0.15 m の範囲で1000 Kを超える高温状態となっており、この領域で固体燃料の燃焼・ガス化が活発に行われていると考えられます。
    • 下流側(z = 0.16 m 以降)では約900 K程度に低下しています。
  • ガス温度 (T):

    • ピーク温度: 約 880 K 程度で推移しています。
    • 固体温度(~1200 K)に比べてガス温度が低いため、固体表面での発熱反応(酸化)が熱源となり、ガスへ伝熱している状況が示唆されます。
    • z = 0.11 m より上流側ではほぼ初期温度(300 K)のままであり、反応帯より上流側への熱の伝播は限定的です。

  • 酸素 (O2) の消費:

    • 初期濃度(約23.3%)から、反応帯(z = 0.13 m以降)では約 16.3% まで低下しています。
    • これは酸化反応による酸素消費を示しています。
  • 一酸化炭素 (CO) の生成:

    • 反応帯より上流ではほぼゼロですが、z = 0.12 m付近から急激に増加し、下流側では質量分率で約 9.0% に達しています。
    • 不完全燃焼やガス化反応(\\{C + CO2 -> 2CO}\\{C + H2O -> CO + H2})による生成を想定しています。

      今回はここまで。

Discussion