非定常ソルバにおけるエラーについて

1,105 views
Skip to first unread message

Mag

unread,
Jun 15, 2020, 4:53:46 AM6/15/20
to OpenFOAM
お世話になっております。
高専のマグと申します。

以下のような設定で、計算をしたところ次のようなエラーが出ました。
計算対象:バックステップ流れ
ソルバ:PISO
乱流モデル:動的スマゴリンスキー(  filter  = simple、  ce=   1.048;)
メッシュ:商用ソフトを用いて自作(checkMeshで確認済)

エラー文
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[5] #0  Foam::error::printStack(Foam::Ostream &)[37] #0  Foam::error::printStack(Foam::Ostream &) in "/OpenFOAM/OpenFOAM-2.2.2/platforms/S64FXFccDPOpt/lib/libOpenFOAM.so"
[37] #1  Foam::sigFpe::sigHandler(int) in "/OpenFOAM/OpenFOAM-2.2.2/platforms/S64FXFccDPOpt/lib/libOpenFOAM.so"
[5] #1  Foam::sigFpe::sigHandler(int) in "/OpenFOAM/OpenFOAM-2.2.2/platforms/S64FXFccDPOpt/lib/libOpenFOAM.so"
[37] #2   in "lib64/libmpgpthread.so.1"
[37] #3  sqrt in "/OpenFOAM/OpenFOAM-2.2.2/platforms/S64FXFccDPOpt/lib/libOpenFOAM.so"
[5] #2   in "/lib64/libm.so.6"
[37] #4  Foam::sqrt(const Foam::tmp<Foam::Field<double>> &) in "/opt/FJSVxosmmm/lib64/libmpgpthread.so.1"
[5] #3  sqrt in "/lib64/libm.so.6"
[5] #4  Foam::sqrt(const Foam::tmp<Foam::Field<double>> &) in "/OpenFOAM/OpenFOAM-2.2.2/platforms/S64FXFccDPOpt/lib/libOpenFOAM.so"
[37] #5  Foam::incompressible::LESModels::vanDriestDelta::calcDelta() in "/OpenFOAM/OpenFOAM-2.2.2/platforms/S64FXFccDPOpt/lib/libOpenFOAM.so"
[5] #5  Foam::incompressible::LESModels::vanDriestDelta::calcDelta() in "/OpenFOAM/OpenFOAM-2.2.2/platforms/S64FXFccDPOpt/lib/libincompressibleLESModels.so"
[37] #6  Foam::incompressible::LESModels::vanDriestDelta::correct() in "/OpenFOAM/OpenFOAM-2.2.2/platforms/S64FXFccDPOpt/lib/libincompressibleLESModels.so"
[5] #6  Foam::incompressible::LESModels::vanDriestDelta::correct() in "/OpenFOAM/OpenFOAM-2.2.2/platforms/S64FXFccDPOpt/lib/libincompressibleLESModels.so"
[37] #7  Foam::incompressible::LESModel::correct(const Foam::tmp<Foam::GeometricField<Foam::Tensor<double>, Foam::fvPatchField, Foam::volMesh>> &) in "/OpenFOAM/OpenFOAM-2.2.2/platforms/S64FXFccDPOpt/lib/libincompressibleLESModels.so"
[5] #7  Foam::incompressible::LESModel::correct(const Foam::tmp<Foam::GeometricField<Foam::Tensor<double>, Foam::fvPatchField, Foam::volMesh>> &) in "/OpenFOAM/OpenFOAM-2.2.2/platforms/S64FXFccDPOpt/lib/libincompressibleLESModels.so"
[37] #8  Thunk for (offset 0, virtual offset -216) Foam::incompressible::LESModels::homogeneousDynSmagorinsky::correct(const Foam::tmp<Foam::GeometricField<Foam::Tensor<double>, Foam::fvPatchField, Foam::volMesh>> &) in "/OpenFOAM/OpenFOAM-2.2.2/platforms/S64FXFccDPOpt/lib/libincompressib\
leLESModels.so"
[5] #8  Thunk for (offset 0, virtual offset -216) Foam::incompressible::LESModels::homogeneousDynSmagorinsky::correct(const Foam::tmp<Foam::GeometricField<Foam::Tensor<double>, Foam::fvPatchField, Foam::volMesh>> &) in "/OpenFOAM/OpenFOAM-2.2.2/platforms/S64FXFccDPOpt/lib/libincompressibl\
eLESModels.so"
[37] #9  Foam::incompressible::LESModel::correct() in "/OpenFOAM/OpenFOAM-2.2.2/platforms/S64FXFccDPOpt/lib/libincompressibleLESModels.so"
[5] #9  Foam::incompressible::LESModel::correct() in "/OpenFOAM/OpenFOAM-2.2.2/platforms/S64FXFccDPOpt/lib/libincompressibleLESModels.so"
[37] #10   in "/OpenFOAM/OpenFOAM-2.2.2/platforms/S64FXFccDPOpt/lib/libincompressibleLESModels.so"
[5] #10  mainmain in "/OpenFOAM/OpenFOAM-2.2.2/platforms/S64FXFccDPOpt/bin/pisoFoam"
[37] #11  __libc_start_main in "/OpenFOAM/OpenFOAM-2.2.2/platforms/S64FXFccDPOpt/bin/pisoFoam"
[5] #11  __libc_start_main in "/lib64/libc.so.6"
[37] #12   in "/lib64/libc.so.6"
[5] #12

[37]  in "/OpenFOAM/OpenFOAM-2.2.2/platforms/S64FXFccDPOpt/bin/pisoFoam"
 *** Process received signal ***
 Signal: Floating point exception (8)
 Signal code:  (-6)
 Failing at address: 0x713900002c74
 [ 0] /lib64/libmpgpthread.so.1(raise+0x34)[0xffffffff224c21dc]
[ 1] /OpenFOAM/OpenFOAM-2.2.2/platforms/S64FXFccDPOpt/lib/libOpenFOAM.so(_ZN4Foam6sigFpe10sigHandlerEi+0xec)[0xffffffff0cf454ec]
 [ 2] /lib64/libmpgpthread.so.1(+0x1245c)[0xffffffff224c245c]
 [ 3] /lib64/libm.so.6(sqrt+0x20)[0xffffffff0d559200]
 [ 4] /OpenFOAM/OpenFOAM-2.2.2/platforms/S64FXFccDPOpt/lib/libOpenFOAM.so(_ZN4Foam4sqrtERKNS_3tmpINS_5FieldIdEEEE+0x440)[0xffffffff0cada600]
 [ 5] /OpenFOAM/OpenFOAM-2.2.2/platforms/S64FXFccDPOpt/lib/libincompressibleLESModels.so(_ZN4Foam14incompressible9LESModels14vanDriestDelta9calcDeltaEv+0x15d0)[0xffffffff02107cd0]
 [ 6] /OpenFOAM/OpenFOAM-2.2.2/platforms/S64FXFccDPOpt/lib/libincompressibleLESModels.so(_ZN4Foam14incompressible9LESModels14vanDriestDelta7correctEv+0x144)[0xffffffff0210c9c4]
 [ 7] /OpenFOAM/OpenFOAM-2.2.2/platforms/S64FXFccDPOpt/lib/libincompressibleLESModels.so(_ZN4Foam14incompressible8LESModel7correctERKNS_3tmpINS_14GeometricFieldINS_6TensorIdEENS_12fvPatchFieldENS_7volMeshEEEEE+0x118)[0xffffffff02151d18]
 [ 8] /OpenFOAM/OpenFOAM-2.2.2/platforms/S64FXFccDPOpt/lib/libincompressibleLESModels.so(_ZTv0_n216_N4Foam14incompressible9LESModels25homogeneousDynSmagorinsky7correctERKNS_3tmpINS_14GeometricFieldINS_6TensorIdEENS_12fvPatchFieldENS_7volMeshEEEEE+0x2c)[0xffffffff0276e92c\
]
 [ 9] /OpenFOAM/OpenFOAM-2.2.2/platforms/S64FXFccDPOpt/lib/libincompressibleLESModels.so(_ZN4Foam14incompressible8LESModel7correctEv+0x28)[0xffffffff02151d68]
 [10] pisoFoam(main+0x3684)[0x150504]
 [11] /lib64/libc.so.6(__libc_start_main+0x1c4)[0xffffffff22d1d9d8]
 [12] pisoFoam[0x14c4ac]
 *** End of error message ***
[5]  in "/OpenFOAM/OpenFOAM-2.2.2/platforms/S64FXFccDPOpt/bin/pisoFoam"
 *** Process received signal ***
 Signal: Floating point exception (8)
 Signal code:  (-6)
 Failing at address: 0x822900002c74
 [ 0] /lib64/libmpgpthread.so.1(raise+0x34)[0xffffffff224c21dc]
[ 1] /OpenFOAM/OpenFOAM-2.2.2/platforms/S64FXFccDPOpt/lib/libOpenFOAM.so(_ZN4Foam6sigFpe10sigHandlerEi+0xec)[0xffffffff0cf454ec]
 [ 2] /lib64/libmpgpthread.so.1(+0x1245c)[0xffffffff224c245c]
 [ 3] /lib64/libm.so.6(sqrt+0x20)[0xffffffff0d559200]
 [ 4] /OpenFOAM/OpenFOAM-2.2.2/platforms/S64FXFccDPOpt/lib/libOpenFOAM.so(_ZN4Foam4sqrtERKNS_3tmpINS_5FieldIdEEEE+0x450)[0xffffffff0cada610]
 [ 5] /OpenFOAM/OpenFOAM-2.2.2/platforms/S64FXFccDPOpt/lib/libincompressibleLESModels.so(_ZN4Foam14incompressible9LESModels14vanDriestDelta9calcDeltaEv+0x15d0)[0xffffffff02107cd0]
 [ 6] /OpenFOAM/OpenFOAM-2.2.2/platforms/S64FXFccDPOpt/lib/libincompressibleLESModels.so(_ZN4Foam14incompressible9LESModels14vanDriestDelta7correctEv+0x144)[0xffffffff0210c9c4]
 [ 7] /OpenFOAM/OpenFOAM-2.2.2/platforms/S64FXFccDPOpt/lib/libincompressibleLESModels.so(_ZN4Foam14incompressible8LESModel7correctERKNS_3tmpINS_14GeometricFieldINS_6TensorIdEENS_12fvPatchFieldENS_7volMeshEEEEE+0x118)[0xffffffff02151d18]
 [ 8] /OpenFOAM/OpenFOAM-2.2.2/platforms/S64FXFccDPOpt/lib/libincompressibleLESModels.so(_ZTv0_n216_N4Foam14incompressible9LESModels25homogeneousDynSmagorinsky7correctERKNS_3tmpINS_14GeometricFieldINS_6TensorIdEENS_12fvPatchFieldENS_7volMeshEEEEE+0x2c)[0xffffffff0276e92c\
]
 [ 9] /OpenFOAM/OpenFOAM-2.2.2/platforms/S64FXFccDPOpt/lib/libincompressibleLESModels.so(_ZN4Foam14incompressible8LESModel7correctEv+0x28)[0xffffffff02151d68]
 [10] pisoFoam(main+0x3684)[0x150504]
 [11] /lib64/libc.so.6(__libc_start_main+0x1c4)[0xffffffff22d1d9d8]
 [12] pisoFoam[0x14c4ac]
 *** End of error message ***
[ERR.] PLE 0017 plexec The process terminated with the signal.(rank=5)(nid=0x0164000c)(sig=8)
------------------------------------------------------------------------------------------------------------------------------------------------


文章を見た限り、ルート内に負の値が入って浮動小数点例外が起きていていると推測されますが、このような場合にどう対処すればよいか分かりません。
当たりを付けることも出来ていないのですが、アドバイスがあれば教えて頂きたく思います。

また、情報も不足しているかと思いますのでご指摘いただければ追加させていただきます。
何卒宜しくお願い致します。

Mag

unread,
Jun 15, 2020, 4:55:17 AM6/15/20
to OpenFOAM
補足ですが計算は数十ステップ流れたところで落ちているので問題は初期条件等ではないような気がしています。

2020年6月15日月曜日 17時53分46秒 UTC+9 Mag:

小南秀彰

unread,
Jun 15, 2020, 10:15:37 AM6/15/20
to OpenFOAM
自分はメーカの中の人なので専らRANSを使っていてLESのことは詳しくないのですが・・・・

とりあえず、一般的なことを書きます。
TimeStepの初期では計算が進行しているとのことなので、繰返計算途中で何かの場の量が発散しているのが原因と考えれます。

添付したソルバーエラーのログの直前には、どのような場の量の計算をしていたか出力されているはずです。またTimeStepの初期でも場の量の計算ログが出力されているので、その2か所を比べることによって、発散の原因となっている場の量が推定できます。

そのあとは、状況次第で、contorolDict,fvSchemes,fvSolution あたりを調べることになると思います。

2020年6月15日月曜日 17時55分17秒 UTC+9 Mag:

Masashi Imano

unread,
Jun 15, 2020, 7:35:54 PM6/15/20
to OpenFOAM
今野です.

> 文章を見た限り、ルート内に負の値が入って浮動小数点例外が起きていていると推測されますが、このような場合にどう対処すればよいか分かりません。

「ルート内に負の値が入って浮動小数点例外」というのはその通りですので,さらにエラーが置きた場所を探れば良いと思います.

ーーー
[5] #0  Foam::error::printStack(Foam::Ostream &)[37] #0  Foam::error::printStack(Foam::Ostream &) in "/OpenFOAM/OpenFOAM-2.2.2/platforms/S64FXFccDPOpt/lib/libOpenFOAM.so"

[5] #1  Foam::sigFpe::sigHandler(int) in "/OpenFOAM/OpenFOAM-2.2.2/platforms/S64FXFccDPOpt/lib/libOpenFOAM.so"

→sigFpe : Floating point exception(浮動小数点例外)

[5] #2   in "/lib64/libm.so.6"

[5] #3  sqrt in "/lib64/libm.so.6"

[5] #4  Foam::sqrt(const Foam::tmp<Foam::Field<double>> &) in "/OpenFOAM/OpenFOAM-2.2.2/platforms/S64FXFccDPOpt/lib/libOpenFOAM.so"

→ sqrt

[5] #5  Foam::incompressible::LESModels::vanDriestDelta::calcDelta() in "/OpenFOAM/OpenFOAM-2.2.2/platforms/S64FXFccDPOpt/lib/libincompressibleLESModels.so"

→ vanDriestDelta::calcDelta
ーーー

ですので,さらに,vanDriestDelta::calcDelta を調べていきます.

```
# vanDriestDeltaのソースの場所を調べる
find  $FOAM_SRC -type f -name 'vanDriestDelta.[CH]'

#~/OpenFOAM/OpenFOAM-2.2.2/src/turbulenceModels/incompressible/LES/vanDriestDelta/vanDriestDelta.C
#~/OpenFOAM/OpenFOAM-2.2.2/src/turbulenceModels/incompressible/LES/vanDriestDelta/vanDriestDelta.H
#~/OpenFOAM/OpenFOAM-2.2.2/src/turbulenceModels/compressible/LES/vanDriestDelta/vanDriestDelta.C
#~/OpenFOAM/OpenFOAM-2.2.2/src/turbulenceModels/compressible/LES/vanDriestDelta/vanDriestDelta.H

# 非圧縮用のvanDriestDeltaのソースの内容を調べる
cat ~/OpenFOAM/OpenFOAM-2.2.2/src/turbulenceModels/incompressible/LES/vanDriestDelta/vanDriestDelta.C

#void vanDriestDelta::calcDelta()
#(snip)
#            ystar.boundaryField()[patchi] =
#                nuw/sqrt((nuw + nuSgsw)*mag(Uw.snGrad()) + VSMALL);
```

calcDelta 内に sqrt があるので,その中が負値になって Fpe となった可能性が高いのですが,
負値防止のため,極小さな値 VSMALL が付加されているので,通常は負値とならないと思います.

platform が S64FXFccDPOpt なので,FX100上で富士通コンパイラを用いてビルドしているのだと思いますが,
コンパイル時の最適化オプションは何かわかりますか?

最適化によっては,sqrt が近似されるので,最適化によるエラーの可能性もあります.
sqrt が近似されないように,最適化オプションを変更して再ビルドし,再計算する必要があるかもしれません.

もし最適化オプションによって sqrt が近似されていないのであれば,
sigFpe する直前で計算結果を出力するようにして,
nuSgs の分布を調べるか,デバッガにかけて調べる必要があると思います.

ただ,乱流モデルとして動的LESモデルを使用されているので,
そもそも LES delta として,vanDriestDelta の減衰関数を併用する必要があるかご検討ください.

ーーー
[5] #6  Foam::incompressible::LESModels::vanDriestDelta::correct() in "/OpenFOAM/OpenFOAM-2.2.2/platforms/S64FXFccDPOpt/lib/libincompressibleLESModels.so"

[5] #7  Foam::incompressible::LESModel::correct(const Foam::tmp<Foam::GeometricField<Foam::Tensor<double>, Foam::fvPatchField, Foam::volMesh>> &) in "/OpenFOAM/OpenFOAM-2.2.2/platforms/S64FXFccDPOpt/lib/libincompressibleLESModels.so"

[5] #8  Thunk for (offset 0, virtual offset -216) Foam::incompressible::LESModels::homogeneousDynSmagorinsky::correct(const Foam::tmp<Foam::GeometricField<Foam::Tensor<double>, Foam::fvPatchField, Foam::volMesh>> &) in "/OpenFOAM/OpenFOAM-2.2.2/platforms/S64FXFccDPOpt/lib/libincompressibleLESModels.so"
ーーー

また,乱流モデルとして,homogeneousDynSmagorinsky を用いられていますが,
そもそも homogeneous なモデルで良いのかもご検討ください.

以上です.

Mag

unread,
Jun 15, 2020, 11:17:58 PM6/15/20
to OpenFOAM
ご回答ありがとうございました。

減衰関数をなくし、時間刻みを小さくしたところ計算が回るようになりました。
ただ、2点質問があります。
①標準出力に
Courant Number mean: 1.29205e-05 max: 7.49155e-05
DILUPBiCG:  Solving for Ux, Initial residual = 0.000425197, Final residual = 8.92405e-10, No Iterations 1
DILUPBiCG:  Solving for Uy, Initial residual = 0.000664967, Final residual = 1.00223e-09, No Iterations 1
DILUPBiCG:  Solving for Uz, Initial residual = 0.25834, Final residual = 6.7366e-07, No Iterations 1
DICPCG:  Solving for p, Initial residual = 0.413869, Final residual = 0.0197062, No Iterations 20
time step continuity errors : sum local = 2.43802e-10, global = -7.39559e-11, cumulative = 1.11595e-09
とあるのですが、このtime step continuity errorsとは無視してもよいのでしょうか?
おかしい結果が出ているということでしょうか?

②関連して、時間刻みを小さくしたことでCFLが10^-5になっています。
 以前は10^-1~-2オーダで落ちていました。
 文献で見た限りCFL<1であれば十分との認識でしたがこのようなケースはあり得るのでしょうか?
 そもそもの10^-2というのも十分小さいような気がするのですが…

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


2020年6月16日火曜日 8時35分54秒 UTC+9 Masashi Imano:

Masashi Imano

unread,
Jun 15, 2020, 11:26:04 PM6/15/20
to OpenFOAM
今野です.

> 減衰関数をなくし、時間刻みを小さくしたところ計算が回るようになりました。

良かったですね.

その後の質問は,全く別の質問になると思いますので,
新規に質問のスレッドを作成したほうが良いと思います.

以上です.

Masashi Imano

unread,
Jun 16, 2020, 1:49:20 AM6/16/20
to OpenFOAM
今野です.


platform が S64FXFccDPOpt なので,FX100上で富士通コンパイラを用いてビルドしているのだと思いますが,
コンパイル時の最適化オプションは何かわかりますか?


```
cat $WM_PROJECT_DIR/wmake/rules/S64FXFcc/c++Opt 
```

ところで,上記の実行結果はどうなってますか?

Mag

unread,
Jun 16, 2020, 2:13:03 AM6/16/20
to OpenFOAM
今野様

お世話になっております。
以下のようになっております。
c++DBUG     =
c++OPT      = -O3 -Xg -D__INTEL_COMPILER

こちらも問題となりうるでしょうか?

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

2020年6月16日火曜日 14時49分20秒 UTC+9 Masashi Imano:

Masashi Imano

unread,
Jun 16, 2020, 2:27:46 AM6/16/20
to OpenFOAM
今野です.

それならば,sqrtの近似は行わないと思いますので,
最適化のためではなく,本当にnuSgsが負になっているのではないでしょうか?
nuSgsの最小値をモニターしたほうが良いと思います.

また,流入風の変動はどのように再現されているのでしょうか?

Mag

unread,
Jun 16, 2020, 3:18:41 AM6/16/20
to OpenFOAM
今野様

ご指摘ありがとうございます。
デバックジョブで流したところnuSGSについても負の値は確認できませんでした。
deltaをcubeRootVolに変えたことが効いているのでしょうか。。。

また、流入変動については、inletの境界条件で、
boundaryField
{
    inlet
      {
        type            turbulentInlet;
        referenceField  uniform (0.22 0 0);
        fluctuationScale (0.05 0.03 0.03);
        value           uniform (0.22 0 0);
      }

として入れています。

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

2020年6月16日火曜日 15時27分46秒 UTC+9 Masashi Imano:

Masashi Imano

unread,
Jun 16, 2020, 3:44:01 AM6/16/20
to OpenFOAM
今野です.

sigFpeとなった原因把握が重要かと思いますので,sigFpeとなった設定(vanDriestDelta)のままで,
nuSgsが負になっていないか確認してみてください.

また,もし,デバックジョブというのが,デバッグオプション(-gなど)を付けてコンパイルしたバイナリを動かしたのあれば,
デバッグフラグによって結果が変わる事もあるので,元の最適化オプション(Opt)のバイナリを実行してみてください.

Mag

unread,
Jun 17, 2020, 3:55:44 AM6/17/20
to OpenFOAM
今野様

返信遅くなり申し訳ございません。

vanDriestDeltaのままでnuSgsを見たところ10^-8オーダーの値で負の値が生じていることが分かりました。
Vsmallの値が分からないので何とも言えませんが、適切でないことは確かめることが出来ました。

ありがとうございました。


2020年6月16日火曜日 16時44分01秒 UTC+9 Masashi Imano:
Reply all
Reply to author
Forward
0 new messages