直管モデルを用いた単相流熱伝達の数値解析について

100 views
Skip to first unread message

Ryoga

unread,
Oct 23, 2025, 8:53:30 PMOct 23
to OpenFOAM
初めてこちらで質問させて頂きます。

現在、ヘリカルコイル型熱交換器の熱伝達に関する数値解析をOpenFOAM v2506にて行っています。

形状及びメッシュの生成はSALOME 9.13.0で行っています。

コイルモデルでbuoyantBussinesqSimpleFoamの解析を行ったのですが発散を繰り返してしまい、同じ設定で、直管モデルで解析が進むか試してみたところこちらでも、解析は進むものの、結果を確認すると異常な数値が各所で確認されうまくいきません。

今回は直管での数値解析のケースディレクトリを確認して頂き、どこに問題があるのかご教授いただけると助かります。

この原因について経験のある方、解決策がある方がいれば、是非アドバイスをして頂きたいです。

お忙しい中恐縮ですが、よろしくお願いします。

以下にケースファイルと、直管を流れ方向(-x方向)に対して平行にスライスした断面の温度分布を添付いたします。

S__93331463.jpg

k k

unread,
Oct 25, 2025, 11:49:47 AMOct 25
to OpenFOAM

こんにちは。
本件解決には至っていませんが、こちらでも同じような内容で回答していますのでご参考ください。

system/controlDictにfieldMinMaxを追加すると計算ログに物理量の最大最小が表示されます。
また、結果の出力を細かくしてParaViewなどで確認する良いです。

deltaT          1;

writeControl    adjustableRunTime;//timeStep;   // 定常解だけ見る→timeStep 時間的変化見る→adjustableRunTime

...(省略)...

functions
{
...(省略)...
    fieldMinMax
    {
        type fieldMinMax;
        libs      (fieldFunctionObjects );  
        mode magnitude;
        fields   ( U  p T );  // Optional entries (runtime modifiable)
        location yes;
        writePrecision 8;
        writeToFile yes;
        useUserTime yes;
        region region0;
        enabled yes;
        log yes;
        timeStart 0;
        timeEnd 8000;
        executeControl timeStep;
        executeInterval 1;
        writeControl timeStep;//adjustableRunTime;
        writeInterval 1;
    }
}


以下のように計算ログに最大最小の値とその座標が出力されます。
fieldMinMax fieldMinMax write:
    min(T) = 293.15 in cell 27586 at location (6.886871883 0.8540729768 0.9553099113)
    max(T) = 27697.96937 in cell 391112 at location (99.97038057 1.147703168 1.179730991)
    min(mag(U)) = 0 in cell 0 at location (0.05333333333 0.946529573 0.00431657912)
    max(mag(U)) = 6619.352917 in cell 396103 at location (99.92039853 1.267453711 1.347917411)
    min(p) = -19.57390045 in cell 210 at location (0.04618666157 1.000001032 1.997838205)
    max(p) = 42.26008458 in cell 375457 at location (99.98351046 0.7807804861 1.787717661)

Time = 2

1step目から計算が破綻する予兆が見受けられます。
ですので、すべて計算させてから判断するより、計算途中でログを確認して問題ないかを見た方が良いです。
上記のログからParaViewで確認すると、流入口で流速が不安定な気がします。
テトラメッシュなので、どうしても発散しやすいとは思いますが、
・入り口にも境界層を入れる(メッシュ変更)
・緩和係数を小さくする
・離散化スキームを安定なものにする
などは思いつきます。
六面体メッシュならbuoyantSimpleFoamで行ったものがありますのでご参考ください。

計算の発散とは違いますが、ブシネスク近似は温度差がつくと精度悪い結果になりかねません。
あまり温度変化があるようでしたら、buoyantSimpleFoamに変えると良いかもしれません。

↓ブシネスク近似の参考
2025年10月24日金曜日 9:53:30 UTC+9 Ryoga:
スクリーンショット 2025-10-26 001908.png

Ryoga

unread,
Oct 27, 2025, 3:14:56 AMOct 27
to OpenFOAM
kk様

お世話になっております。ご回答頂きありがとうございます。
kk様からアドバイス頂いた通り、system/controlDictの設定を変更して回してみたところ、こちらでも計算破綻の兆候を確認することが出来ました。
これまでは、計算が収束して解析が最後まで終了するか、または計算結果が妥当かといった点しか見ていなかったので大変参考になりました。
kk様から頂いた改善案を参考に、いくつか条件を変更して試してみようと考えております。もし再び行き詰まることがありましたら、改めてこちらでご相談させていただきます。
ところで、六面体メッシュを用いたbuoyantSimpleFoamの例についてなのですが、重力0となっておりますが、こちらは浮力を考慮していないという理解でよろしいでしょうか。
私のケースでも、重力を0に設定すると結果がいくらか安定する傾向にあるため、この設定で良いのか判断に迷っております。

お忙しいところ恐れ入りますが、ご教示いただけますと幸いです。
今後ともよろしくお願いいたします。

2025年10月26日日曜日 0:49:47 UTC+9 k k:

k k

unread,
Oct 27, 2025, 6:24:29 AMOct 27
to OpenFOAM

こんにちは。


>重力0となっておりますが、こちらは浮力を考慮していないという理解でよろしいでしょうか。
参考で送ったものは重力は意図的に0にしているので、あまり気にしないでください。
おっしゃる通り浮力項が考慮されないので、温度差による上昇気流は生じなくなります。

よろしくお願いいたします。
2025年10月27日月曜日 16:14:56 UTC+9 Ryoga:

Ryoga

unread,
Oct 27, 2025, 10:23:50 PMOct 27
to OpenFOAM

kk様

いつもご返信いただき、ありがとうございます。
浮力を考慮しない方向での解析についても、今後検討を進めていこうかと思います。
この度はご教示いただき、ありがとうございました。
2025年10月27日月曜日 19:24:29 UTC+9 k k:
Reply all
Reply to author
Forward
0 new messages