OpenFOAM

【OpenFOAM】領域ごとに対流項スキームを変えるzoneBlended schemeを試してみた

こんにちは(@t_kun_kamakiri

計算シミュレーションにおける数値安定性の向上は、常に重要な課題となっています。特に対流項をどのように離散化して数値計算を行うかは、解の精度と安定性に影響します。

今回、OpenFOAM v2412で各領域ごとに対流項スキームを柔軟に切り替えるzoneBlended scheme機能が追加されていたので試みました。

OpenFOAMv2412リリースノート

本記事の内容

移流方程式$\frac{\partial T(x,t)}{\partial t}+u\frac{\partial T(x,t)}{\partial x}=0$において領域をごとに対流項スキームを変えるブレンドスキームを紹介する

本記事では、以下のように領域ごとに対流項スキームを変えることにします。

OpenFOAM v2412  Ubuntu-22.04(WSL2)

対流項スキームでの結果の違い

移流方程式は以下のような式にしたがう方程式のことを指します。

1次元の移流方程式
\begin{align*}\frac{\partial T(x,t)}{\partial t}+u\frac{\partial T(x,t)}{\partial x}=0\tag{1}\end{align*}
※\(u\):一定速度
1次元の移流方程式は、下記の絵のように何かの物理量を形を変えずに一定速度\(u\)で運ぶ方程式を意味しています。
横軸は空間\(x\)ですが、縦軸は「密度」や「温度」だったり色々考えることができます。本記事では、温度\(T\)として扱うことにします。

OpenFOAMで実行

ソルバはscalarTransportFoamを使用しています。

scalarTransportFoamは以下の偏微分方程式を解く非定常のソルバーです。

\begin{align*}
\frac{\partial T}{\partial t}+\nabla\cdot(\boldsymbol{u}T)-\nabla\cdot (D_{T}\nabla T)=\boldsymbol{S}_{T}\tag{1}
\end{align*}

本記事では(1)を少し簡単にするために、

  • 生成項を0:$\boldsymbol{S}_{T}=0$
  • 拡散項を0:$D_{T}=0$
  • 流速は一定:$\boldsymbol{u}=(0.1, 0, 0)$
(1)の第二項をどのような離散スキームを選択するかによって以下の時間発展のように結果が異なります。
解がなまってしまうものや振動してしまうものがあります。

一般的には以下のように考えておいて良いでしょう。

  • 1次精度は安定だが数値拡散(数値粘性)が生じやすい
  • 高次精度は解をシャープにとらえられるが振動が生じやすく不安定になりやすい
  • TVDは解をシャープにとらえようとしつつ振動が生じないように工夫している

おおよそポイントはこれくらいでしょう。

OpenFOAMでスキームの設定

モデルはgithubにアップしています。

FaceZoneの追加

FaceZoneはsystem/topoSetDictで行います。

system/topoSetDict

2つの領域を作成しています。

対流項スキームの変更

FaceZoneはsystem/fvSchemesで行います。
変更箇所だけをしまします。
詳しくはgithubをご確認ください。

system/fvSchemes

zoneBlendedを使って各領域のスキームは以下としています。

  • 領域1のスキーム1:2次精度線形風上差分(linearUpwind )
  • 領域2のスキーム2:1次精度風上差分(upwind)

領域1では2次精度風上差分により多少振動する解の挙動が得られ、領域2では解は安定で振動は収まるが数値拡散が生じるという挙動を示すだろうと予測できます。

結果

結果は$0 \leq x <0.5$は解の形は保たれていますが少し振動しています。
$0.5 \leq x \leq 1.0$では振動は収まりますがかなり数値拡散がひどくなっています。

このようにzoneBlendedを使用することで領域ごとにスキームを変えることができました。

まとめ

今回の記事では、OpenFOAM v2412の新機能zoneBlended を活用し、1次元移流方程式の数値計算で領域ごとに異なる対流項スキームを適用する方法を紹介しました。

  • 実装方法

    1. FaceZoneの作成(system/topoSetDict)で領域を分割。
    2. スキームの設定(system/fvSchemes)で zoneBlended を用い、
      • 領域1:線形風上差分(2次精度)
      • 領域2:風上差分(1次精度)
        を適用。

このように、数値計算ではスキームの選択が解の精度や安定性に大きく影響するため、シミュレーションの目的に応じて適切に設定することが重要です。

計算力学技術者のための問題アプリ

計算力学技術者熱流体2級、1級対策アプリをリリースしました。

  • 下記をクリックしてホームページでダウンロードできます。
  • LINE公式に登録すると無料で問題の一部を閲覧できます
    ※LINEの仕様で数式がずれていますが、アプリでは問題ありません。

OpenFOAMに関する技術書を販売中!

OpenFOAMを自宅で学べるシリーズを販売中です。
OpenFOAM初学者から中級者向けの技術書となっていますので、ぜひよろしくお願いいたします。

次回の技術書典18に向けて内容を考え中です。
乞うご期待!!

見出し画像

お勧めの参考書

乱流モデルの数式の展開が非常に丁寧なのはこちらの参考書です。
今まで読んだ本の中で途中式もしっかり書いてあって一番丁寧でした。
乱流モデルの話だけでなく、混相流(気液、固液)や粒子法、浅水方程式の話も乗っているので重宝しています。

流れの方程式

流れの方程式

後藤仁志
9,900円(03/31 09:14時点)
Amazonの情報を掲載しています

乱流モデルはこちらもお勧めです。
前半は数値シミュレーションの離散化の話で、後半に乱流モデルの話が出てきます。

乱流の数値シミュレーション 改訂版

乱流の数値シミュレーション 改訂版

梶島 岳夫
6,680円(03/31 09:44時点)
Amazonの情報を掲載しています

乱流モデルのざっくりした解説と流体全般の基礎知識にはこちらがちょうど良いでしょう。

関連記事もどうぞ

COMMENT