翼の揚力発生の仕組みについてシミュレーションで試してみようということで、下記サイトの内容をなぞれば楽勝と思いきや、やたらつまずいたという記録。
落とし穴は、ざっとこんなところ
・財団版とESI版の非互換
・OpenFOAMのバージョン間で非互換
・wls のデフォルトユーザー
・FreeCADのバグ
最初に悩んだのは翼型のデータ。上記サイトでは細かい説明がないが、このサイト(UIUC Airfoil Data Site) にある .datファイル (例えば clarky.dat)をダウンロードして、そのままFreeCADに読み込ませればよい。
次に引っかかったのは、財団版とESI版の違い。OpenFOAMには OpenFOAM財団版とOpenCFD社のESI版 (DEXCSはこちら)があって細かいところで互換性がない。前記のサイトで使っているXSimは財団版前提のスクリプトを生成するためESI版だとそのままではNG。具体的には、財団版のsurfaceFeaturesがESI版ではsurfaceFeatureExtractに変わっていて、受け渡すデータの形式もちょっと異なるようだ。そのことを知らずに、「OpenFOAMによる熱移動と流れの数値解析 」を参考に用意したDEXCSのバーチャルマシンで実行して、うまくゆかずに悩んだ。素直に財団版に乗り換えることにした。
Windows使いの私はwslに Ubuntu 24.04 LTSを入れ、こちらに財団のOpenFOAM (現在のバージョンはv12) をインストールしたが、これもだめ
XSimはエクスポートのフォーマットとして、OpenFOAM 11 / OpenFOAM 10 / OpenFOAM 9 (非推奨) の選択肢がある。つまり、OpenFOAMのバージョンごとの違いを踏まえて作り分けているということ。そして、OpenFOAM最新版の OpenFOAM 12 はまだサポートしていない。
実際に、XSimでOpenFOAM 11 フォーマットで出力したものをOpenFOAM v12で動かしても、Running foamRun in parallel on ... まで表示が進んでハングする。
簡単に推測できるURLにv11のダウンロードページが残っていて、https://openfoam.org/version/11/ こちらの記載に従えば簡単にOpenFOAM v11がインストールできる。
これで万事解決と思いきや、やはりNG。問題は、wslのユーザーだった。実験に使った環境だとrootユーザーだったのだが、それだと不安全ということでOpenFOAMが自分で止めてしまうようだ。
ターミナルからwslのubuntuに入ると、ubuntuの初回起動時に作ったユーザーとしてログインしているはずなのだが、export/importで作ったせいなのだろうかrootユーザーになってしまう。/etc/wsl.confを編集して別に作った一般ユーザーとしてwslのubuntuに入るようにしたところ、無事にXSimで作ったスクリプトを実行できた。
と言っても結構ドキドキさせられた、./Allrunを走らせるとこのような画面が現れて計算の進捗が表示されるが、この画面で最後までいったあとプロンプトが戻ってくるまでが長くて、ハングしているように見えてしまう。
あとは、paraFoamコマンドでParaViewが開いて計算結果を見ることができる。openFoamと一緒にParaViewがインストールされるので世話無し。
話は前後するが、freeCADでstlデータを作る際にFreeCADの不具合に引っかかった。FreeCAD の現行バージョン( Windows版 0.21.2.33771)で作ったstlファイルをXSimにアップした結果がこちら。風洞部分である直方体のZ軸に伸びる4面の位置がずれている。
しかたないので、FreeCAD 1.0.0 RC2でstlを作りなおしてみたところOK。だが、RC2はGUIが以前とは少し異なるうえ画面表示がだいぶバグっていていまいち。ちなみに、DEXCSのバーチャルマシンにインストールされていたLinux版 FreeCAD 0.20.1 でもこの不具合はなかった。
以上のようにWebにあったチュートリアルを実行するだけで、えらく苦労させられたが、なんとか実行に成功した。やれやれ。