Rhino の Curve Network (NetworkSrf) で NoAutoSort するとき、rails のクリック順には意味がある

まず、最初にクリックした rail が edge になる。そこから断面をぐるっと一周するようにクリックする必要がある。さもないと、 "Unable to use this curve network." と言われる。

また、どうやら断面の方も片側から順番にクリックして選択していかないとダメな模様。途中で戻ってくるとやっぱり Unable ... になる。

マニュアルに書いとけよ…(書いてなかったと思うが書いてたら悲しい)

Rhinoceros 3D で control point を大きくしたり、線 (curve) を太くしたりする

特に high DPI display では点が小さすぎ・線が細すぎて見づらいのでこれらの調整は生産性の向上に直結する。

まずはメニューの File > Properties... > Rhino Options > View > Display Modes へ行く。

この先の設定は、モードごとに個別に行う必要がある(重要)。おそらくよく使うのは Wireframe, Shaded, Rendered だと思うのでそのくらいで良いとは思う。

たとえば Wireframe を例に取ると、Wireframe を展開した直後に Objects という文字自体をクリックする。ここで Control Points というのがあるので、サイズを変えたりできる。

次に、curve の太さについては、Objects を展開した Curves へ行き、右のパネルから設定すれば良い。デフォルト色も変えられる。

同様に Shaded, Rendered についても設定する。

あるイギリスの大学へのポスドク就活の例

少し前に、海外にいる研究者が日本の大学に応募する場合の苦労という話があった:

lambtani.hatenablog.jp

最近、イギリスの大学にポスドクで行くことが決まったので、逆に日本から海外のポスドクに応募する場合はどうなのかという一例を参考までに書いてみる。なお助教ではなくポスドクなので、選考が簡易的であった可能性はある。

  1. 大学公式サイトで公募がかかる。今回は、募集をかける研究者(知り合い)から公募するよという連絡をメールでもらって知った。
  2. オンライン書類選考システムに、アカウントを作ってログイン。
    • この時点で、「3年契約であること」「採用された場合の年収の幅」「勤務地・勤務時間」「職務内容(あまり詳しくはないが)」が明示されていた。特に年収の幅が明示されているところが良い(というか、当然?)。
    • 募集内容に見合ったスキルを持っているかどうかを問うたくさんの質問に記述式で回答する。ワード数制限なし。「我々のプロジェクトではこういうスキル(プログラミングとか、生物を扱った経験とか)が必要だが、あなたはそれらのスキルを保有しているか?具体的なエピソードとともに記述せよ」といった感じ。この方法は、採用側・応募側の双方にとって利点があり、とても良いと感じた。要するにこれはマッチングなのだな、というのがハッキリとわかった。
    • もちろん英語力についても聞かれるが、それは飽くまでも色々なスキルのうちの一つという扱い。
    • 学歴は書いた。業績はどう書いたか忘れてしまった。たぶんオンラインシステム上へ記入したか、業績一覧のPDFをアップロードしたのだったと思う。ORCID だけ書いて終わり…ではなかったと思う。それだと最高なんだけど、その場合学歴をオンラインシステムに書かせる必要が無いはずなので、違ったと思う。
    • 面白かったのは、「顔写真はアップロードしてはいけない」などとあったこと。人種等の差別や、いわゆる顔採用を避けるためだろうか。日本の場合は「履歴書には顔写真添付のこと」なんて書いてあることが普通にある。
    • 当然、性別や生年月日の記入欄はない。趣味・特技なんて欄はもちろんない。国籍はないが、ビザ関係の質問はあった気がする。
  3. サブミットして1-2週間程度だったか…それくらい待つと、「あなたは面接に残った (shortlisted)」という連絡がメールで来た。何度かメールのやりとりをして面接の日程を調整。また、面接までに「イギリスで労働できることを示す書類」を送れと言われるがよくわからず…結局、パスポートをスキャンしたPDFでいいよということなのでそれを送信。
  4. 面接といっても実際に行くわけはもちろんなく、skype で30分間話すだけ。大学の実験室で、ラップトップを有線LANでつないで通話した。
    • 面接官は panel というらしく、今回は3人。公募をかけている研究者と、分野が近い研究者が2人。このうち2人とは既に知り合いだったのである意味では気楽だが、1人の英語が聞き取れず苦労した。直前の1週間はBBC radioを聞いたりしていたがダメだった。単に英語の問題だけではなく、Skype の通話品質もあまりよくなく、ラグがあり、かつ、PTTのように「自分が話している間は相手の声がカットされる」感じがあって、つらかった。また最近は英語で話す機会もなかったことと、緊張のために speaking もけっこう酷かったが、なんとか乗り切った。
    • オンライン選考では聞かれなかったスキルについて、「そういえばお前このスキルはあるか?(X線CTは使ったことがあるか?とか)」というのをいくつかきかれたが、全部正直に No, no, and no と答えた。
    • 音声のみではなくビデオ通話だったが、これもそのうち禁止されたりするのかも…?(顔で判断することを避けるために)
  5. 面接が終わって6時間後に、公募をかけている研究者からメールで採用の連絡。正確には、採用したいが来てくれるか、とあった。すぐに受けると返事。
  6. 大学事務からの正式なオファーが次の週にメールで来た。

受かるにしても落ちるにしても、このスピード感が非常にありがたい。ただし、これは助教以上の faculty ではなくポスドクだったので選考がスピーディだったということは多分あるとは思うので、そこは割り引いていいのだとは思う。もしかしたら、faculty の場合は skype でなく直接来いということはあるのかも…?ただ、どう考えても紙の履歴書を送れとかいうことはないだろう…。

3年後、イギリスでのポスドクが終わりに近づき、日本のアカデミックポストに応募するときには、まさに冒頭のリンク先にあるような状況になることが予想されるので、面倒だなぁ…。それまでにweb応募が増えていればいいけれど。

なお、前にスウェーデンの大学のポスドクに行ったときの選考はもっと簡単で、単にCVをメールしただけだった。Skype で話したことは話したが、採用決定後だった。このときも学会ですでに知り合いになっていた研究者のところだったが、単に縁故採用というわけではなく、ギリギリまで他の候補と迷っていたんだよ、というのを後で聞いた。

Tsubame 3.0 での ANSYS 並列計算ライセンスの消費のされかた

ANSYS には、1つアプリを起動するたびに消費するライセンスと、並列計算したときに特定の条件で消費するライセンスとの2つがある。前者はライセンスが余って無いとそもそも起動すらできないので省略。後者について。特定の条件とは、「ジョブごとに16を超える並列数(CPUコア数)だけ消費される」というもの。要は、消費ライセンス数(トークンと呼ぶようだ)を T, 並列数を N とすると、

T = N - 16

ってことね。そしてこの並列用のトークンを Tsubame 3.0は 256 もっている(2017-12-25現在)ので、各ノード数の並列ジョブのみで埋める場合、

123

  • 半ノード並列は無制限: 0.5×28-16 < 0 なので。
  • 1ノード並列は21ジョブ: 21×(1*28-16) = 252トーク
  • 2ノード並列は6ジョブ: 6×(2*28-16) = 240トーク
  • 4ノード並列は2ジョブ: 2×(4*28-16) = 192トーク
  • 8ノード並列は1ジョブ: 1×(8*28-16) = 208トーク

が限界ということになる。したがって、急がない計算は半ノードか1ノードにしておいた方がいいだろう。

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

確実に忘れるのでメモ。

  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 よりもこちらが推奨らしい。
        • 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/ ディレクトリにぶち込む。
  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 の方でも合わせれば良い。