OpenFOAM 2.1.x(AMI) VS 1.6-ext(GGI)

昨日の記事をよくよく見直してみると、タイトルと一致していない部分が多々あるので、その部分(1.6-extとの比較)を改めて別記事として取り纏めることとしました。

1.6-extで動いていたモデルを2.1.xで動かしてみる

  • もちろん、そのままでは動かない。あれこれ試行錯誤して、最終的に必要最小限の変更事項を以下取りまとめておく。

変更ファイル総覧

  • https://ocse2.com/wp-content/uploads/2011/12/0110.png
  • 赤色は内容が異なっており、黒はファイルが存在しないことを意味しています。
  • ちなみにこのdiff(内容比較)は、Kdiffというツールを使っており、Synapticパッケージマネージャでインストールできます。
  • [[https://ocse2.com/wp-content/uploads/2011/12/00.png>http://kdiff3.sourceforge.net/]

polyMesh/boundary

  • https://ocse2.com/wp-content/uploads/2011/12/0210.png
  • 当然ですが、typeの名前を変更(ggi -> cyclicAMI)して、付随情報の書式も変更せねばなりません。
  • polyMesh(メッシュファイル) のその他のデータは全く同一でOK

polyMesh/faceZone

  • 1.6-ext では、回転境界面のペアーになる面情報をfaceZoneデータとして作成しておく必要がありましたが、これは実質的にはpatch情報と同一であり、不要じゃないかと思っていた部分。2.1.xでは、これは必要なさそうで、削除してもちゃんと動作すること確認しました。

Field変数の境界/初期条件データ

  • https://ocse2.com/wp-content/uploads/2011/12/032.png
  • 回転領域境界面のtypeを変更(ggi -> cyclicAMI)するだけで良さそう。
  • 回転物体境界(赤枠部分のfan)の指定方法は全く同一

constant/dynamicMeshDict

  • https://ocse2.com/wp-content/uploads/2011/12/045.png
  • Dictの名前は同じで良かったが、使用するライブラリが異なっており、当然ながら、この中味が全く異なる。
  • このファイルは、1.6-extで使っていたものを変更するでなく、2.1.xのチュートリアルデータを使って、数字だけを変更して使った。
  • 1.6-extでは、patch名(あるいはfaceZoneか?)を参照していたのを、2.1.xでは、cellZoneが参照されている
  • 回転速度の指定はrpm⇒deg/sに変更
  • 回転軸情報の記述方法は、ややシンプルになった

system/controlDict

  • https://ocse2.com/wp-content/uploads/2011/12/05.png
  • 基本的には同じ。1.6-extでは、ggiCheckというfunctionsを使っていたが、2.1.xでは存在しないので、その部分だけコメントアウトしてある。
  • adjusTimeStepを「yes」にすると、挙動がかなり異なってきてしまうので、ここは「no」として固定時間刻み(deltaT=0.00001)で計算している。

system/decomposeParDict

  • https://ocse2.com/wp-content/uploads/2011/12/06.png
  • ここも大きな違い。特に1.6-extではglobalFaceZoneを定義するあたりが回転問題で独特であったが、2.1.xでは、通常のDictと同じ書き方で良いみたいだ。

system/fvSchemes

  • https://ocse2.com/wp-content/uploads/2011/12/07.png
  • このファイルと下のファイル(fvSolutions)は、計算速度を比較する際にできるだけ同一にしておきたかったんだが、1.6-extで動いていたものは、pimpleDyMFoam用ではなかった(icoDyMFoam用だった)為、2.1.xのチュートリアルデータをそのまま使って、1.6-extでは動作しなかった部分のパラメタを変更して使用した。
  • divSchemeが少々変更されている

system/fvSolutions

  • https://ocse2.com/wp-content/uploads/2011/12/08.png
  • 1.6-extではワイルドカード的な記述”(U|k|epsilon”)”は出来ないみたいだったので、個別に定義。
  • 1.6-extでは、PIMPLEの pRefCell 等を明示する必要があった。

計算速度比較

  • 現象時間の0.01秒分を計算するのに要した時間(分)にて比較してみた
  • https://ocse2.com/wp-content/uploads/2011/12/10.png

その他機能の比較

  • 1.6-ext(GGI)では、並列計算の結果をparaview のnative reader で読むことができなかったが、2.1.x(SMI)では読むことが出来た。
  • decomposition, reconstruction に要する時間に関して、1.6-ext(GGI)ではかなり遅くなってしまっていたが、2.1.x(AMI)では通常の計算の場合と大差なかった、

残された課題

  • チュートリアルケースも、ここにとりあげたケースも、回転境界面が回転側と静止側で初期状態では完全に同一のメッシュ(二重節点状態)になっているんだが、回転側と静止側で別々にメッシュ作成して合体させたメッシュで、回転境界面のメッシュ(メッシュ数や節点の位置)が一致しない場合には、計算が直ちに停止してしまった。
    • 【2012/1/14:追記】unset SIGFPE にて解決しました
  • 圧縮性ソルバーで、cyclicAMIがうまく動かないという報告も聞いている。
Share

コメントする

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

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