OpenFOAM

【第1回 OpenFOAM キャビティ乱流】メッシュ作成から計算実行

こんにちは(@t_kun_kamakiri

本記事では、OpenFOAMを初めての方を対象に、チュートリアルを使ってメッシュ作成、計算の実行まで分かりやすく解説します。

👇自宅で流体解析をしてみませんか?

こんな方にお勧め

  • OpenFOAMを始めたいけど、どこから手をつければいいのか分からない…
  • チュートリアルの流れを理解して、自分の解析に応用したい!

そんな方に向けて、基本操作を丁寧に説明するので、ぜひ一緒に手を動かしてみてください!

本記事で扱うチュートリアルはOpenFOAMがベンチマークとして下記の実験データとの比較のために行っており、より実践的な内容がまとめられています。

OpenFOAM v2412(WSL Ubuntu 22.04)

チュートリアルのコピー

OpenFOAMは一から解析設定をすることは少なく、既存のチュートリアルから自分が解析したいものに近いものを探し出し、編集して使うことを前提としています。
そのため数多くのチュートリアルが存在します。

今回はこの中で熱の問題も解くことができるソルバbuoyantSimpleFoamを使います。
その中には、buoyantCavity というチュートリアルがありますので、そちらを作業フォルダにコピーします。
※作業フォルダンはどこでも良いです。

$FOAM_TUTORIALS = /usr/lib/openfoam/openfoam2412/tutorials

では、フォルダを移動します。

フォルダの構成は以下のようになっています。

validationフォルダに実験データが保存されていますが、本記事では扱いません。

メッシュ作成

まずはメッシュ作成を行います。
メッシュ作成はOpenFOAMにblockMeshを用います。

blockMeshの設定はsystem/blockMeshDictで起こないます。

system/blockMeshDict

テキストでの設定ですので、対応する節点の座標と面(名前を付ける)を設定することで、六面体メッシュを作成しています。
$L=0.076\,\text{m}$、$D=0.026\,\text{m}$、$H=2.18\,\text{m}$

では、blockMeshを実行してメッシュを行います。

メッシュが終わりましたら、一度ParaViewでメッシュ状態の確認をします。
ParaViewでOpenFOAMの解析結果を可視化するには、拡張子が.foamの空ファイルを作成し、それをParaViewで読み込むだけで簡単に結果を表示できます。

ParaViewで確認します。

メッシュ状態が良ければ、次に解析設定に移ります。

解析の設定

ここからは解析の設定を行います。
今回はチュートリアルの設定のまま変更をしませんので、ファイルの中を確認するだけになります。

物性値の設定

まずは物性値の設定。

constant/thermophysicalProperties

ここでは、以下の値の設定をしています。

  • モル質量:$28.96$ [g/mol]
  • 定圧比熱:$1004.4$ [J/kg K]
  • 粘性係数:$1.831e-05$ [Pa・s]
  • プラントル数:$0.705$ [-]

乱流モデルの設定

ここでは乱流モデルの設定をしています。

constant/turbulenceProperties

乱流モデルは$k$-$\omega$SSTにしています。

境界条件の設定

0.orig/U、0.orig/p_rgh、0.orig/Tから設定します。
こちらは乱流モデルの有無に限らず必ず設定するファイルです。

p_rgh は、圧力 p から重力ポテンシャルを引いたもの
0.orig/p0.orig/p_rghから計算される設定にしています。0.orig/U

流速は全て滑り無し条件です。

0.orig/p_rgh

fixedFluxPressure は、壁面(壁境界)における圧力勾配を速度と粘性応力のバランスから決定します。

0.orig/p

圧力pp_rghから計算されています。

0.orig/T

type zeroGradient;は温度勾配0ですので、断熱条件$\dot{q}=-\lambda\frac{\partial T}{\partial n}=0$を意味しています。

続いて、乱流モデルに関係する境界条件の設定です。

乱流モデルに壁関数の記事もご参照ください。

0.orig/k

0.orig/omega

0.orig/nut

0.orig/alphat

離散化スキームの設定

離散化スキームは基本的にはデフォルトのままで良いでしょう。

system/fvSchemes

一歩進んだ向けに離散化スキームに関する記事も書いておりますので、勉強が進んだらお読みください。

代数ソルバの設定

代数ソルバも基本的にはデフォルトのままで良いでしょう。

system/fvSolution

計算が発散したり収束が悪かったりする場合は、relaxationFactorsの各物理量の値を小さくするなどして調整します。

計算制御の設定

最後に計算時間(ステップ数)の指定を行います。

system/controlDict

計算の実行

Allrunスクリプトには、このチュートリアルを実行するためのコマンドが書かれています。

Allrun

Allrunスクリプトを実行するとメッシュ作成から計算実行までの一連の流れを行ってくれますが、はじめは勉強だと思ってひとつずつ実行してどのような挙動をするのかを確認する方が良いでしょう。

まずは、0.origのオリジナルフォルダ0フォルダとしてコピーします。
Allrunスクリプトではrestore0Dirとなっている箇所です。

0フォルダがコピーできたら、次にメッシュ作成ですが、メッシュ作成は既にblockMeshを実行してできているので飛ばします。

以下のコマンドで計算実行が行われます。
runApplication $(getApplication)の箇所です。

計算が終われば結果をParaViewで確認してみましょう。

ParaViewでは$y=0$の高さの温度データをグラフにしています。

まとめ

本記事では、OpenFOAM を用いたキャビティ内の乱流自然対流解析について、チュートリアルを通じて基本的な流れを解説しました。

計算実行の流れとしては、チュートリアルをコピーし、必要な設定を行った後、buoyantSimpleFoam を実行し、結果を ParaView で可視化することで解析内容を確認しました。

今回の内容を通じて、OpenFOAM における基本的な解析の進め方や設定ファイルの構成について理解が深まったのではないでしょうか。

以下、余裕のある方向けにAllrunスクリプトに関する補足を付け加えています。

Allrunスクリプトの説明

Allrunスクリプトの内容を知らなくても良いですが、少し調べてみるのも勉強になります。

Allrunの中は3行目の. ${WM_PROJECT_DIR:?}/bin/tools/RunFunctionsでさらにスクリプトを読むようにしており、このスクリプトがAllrunの重要な役割を担っています。

$WM_PROJECT_DIRが何なのかを確認してみましょう。

つまり、ここのパスに従ってRunFunctionsを読み込んでいるということになります。

vi /usr/lib/openfoam/openfoam2412/bin/tools/RunFunctionsなので中身を確認してみると良いでしょう。

もしくは、以下のコマンドで作業フォルダにコピーして確認しても良いです。

AllrunスクリプトrunApplication $(getApplication)としているため、runApplication getApplicationを確認します。

foamDictionary -entry application -value system/controlDict がどういう挙動するするのかをターミナルで確認してみると良いでしょう。

つまりsystem/controlDictの中を辞書型で出力しています。
例えば、

  • キー:application、値: buoyantSimpleFoam;
  • キー:startFrom 、値: startTime;

のように、キーと値が対になっています。

つまり、runApplication $(getApplication)の部分は、runApplication buoyantSimpleFoamとなっているわけです。

そうするとrunApplicationに対してbuoyantSimpleFoamは第一引数になっているので、runApplicationの中の$1buoyantSimpleFoamに置き換えて読んでいくわけです。

細かいところまで見ていかなくても、appRun="$1"appRun="buoyantSimpleFoam"になっているので、$appRun $appArgs "$@" > $logFile 2>&1buoyantSimpleFoam > log.buoyantSimpleFoamとなっているのがわかるでしょう。

実際には既にlog.buoyantSimpleFoamが存在すると計算が実行されているものとして、計算が実行されないという仕組みになっています。

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

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

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

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

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

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

見出し画像

お勧めの参考書

本記事の内容について触れている書籍がこちらです。
CFD(流体解析)のガイドブックというタイトルだけあって、熱流体に関する内容は網羅的に書かれています。

はじめての環境・設備設計シミュレーション CFDガイドブック

はじめての環境・設備設計シミュレーション CFDガイドブック

4,180円(03/31 12:36時点)
Amazonの情報を掲載しています

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

流れの方程式

流れの方程式

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

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

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

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

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

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

関連記事もどうぞ

COMMENT