OpenFOAM-2.1.0 AMI – pimpleDyMFOAM/propeller

OpenFOAM-2.1.0 がリリースされ、AMI(Arbitary Mesh Interface)が使えるようになったとの事で、チュートリアルケース(pimpleDyMFoam/propeller)を調べてみた。

Allrun はすんなり動いた。

  • 4並列の計算で、数時間かかって計算は終了。paraviewで可視化すると、ちゃんとプロペラ(船のスックリューか?)が回転している。しかもメッシュはsnappyHexMeshで切っている!

し、しかし・・・

  • 並列数や、並列分割方法を変えて計算しようとすると、数ステップ計算した後発散。並列計算のみならず、単体計算をやっても同じ。困った・・・

そこで、あれこれ試行錯誤

  • 回転数を変えてみる
  • 計算の解法パラメタをいじってみる
  • デフォルト(4並列)計算結果の途中結果からリスタートする
  • などしてやれば、並列数や方法を変えても動くようになってきた。
  • 本ソルバーに限らず、特に並列計算をやっているとよくあることなんだが、正常に計算していて、ある時、突然何の前触れもなく、異常に大きな値が出力され、次のステップで異常終了してしまう場合があり、しかも再現性がある。但し、処理系(計算機)を変えると、そのタイミングでは生じないなど。
  • 本ケースはその逆のケースと言ったらよいのか・・・よくわからないが、まぁ、多分、それでもちゃんと計算できてはいるようだ。

並列性能

  • コア数を倍にすると、約1.5倍のスピードアップ。自宅のマシンでは4並列までしか性能が出せないが、会社のクラスターでやったら、かなりの数までスケールすることも確認できた。
  • 分割方法はhierarchicalか、simpleがベストで、scotchはやや遅い。
  • https://ocse2.com/wp-content/uploads/2011/12/09.png

    Share

    コメントする

    メールアドレスが公開されることはありません。 が付いている欄は必須項目です

    このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください