未分類

【OpenFOAMとOpenMoelica連携(3)】chtMultiRegionFoamによるマルチリージョンソルバ

モデルの作成

モデル形状はFreeCADで行いました。

流体側の領域(fluid)と固体側の領域(solid)を別々で作成してstlファイルとして出力します。

出力したstlファイルを元にメッシュ作成を行いました。

主に使用したコマンドを載せておきます。

chtMultiRegionのマルチリージョンソルバは作り方なども癖があるので、なかなか理解ができないかもしれません。

温度の境界条件としては以下のように室内は固体壁で囲まれており、その固体壁のまわりのモデル化は行っていないため、固体壁と外気は熱伝達率$10[\text{W}/\text{m}^2 \text{K}]$としています。

計算の流れ

計算の流れは前回の記事と同じです。

【OpenFOAMとOpenMoelica連携(2)】buoyantPimpleFoamソルバ こんにちは(@t_kun_kamakiri) 前回の記事ではOpenModelicaのコマンド実行の方法について紹介しました。 ...

ただし今回はマルチリージョンソルバなのでフォルダ構成が少し異なります。

0, constant, systemのそれぞれのフォルダにfluid領域とsolid領域を作成する必要があります。fluid領域とかsolid領域などの名前は任意でつけることができます。

好みに応じてAir(流体領域)やwalls(固体領域)などにしても良いです。

計算毎時に実行する独自プログラム

system/controlDictは計算毎時に独自のプログラムを実行するcodedという機能があります。
設定ファイルの全文を載せておきます。

system/controlDict

大事なのは#include "outletTempAverageValue";の部分です。
ここに独自のプログラムを書いておき、includeで読み込んでいます(直接記述すると煩雑になるためファイルを分けています)

特定の境界面の温度、特定の場所の温度を取得

outletTempAverageValueの全文を載せておきます。

system/outletTempAverageValue

いろいろ書いていますが、やっているのは以下の事です。

  1. 流量で重みづけしたoutlet境界面の温度$\overline{T} = \frac{\sum_i \rho v_iA_i C_p T_i}{\sum_i \rho v_iA_i C_p }= \frac{\sum_i \rho Q_i C_p T_i}{\sum_i \rho Q_i C_p }$を求める。
  2. 座標$(1, 2.5, 2.5)$の温度を所得
  3. それをconstant/outletWeightAreaTempFileファイルに記述
  4. updateMOS_and_Run.pyのPythonファイルを実行
    ただし、Pythonの実行が完全に終わるまで待機させる必要がある。事前にconstant/updateMOS.lockを作成しておき、Pythonファイルの実行が終わるとconstant/updateMOS.lockが削除される(この記述はupdateMOS_and_Run.pyに書かれている)ことでPythonの実行終了のフラグとしている。

途中作成されたconstant/outletWeightAreaTempFileは以下のような記述になる。

constant/outletWeightAreaTempFile

このToutTprobTimeOpenModelicaの実行時に必要な変数です。

1 2 3 4 5

COMMENT