dynamicsoar's log

主に研究関係のメモ

Papers 3 (legacy) から Zotero 5 へ移行中なのでメモ

まえがき

なぜ移行するか

いろいろな理由がある。

  • Papers 3 がかなり不安定になっていた
  • Mac だけで完結といえば聞こえは良いがその mac が死んだら論文が読めなくなる(ほぼ書けなくもなる)、というのが嫌だった。
    • 切実な問題として、macbook pro のバッテリが死にかけており、交換に出したいが、万が一を考えると他の環境でも作業できないと困る、というのもある。タイミング的にちょうどいいということ。
  • ReadCube Papers を trial したが、お金払う割にはまだ微妙な面が多いと感じた。Unlimited storage も、Dropbox にお金払って 2TB もスペースがある自分には魅力的ではない。
  • iPad いまはすごく古い機種しかないし、まぁとりあえずは読めなくても良い。

というわけでかねてから考えていた Zotero への移行をした(しつつある)。

環境

  • MacBook Pro(Papers 3を使っていた)
  • 他の Win マシン(自宅と研究室にある)

の全てに入れて sync することを目指す。また、Overleaf との連携か、少なくとも citekey の簡単なコピペもできないと困るので、そのへんもやる。

手順

最低限の知識

Zotero におけるネット経由の同期では、メタデータ(論文タイトルとか著者名とかそういうやつ)のことを data sync, PDFファイルなどの添付ファイルのことを file sync と呼んで明確に区別している。前者の data sync はどうせ容量も大したことないからだろうけど Zotero アカウント経由で無料で可能。一方、後者の file sync の方は、いくつかの方法があり、デフォルトの Zoteroクラウドストレージでは 300 MB を超えると有料(ストレージを買う必要がある)。今回はこの file sync の方を Dropbox 経由でやることにする。

[Mac] Papers 3 から bibtex ライブラリのエクスポート

気が向いたら書くかも。まぁ簡単なので…。

[Mac] Zotero のインストール

Zotero をインストールしたらまず Preferences > Sync タブ > File Syncing の2つの ticks を外す。たぶんこれをそのままにして他の設定をやってしまうと勝手に PDF を zoteroクラウドストレージ(無料アカウントだと 300 MBしかない)にアップロードし始めるんじゃないかと思う…。

[Mac・Win] Data sync の設定

もしまだ Zotero アカウントを作っていなかったらウェブから作る。

アプリを開き Preferences > Sync タブ > Data Syncing で link する。このとき、すぐ下の File Syncing の2つのアイテムに ticks が自動で入ってしまうので、これらは忘れずに untick する。

[Mac・Win] Dropbox 経由での file sync の設定

Preferences > Advanced タブ > Files and Folders タブ(ちょっと分かりづらい位置にある)で、Base directory を選択する。自分は今回、とりあえず Papers 3 のディレクトリ構造をそのまま使うことにしたので、Dropbox/Library.papers3/Filesmac, win の両方で選んだ。ここがポイントで、両方で設定しておかないとPDFの自動探索に失敗する。

[Mac or Win] bibtex ライブラリのインポート

難しいことはないので省略。別に Win でやってもいいと思うけど mac 側でやった。

[Mac・Win] Overleaf との連携

これができるのは Overleaf の有料プランだけかもしれない。が、公式に説明がない…ひどすぎる。しかしググると非公式の解説があったのでそのとおりにやった。

Overleaf のプロジェクト一覧みたいな一番基本の画面で、右上の Account > Account Settings で少し下の方にスクロールすると Zotero Integration てのがある。

次に、任意のプロジェクト(論文)を開いて、左上の方にあるアイコンで New File を選ぶ。すると From Zotero ってのがあるので、名前をつけて、BibTeX か BibLaTeX かを選んで、Create を押す。けっこう時間がかかる。しかもたぶん、失敗したというエラーメッセージが出る。が、実際にはもう少し待つと .bib ファイルはこっそり生成される。エントリの数はあっていたので、よくわからないがダイアログのほうがおかしいようだ。

というかこれ別に Zotero 側のライブラリの変更を検知とかしてないような気がする。Zotero で変更があっても、Overleaf 上でもう一度 Create しないと反映されないんじゃないか?(未確認)もしそうなら、ローカルの Zotero でエクスポートして、Overleaf にアップロードする、という従来の方法でもいいかもしれない…。

[Mac・Win] Better BibTeX for Zotero (BBT) のインストール・設定

retorque.re

インストールは他の add-on と同様。xpi ファイルをダウンロードしてきて、Zotero メニューの Tools > Add-ons > 右上の歯車アイコン > Install Add-on From File... でその xpi ファイルを選択。Zotero を再起動。

再起動すると、いくつか質問される。主には citekey 形式をどうするか。自分はせっかくなので BBT 形式にすることにした。その後、ライブラリ内のすべての文献について citekey が生成されるのでしばし待つ。終わると、メインペインに Citekey カラムが追加されるのと、右の Info ペインの一番上にも citekey が出るようになる。

しかしこれらをいちいちコピペするのはまだ面倒…そこで自分はこの後、文献のエントリを drag & drop することで \citep{ citekey } みたいのをコピペできるように設定した(参考: http://retorque.re/zotero-better-bibtex/citing/#drag-and-drophotkey-citations )。

  1. Preferences > Export タブ > Default Format: を Better BibTeX Citation Key Quick Copy に変更する。
  2. Preferences > Better BibTeX タブ(新しくできている)で自分の好みに設定する。
    • たとえば citep しか使わないのなら、Quick copy format を LaTeX にして、LaTeX command には citep と入れておく。
    • 一方で「cite を使ったり citep を使ったりするのでそこは自分で書きたい、純粋に citekey だけをコピペして欲しい」ということなら、QuickCopy format で Cite Keys を選べばよい。

ちょっとわからないのが、これ win と mac 両方に入れる場合、citekey 命名ルールとかを完全に同じにしとかないと data sync するときにコンフリクトしそうなんだが…さすがにそこはなにかしら考えられているはずか。

他の add-ons

ZotFile と Zutilo は入れてみたけどまだ使い方がぜんぜんわかってない。これから。

追記 (2020-01-17):Zotero Connector で data & file (PDF) を import するときの設定

Zotero Connector (Chrome) で保存すると、PDF が dropbox 内にはいかないことに気づいた。ググってるとかなりよいウェブページを発見:

en.dlyang.me

Step 4 の ZotFile Preferences の設定で、両方とも Dropbox 内のディレクトリに変えるとちゃんとそこ(のサブフォルダ)へ保存されるようになった。これまでにダウンロードしていたPDFを Dropboxディレクトリへ送ってそこへのリンクにしたいときは、エントリ(複数でもよい)を選択して右クリック>Manage attachments > Rename attachments すると自動的にそのようになった。

しかしまだよくわかってないな…このページの最後の方にある symbolic link を作れみたいのが必要なのかどうかがわからん…

ParaView 5.6 以降で Plot3D の function file を読むには .q file も読む必要がある、というバグ

discourse.paraview.org

現状、version 5.5.2 以下を使うのが手っ取り早い。あるいはダミーの .q file を用意するか。

実は自分も昔 FIELDVIEW を使っていた頃には中身のほぼ全部がダミーの .q file を作っていた*1。ダミーでないのは時刻や Mach, alpha などの変数のみで、しかも Mach や alpha のところに実際には別の変数を代入するという小技を使っていた。まぁそれはそれとして、これはとても不便。

*1:すべてのセルの値として0を書き込んでいた。

Rhino で自分だけの tab(ツールバー)を作る

もともとは複数の tabs にまたがる、よく使うボタンだけをまとめておくと、作業効率がとても上がる。まぁブログ記事書くほどのことではないかもしれないけど…

  • タブのあたりを右クリックして New Tab. これで新しい tab(ツールバー)ができる。
  • 既存のタブから、コピーしたいボタンにカーソルを合わせて、Ctrl を押しながら、先程作った tab へドラッグする。これでコピーできる。
  • tab 内でボタンの位置を変えたいときは、Shift を押しながらドラッグ。
  • 不要なボタンを消したいときは、Shift を押しながら tab 外までドラッグする。

Steve Jobs による「コンピュータは自分にとっての自転車みたいなもの」スピーチの出典は Vance Tucker の論文

イントロ

いつものように Researchat.fm を聴いていた。第30回 30. Battle Aura | Researchat.fm の開始10分程度で、この Steve Jobs による「コンピュータは自分にとって自転車みたいなもので、これがあることでヒトはぐっと enhance されるんだ」みたいなスピーチの話が出てきた。ほう。バイオメカニクスじゃん。

実際にどんなスピーチだろう、とググると、たとえば How the bicycle beats evolution and why Steve Jobs was so taken with this fact | Bike Boom などがヒットする。Sci Am が出典ということらしいが有料なので読めない(買いたいほどではない)。しかしここで引用されている figure のキャプションに、

this graph is based on data originally compiled by Vance A. Tucker of Duke University

とある。おっ?

Vance A. Tucker といえば、鳥の飛行のバイオメカニクスをやってる人間なら誰でも知っているであろう有名人だ。初期は風洞の中でマスクをつけた鳥を飛ばして酸素消費率を計測したことで知られ、後期には猛禽の翼端・狩り飛行やそれと眼の構造との関係なんかを調べたりしている。しかし恥ずかしながら、自分はこの metabolic rate の話は知らなかった。そこで Duke の公式ページ ( Vance A. Tucker | Scholars@Duke ) に行って、ダウンロード漏れしていた論文をなるべく全部収集した。

元ネタ論文

その結果、どうやら元ネタはこれらしいという論文がわかった:

この論文の figure 1 が非常によく似ている。なおこの論文のデータは全部自分で調べたわけというではなくて、他の論文等からデータを引用している。Table 1に出典付きでデータが書いてある。Cost of transport(CoT, 効率の逆数みたいなもの)を求めるには、Metabolic rate を Speed で割ればよい。この値を縦軸に、Wt(weightだろう)を横軸にとって両対数にすれば figure 1 になる。

気づき

さて、これで色々わかることがある。

  1. コンドルなんていない。Jobs は The condor used the least energy to move a kilometer みたいに言ってるが、Scientific American の記事にも、元論文にも、condor なんて出てきてない。たぶんどこか他で聞いた話と脳内で勝手にマージしたんじゃないだろうか。
    • 飛行で一番いい(縦軸の CoT が小さい)のはこの中では pigeon つまりハト。ハトなんてどう考えても効率最高の鳥ではない。もっと翼が細長い鳥のほうがいいのはかなり自明(説明は省略…)。実際、先の bikeboom.info の記事を読みすすめると、the bicycle is nowhere near as efficient as Solar Impulse, the aircraft currently attempting to fly around the world. ってあるんだよね…。これが事実なのか走らないけど、飛行だって相当効率をよくできるのは間違いないだろう(参考:ソーラー・インパルス - Wikipedia)。あともっというと CoT は「どれだけ速いか」は評価項目になってないのでそれを入れると飛行が圧倒的、みたいなのもあるよね。
    • もちろん、「地面が温まった熱で生じた上昇気流(サーマル)を利用してソアリングをして、次のサーマルを目指してまたソアリングをする」という繰り返しで飛んでいる(サーマルソアリング)をたぶんコンドルはよくやっていて、それは羽ばたき続けての飛行に比べてエネルギの消費はとても小さいだろうから、完全に的はずれとは言い切れない。ただ、そもそも具体的な値がわからないのだから自転車とも他のどれとも比較のしようがないし、blew the condor away, completely off the top of the charts とかは完全に言い過ぎでしょ。
  2. Sci Am 記事の plot の縦軸がちょっとおかしい。よく見ると1, 2, 4, 6, 8が2回出てきている。これはひどい typo で、下の方の、原点に近いものたちは 0.1, 0.2, 0.4, 0.6, 0.8 が正しいことが論文を見るとわかる。
  3. 元論文には bicycle のデータはない。Scientific American が足したのかもしれない。先の bikeboom.info の記事によると、この Sci Am 記事を執筆した S. S. Wilson という人が調べたようだ。彼は lecturer in engineering at Oxford University and a fellow of St. Cross College だったらしいが…
  4. ハチドリの値はちょっと怪しい。これだけは前進飛行時ではないようで、Table 1 欄外に "Speed assumed, metabolic rate measured while hovering." というコメントがある。つまり本当のハチドリの前進飛行に比べると、 metabolic rate が大きめで cost of transport (CoT) も大きめ = 効率が悪めに出ている可能性がある。出典の論文 ( ) は有料で読めませんでした…。
  5. 魚というか遊泳が salmon というたったの1サンプルしかない。一般的には遊泳がもっとも CoT 的に有利だったと思うので *1、これだけを元に語ってしまうのはかなりミスリーディングだろう。

もちろんもっと最近の文献を探せば遥かに網羅的で正確な CoT のデータは当然色々とあるだろう。That is, however, beyond the scope of the current entry... ということでおしまい。

おまけ:縦軸 (CoT) の次元・単位について

なお、縦軸について、論文の Figure 1 "Cost of transport, kcal/(kg km)" と書いてある。一方、Sci Am 記事の plot には "COST OF TRANSPORT (CALORIES PER GRAM PER KILOMETER)" とある。Cost of transport は en.wp の記事 ( Cost of transport - Wikipedia ) にあるようにこの次元で問題ない。Sci Am は単に kcal/kg の部分をキロで約分して cal/g にしているだけだろう。つまり縦軸の数字は論文と Sci Am で全く同じになる(実際、typo を考慮すれば同じになっている)。

ところでもうちょっと考えてみると、CoT は無次元数だという。てことはこの kg とか GRAM とか言ってるのは本当は kgf と GRAM FORCE じゃん。ちゃんと区別しろよ。まぁ論文では mass ではなく weight って書いてあるし、当時の時代的に weight で語るのは普通だったのかもしれないが。そんなこといったらそもそも分子が J でなく kcal じゃんって話か…そっすね。

*1:海外に荷物を発送した人は船便が安いことを知っているだろう。

Dragonfly 4.1 (CT segmentation software) で ROI を使って部位を取り除く

Help の ROI Properties and Settings には、

ROI highlighted in clipped rendering (left), ROI extracted by increasing the ROI opacity and decreasing the opacity of the dataset (middle), ROI subtracted by setting the ROI opacity to 0 and Dataset opacity to 100%.

と書いてあるが、実際には Highlight も 0 にしないと subtraction はされない。つまり、

  • Highlight: 0
  • ROI: 0
  • Dataset: 100

が正解。まぁいろいろやればわかるだろって話かもしれないが…

Dell Precision 5820 に m.2 NVMe SSD をインストールするには(2019-10現在)

まえがき

結局面倒すぎるので諦めたんだけど、調べたので一応メモしておく。

日本語でいいならこのPDFがめちゃくちゃわかりやすい: https://i.dell.com/sites/csdocuments/Merchandizing_Docs/ja/dell_precision_expansionguide_2019june.pdf

英語はこのページがヒットする: https://www.dell.com/support/article/uk/en/ukbsdt1/sln312251/upgrading-storage-in-the-dell-precision-5820-7820-7920-tower-workstations?lang=en が、なぜか上記の日本語PDFよりはるかに分かりづらいし、ズームカードの記述がない。

reddit も少し参考になった(マニュアルのあたり。他のところでちょっと正しくなさそうな記述もある): Precision 5820 tower -- NVMe confusion : Dell

方法

2種類の方法がある。

  1. PCIe アダプタ(ズームカード)を使う方法
    • カードに m.2 SSD をマウントし、このカードを PCIe スロットに刺す。
    • カードはこれ https://www.amazon.com/dp/B0714MMD6M らしい。日本語PDFマニュアルによると型番は 414-BBBQ(2枚)と 414-BBBK(4枚)らしいが、これらの型番は他の場所で全く出てこないのが謎。
  2. Front bay を使う方法
    • 4つある front bay のうち上の2つを換装できるらしい
    • 575-BBSH と 750-ABDF という2つのキットが必要。めんどくさそうすぎる。しかも、Dell Precision 5820 Tower Owner's Manual によると、Core i9 を選んだ場合(僕らがそう)にはたったの 1x 1TB しかインストールできないとか…。せめて 1x 2TB は欲しかった。

しかしこれらの追加キットは本体と別に後で買えるのかがわからない。買えるのかもしれないが、DELLにきかないといけないし、高そう。DELL的には購入時点でBTOしとけや、ってことなんだろうが、割高だろうし、そうでなくとも今回は予算の関係でPCとして使える金額には上限があった。

というわけで、個人的にはもう面倒だし、m.2 というか NVMe というか PCIe の SSD は諦めて、ふつうの SATA/AHCISSD にした…。

Export time series of STL files (for mesh, Q-isosurface) in ANSYS CFD-Post by script (playing session file)

Overview

I'm still learning, but it seems that basically what you need to do for writing a script for CFD-Post are:

  1. Record the session
  2. Modify the session file (e.g., adding the for loop)
  3. Play the modified session file

So I did the recording, then modified that session file thanks to ( http://www.cfdresearch.com/ansys-fluent-cfd-post-scripts/ ). Basically simply adding the for loop.

Not sure of the syntax yet, but it seems the variable can be specified with $ prefix, as in shell script.

Sample

Let's say you have a time series of the result file (e.g., flapping wing) and you want to save some of them as STL file.

In the sample below, the you're saving 100 time instances as 1.stl, 2.stl, ... for each directory, where actual timestep values for Fluent simulation are 10, 20, 30, ... so the timestep has to be specifed as $i*10.

Here you're saving wing surface and Q-isosurface, both of them had to be created before playing the script.

# Session file started:  2019/10/04 16:21:36
# CFX-19.1

# To avoid unnecessary file pre-processing and modifications, include
# COMMAND FILE at the top of your session file.
# If it is not included, the file is assumed to be older and will be
# modified for backward compatibility.
COMMAND FILE:
  CFX Post Version = 19.1
END

! for ($i=1; $i <= 100; $i=$i+1) {

> load timestep=$i*10

EXPORT:
  ANSYS Export Data = Element Heat Flux
  ANSYS File Format = ANSYS
  ANSYS Reference Temperature = 0.0 [K]
  ANSYS Specify Reference Temperature = Off
  ANSYS Supplemental HTC = 0.0 [W m^-2 K^-1]
  Additional Variable List =
  BC Profile Type = Inlet Velocity
  Export Connectivity = Off
  Export Coord Frame = Global
  Export File = E:/wing_surface/$i.stl
  Export Geometry = On
  Export Location Aliases =
  Export Node Numbers = Off
  Export Null Data = On
  Export Type = STL
  Export Units System = Current
  Export Variable Type = Current
  External Export Data = None
  Include File Information = Off
  Include Header = On
  Location = back
  Location List = wing_surf
  Null Token = null
  Overwrite = On
  Precision = 8
  Separator = ", "
  Spatial Variables = X,Y,Z
  Variable List =
  Vector Brackets = ()
  Vector Display = Scalar
END
>export

EXPORT:
  ANSYS Export Data = Element Heat Flux
  ANSYS File Format = ANSYS
  ANSYS Reference Temperature = 0.0 [K]
  ANSYS Specify Reference Temperature = Off
  ANSYS Supplemental HTC = 0.0 [W m^-2 K^-1]
  Additional Variable List =
  BC Profile Type = Inlet Velocity
  Export Connectivity = Off
  Export Coord Frame = Global
  Export File = E:/Q/$i.stl
  Export Geometry = On
  Export Location Aliases =
  Export Node Numbers = Off
  Export Null Data = On
  Export Type = STL
  Export Units System = Current
  Export Variable Type = Current
  External Export Data = None
  Include File Information = Off
  Include Header = On
  Location = back
  Location List = /VORTEX CORE REGION:Q
  Null Token = null
  Overwrite = On
  Precision = 8
  Separator = ", "
  Spatial Variables = X,Y,Z
  Variable List =
  Vector Brackets = ()
  Vector Display = Scalar
END
>export

!}