Sliding Meshを用いた回転体計算で、エラーが出てしまいます

600 views
Skip to first unread message

nakazato

unread,
Aug 24, 2022, 3:25:07 AM8/24/22
to OpenFOAM
初めまして、中里と申します。

openFOAMを使い始めたばかりの初心者です。
日ごろ、皆様の投稿とその回答を拝見し、学ばせていただいています。


この度は、pimpleFoamとSliding Meshを用いた回転領域の計算で、エラーが発生してしまい、
その解決方法をご教授いただければと思い、投稿させていただきました。


以下詳細です。 -------------------------------------------------------------------------------------------------

0,計算環境
OS : Ubuntu 2004 (Windows, WSL2)
Hardware : Intel(R) Core(TM) i7-9700 CPU @ 3.00GHz   3.00 GHz
RAM : 64.0 GB


1,全体の概要
円柱の池 (pond) の上部にパドル (paddle) が取り付けてあり、そのパドルが回転 (3秒で一回転)するといった機構です。
中身の流体は、水です。
 
下の写真より
左上 : 全体イメージ図
右上 : 横から見た図
右下 : パドルの図
左下 : 回転領域の図
pond.jpg


2,モデルの作成
パドルは、FreeCADで作成したのち、stlファイルで出力しています。
池は、後述するXSim上で、多角柱 (角数 : 240) を形状として追加し、疑似的に円柱としています。
角数は、多角形の一辺が約10cm程度になるように計算し、設定しました。


3,計算設定
計算設定は、XSimを用いて作成しました。
そのときのスクリーンショットの画像を "XSimスクリーンショット.zip" の名前で添付します。
また、エクスポートされたzipファイル (pond.zip) も添付します。


4,計算の実行
計算の実行には、"Allrun" のファイルにあるコードを参考に以下のコマンドを実行しました。pimpleFoam以外は、エラーなしの状態でした。

> blockMesh
> surfaceFeatures
> snappyHexMesh -overwrite
> checkMesh
> createBaffles -overwrite
> splitBaffles -overwrite
> pimpleFoam


5,エラー内容
AMI: Creating addressing and weights between 1277 source faces and 1277 target faces
AMI: Patch source sum(weights) min/max/average = 0.603922, 1.36141, 1.00304
AMI: Patch target sum(weights) min/max/average = 0.612753, 1.40053, 1.00304
DICPCG:  Solving for pcorr, Initial residual = 1, Final residual = 0.00981934, No Iterations 110
time step continuity errors : sum local = 2.43071e-06, global = 2.36029e-06, cumulative = 0.000276576
DILUPBiCG:  Solving for Ux, Initial residual = 0.104983, Final residual = 8.19605e-06, No Iterations 4
DILUPBiCG:  Solving for Uy, Initial residual = 0.111027, Final residual = 7.66866e-06, No Iterations 4
DILUPBiCG:  Solving for Uz, Initial residual = 0.279234, Final residual = 9.99952e-06, No Iterations 5
DICPCG:  Solving for p, Initial residual = 0.742079, Final residual = 2.303e+13, No Iterations 1000
time step continuity errors : sum local = 1.40983e+10, global = -1.22245e+10, cumulative = -1.22245e+10
DICPCG:  Solving for p, Initial residual = 0.995424, Final residual = 1.34718e+18, No Iterations 1000
time step continuity errors : sum local = 2.3251e+29, global = 1.14253e+29, cumulative = 1.14253e+29
DILUPBiCG:  Solving for epsilon, Initial residual = 1, Final residual = 15.2602, No Iterations 1000
bounding epsilon, min: -1.32513e+32 max: 1.37973e+32 average: 1.44272e+28
DILUPBiCG:  Solving for k, Initial residual = 1, Final residual = 415.872, No Iterations 1000
bounding k, min: -1.73241e+32 max: 2.41085e+34 average: 1.97089e+30
ExecutionTime = 214.35 s  ClockTime = 217 s

Courant Number mean: 1.56471e+29 max: 2.34993e+33
deltaT = 2.42593e-36
Time = 3.17575

AMI: Creating addressing and weights between 1277 source faces and 1277 target faces
AMI: Patch source sum(weights) min/max/average = 0.603922, 1.36141, 1.00304
AMI: Patch target sum(weights) min/max/average = 0.612753, 1.40053, 1.00304
DICPCG:  Solving for pcorr, Initial residual = 1, Final residual = 0.00909464, No Iterations 115
time step continuity errors : sum local = 4.50975e-05, global = 4.42723e-05, cumulative = 1.14253e+29
DILUPBiCG:  Solving for Ux, Initial residual = 0.00101073, Final residual = 6.64388e-06, No Iterations 2
DILUPBiCG:  Solving for Uy, Initial residual = 0.000178032, Final residual = 1.7813e-06, No Iterations 2
DILUPBiCG:  Solving for Uz, Initial residual = 0.00088382, Final residual = 6.05049e-06, No Iterations 2
DICPCG:  Solving for p, Initial residual = 1, Final residual = 1.93822e+48, No Iterations 1000
time step continuity errors : sum local = 8.83847e+42, global = 7.52616e+42, cumulative = 7.52616e+42
DICPCG:  Solving for p, Initial residual = 1, Final residual = 0.181422, No Iterations 1000
time step continuity errors : sum local = 8.83588e+45, global = 1.88148e+43, cumulative = 2.63409e+43
DILUPBiCG:  Solving for epsilon, Initial residual = 1, Final residual = 7.53652e-06, No Iterations 11
bounding epsilon, min: -1.12412e+111 max: 7.5069e+111 average: 3.1038e+108
#0  Foam::error::printStack(Foam::Ostream&) at ??:?
#1  Foam::sigFpe::sigHandler(int) at ??:?
#2  ? in "/lib/x86_64-linux-gnu/libc.so.6"
#3  double Foam::sumProd<double>(Foam::UList<double> const&, Foam::UList<double> const&) at ??:?
#4  Foam::PBiCG::solve(Foam::Field<double>&, Foam::Field<double> const&, unsigned char) const at ??:?
#5  Foam::fvMatrix<double>::solveSegregated(Foam::dictionary const&) at ??:?
#6  Foam::fvMatrix<double>::solve(Foam::dictionary const&) in "/opt/openfoam9/platforms/linux64GccDPInt32Opt/bin/pimpleFoam"
#7  Foam::fvMatrix<double>::solve() in "/opt/openfoam9/platforms/linux64GccDPInt32Opt/bin/pimpleFoam"
#8  Foam::SolverPerformance<double> Foam::solve<double>(Foam::tmp<Foam::fvMatrix<double> > const&) at ??:?
#9  Foam::RASModels::kEpsilon<Foam::IncompressibleMomentumTransportModel<Foam::kinematicTransportModel> >::correct() at ??:?
#10  ? in "/opt/openfoam9/platforms/linux64GccDPInt32Opt/bin/pimpleFoam"
#11  __libc_start_main in "/lib/x86_64-linux-gnu/libc.so.6"
#12  ? in "/opt/openfoam9/platforms/linux64GccDPInt32Opt/bin/pimpleFoam"
Floating point exception


速度の残差は、十分に小さくなっているように見えますが、
"time step continuity errors : sum local" が急激に大きくなっているように思えます。
"Floating point exception" は調べたところ、どこかの計算で、0で割ってしまっているとのエラーだという記述を見つけました。


初心者なもので、どこをどう修正したら分かりません。

お手数をおかけしますが、分かる方がおられましたら、教えていただけると幸いです。
何卒よろしくお願いいたします。
また情報が不足していました、お申し付けください。

pond.zip
Xsimスクリーンショット.zip

kominami

unread,
Aug 24, 2022, 9:02:09 AM8/24/22
to OpenFOAM
中里さん

kominamiです。

私はFoundation版を使っていないためAllrunを実行できませんが。


>速度の残差は、十分に小さくなっているように見えますが、

>"time step continuity errors : sum local" が急激に大きくなっているように思えます。
>"Floating point exception" は調べたところ、どこかの計算で、0で割ってしまっているとのエラーだという記述を見つけました。
と記載されていますが、異常な状態はそれだけではありません。

その直前のタイムステップで

>Courant Number mean: 1.56471e+29 max: 2.34993e+33
>deltaT = 2.42593e-36
となっていて、クーラン数が非常に大きな値になっています。
また

>DICPCG:  Solving for p, Initial residual = 0.742079, Final residual = 2.303e+13, No Iterations 1000
となっていて上限の1000に達しています。kとepsilonもです。

発散に関しては過去に類似の投稿が多くあります。この掲示板の過去の投稿を検索してください。

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

2022年8月24日水曜日 16:25:07 UTC+9 nakazato:
Message has been deleted

nakazato

unread,
Aug 24, 2022, 9:21:22 PM8/24/22
to OpenFOAM
kominamiさん
中里です。

ご返信、誠にありがとうございます。


>>Courant Number mean: 1.56471e+29 max: 2.34993e+33
>>deltaT = 2.42593e-36
>となっていて、クーラン数が非常に大きな値になっています。
>また
>>DICPCG:  Solving for p, Initial residual = 0.742079, Final residual = 2.303e+13, No Iterations 1000
>となっていて上限の1000に達しています。kとepsilonもです。
異常状態を見るべき変数は、残差だけではないとのこと理解しました。
ありがとうございます。


>発散に関しては過去に類似の投稿が多くあります。この掲示板の過去の投稿を検索してください。
承知いたしました。
色々と検索をし、試してみます。


どうしてもわからない点がありましたら、また質問させていただければ幸いです。
よろしくお願いいたします。

2022年8月24日水曜日 22:02:09 UTC+9 kominami:

haruka tsubota @xsim.info

unread,
Aug 25, 2022, 5:02:36 AM8/25/22
to OpenFOAM
XSim を使用していて計算が発散する場合は以下を試すとよいと思います。

①「計算設定」で数値スキームを「安定性重視」に変更し、緩和係数を小さく(例えば全て0.1倍など)する。
②「基本設定」で「初期時間間隔」を小さくする。回転速度が 120 度/s なのであれば例えば 0.01 秒くらいから始める(1サイクル目の境界移動量が 境界 のメッシュのサイズを超えないようにする)。

もし上記試しても発散する場合はさらに以下を追加して試すとよいかもしれません。

③「基本設定」で「最大クーラン数」を小さくする(例えば0.1など)。
④「メッシュ」で回転領域のまわりのメッシュを細かく再分割する。


2022年8月25日木曜日 10:21:22 UTC+9 nakazato:

nakazato

unread,
Aug 26, 2022, 1:27:13 AM8/26/22
to OpenFOAM
haruka tsubotaさん

中里です。

貴重なアドバイスありがとうございます。

今は過去の発散に関する会話を閲覧し、解決方法を模索していましたので、幸いです。


> XSim を使用していて計算が発散する場合は以下を試すとよいと思います。

> ①「計算設定」で数値スキームを「安定性重視」に変更し、緩和係数を小さく(例えば全て0.1倍など)する。
> ②「基本設定」で「初期時間間隔」を小さくする。回転速度が 120 度/s なのであれば例えば 0.01 秒くらいから始める(1サイクル目の境界移動量が 境界 のメッシュのサイズを超えないようにする)。
境界の移動量とメッシュの関係も考慮する必要があるとのこと、意識します。


> もし上記試しても発散する場合はさらに以下を追加して試すとよいかもしれません。

> ③「基本設定」で「最大クーラン数」を小さくする(例えば0.1など)。
> ④「メッシュ」で回転領域のまわりのメッシュを細かく再分割する。
メッシュの細かさなどを全く考慮していませんでしたの、メッシュの作成からしっかり考える必要がありそうです。


ご返信ありがとうございました。
私なりに色々とトライしてみようと思います。

2022年8月25日木曜日 18:02:36 UTC+9 haruka tsubota @xsim.info:
Reply all
Reply to author
Forward
0 new messages