OpenFOAM

OpenFOAMで総括熱伝達率(U値)を計算する方法。chtMultiRegionFoam対応

changeDictionaryDictによる境界条件の設定

system/fluid_1/changeDictionaryDict(system/fluid_2/changeDictionaryDictも同様)

system/solid_1/changeDictionaryDict(system/solid_2/changeDictionaryDictも同様)

領域の指定と境界条件の設定

次に領域を指定します。

constant/regionProperties

領域を正しく設定しておかないと以下のコマンドの$regionでエラーが出ます。

スクリプトで書くと以下となります。

実行すると以下のようになります。

0/fluid_1/U

0/fluid_1/T

0/fluid_1/p_rgh

物性値

流体領域の物性値は空気にしておきます。

constant/fluid_1/thermophysicalProperties(constant/fluid_1/thermophysicalPropertiesも同様)

固体領域の物性値は以下とします。
今回は、デフォルトで仮想の材料で鉄鋼材っぽい値が設定されているので、そのまま使います。

constant/solid_1/thermophysicalProperties(constant/solid_2/thermophysicalPropertiesも同様)

乱流モデルの設定

乱流モデルの設定は流体領域だけに行います。

constant/fluid_1/turbulenceProperties(constant/fluid_2/turbulencePropertiesも同様)

今回は乱流モデルは使用しません。

計算の制御

system/controlDict

今回最大クーラン数を流体側も固体側も10にしました。

計算実行

2次元計算でメッシュ数も多くないので並列計算させずにいきます。

今回最大クーラン数を流体側も固体側も10にしています。

ログを見ると最大クーラン数は固体側で10になっており、それによって時間刻みが決められているようです。

陰解法では最大クーラン数が 1 を超えても計算が安定する場合がありますが、これは過渡解の精度を保証するものではありません。

特に一次精度の時間離散では時間刻みの増大に伴って数値拡散が強まり、温度応答が平滑化される可能性があります。

  • 温度の立ち上がりを議論したい
  • PID制御や時定数を見たい
  • 短時間の熱応答を比較したい
  • 流れ場と温度場の瞬時変動が重要
  • 実験の「時系列」まで合わせたい

このような場合に、クーラン数が大きすぎると精度的に良くない場合もあります。

そのため、最大クーラン数を大きく設定する場合は、目的量に対する時間刻み依存性を別途確認する必要があります。

setMultiRegionDeltaT.Hに最大クーラン数に対するアルゴリズムの記載があります。

  • adjustTimeStep yes のときに動く
  • 流体側は最大クーラン数 CoNum を見る
  • 固体側は最大拡散数 DiNum を見る
  • それぞれから「時間刻みを何倍できるか」を計算する
  • 流体と固体のうち厳しい方に合わせて deltaT を決める
  • ただし時間刻みは一気に増やしすぎないよう制限する
  • 最後に maxDeltaT を超えないようにする

結果

U値の計算

postProcessing/fluid_1/qAvg_fluid_1/0/surfaceFieldValue.dat

ここから定常に落ち着いたであろう最終時間でのU値を求めます。

U=qΔT=13.3303.15293.15=1.33[W/m2K]U = \frac{q}{\Delta T} = \frac{13.3}{303.15-293.15}=1.33 \,[\text{W}/\text{m}^2 \text{K}]

1 2
関連記事もどうぞ

COMMENT