OpenFOAM

OpenFOAMの熱流体固体連成のチュートリアル(multiRegionHeater)

境界条件の設定

Allrun.preを見ると以下のような記述があります。

foamListRegionsが「constant/regionProperties」で指定しているリストをします。

foamListRegionsだけだと領域全ての要素をリストにするので、 [bottomWater topAir heater leftSolid rightSolid]というリストになります。

しかし以下のようにregionTypeを指定すると、

「foamListRegions solid」とsolidを指定するとsolidだけを要素にするので [heater  leftSolid rightSolid]となります。

つまり、上記のdo文は以下のようになります。

既に設定がされていたら設定を消すためものですね。
「rm -f」の「-f」オプションはファイルがあれば削除するというものです。

続いてAllrun.preを見ると以下のようになっています。

これはsystemフォルダ内で各領域のフォルダ内を用意しその中にchangeDictionaryを用意して境界条件の設定を変更していきます。


例えば例としてbottomWaterを見てみると、

system/bottomWater/changeDictionaryDict

上記のスクリプトでchangeDictionaryが実行されると、以下のようにファイルが作成されます。

各領域がどの様に変更されたのかを見ていきます。

0/bottomWater/U

0/bottomWater/T

changeDictionaryで“bottomWater_to_.*”としているので、「bottomWater_to_」からはじまる境界は全て同じ設定にしています。
全ての領域をここで記載することはできないので、特殊な設定をしている部分を紹介しておきます。
leftSolidとheaterが接触する部分の温度の設定です。
0/leftSolid/T

デフォルトでは界面での熱流束は単純に領域の熱伝導率で決まります。
しかし、leftSolid_to_heaterの境界面は任意の熱伝導率の層を挟んでいます。

  • thicknessLayersで厚みを0.001[m]
  • kappaLayersで熱伝導率を0.005[W/m K]

設定のまとめ

要するにchtMultiRegionFoamでは各領域の境界条件もフォルダ分けして行う必要があるということです。
  • blockMesh:ベースメッシュの作成
  • topoSet:cellZoneの作成
  • cp -r 0.orig 0:0.origフォルダをコピー
  • splitMeshRegions:topoSetで作成したcellZoneを使って領域分割
  • changeDictionary:境界条件の変更

ここまでまとめてきて、これを手作業で行うのは至難の業ですね。
なので、オリジナルの解析を行う際はスクリプトを使うことは必須になります。

1 2 3 4
関連記事もどうぞ

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です