dynamicsoar's log

主に研究関係のメモ

Fluent の SRS (e.g. LES) で入口境界の Vortex Method に 1000 を超える渦を与えたい → scheme コマンドが必要

LES などの SRS (scale-resolved simulation) を行う際、入口境界に変動を与えるための Fluctuating Velocity method として Vortex Method を使う場合、公式は資料で「最低でも入口の face 数の 1/4 以上の個数の渦を生成するように指定しろ」と言っている。しかし実際やってみるとわかるが、1000 を超える数字を入れようとするとエラーになり、1000 が上限である。つまり入口の face 数*1が 4000 以上だと問題になる。実際には4000ではギリギリなのだから、3500とかそれくらいが限界ということだろう。え?60 x 60 = 3600 なんですけど?こんなもんが限界?ふざけんな。

…と、思った人が当然いたのだろう。公式カスタマポータルの "Vortex Method (VM): Increasing the Number of Vortices – Lifting the Upper Limit" という資料に対処方法が書いてある。転載して怒られると嫌なのでコピペはしないでおく。4行の scheme コードで「許容される最大値を増やす」ことが可能で、その後で普通に 1000 以上を選択すればいいようだ。

…しかし公式が「現代の計算では1000って足りないよね」と正しく認識してるんなら、とっとと上限を直せよ…。2019R1 はまだ試してないけど、直ってるだろうか?だめかな(懐疑的)

*1:当該 face を表示しておいてから、リボンメニューの Surface > Manage... で確認できる。

Fluent の TUI (journal) で Cell Zone Conditions の設定を変える (e.g. ELES) には → define/boundary-conditions/fluid にある

Fluent で、Cell Zone Conditions の設定を変えたいことがある。Mesh motion とか、embedded LES (ELES) とか。しかし TUI からこの設定を変える方法がなかなか見つからなかった。もうサポートに聞こうかな?と思ったところで見つけた。

define/boundary-conditions/fluid

ここから設定できる。

なお TUI manual には…

fluid
Set boundary conditions for a zone of this type.

としか書いてない。ふざけんな…気づくかこんなん…(いつものこと)。

Fluent で、確実に gzip 圧縮されたデータを吐き出す → root-name に .gz を付ければいい

だいぶ前から悩んでいたこれだが、同僚に教えてもらった。まさかこんな方法とは…自分だけならずっと気づかなかった。ありがたい。

GUI の場合

Workbench から起動した Fluent ではそもそも root-name の記入欄がないので、GUI からは設定不能。TUI を使うしかない。

Windows から直接起動した Fluent なら GUI で root-name の記入欄があるので、そこに好きな名前を .gz つきで入力すれば良い、のだと思う(やったことない)。

TUI の場合

Workbench から起動した Fluent や、HPC での利用の場合、TUI になる。この場合、file/auto-save/root-name の指定時に .gz を付けてしまえばいい。journal file としては下記のような感じ:

;; Autosave root-name
file/auto-save/root-name
"my-file.gz"

一見これだと「my-file.gz-2-00001.dat みたいになって、gz は単に文字列と解釈されるのでは?」と思えるのだが、意外に賢くてちゃんと gzip 形式にしてくれる*1

*1:逆にファイル名に .gz を使えないということになりそうだが、使いたい人はいないだろう…。

現在走ってるjobの終了を待って次のジョブを投入したい→tailを使う

普通に考えると wait かな、って思うんだけど、けっこう前に走らせたジョブがあって、という場合、

[pid] is not a child of this shell

とか怒られてうまくいかない。いろいろググったところ、なんと tail を使えというお言葉が…:

bash - WAIT for "any process" to finish - Stack Overflow

どうやら --pid= というオプションがあったらしい…。そこで、

#!/bin/bash
PID=終わるのを待ってるジョブの番号
tail -f --pid=${PID} /dev/null
time nohup ./a.out > log.txt &(みたいな、次のジョブのコマンド)

という超短いスクリプトを書いて、wait_run.sh みたいな名前で保存して、

$ ./wait_run.sh &

とやったら、行けた模様。もちろんジョブ番号やコマンドを引数にすればもっといい…というかたぶんワンライナーで書けるんだとは思う。ただ、単にセミコロンでつなぐとバックグラウンドに回ってくれないかなんかで、うまくいかなかった。bashのことが何もわかっていない…orz けど動いたので、いいか…

連番などのファイルを pbzip2 で圧縮して別のディレクトリに出力

前提

  • Cygwin の pbzip2(デフォルトだと入ってない)
  • bash (なので、たぶん Linux でも同様にできるはず)

サンプルコード

$ for file in *.dat; do pbzip2 -m1000 -ck "${file}" > "/cygdrive/f/path_to_dir/${file}.bz2"; done &

オプションは、-c はたぶん必須。他はお好みで。

参考リンク

関連するブログ内エントリ

mintty (Cygwin) + tmux で、Ctrl-Tab, Ctrl-Shift-Tab で cycle windows する

Stack Overflow のエントリとか、いろいろ探したけど、結局 mintty 公式の wiki に書いてあった…:

要するに、

  1. mintty 上で右クリックして Options... > Keys で、Switch window を untick する(Ctrl-Tab, Ctrl-Shift-Tab がこれを使っているため。知らなかった…)。
  2. ~/.tmux.conf に、上のリンク先に書いてあるとおりのコードをコピペして保存する。
  3. tmux を起動する。Window をいくつか開くと、Ctrl-Tab, Ctrl-Shift-Tab で cycle できるようになっている。便利!

いちおうコードをコピペしておくと、

set -s user-keys[0] "\e[1;5I"
set -s user-keys[1] "\e[1;6I"
bind-key -n User0 next-window
bind-key -n User1 previous-window

Measurement of time-varying kinematics of a dolphin in burst accelerating swimming

基本情報

内容のまとめ

Introduciton

イルカの遊泳は、巡航の速度計測はけっこうあったが、瞬間的な加速の計測は少なく、とくに尾ビレによるストロークごとの詳細の計測はあまりなかった。

Methods

Smoothing

The time series of the obtained 3-D coordinates were smoothed using a weighted 91-point weighted moving average with Hamming window designed to impose a 15 Hz cut-off frequency to eliminate noise due to the manual tracking.

前に加賀屋さんと少し議論したけれど、ここでは「マニュアルトラッキング(特徴点を時系列にポチポチとマウスでクリックする)によるノイズの除去のためにまずスムージングをしている。それから、1階と2階の2次中心差分(中央差分)を使って速度と加速度をそれぞれ求めている。ただし、時系列点の水増しはしていないのと、中心差分に普通は i-1, i+1 を使うところ敢えて i-2, i+2 を使っている(さらにスムースにするため、とされている)。

3D geometry

Fig. 4 のあたりで、正直に「スキャンした形状はこんなグニャグニャだったので、こうやって整形しました」ということを説明している。実際にはCTしたものそのままなんてCFDできるわけはなく*1、必ず整形が入るのに、その過程を詳細に記述している論文は非常に少なく感じられる。個人的な印象に過ぎないと言われればそうかもしれないが…。

Results

Discussion

コメント

*1:FEMならまだ良いのかもだが。