こんにちは(@t_kun_kamakiri)
OpenFOAMの熱流体固体連成の特定領域に熱源を与える方法について解説をします。
前回の記事でも書いているようなシミュレーションの結果は固体のheater領域の底面が500Kでそれ以外は300Kとなるような境界条件でした。
また、heaterとleftSolidの間は疑似的な厚み1[mm]、熱伝導率0.005[W/m K]を設ける設定を指定います。
今回は固体のheater領域にだけ熱量を与えるfvOptionの設定を解説します。
OpenFOAM v2412
チュートリアルの変更
公式の解説によると、$\frac{D\boldsymbol{x}}{Dt}=S(\boldsymbol{x})$に対して、
S(\boldsymbol{x})=S_u+S_{p}\boldsymbol{x}
\end{align*}
1 |
find $FOAM_TUTORIALS -type f |xargs grep "scalarSemiImplicitSource" |
この中で以下のファイルをsystemにコピーします。
1 |
cp -r $FOAM_TUTORIALS/heatTransfer/chtMultiRegionSimpleFoam/cpuCabinet/system/v_CPU/fvOptions system/heater/ |
$FOAM_TUTORIALS = /usr/lib/openfoam/openfoam2412/tutorials
fvOptionのファイルを確認すると以下となっています。
system/heater/fvOption
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
v_CPU_AbsoluteEnergySource { type scalarSemiImplicitSource; active true; selectionMode cellZone; cellZone v_CPU; volumeMode absolute; sources { h ( 100 0 ); } } |
これを以下のように書き換えます。
system/heater/fvOption
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
AbsoluteEnergySource { type scalarSemiImplicitSource; active true; selectionMode all;//cellZone; // cellZone v_CPU; volumeMode absolute; sources { h ( 100 0 ); } } |
- type:
scalarSemiImplicitSource
:スカラー量(ここではエンタルピーh
)に対する半陰的なソース項を指定。 - active:
true
:このソース項設定を有効化。 - selectionMode:
all
:全セルに対してソース項を適用(cellZone
を使う場合は個別領域指定も可 all/cellSet/cellZone/points)。 - volumeMode:
absolute
:指定した値を体積あたりではなく絶対値として使用。 - sources { h (100 0); }: エンタルピー
h
に 100 W(定数) のエネルギーを加える。
今回はvolumeMode absolute; を選択していますが、absoluteとspecificの2つモードとして選ぶことができます。
それぞれの違いは以下となります。
また、熱量を見るためにsystem/controlDictにfunction objectを追加しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
functions { #include "vtkWrite" wallHeatFlux1 { // Mandatory entries (unmodifiable) type wallHeatFlux; libs (fieldFunctionObjects); region heater; writeControl writeTime; // ソルバの出力タイミングと連動 log true; writeFields true; // フィールドを出力 } } |
全体に熱量を与えるabsolute
- 絶対値(総量)として物理量を指定する方法
- 単位はそのままの物理単位(例:J、W、kg、K など)
- 全体としてどれだけあるかを示す
- 例:
energy = 500;
→ 「合計 500 ジュールのエネルギー」
単位体積当たりの熱量を与えるspecific
- 体積あたりの値(密度)として指定する方法
- 単位は「物理量/m³」(例:J/m³、W/m³、kg/m³ など)
- 1立方メートルあたりの値を示す
- 例:
energy = 1000;
→ 「1 m³ あたり 1000 J のエネルギー密度」
まとめ
今回は熱流体固体連成であるchtMultiRegionFoamでの特定領域の熱源設定の方法を解説しました。
ちなみにcellZoneに与えることもできます。
その場合は以下とします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
AbsoluteEnergySource { type scalarSemiImplicitSource; active true; // selectionMode all;//cellZone; selectionMode cellZone; cellZone heater; volumeMode specific;//absolute; sources { h ( 100 0 ); } } |
cellZone heater;
により特定領域に熱量を与えることができます。計算力学技術者のための問題アプリ
計算力学技術者熱流体2級、1級対策アプリをリリースしました。
- 下記をクリックしてホームページでダウンロードできます。
- LINE公式に登録すると無料で問題の一部を閲覧できます。
※LINEの仕様で数式がずれていますが、アプリでは問題ありません。
- 計算力学技術者の熱流体2級問題アプリ作成
リリース後も試行錯誤をしながら改善に努め日々アップデートしています。
備忘録として作成の過程を綴っています。
OpenFOAMに関する技術書を販売中!
OpenFOAMを自宅で学べるシリーズを販売中です。
OpenFOAM初学者から中級者向けの技術書となっていますので、ぜひよろしくお願いいたします。
おすすめ参考図書
☟こちらは、OpenFOAMの日本語書籍が無い中唯一わかりやすい参考書だと思います。
☟こちらもOpenFOMの古いバージョンでの和訳になります。さすがにこちらはバージョンに対する日本語でのケアはしていないので、OpenFOAMに慣れている方は購入しても良いかと思います。僕は「日本語でまとまっている内容」なので少し重宝しています。
☟以下に、もっと初心者向けの同人誌を紹介しておきます。
初心者は「ってか、まずどうやってOpenFOAMをインストールするの?」というところからつまずきがちです。
そんな時は、以下の書籍をおすすめします。
改訂新版 OpenFOAMの歩き方 (技術の泉シリーズ(NextPublishing))
インストール方法とチュートリアルで流体解析を体験・・・ちょっと高度な解析まで解説があります。著者曰くOpenFOAMのバージョンの追跡を行いながら、書籍をアップデートするようなので安心ですね。