dynamicsoar's log

主に研究関係のメモ

Fluent 18.1 で、定常RANS で予備計算 → LES で本番計算

だいぶ古いなーこれ…(2019-02-27)

  1. 定常 RANS の計算を普通にやる。ここでは(Workbench ではなく)スパコンでやったとする。ある程度収束した時点での .cas[.gz] と .dat[.gz] を保存しておく。
  2. Workbench に、新しい Fluent モジュールをドロップして起動する。Parallel で 1 CPU にしておく。当然 Double Precision.
  3. 定常RANS で保存しておいた収束したっぽい時点での case & data を import する。
  4. TUI で、/solve/initialize/init-instantaneous-vel を実行。これは LES に変える前に行う必要がある。Version 18.1 では LES に変えたらそもそもコマンドが消えるが、過去のバージョンでは違った模様。
  5. General:
    • Transient に変える
  6. Models:
    • Viscous を LES に変える。
  7. Boundary Conditions(必要なら):
    • Inlet の流入境界条件を変更する。
      1. General > Display... で inlet のメッシュを表示しておく(してないと次の数が表示されない)。
      2. 上のリボンの SEtting Up Domain の一番右、Surface 欄の Manage... から inlet の 2D Facets の数を調べる(これを N と呼んでおく)。
      3. inlet の境界条件の一番下、No Perturbation を Vortex Method に変更し、Number Of Vortices に N/4 以上の値を入れる。この数は ANSYS 公式の資料から。また、Spectral Synthesizer よりもこちらが推奨らしい。渦の個数は1000までしか選べない。1000 を超える数を入力したい場合には scheme コマンドが必要なようだ→
        • TUIからのみアクセスできる隠しパラメータとして、流れの主流方向の fluctuation のオンオフが可能。
    • 外側境界条件を symmetry から変更する(LES では対称境界はダメらしい)。ここでは periodic にすることにする。
      1. まず、対象となる境界の boundary condition を Interface に変える。
      2. 左に Mesh Interfaces が表示されるので、ここで周期境界を作成する。注意事項として、offset はふつう translational だと思うが、automatic は信用できないことがある(特に2回目以降)ので、手入力を推奨。また、この値には符号があるので注意。たとえば「y座標の正が右」の場合、boundary 1 に left, boundary 2 に right を選んで、その距離分の「正の値」を入れる。もし、boundary 1 に right, boundary 2 に left を選んだ場合、距離分の「負の値」にしないといけない。
  8. Monitors:
    • History (report) ファイルの設定を変える。定常のときは per iteration で出力していたと思うが、transient なので per timestep で出力するのが普通だと思う。Report Definitions に自動的に delta-time, flow-time, iters-per-timestep が追加されているので、必要なものを追加し、per timestep での出力にする。なお、per iteration 用の設定は削除しなくても、 deactivate しておけばよい。
    • Residual から、convergence criteria を変更する(必要があれば)。Transient なので、continuity を 1e-4 程度に緩和して、かつ、relative or absolute にするのがいいだろうか。
  9. Calculation Activities:
    • Auto save 間隔を決める(計算回数と dt に応じて)。
  10. Run Calculation:
    • 時間刻み (dt)・計算回数・内部iteration 回数を決める。
    • Extrapolate Variables で予測による加速を ON に(しない方がいい場合というのがちょっとわからない)。原因不明の異常振動に悩んでいたのだが、こいつも要因であった可能性がでてきた。もしこれを使う場合は ON, OFF 両方やってみて発散したり値の異常振動がおきたりしないことを確実にチェックしたほうが良い。
    • Data File Quantities を設定する。Initialize は TUI からやっているので、既に選択できるようになっているはず。ここで選択しすぎると data ファイルのサイズがどんどん増大するので、本当に必要なものだけにする。また、流れ場が落ち着いてから追加計算するなら、そのときに増やしてもいいと思う。
  11. その他に必要な設定があればする。
  12. Run Calculation の一番上の Check Case... をする。問題がなければ良い。
  13. case & data を export する。このとき保存ファイル名は .cas.gz を付けておけば、同名の .dat.gz も保存される。
  14. スパコンで journal file を実行する。手順としては case を読み込み → 並列パーティション切り(まだ切ってなければ)→ data を読み込み → 計算。

本当はこれを全て journal でやるのが理想。そのうちやりたいが、設定項目が多すぎて手順を編み出すのにちょっと時間がかかりそう。

2017-12-28 UPDATE: 全部 journal でできるようにした。後でまた書く予定。

参考

  • "Quick Guide to Setting Up LES-type Simulations" でググって。

わからないこと

  • auto save される data ファイルが .gz 圧縮されない。と思うと、極稀にされる。どうなっているのかがよくわからない。まぁ、計算終わってから $ nohup gzip foo-*.dat & とかするから別にいいっちゃいいんだけど…

Tsubame 3.0 に win 10 の cygwin から ssh でログイン

学生さんがトラブっていて、自分もちょっと忘れていたので、忘れてもいいようにメモ。

  1. Cygwin ではどうやらデフォでは OpenSSH が入っていないようなので(?)、setup-x86_64.exe を叩いて ssh で検索して openssh を入れる。
  2. たしか ssh-keygen かなんかのコマンドで鍵を作れる(→正しくは http://www.t3.gsic.titech.ac.jp/node/79 )。もし、既に puttygen で putty形式(?winscpとかで使うやつ。.ppk みたいなの)の秘密鍵を作っていたばあい、puttygen の conversion から openssh 形式に変換して、~/.ssh/ ディレクトリにぶち込む。
    1. 追記:鍵生成は $ ssh-keygen -t ed25519 が良さそう。RSA よりもセキュリティ的に強いっぽい。
  3. このままだと permission is too open とかいって deny される場合があるので、そうなったら $ chmod 600 ~/.ssh/id_rsa みたいにしてパーミッションを制限する。
  4. 対応する公開鍵を Tsubame Portal から UP する。
  5. cygwin から $ ssh -l [username] login.t3... とかしてログイン。信用していいの?とか言われるので yes.

こんな感じだったはず。

参考

ANSYSメモ:CFD-Postで連番 data files を読み込ませるには

たぶんマニュアルに書いてあるだろうけど、ヒューリスティックに発見してしまったのでメモ。

連番の data files をまとめて認識してほしいとき、ファイル名を下記のようにリネームして、Load Results から .cas.gz を読めば良い:

case file

  • foo.cas.gz

のような感じ。

data files

  • foo-00100.dat.gz
  • foo-00200.dat.gz
  • ...

のような感じ。どうやら、foo と数字をつなぐ記号はハイフンでないといけないようだ。アンダースコアだと認識してくれなかった。

もちろん、case file の方の foo を変えたら、data files の方でも合わせれば良い。

Caffe (with CUDA 8, cuDNN 5.1) を Windows 10 Pro 64bit で build して matcaffe のデモを走らせる(2017-11時点)

環境

Windows 10 Professional, 64 bit. Fall Creators Update 適用済み。GPUGeForce GTX 1060.

Matlab は現時点で最新の R2017b と、諸事情により必要なかなり古い R2014a の両方でデモコードの実行に成功した。なので、これらの間のバージョンならどれでも通るのではないだろうか。

やりたいこと

画像関係の Deep Learning したい。まさに自分がしたい内容について matcaffe のコードが公開されているので、まずは matcaffe を動かしたい。

ウェブ上にもちろん情報はあるんだけど、それでもハマったので、自分用にメモ。とくに matcaffe 固有の問題はウェブ上に記述が少ない。日本語はほぼない。

手順の流れ

基本はここ → GitHub - BVLC/caffe at windows だが、ハマりポイントがあり、また matlab 関係はいろいろ足りていないのでけっこうググる必要があった。

今回入れるのは Visual Studio 2015, CUDA 8.0, Python 3.5: Caffe Release とする。

以下の記述で、実行場所の指定がなかったり ./ とあったり、caffe/foobar などとある場合は、cd caffe 後のディレクトリ(直下に build, cmake, data, docker, ... が見えている位置)を意味することとする。

  1. (必須)Visual Studio 2015 のインストール
  2. (必要かどうか不明確)システム > システムの詳細設定 > 環境変数 > システム環境変数 に VCTargetsPath として C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140 を新規でセット。
  3. (必須)CMake 3.4以上のインストール
  4. GPU使うなら必須)CUDA 8 と cuDNN 5.1 のインストール
  5. (必須?)Anaconda3 4.2.0 のインストール ← 4.4.0 は python 3.6 がデフォなので厳密を期した。Miniconda でもいいと思う。
  6. conda で必要なツールのインストール ← 記憶がやや曖昧…
  7. git のインストール(必要ではないかも)
  8. 適当なディレクトリを作って、コマンドプロンプトpowershell から git clone https://github.com/BVLC/caffe.git して、cd caffe して、git checkout windows する。
  9. (必須)展開されたディレクトリのうちの scripts フォルダに build_win.cmd というのがある(なかったら上の git clone に失敗してるかも)。これをテキストエディタで開いて編集。
  10. (必須かどうかは場合による?)展開されたディレクトリのうちのルートディレクトリに CMakeLists.txt があるのでこれを編集。
  11. (matcaffe の場合おそらく必須)caffe/matlab/CMakeLists.txt を編集(後述)
  12. scripts ディレクトリよりもひとつ上の階層において、コマンドプロンプトなどから、cmake と python --version がちゃんと通ることを確認(パスの確認)。後者で、2.7 とか出た場合、cygwin あたりの python が優先されてるっぽいので、cygwin から python をアンインストールしておく(必要かどうかは知らないけど、どうせ cygwinpython 使わんでしょ?)
  13. 同じ場所で、scripts\build_win.cmd を実行する。失敗した場合は、build ディレクトリを削除したほうが良い(キャッシュみたいのが生成されるので)。あと、C:\Users[ユーザー名].caffe\dependencies という隠しフォルダ(ディレクトリ)も自動生成されていて、こっちも消したほうがいい場合があるかもしれない。
  14. ビルドが通ったら、mnist のテストをする。
  15. matlab から実行できることをテストするために、classification_demo.m を実行する。

以下、それぞれについてもう少し詳しい手順を記す。

Visual Studio 2015 のインストール

Visual Studio のページに行くと最新の 2017 に飛ばされるので、下の方から 以前の Visual Studio ソフトウェアのダウンロード | Visual Studio へ飛ぶ。しかしここで 2015 の右の「ダウンロード」をクリックすると MS アカウントにログインしろと言われる。さらに、しばらくログインしていなかった場合はそれでも「お前にはダウンロードする資格はない」とか言われてリダイレクトされる。どうすればいいかというと、MSアカウント(というか Visual Studio アカウント?)の自分のプロフィール画面の左下にある Visual Studio Dev Essentials というのに無料 subscribe すればよい。うーん、わかりづらい。

ビルドに必要なのは VC++(のコンパイラ cl.exe)だけらしい。自分は、怖いので、絶対に関係ないであろうモバイル関係以外はほとんど全部入れた気がするけど、正直、容量の無駄なので、あとで消したい。

CUDA 8 と cuDNN 5.1 のインストール

互換性の問題があるらしいので、CUDA は 8, cuDNN は 5.1 とする。CUDA は正しくは CUDA Toolkit というやつ(最初これすら知らなくて右往左往した)。具体的にはここから→ CUDA Toolkit Download | NVIDIA Developer 。一方、cuDNN はググればダウンロードページに行くと思うけど、その先は Developer program みたいの会員登録(無料)しないとダウンロードできなかったと思う。先に CUDA をインストールして、cuDNN の方は、C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0 以下の同名ディレクトリに中身を移動しちゃうだけでよい。

Anaconda3 4.2.0 のインストール & 必要なツールのインストール(condaで)

Anaconda installer archive ← ここから昔のバージョンを落とせる。 4.4.0 は python 3.6 がデフォだが、caffe はあちこちで「3.5 にしてね」ってあるので、厳密を期した。でもたぶん、4.4.0 を入れておいて、conda install python=3.5 でいいんじゃないですかね…。

この後、

conda install --yes cmake ninja six scikit-image

だったかをしたはずだが、記憶がすでに曖昧だ…。たしか、protobuf==3.1.0 はしようとしてもエラーができてできなかった気がする。

build_win.cmd の変更

if DEFINED APPVEYOR ( の else の方だけでいい、という記述も見かけたけど、よくわからんし大した量じゃないので両方変えた。

変えた場所は

  • WITH NINJA=1 → =0 に(2箇所)
  • PYTHON_VERSION=2 → =3 に(2箇所)
  • BUILD_MATLAB=0 → =1(2箇所)
  • CONDA_ROOT のパスを自分のパスへ変更。ダブルクオーテーションは付けない。自分の場合は、C:\Users\maz\Anaconda3 だった(2箇所)
  • cmake -Gなんちゃら、のところに、-DCUDNN_ROOT=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0 ^ を追加。不要な気がするが念のため。

CMakeLists.txt への追記

既に入っている cygwingcc とコンフリクト(?)するのを避けるために、「Visual Studio の方の C コンパイラを使ってね」と伝える必要があるらしい。Ninja 切れば不要だったのかもしれないが、まぁ…

17行目あたり(projectの前でないといけないらしい)に、以下を追記した:

## Specify the C compiler for avoiding errors
set(CMAKE_C_COMPILER "C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/cl.exe")
set(CMAKE_CXX_COMPILER "C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/cl.exe")

注意事項としては、なんか知らんけど、パスの区切りはバックスラッシュ(円マーク)だと怒られる。スラッシュにする必要がある。あとは、もし Visual Studio 2015 以外を使いたいなら、14.0 のところをもちろん自分の数字に変えるべし。

matlab/CMakeLists.txt の編集

このままビルドすると、 matlab で実行しようとしたときに mex が見つからないよ、みたいに怒られる。正確には、

Undefined function 'caffe_' for input arguments of type 'char'

だったと思う。このエラーを回避するために、MEX File Missing during Installation · Issue #5219 · BVLC/caffe · GitHub にあるとおり2行追加する(61行目あたり)。

set_target_properties(matlab PROPERTIES 
                                 RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/matlab/+caffe/private)

set_target_properties(matlab PROPERTIES 
                                 RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/matlab/+caffe/private
                                 RUNTIME_OUTPUT_DIRECTORY_DEBUG ${PROJECT_SOURCE_DIR}/matlab/+caffe/private
                                 RUNTIME_OUTPUT_DIRECTORY_RELEASE ${PROJECT_SOURCE_DIR}/matlab/+caffe/private
)

とする。

実は最初にビルドしたときはこれを知らなかったので、後で上記の修正をしてから再度ビルドしたら大丈夫になった。

mnist のテスト(シェルから)

WindowsでCaffeをビルドしてGPUで実行する - TadaoYamaokaの日記 にあることに近いのだが、いくつか注意や相違があるのでメモ。

  • 記事にある通り、シェルスクリプトを使うので、ここまで使ってきコマンドプロンプトではなく、ここからは Unix 系のシェルを使う。記事には MSYS とあるが、僕は前に入れていた Cygwin で問題なく動いた。
  • 使うシェルスクリプトファイル(.sh ファイル)たちの改行コード (EOL) が Win の CR+LF になっているので、うまくいかない可能性がある。たとえば、Notepad++ で開いて、menu > edit > EOL conversion > Unix (LF) とすればよい。

念のため、やることもまとめておく。

  • data/mnist/get_mnist.sh を編集:
    • 改行コードを LF に変える。
  • examples/mnist/create_mnist.sh を編集:
    • 改行コードを LF に変える。
    • BUILD=build/examples/mnist → BUILD=build/examples/mnist/Release へ変更(環境によっては違う場所可能性あり)。
    • convert_mnist_data.bin → convert_mnist_data.exe へ変更(2か所)
  • examples/mnist/train_lenet.sh を編集:
    • 改行コードを LF に変える。
    • ./build/tools/caffe → ./build/tools/Release/caffe へ変更(環境によっては違う場所可能性あり)。

以上が終わったら、Cygwin などから、

./data/mnist/get_mnist.sh
./examples/mnist/create_mnist.sh
./examples/mnist/train_lenet.sh

の順に実行する。GPU の場合、GPU-Z やタスクマネージャ(Windows Fall Creators Update適用済の場合)を見るとちゃんと作動していることがわかる。

classification_demo.m のテスト(matlab上で)

matlab はインストール済みとする。

手順は以下の通り

Net.m ファイルの編集

caffe/matlab/+caffe/Net.m の編集について。これは結構ググったのだが、結論としては、https://github.com/BVLC/caffe/pull/5588#issuecomment-303673915 を参考に、72-74行目にある

if ~isempty(self.hNet_self)

コメントアウトして、

if self.isvalid

を記述する。

これで問題なくデモが走るようになった。結果は 1000x1 の配列で、中身チェックしてないけど、エラー出てないからたぶんいいんじゃないか…(疲れた)。

実は変更内容はわかっても変更箇所がわからなかったので、上の github スレッドからリンクしていた(同じ meixiaofeng さんによる) https://github.com/meixiaofeng/caffe/pull/1/files を見て変更箇所を特定した。しかし、これだと変更前のソースになぜか if がないことになっている…。バージョンが微妙に違うのかもしれない(?)。まぁなんにせよ if self.isvalid で走ってるから、いいか。

ほかにハマったところ

ウェブ上の情報がまちまち

現時点 (2017-11-08) での最新バージョンでの入れ方は、「scripts\build_win.cmd を直接テキストエディタでいじって、その後に実行せよ」というもの。しかし古い自家ビルドとかだと、Winであっても、「違う設定ファイルをいじって、Caffe.sln というのを Visual Studio でビルドしろ」とかあって混乱した(やってみたが python 2 のせいっぽい、文字列をダブルクオーテーションで囲ったところの syntax error が連発して死んだ)。結局、現時点では、公式の build_win.cmd でいけるようだ。現時点では。

環境変数の名前を typo した

VCTargetsPath を VcTergetsPath と2重に typo していた。と思ったけど Windows の variables は NOT case-sensitive なので Vc はまだよかった。Tergets がひどい。つらい。

Cmakeが依存ファイルのダウンロード中にWindows download Prebuilt Dependencies.cmakeエラーで止まる

これは proxy が原因だった。Cmake の(あるいはファイルダウンローダの?)設定方法がよくわからなかったし、ググるのに疲れていたので、VPNで回避した。VPNで回避できたということは、確実にproxyのせいともいえる。

気づいたキッカケは、エラーメッセージでググって、これ→ python - Cmake error at Windows download Prebuilt Dependencies.cmake:54 file Download hash mismatch - Stack Overflow を見て、通信関係の問題と言ってるので、「じゃあまた proxy だろどうせ…」→ 当たりだった。

シンポジウム「捕食・被食と殻の役割」のメモ

前置き

日本甲殻類学会・日本貝類学会共催シンポジウム「捕食・被食と殻の役割」 日本甲殻類学会・日本貝類学会共催シンポジウム「捕食・被食と殻の役割」 :: 日本甲殻類学会

に行ったので、メモ。

シャコパンチ

これを聴きたくて(というか加賀谷さんに会いたくて)行った。

  • シャコパンチは「水中で」最速の運動→では水の外で最速な運動はなんだろう?
    • しかし「最速」の定義と「運動」の定義が必要ではある。
    • おそらくここで問題にしているのは「胴体座標系での、体の一部分の」「瞬間的な有次元の加速度(あるいは速度かも)」。
    • たとえば「慣性座標系での」「有次元の速度」だと、おそらくは急降下中のハヤブサとかになってしまう。
  • 個体差が大きい…
  • 腕は(?あるいは受ける側の腹部だったかも)microcrack に強い特殊な構造
  • 撮影は30,000--50,000 fps (!). さすがにめちゃくちゃ速い…!シャッタースピードなども知りたいな→論文読もうか
  • エネルギはどうやって評価するのか?→力積をとってるぽい?→論文読もう
  • シャコは自分のパンチが見えるのだろうか?
    • パンチは速すぎるので、途中では見えていないっぽい?
    • では着弾観測はどうやるのか?視覚・触覚いずれか?両方?
    • パンチが遅いスピアラでも、一度モーションを始めると途中での制御は不可能らしい(スピアラも弾性エネルギ開放でパンチしてるってことかな)
  • 逃げる(動く)相手は叩けるの?
  • 1発目を逃した時に次弾装填 (loading) して再発射するのは可能?
    • 貝のように動かない相手ならできそうだが…
  • 一度途中まで弾性エネルギをためた後で、「やっぱりもうちょっとロードしよう」という追加でのロードはできるのか?しているのか?
    • バネを使わずにふつうに筋肉だけで動かすことはできるという話だった
  • パンチをする腕、上反角方向の回転は可能
  • 叩く前に(殻が相手の場合?)たくさん触っている
    • 何をチェックしている?材質?
    • 「本物の殻でないもの」を叩かせているが、その影響はどのようなものがあるだろうか。より一般的に言うと、叩く相手の硬さに応じてパンチの強さを変えたりしないのか。

シャコパンチ以外の講演

貝の生痕

  • 孔はともかく、カニがバキっとやったやつって、他の外力によって壊れたかどうかの区別を付けられるんだろうか…?
  • ゴカイが貝殻に孔を開けるという話があった。「隔壁があると穿孔がそこで止まる」と言っていたが、なぜなのかがわからなかった。質問もしたのだが、答えが理解できなかった。「掘る側に深さ制限があるのか?」と訊くと「そうだ」と言っていたと思うが、後で考えると、それなら隔壁などなくてもいいだろう。また、隔壁で物理的に止めるということなら、そもそも中空にする理由がわからない。中実でよいのでは?浮力の確保なのか?

タナイス

  • 脚の先端にある鱗みたいな構造、ヤドカリと同じくすべり止めだろうという話だった。ヤドカリにあるのを知らなかった。水棲昆虫のやつとも似てるんだろうか。

幾つかに共通

  • 貝に色を塗ってマーキングするという話があった。被食・捕食というシンポであるのにツッコミがなかったのでおそらく一般的な手法なんだろうけれど、素人からすると、その色を変えたことによる被食率みたいなものの変動がないの?ってのが気になった。
  • やはりある程度小さいものについては CT が強いなと思いました。お金払って計測してもらうのも十分にありかもしれない。
    • 種類によるかもしれないけど、僕が使用経験のある Artec の Space Spider はあまりにも細かな構造を調べるのは無理。おそらく SfM も同様? SfM は画素によるのかな…だとしたら表面については意外と SfM まだポテンシャルあるのだろうか…
  • 水の抵抗みたいな話はほとんど出なかったですね…ですよね…

UPDATE 2017-10-27

加賀谷さんに(2017-10-11付で)リプライのエントリをもらっていた:

katsumushi.hatenadiary.com

とりあえずリンクのみ。

Fluentメモ:periodic boundary condition の offset には符号がある

Periodic だからどっちからどっちでもいいじゃん、と思っていたんだけど、そうではなかったという話。周期境界は、Mesh interface で設定する。このとき、デフォルトだと offset 量は自動計算される。たとえば、2つの境界が y=0 と y=1 にあった場合、offset 量は「y が 1」と自動で計算される。もしinterface 1 に y=0, interface 2 に y=1 の面を選んだら、これで何も問題はない。しかし、逆に interface 1 に y=1, interface 2 に y=0 の面を選んだ場合は、offset 量は正しくは「y が -1」でないといけない。これでちょっとハマった。

メモ:Fluent case & data files --> EnSight format --> read in ParaView

前置き

ハマったところを中心にメモ。

状況としては、既に結果ファイルの cas & dat (時系列データ)があるが ParaView で開きたい、そしてどうやら EnSight 形式じゃないとまともに読めないっぽい、なんとかしたい、という感じ。

環境

  • Windows 10, 64 bit
  • Fluent 18.1
  • ParaView 5.4.0-RC2 64bit

手順

Fluent データの下準備

準備が必要。まず、gzip 圧縮されたデータファイルはなぜか変換してくれないので、全部解凍しておく必要がある。面倒だが仕方がない。次に、ファイル名について、詳しくはマニュアル(https://www.sharcnet.ca/Software/Ansys/16.2.3/en-us/help/flu_ug/flu_ug_file_export_esight.html でも多分大丈夫)を読めばいいのだが、簡単に書いておく。

「メッシュの変形や移動がなく、case ファイルが一つだけの場合」を考える。このとき、case ファイルは[一つ目の data ファイルと同じ名前].cas」にしておく。具体例をあげると、

  • test-001.cas
  • test-001.dat
  • test-002.dat
  • test-003.dat
  • test-004.dat

という感じにリネームしておくとTUI上での作業が楽。

Fluent 上

まず適当な workbench(新規でもいい)を開いて、新たに fluent モジュールを適当なところにおいて、Solution の方をダブルクリックして起動。というか直接 fluent 起動してもいいのかな。おそらくここで、たぶん case ファイルを読み込んだほうがいいが、読み込まなくてもなんとかなった。まぁどうせコマンド入力してる途中で読むんだけど。

TUIウィンドウをクリックしてコマンド入力モードに移る。

ここでまずつまずいたのだが、実はこいつ、pwd で現在のディレクトリ確認できる。すると、なんか変なところにいるはず(いつもの作業フォルダの dp0/FLU みたいなとこね。WBで確認できる場所)。じゃあ pwd ができるんなら cd もできるよね、とやるとできなくて死にたくなる。 Change current working directory with a text command? -- CFD Online Discussion Forums によると正しいコマンドは sync-chdir [path] だという。知るかよ…。とにかくそれで所望のファイルがあるディレクトリへ移動する。

あとは https://www.sharcnet.ca/Software/Ansys/16.2.3/en-us/help/flu_ug/flu_ug_file_export_esight.html などにあるとおりに、コマンドを入力していけばよい。

具体的には、まず

file/transient-export/ensight-gold-from-existing-files

を入力する。すると、色々ときかれるので答えていく。

たとえば以下のようにする:

  • EnSight Case Gold file name test_ensight
  • Case / Data file selection by base name? [yes]
  • Case / Data file base name test
  • Specify Skip Value [0](黙ってEnter)
  • Cell-Centered? [no](黙ってEnter)
  • Write separate file for each time step for each variable? [no](黙ってEnter)
  • Write in binary format? [yes](黙ってEnter)
  • Specify Data File Frequency [1](黙ってEnter)
  • Separate case file for each time step? [yes] no(今は case ファイルが1つしか無いので)
  • Read the case file? [yes](黙ってEnter)
  • Case file name ["test-0-001.cas"] test-001.cas(違うファイル名をサジェストされたので変更)

ここで一度ケースファイルが読まれて、グリッドが読まれる。

  • cell zone id/name(1) [*](黙ってEnter...よくわからんけど行けた)
  • cell zone id/name(2) [()] (黙ってEnter...よくわからんけど行けた)
  • Interior Zone Surfaces(1) [()] (黙ってEnter...よくわからんけど行けた)

  • Select the variables to be exported

  • EnSight Case Gold scalar(1) else q to continue>

これは「どの変数を export するか」ということ。何も書かずに Enter したらリストが出るのでそこから選ぶ。pressure とか x-velocity, y-velocity, z-velocity とかすればいいんじゃないかな。選択が終わったら q と書いて Enter すれば変換が始まる。

UPDATE 2018-01-05

TUI を使う処理は journal file で自動化できるはず。あとでやってみるかも。

ParaView

出てきたファイルのうち、.encas というのが ParaView で読むべきケースファイル、なのだが、このままでは ParaView の reader が認識しないので、拡張子を .cas に変える。実は、いちおう、選択肢の一番下にある All files を表示させ、.encas を開いてから、reader として EnSight を選べば同じことはできるが、単に時間がかかるので、もう変えちゃったほうが早いと思う。

ParaView で開いたら、そのままでは流体領域が全部見えていて(というか外側境界だけ見えているはず)全然使えないので、 Recovering Fluent surfaces in ParaView -- CFD Online Discussion Forums にあるとおり、Extract Block フィルタをかましてやると、Multi-block Dataset という認識になって、壁面とかを選択できるようになる。