OpenFOAMのエラーについて

84 views
Skip to first unread message

河合勇樹

unread,
Jun 19, 2025, 3:09:04 AMJun 19
to OpenFOAM
現在、大学で水力発電における渦発生についてOpenFOAMを用いて研究しています。
計算を実行したところ、Floting point exception(浮動小数点例外)が発生し、計算が止まってしまいました。 OpenFOAM初学者なのでどこに原因があるかわからず完全に行き詰っています。 どこに原因があるかご教授いただければ幸いです。
境界面ですが、inlet,outlet,outletupper以外はすべてwallとなります。

OpenFOAM v1906を用いています

ファイルを添付していますが、このファイルがないので回答のしようがない、などのことがあればすぐに追加で添付させていただきます。
IMG_3165.jpegIMG_3171.jpeg


nut.zip
snappyHexMeshDict.zip
omega.zip
k.zip
controlDict.zip
U.zip
p_rgh.zip
blockMeshDict.zip
s.zip

k k

unread,
Jun 19, 2025, 10:13:08 AMJun 19
to OpenFOAM
こんにちは。
全てのファイルを別々で添付するとこちらで再現するのが手間になるため、ファイル一式をまとめて添付もしくはデータをダウンロードする形(googleドライブなど)にしていただく方が良いです。
こちらの質問の際の注意点も合わせてお読みいただくと良いかと思います。

よろしくお願いいたします。

2025年6月19日木曜日 16:09:04 UTC+9 河合勇樹:

河合勇樹

unread,
Jun 19, 2025, 11:01:16 AMJun 19
to OpenFOAM
kk様 ご指摘ありがとうございます。
ケースファイル、logファイルを添付させていただきました。

https://drive.google.com/file/d/1FYsyeQEBfvO1QU6eQD3TRwGvpENTOUWj/view?usp=drive_link

お手数をおかけしますが、ご確認いただけますと幸いです。 よろしくお願いいたします。

2025年6月19日木曜日 23:13:08 UTC+9 k k:

k k

unread,
Jun 19, 2025, 12:20:01 PMJun 19
to open...@googlegroups.com
ありがとうございます。
エラーの解決は至っていませんが、計算がおかしくなっている箇所はわかりました。

system/controlDictでエラーが起こる場合はひとまず細かく出力して特定する方が良いかと思います。
writeControl    adjustableRunTime;

// writeInterval   10;
writeInterval   0.1;

function objectに以下を追加してlogで最大の流速を確認すると良いかと思います。
    fieldMinMax1
    {
        type fieldMinMax;
        libs      (fieldFunctionObjects );  // Mandatory entries (unmodifiable)// Mandatory entries (runtime modifiable)
        mode magnitude;
        fields   ( U  p );  // 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;
    }

ターミナルのlogを確認
fieldMinMax fieldMinMax1 write:
    min(mag(U)) = 0 in cell 600 at location (1.02038 0.5 -0.634083)
    max(mag(U)) = 70.7308 in cell 15251 at location (1.97998 0.0399999 0.120304)
    min(p) = -4.41565 in cell 122528 at location (-2.785 0.115 0.45)
    max(p) = 5868.81 in cell 310 at location (1.42 0 -0.65)

面積が1m×1m程度、流量が0.000348m3/sなのでせいぜい平均して0.000348m/s程度なはずがUの最大値が70m/sになっています。
max(mag(U)) の座標からParaViewで確認


image.png

また、以下のようにflowRateInletVelocityにしてマイナスの数値を設定して流出させているということですが、流出の場合は、flowRateOutletVelocityにして正の値を設定する方が直感的かと思います。
    intake_channel_outlet
    {
        type            flowRateInletVelocity;
        volumetricFlowRate table
        (
            (0 -0.000348)

あと気になったのは液相がないのに境界条件で液相ありの設定をしている点です。
alpha.water.gz
    intake_channel_outlet
    {
        type            fixedValue;
        value           uniform 1;
    }
image.png
発散しているのは0.6秒ですが、logを見ていると数値的には0.1~0.2秒くらいから発散しそうな気配があります。
赤丸を付けた箇所の境界条件を見直してみると良いかと思います。

よろしくお願いいたします。




2025年6月20日(金) 0:01 河合勇樹 <yuki17...@gmail.com>:
--
このメールは Google グループのグループ「OpenFOAM」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには openfoam+u...@googlegroups.com にメールを送信してください。
このディスカッションを表示するには、https://groups.google.com/d/msgid/openfoam/efd41e90-8f84-4c37-9110-043362c52b02n%40googlegroups.com にアクセスしてください。

河合勇樹

unread,
Jun 21, 2025, 1:17:29 AMJun 21
to open...@googlegroups.com
kk様   ご確認していただき、ありがとうございます。 alpha.waterやUファイルの中身を変えて計算を走らせていますが、今まで計算が止まっていたところ(0.6秒あたり)でも発散せずに上手く動いています。   


2025年6月20日(金) 1:20 k k <kusuko...@gmail.com>:
このディスカッションを表示するには、https://groups.google.com/d/msgid/openfoam/CAEAawWGTGoZ6g5u9opyEk%2B3ZoP69V%3Dj%3DeZfL3ikOBrXxLOirCA%40mail.gmail.com にアクセスしてください。
Reply all
Reply to author
Forward
0 new messages