dynamicsoar's log

主に研究関係のメモ

【論文読み】The comparative hydrodynamics of rapid rotation by predatory appendages

だいたい書けたけどまとまらない…

対象

McHenry, M. J., Anderson, P. S. L., Van Wassenbergh, S., Matthews, D. G., Summers, A. P. & Patek, S. N. 2016 The comparative hydrodynamics of rapid rotation by predatory appendages. J. Exp. Biol. 219, 3399–3411. (doi:10.1242/jeb.140590)

何をしたのかまとめ

目的

  • シャコパンチにおいて、パンチ運動と腕形状の種による違いが流体力にどのように影響するかを調べること。
  • これには、本来はCFD*1がよいのだが*2、全てのパタンをCFDで計算するのは計算リソース的に大変なので、簡易的な流体計算であるBEM*3を使いたい、というか、使う。しかし、BEMは簡易版なので、正確性を検証しなければならない。そこで、流体力(抗力)によるトルクを評価指標として、BEMがCFDと比較して十分に使えるかどうかをテストすることも実質的には大きな目的となっている。

手法

書いてある順序ではなく、自分なりに整理すると次のようなこと。

  • シャコパンチの運動を文献から求める(4種)。さらに中型のスピアラー1種を自分で撮影して追加。運動は、どうやら carpus の根本を pivot とした2次元平面内の1自由度の回転運動として近似し、その角度を文献のスピアラー種からフィッティングで求めている。Phylogenetics を考慮した比較もしているようだが、意図がいまいちわからないので詳細は割愛。
  • 実物を元にしたシャコの腕形状・パンチ運動*4を使って、パンチのCFDを行い、抗力によるトルクを求める。このときのパンチ運動が、文献値なのか、上で求めたフィッティングの値なのかは不明瞭(おそらく前者)。
  • 上記の腕形状の作成時に用いた20程度の腕断面それぞれの位置を使って、BEMで計算を行い、その結果をCFDでの結果(トータルおよび断面ごと)と比較したい。そのためには、BEM に用いる抗力係数 Cd (eq. 5) が必要となる。これは次の方法で求める。

    1. 楕円柱の shape factor k = 0.015 を使って、eq. 6 から求める。
    2. 一様流CFDから:形状モデルはパンチ運動と同一。流速はパンチ運動での最大値(?)である 20 m/s として、定常・一様流のCFDを行う。計算結果から、20断面それぞれについての (Cd),i を出してそのままBEMの各ブレード要素に叩き込むのが一つの方法、もう一つは、楕円柱の式 eq. 6 で k = 0 とし、全体の抗力 Fd がCFD結果のものと等しくなるように、各ブレード要素の (Cd),i を決める方法。
  • 水路実験:ずっと勘違いしていたが、どうやら水路実験の結果はBEMに直接使われていない(!)。一応やっていることは以下の通り。3Dプリンタで作成したリアリスティックな腕形状モデル*5、および楕円柱を水路内に設置して、抗力を計測する。このとき、腕の先の方 (dactyl) を閉じた状態と開いた状態の2パタンを調べる*6。ここから shape factor k を求めるようだが…どうやって求めたのかがわからない。腕模型との抗力の差が小さくなるように、楕円の短軸・長軸を変えていったときの楕円柱の k ということだろうか? ("range of long elliptical cylinders with different aspect ratios" はここにも適用されているのかも)いずれにしても、この結果がBEMには使われていない。また、なぜか BEM で使っている種である G. smithiik は 0.1 程度であり (Table S3)、BEMの楕円柱仮定の 0.015 とは一桁も違う。どういうことなの…。結果のところでは、むしろ「7倍も違うのにBEMの結果はこんなに合ってるぜ!」みたいに書いているが、え、それは、どうなんだ…

  • トルク以外にエネルギでも評価している。

  • BEM を使って、3種のシャコのパンチ運動について、3つのパラメタを振って sensitivity analysis をしている。

結果

やってることが多く、それぞれのブランチで結果がいろいろある。しかし、このうちCFDやBEMに持っていく結果は一部だけ(水路実験の結果は使ってないし)。しかも、手法に書いてある順番とは異なる順番で結果が羅列されており、読みづらい。

  • 水路実験では、閉じた状態での腕形状が長手方向 (spanwise) に一葉に近いスピアラーでは、腕の先の方を開いても抗力がほとんど変わらなかった*7。一方、閉じた状態で腕の先の方が(流れの前後方向に)膨らんでいるスマッシャーでは、腕を開くと抗力が増加した。それぞれの種のshape coefficient k を求めた。スピアラーの C. scolopendra は楕円柱と似た 0.015 だった。
  • 一様流とリアリスティックなパンチ運動のCFD結果は全然違う(当然)。
  • BEMとCFDの結果の比較
    • ただの楕円柱ベースの抗力係数を使ったBEMでは、パンチ後半の時間帯でトルクがCFDと大きくずれる。
    • 一様流CFDを使って抗力係数を求めた2つのBEMでは、時間的にはトルクがCFDとよく合った。しかし、各要素について比較すると、いずれのケースでもかなり…全然合ってない。とくにspanwise location 80%くらいのところで、CFDでは正のトルク(腕を加速する方向)がわずかにみられる*8のに、BEMでは大きな負のトルクが生じている。つまり、定性的にすら合っていない。が、結論としては「トータルがあっているからよかったよかった」というような論調…。そして要素ごとのずれについては色々と説明しているのだが、突然迎え角の話が出てきて、よくわからないのが正直なところ。消化不良で終わってしまった。
  • sensitivity analysis では、「上腕部分の長さがトルクに一番効くよ」というようなお話。

Comments

Major points

  • なぜカメラ1台だけの撮影で2次元平面内(1軸まわり回転)の運動と言える?

    • 仮にそれが言えたとして、取り付け角*9は全ての断面で0度、つまり「ねじりなし」なのかどうかが明確でない。→ いまいちハッキリしないが、ESM Fig. S2 によると翼型は対称かつ「ねじりなし」のようだ。

      Note that the model assumes mirror symmetry about the sagittal plane through the long axis of the appendage.

    • http://dx.doi.org/10.1242/jeb.061465 の Fig. 5B の micro-CT を見ると、確かにこの一断面については対称でも良さそうだ。ただし、元論文に戻って ESM の Fig. S2B を見ると、左側の要素軸の平板的な図では断面が(翼型的に言うと上下が)場所によっては若干非対称なのに*10、右の3Dっぽい図では対称にしている。これがどれほどの影響を与えるか…。微妙なところだろう。単純化して一般化したいのはわかるのだが、この非対称性が negligible であるとか、なにかしらの justification ができれば欲しかった。たとえば、航空機と違って、このRe域において、この程度の非対称性は小さな違いしか生まない、ということを示すと良かった。

  • 「BEMをCFDと比較して、十分使えることを示す」要素ごとのトルク全然合ってない問題」(Fig. 6G-I) について、色々と言い訳をしているが、結局なぜこれでよいのかはよくわからなかった。

General comments

  • 色々とやっていて、ぜんぶ入れたくなるのはわかるのだが、やったこと同士の関係がわかりづらい。
    • たとえば自分ならどうするか考えてみると、一案として、3Dプリントモデルでの水路実験と20 m/s での一様流CFDは「一様流」という扱いでまとめる。その結果の詳細はESMに押し込め、本文には概要のみを記し、「これによってBEMに用いる Cd を決定した」という話の流れを明確にする。その上で、CFDのモデルと結果、BEMの手法・結果、そしてこれらの比較、という主題に集中する。
  • とはいえ、そもそも「BEMをvalidationしたい」が主題というのは、どうなのだ?と思った、が、←これは僕の勘違いだった。実際には種による違いの比較(が、少なくとも建前)。イントロの最後で3つの副題的な questions を挙げていた。これは素直によいと思う。
  • 揚力についての言及が一切ない。これは後でわかったが、おそらく流れに対して翼厚方向に完全に上下が対称な断面形であるとし、かつどのspanwise位置でもAoA*11=0度としているからだろう。しかし、この対称性についての説明は、 ESM で形状についてあるのみで、AoA が本当に0度なのかどうかは結局不明確だった。シャコパンチ業界では常識なのでいちいち言及されないのかもしれないが、書くべきだ。
  • 書いてなかったと思うのだが、dactyl が strike の最中に closed → open に変動する、ということはないのだろうか?おそらくそれはなくて、stroke の最中は既に open or closed どちらかだけなのだろうが…。

水路実験

  • Fig. 4: 細かいことだが、Aはモーメントアームの関係を使って求めるのならアームの長さも書くべきだろう。Bは流れの方向がわからない。腕の上腕側 (propodus) の長手方向が流れに垂直になるようにしている、のか?そして角度はその1パタンしかやっていないのか?

Kinematics

We approximated the strike kinematics of each species using one average strike from L. maculata

として eq. 3 を算出して、他のシャコパンチ運動を決定しておきながら、

Calculations of the mean-squared error (MSE) for the fit ... indicated that the spearer, L. maculata, exhibited substantial variation not represented by Eqn 3.

っていいのか…?統計の話がわからないので、なにか騙されてるような感じがするのだが…

  • assuming pure 2D but how realistic is it?

CFD

  • 回転中心は実物でのどこ?よくわからない
    • pivot を中心にした単純な回転のようだが、本当にそうなのか??(加賀谷さんも気にしてた点)
    • 根元側(回転中心側)が突然裁ち落とされているように見えるのだが (Fig. 6) 実際には当然まだ体のどこかが続いているはずだ。つまり根元側の速度が十分に小さいという前提が必須になるのでそれは明確に述べておかないと。「胴体がなくても流れ場に影響しないの?」というのは羽ばたきでは定番のツッコミのひとつ。返しとしては、ホバリングでは wing proximal sections の速度は小さいから、まぁそんなに影響しないんじゃない、という感じ。経験上は、たしかに流体力にはあまり影響しないが、流れ場の見た目は結構違う、つまり、proximal sections の「要素に注目した」議論はあまり信頼できない可能性がある。たとえば Fig. 6A の下にある要素ごとの C_d のプロット、Position < 4 で2D楕円と全然違うが、これは root vortex の影響かも。Tip 側で合ってないのも同様に tip vortex の影響かも。
  • というか、Fig. 6H, 6I, CFDと全然あっていないが、大丈夫なのか?特に spanwise location で70-90%程度の、回転体の流体力で一番大事なところが全然あっていない。spanwise方向に積分した(要するに全部を足した)トルクである Fig. 6E, 6F では合っているが。6F が合うのは、合うようにしているから合っているように見えるのだが、なぜ 6E が合うのかがよくわからない…偶然ではないの?これだけ要素レベルで合っていないものが本当に汎用性があると自信を持っているのか?
    • よく見たらここの言い訳に相当な紙幅を費やしていた。local AoA とか唐突にいい出しているが、そもそも AoA が定義されてすらいないし、CFD用モデルの各要素での AoA も全然わからないし(ゼロじゃないの?)、非常に読みづらい。
    • これが「wing root or wing tip ですごくずれちゃってます」なら良かったんですよ、別に。プロペラで一番大事な60-80% spanwise locationでこんなに違うってのは…
    • たとえば「いくつか条件を変えてCFDしてみよう」とはならなかったのだろうか…計算リソースの問題かな。具体的には、Fig. 8 でパラメタを変えてBEMで simulate しているが、この中から数点だけでもCFDやってみて、BEMの結果と比較して、「やはり要素レベルでは合わないが、total (sum) では合ってる」といえば、だいぶ説得力は上がると思うのだが。

ミス・typoなど

  • Fig. 8 のシンボルの説明、キャプションでは closed circle が dactyl closed, open square が dactyl open とあるが、8A内のレジェンドは逆になっている。UI的に考えてキャプションが正しいだろう、たぶん。

*1:Computational fluid dynamics.

*2:実験的に、形状と運動の両方が正確なパンチをするのは大変だからだろう。また、そこでさらにPIVするのもつらそうだ。

*3:Blade element method.

*4:1種。スマッシャー。

*5:5種。CFDと同じスマッシャーを含むスマッシャー2種・スピアラー2種・どっちでもないやつ(?)1種。

*6:スマッシャーは閉じた状態、スピアラーは開いた状態が自然らしい?

*7:と、言っているが、本当だろうか。よくわからない。が、一様流の結果にそんなにツッコんでもしょうがない気もする。

*8:1つの位置のみ。ほかは全部値は異なれど負の値。

*9:angle of incidence, AoI; 今の場合は迎え角 angle of attack, AoA と同じ値になる

*10:pivot も図で中央よりやや右寄りにある。しかし運動が完全に2Dだと言うのならこの位置は問題にはならない。

*11:angle of attack

pandas で各要素の有効数字を揃える(「小数点以下何桁」ではなく)

Introduction

df.round(n) だと「小数点以下n桁」で四捨五入される丸められるだけで、有効数字を揃えたい場合はちょっと違う、ということがあった。

たとえば df という DataFrame の中身として

  • 12.345
  • 9.8760

があったとき、df.round(2) すると、

  • 12.34
  • 9.88

になる*1

ところが今やりたいのが「有効数字3桁であらわしたい」であって、単に「小数点以下2桁で丸めたい」ではない、とするとどうか。つまり、

  • 12.3
  • 9.88

となってほしい場合。

Methods

まず

import numpy as np
from math import log10, floor
def round_sig(x, sig=2):
    return np.around(x, sig-int(floor(log10(abs(x))))-1)

という関数を作る。これはstackoverflowの回答の indgar 氏のコードをコピペし、x を abs(x) にしたもの。また、python デフォルトの round よりも numpy の around の方が良いようなので、そちらにした。

使うときは、まだこの辺がよくわかってないのだが、Series にしか直接は適用できないっぽい?ので、

df_orig = pd.Series([12.345, 9.8760]) # 適当な元データを用意する
sig_digit = 3 # 有効桁数を指定する

s_orig = df_orig[:] # DataFrame --> Series
s_round = s_orig.apply(round_sig, args=(sig_digit,)) # ここで apply
df_round = s_round.to_frame() # Series --> DataFrame

df_round # 結果の表示

みたいな感じで。あ、Series への変換と逆変換のところも関数に入れればいいのか…

参考にしたページ

*1:ここ訂正。「四捨五入」なら12.35になるはずだが、roundというもののIEEEだかの定義は「....5000000...のようにピッタリ半分のときは切り上げとは限らず、最も近い偶数へ丸める」らしいので、12.34で良い。12.34501なら、12.35になる。が、実際には内部的な2進数の表現によっても変わるので、np.around(12.3450000000000001, 2) とかしちゃうと 12.34 になる。頭がこんがらがる…

mac (w/ Python 3 & PyQt5) で ocXgag

Introduction

鳥人間な制御屋さんが公開してくれた ocXgag という翼型の調整ソフトがちょっと面白そうだった:

が、Windows にしか対応してないとのことだったので mac で使えないかとやってみた。ただ mac 固有の問題というよりは PyQt のバージョン違いの問題なのかも。Qt に触れるのが初めてなのでよくわからない。いずれにせよ、結論としては、コードを少しいじって Xfoil をインストールしたら動くようになった。

なお起動方法は単純に、コマンドライン(自分は iTerm 2)でスクリプトのあるディレクトリまで移動し、

$ python ocXgag.py

とするだけ。

検証環境

Methods & Results

スクリプトの書き換え

PyQt のバージョンがスクリプトに書かれている 4 でなく 5 であることが原因で、書き換えが必要になった。したがって、ocXgag.py をエディタで開いて、以下のことをした。

  • 冒頭付近、from PyQt4 import QtGui, QtCore を from PyQt5 import QtGui, QtCore, QtWidgets に差し替え
  • backend_qt4agg を backend_qt5agg へ置換
  • QtGui.QFont() 以外の QtGui という文字列を全て QtWidgets という文字列へ置換
  • GetFoilName の self.foilname = というところを、self.foilname, _ = に差し替え。これを調べるのにだいぶ時間がかかった*1参考

以上で、アプリの起動および翼型データの読み込みまではできるようになった。

Xfoil のインストールと PATH の設定

このあとは Xfoil が必要になるので、Xfoil4Mac をインストールした。このとき XQuartz が必要と言われたので、それも入れた。あとはコマンドラインから xfoil を開けるように、パスを通す。具体的には、

$ PATH=$PATH:/Applications/Xfoil.app/Contents/Resources/

とした。確認は

$ echo $PATH

で。以上で使えるようになった。

*1:当初、Open Foil ボタンを押しても無反応だったので print() デバッグをしたところ、 GetFoilName の self.foilname に翼型ファイルのパスだけでなく、拡張子指定用のフィルタ部分もなぜかくっついてきていた。試しに GetFoilChordfromFile の foilchord = numpy.loadtxt(self.foilname,skiprows=1) の self.foilname というところに、翼型ファイルの絶対パスを直接書き込むと load はできた。しかし原因はわかっても解決策がわからず、しばらくの間ググりまくった。

1password extension for Chrome (on Mac) で 1password (for Mac) が見つからないやつ → プロキシが怪しい

もうちょっと具体的に言うと、ブラウザエクステンションをインストールしたあとで初めて Chrome 右上の 1password アイコンをクリックした時の話。すでに 1password for Mac をインストールしてあるのに、「見つかりません」とか言われる。説明文のバージョンが4だったり怪しい上に何度やっても Try again とか言われてイライラする。

これ、これまでは Chrome extension を何度か uninstall --> install してれば直った。あとはまれに mini の立ち上げ忘れということもあった。が、今回はなんどインストールしても直らない。そこで色々検索していたところ、次のページを発見した:

Configuring a firewall or proxy on your Mac - 1Password Support

確かに、これまでと変わった点として「大学の研究室からプロキシ経由でアクセスしている」ということがあった。で、結果としてはこの 127.0.0.1 を bypass のとこに追加したら worked like a charm だった。

意外と同じところでハマってる人がいそうなので…というか、自分でも忘れそうっていうか一度見つけたのにすぐ忘れてしまっていたので、メモしておく。

ちょっとわからないのが、Safari だとなぜかプロキシの設定をする前でもブラウザエクステンションが使えたこと。理由は不明。あと、Windows でプロキシ使ってる場合にどうかはわからない。

【論文読み】翅が摩耗して短くなったマルハナバチは機動性(加速度)が少し低下する。これにより死亡率が増加するのかもしれない

基本情報

Mountcastle, A. M., Alexander, T. M., Switzer, C. M. & Combes, S. A. 2016 Wing wear reduces bumblebee flight performance in a dynamic obstacle course. Biol. Lett. 12, 20160294. (doi:10.1098/rsbl.2016.0294)

を読んだのでメモ、コメントなど。

まとめ

手法

次の3グループのマルハナバチを用意した(個体数は ESM より):

  1. 無傷 (INT: intact) 48 匹
  2. 両翼端を切り落とし (SYM: symmetric) 53 匹
  3. 右翼端のみ切り落とし (ASYM: asymmetric) 44 匹

それぞれを一匹ずつ、トンネル内で飛行させ、2台の高速度カメラでステレオ撮影して、「水平面内の加速度」と「柱への衝突頻度」を調べた。ここでトンネルは、巣と野外をつなぐように置かれ、内部には柱が林立し、振動するプラットフォームが置かれた。つまり、ハチは外へ行くためにはこの「動く柱群」の間を縫って飛んでいかねばならない。下記の動画参照。

動画

真上から
www.youtube.com

鉛直から30度傾けた後方から
www.youtube.com

結果

  • ピーク加速度(=機動性と解釈)は、SYM(両翼カット)がINT(無傷)よりも9%低下したが、ASYM(右翼カット)はINT(無傷)と有意差がなかった
  • 衝突頻度はいずれも有意差がなかった。ただし、
    • ASYM(右翼カット)は右側での衝突が増えた
    • 衝突頻度は翅には関係なかったが、体長と正の相関があった

気になったところ

僕なら査読でこのへんを言うなぁ…というやつ。日本語で書いても著者らには届かないので無駄なんだけど、まぁ自分用メモですね。

Major points

  1. 並進しかみてない。筆者らは水平加速度のみを機動性の指標としている。これが一番気になる。3次元的な…つまり鉛直方向については本文でも一行、ESM にも多少言及がある(査読で突っ込まれたのかも)。しかし、角速度や角加速度はどうなのか?せめて言及してほしかった。また、場所が狭いので、旋回率や旋回半径は計測しづらい(できない)のはわかるが、被食・捕食を考えるときにはこれらも無視できないのではないのか?つまり、そもそもこの実験系が目的に対して適切と言って良いのか?
  2. 柱群のプラットフォームの形状・振動パタンおよびその大きさをどのように決めたか(あるいは変えたか)が書いていない。とてもよくない。なんでこのまま査読を通るのかとても不思議。

Minor points

  • 翼端をカットしても衝突頻度が増えなかった理由として「柱の間隔に比べて翼幅が短くなったからかも」と言ってるけど、それなら柱の間隔を翼幅で割った値が一定になるように、3種類のプラットフォームを使うこともできたのではないか。
  • 円柱を振動させることによる空気の乱れの影響はどう考えればいいのか?3ケースとも同じだからよいのだ、と言うだろうが、円柱が右へ動いている時に衝突するか左に動いている時に衝突するか、といった考慮は要らないのか?(要は、空力的な影響はないよと言って欲しい)
  • 明るさや周囲の模様などの視覚的影響は考慮したのか?(これはブーメランですが…)
  • 翼運動:ハチの羽ばたき周波数は 100-200 Hz なので、500 fps では一周期につきよくても5フレーム、おそらく2, 3フレームしかないので、翼運動の取得が難しいのはわかるが、SA3は1000 Hzでも最大解像度を使えるのだし、そこまで広範囲を撮影しているわけでもないので、頑張れば羽ばたき振幅くらいはとれたのではないだろうか。少なくとも言及はして欲しかった。
  • 個体数が多いし、ランダムにサンプルしてるから大丈夫だろ、ということだろうけど、質量くらいは計測した方がよかったのでは。というか、質量すら計測してないのに centre of body mass とはいかに。せめて体積中心ではないのか。ある1個体を解剖して…みたいにやってそうだけど、それならそう書くべき。

ツイートへの言及

twitter でいくつか関連ツイートを見かけたので、それに言及する形でコメントを挟んでいってみます。なにかあれば @dynamicsoar までどうぞ。

1


manoeuvrability は操縦性ではなく機動性と呼ぶのが一般的だと思います。それから実際には実験的には摩耗させたのではなく、翼端近くを切り落としており、これによって摩耗をシミュレートしています。

2


切り落としたのは正確には翼面積の 22% です。「両方の合計なのかそれぞれ2割ずつなのかは不明」というのは意図がちょっとわからないのですが(同じことでは?)、「それぞれ」で理解すればよいでしょう。

「まずそんなんでよく飛べるな」について。前述のように翼運動は計測していないのですが、おそらく翼端を切り落とした個体では、羽ばたき振幅を増やして補償していると思われます。他の可能性としては翅の長軸まわりの回転、いわゆる迎え角も変えているかもしれません。あと羽ばたき周波数は、筋肉が非同期型間接飛翔筋なので大きくは変えられないのでは、と思いますが専門外なのでわかりません。アクチュエータ(筋肉)側が同じでも負荷が減ったら多少は周波数増やせるのかな…?

「昆虫の翅は飛行機の翼に比べて損傷に対する補償能力が高いよね」について。もちろん、翼に燃料や兵器を積んでいて、引火性の観点からは飛行機の方がロバスト性は低いのですが、単純に翼面積の減少に対してどうか、というと… 軍事航空ファンには有名な話で、イスラエルF-15 が片翼をほとんどもぎ取られた状態で帰還した例があるので、まぁ、一概には言えないかなとは思います。
www.youtube.com
それから、結構前から、一部の動翼が動かなくなったりした状態でも、残った動翼だけで制御則を切り替えて飛行を継続しよう、という試みは reconfigurable flight control とか intelligent flight control system (IFCS) とかいう名前でやられているようです。

3


まず前半ですが、ちょっと違います。おそらくアブスト

wing wear did not increase collision rate, possibly because shorter wingspans allow more room for bees to manoeuvre

の部分だと思います。まずこの論文では機動性 = 並進加速度ということにしています。その上で、ここで言ってるのはこういうことです:「翼端を両方切り落とすと、加速度 = 機動性自体は低下した。しかし、衝突の頻度は変わらなかった。これは柱と柱の間の距離に比べて翼幅が短くなったから、ぶつかりにくくなったためかもしれない」

一方、後半ですが、翼が短いほどローリングの慣性モーメントは小さくなるので、その意味ではロール回転(横転)しやすいのはその通り。しかし空気力が作り出すトルクという意味では、空気力の作用点までの距離つまりモーメントアームはむしろ長い方がよいため、一概には言えません。ショウジョウバエの機動性と翼平面形については、以前のエントリを参照:

とはいえ、もっと大きなスケールで比較した場合、つまり…


これはおそらくその通りです。…が、ちゃんとオーダ比較してスケーリングをしてみないと正確なことは言えないかな…ええと…これは宿題ということで…

4


前半部分はアブストの最後の文

If escape from aerial predation is constrained by acceleration capacity, then our results offer a potential explanation for the observed increase in bumblebee mortality with wing wear.

の前半部分についてだと思いますが、既に述べたようにこの論文では水平加速度=機動性ということにしているので、誤読かと思います。この文は概ね、「もし空中捕食者(鳥とか)からの逃避[の成功率]が加速性能(=機動性)によって決まるなら、今回の論文の結論(=翼端落とすと機動性低下)は、翼端が摩耗したマルハナバチの死亡率が高いことの説明になりうる」くらいです。

おまけ:円柱の Re

ところで、ついでに円柱の Reynolds 数を見積もってみる。

(6.4 mm diameter, 6.35 cm spacing) mounted on an orbital shaker, which was oscillated at 2 Hz frequency and 2.5 cm amplitude.

とある。したがって、円柱の平均速度 U, 円柱の直径 D, 空気の動粘性係数 { \displaystyle \nu } とすると、
{ \displaystyle
U = 0.2 \quad \mathrm{(m/s)}
\\
D = 6.4 \times 10^{-3} \quad \mathrm{(m)}
\\
\nu = 1.5 \times 10^{-5} \quad \mathrm{(m^2/s)}
}
であり、Reynolds 数 Re は
{ \displaystyle
\mathrm{Re} = \frac{ U L }{ \nu } = \frac{ 0.2 \times (6.4 \times 10^{-3})  }{ 1.5 \times 10^{-5}  } \simeq 85
}
となる。とても小さい。非定常だから微妙だけど、定常ならギリギリ双子渦か(振動は始まってるか)?だから影響がないと言えるわけじゃないかもしれないが、飛行速度や翼端速度の Re(千から数千のオーダ)よりはずっと小さいことはわかる。…U の計算(単振動の平均速度)だけちょっと怪しいけどたぶんあってるはず…

【論文読み】ショウジョウバエの翼平面形は機動性に最適化されてはいない

論文内容まとめ

対象

手法と結果のまとめ

  1. 単一の遺伝子をノックアウトすることで、ショウジョウバエ (fruit fly, D. melanogaster) の翅の平面形をわずかに変更した。コントロール(野生型*1に近い形状)の他に3種類の変異群をつくった。
    • ⇒ 基本形状に比べて、細長く(アスペクト比が大きく)、かつ先細な(テーパ比の大きな)形状が3種類。翼面積は、いずれも減少。とくに変異が大きな方の2群では7%程度と大きめの減少。
  2. 2m x 2m x 2m くらいの部屋で、それぞれのグループのショウジョウバエを自由に飛行させ、2台の高速度カメラでステレオ撮影しトラッキング。位置・速度・加速度・旋回半径・旋回率などを算出した。Motivational state としては、エサ無し・捕食者なしの voluntary.
    • ⇒ 変異群3種類のうち、コントロールに近い(変異の穏やかな)2種類では、直線飛行速度が低下すること無く旋回半径が減少・旋回率が増加した。一方、最大の変異の群では直線飛行速度が低下、進路変更の加速度も減少し、旋回性能はコントロールと変わらなかった。
  3. 小さめのボックスに閉じ込めたショウジョウバエを1台の高速度カメラで撮影し、羽ばたき周波数を計測した。これを質量の(1/3)乗で正規化した。
    • ⇒ 有意差なし。なお体重(質量)自体は変異群で僅かに増加しているが有意ではない。
  4. それぞれのグループの平面形を元に、翅の付け根(ヒンジ)周りの慣性モーメントの計算を行った。また、慣性パワー・空気力・空力トルク・空力パワーの計算を行い、これらにより機械効率を求めた*2。空気力学計算は翼素理論による。羽ばたき運動は今回計測していないので、文献値のホバリング状態のものを用いている。
    • ⇒ 機械効率は変異の度合いが大きいほど低下。翅の慣性モーメントも同様に低下(テーパ増大に伴う)。また、空気力の鉛直上向き成分*3は、変異の大きな方の2群で低下している。

考察のまとめ

  • 野生状態の翼平面形が変異群よりも機械効率が高い、すなわち燃費が良い。一方、捕食者からの回避行動に重要であろう機動性は、ごく僅かな(遺伝子1つの)変異で向上が可能であるのに、これはなされていない。そのようなバランスのもとで平面形状が選択されているということ。
  • 変異が最大でない2群で旋回性能が向上したのはなぜか?
    • ⇒ テーパ比の増大、つまりより先細な翅になることで、慣性モーメントが減少したためと考えられる。なお、ホバリングに関する計算では風圧中心位置までのモーメントアームに変化はなかった(空力トルクには変化がないことを示唆)。
  • 変異を増やすと機械効率が低下したのはなぜか?また、最大の変異でなぜ飛行性能が低下したのか?
    • ⇒ 筋骨格系をそのままに翅だけを変更したことが主要因ではないか。既にコントロール群の翼平面形に最適化されたモータ(筋肉)であったため、変異を増やすごとに機械効率が低下した。しかし、変異が穏やかな2群では、上記の理由(テーパ比増大による慣性モーメント減)によって機動性は向上していた。変異が最大の群では、モータの最適から外れすぎたために機動性にも悪影響が及んだのではないか。
  • 羽ばたき運動について
    • ⇒ 変異の大きな方の2群では、翼面積が減少しているのに、さらにおなじ羽ばたき運動ではいわゆる揚力がたりない。したがって、羽ばたき運動の変更がとくに必要と考えられる。しかし、(ノーマライズした)羽ばたき周波数が変わっていない*4ことから、羽ばたき振幅 and/or 長軸まわりの回転(迎え角変動)が変化していると考えられる。

補足・感想

なぜ遺伝子のノックアウトをしたか

まず、なぜ遺伝子のノックアウトという手法を用いたかについて補足。これは自分の意見というよりイントロにあったお話。他の方法としては、これまでにスズメガの翼端をクリップする(裁ち落とす)*5とか、ハチドリの羽根をカットする*6とか、あと文献すぐ出てこないけど鳥の羽根を抜くとかはけっこうやられていたが、いずれも侵襲的であることは問題視されていた。また、鳥の場合は換羽といって羽根が生え変わることがあるのでそのタイミングで実験することもあるが、運任せの面が大きくなってあまり好まれない、というか例が少ない。そういえば、ズグロムシクイという鳥の飛行実験準備中に(ストレスで?)尾羽根が全部抜けてしまったが、そのまま実験してみたら、尾羽根ありの個体とほとんど差がなかった、なんていう報告もある*7

なぜ羽ばたき運動を同時計測しなかったのか?

これはもしできていたら慣性・空力計算のところが「文献値によるホバリング」でなくて実測値に基づいた値になり、よりストレートなストーリ・説得力の強いストーリにできたはずで、たぶん Science あたりに出ていただろう。なぜしなかったのか。書いてあるわけではないので推測だが、おそらく、ショウジョウバエが小さすぎることが問題。体重が 1 mg (グラムでなくミリグラム)程度、翅一枚の長さは 2 mm くらいしかない。したがって、カメラを昆虫を追尾するように動かす(そんなことしたらそれ自体が別の論文になるだろう…)か、台数を増やすしかないだろうが、高速度カメラは安くても一台100万円ではきかない程度には高価なので、難しい。羽ばたき周波数が高いことが次の問題だが、これは照明を強力にすれば概ね解決する。一方で、種をもっと大きなものに変更する*8というのはより現実的な解としてあり得ると思うが、その場合はおそらく遺伝子操作の方になにか課題があるのではないだろうか。そちら方面に詳しくはないが、ショウジョウバエは遺伝子関係では最もよく使われているモデル生物の一種だろうから。

環境の影響?

これは別に今回の結果に疑義を呈するものではないが、一般性というかどこまで演繹できるのかという点には関係してくるかも。たとえば、motivational state がエサ無し・捕食者なしの voluntary である点は議論の余地があるかもしれない。これについてはたとえば Tobalske のとこ *9 や Combes のとこ *10 などでちょいちょいやられていて、バイオメカニクスエコロジーの界面として興味深いところでもある。が、実際に全部試したりコントロールして比較するとかかなり大変…。まぁその前に視覚情報からか…。一般的に、空気力学や翼運動がメインの論文だとあまり環境は気にされてない。Flight dynamics(飛行力学)になるとやっぱりちょっと気にするか、みたいになり、神経や行動になっていくとむしろメインになる場合すら多い、という印象。

他にもいくつかマイナな疑問点があるので、気が向いたら書きます。

*1:= Oregon R?

*2:具体的には、理論的な最小の誘導パワーを、現実のパワー(空力パワー+慣性パワー)で割った値を効率と定義している。

*3:羽ばたき面が水平なので、この場合はいわゆる「揚力」と呼んでもよかろう。論文でも lift となっている。

*4:間接飛翔筋タイプであるから大きくは変えようがない?

*5:Fernández, M. J., Springthorpe, D. & Hedrick, T. L. 2012 Neuromuscular and biomechanical compensation for wing asymmetry in insect hovering flight. J. Exp. Biol. 215, 3631–3638. (doi:10.1242/jeb.073627).

*6:Chai, P. 1997 Hummingbird hovering energetics during moult of primary flight feathers. J. Exp. Biol. 200, 1527–1536.

*7:Johansson, L. C. & Hedenström, A. 2009 The vortex wake of blackcaps (Sylvia atricapilla L.) measured using high-speed digital particle image velocimetry (DPIV). J. Exp. Biol. 212, 3365–3376. (doi:10.1242/jeb.034454).

*8:たとえばハナアブは実績がある:Walker, S. M., Thomas, A. L. R. & Taylor, G. K. 2010 Deformable wing kinematics in free-flying hoverflies. J. R. Soc. Interface 7, 131–142. (doi:10.1098/rsif.2009.0120).

*9:Provini, P., Tobalske, B. W., Crandell, K. E. & Abourachid, A. 2012 Transition from leg to wing forces during take-off in birds. J. Exp. Biol. 215, 4115–4124. (doi:10.1242/jeb.074484).

*10:Combes, S. A., Rundle, D. E., Iwasaki, J. M. & Crall, J. D. 2012 Linking biomechanics and ecology through predator-prey interactions: flight performance of dragonflies and their prey. J. Exp. Biol. 215, 903–913. (doi:10.1242/jeb.059394).

fortran でよく使うコンパイラオプションのメモ

自分用。あとで書き足す

gfortran

牛島先生本で紹介されていたのがキッカケで使い始めた g95 がわりと好きだったんだけど、だいぶ前から開発が止まってる(というか終わってる?)ので、最近は gfortran を使うことが多い(本気の計算だけ ifort)。

$ gfortran foo.f90 -Wall -O1 -fbounds-check -fbacktrace -fcheck=all -ffpe-trap=invalid,zero,overflow,underflow

あたりから適当に選んで。

  • -Wall に含まれる -Wuninitialized はデフォルトの -O0*1では作動しないので、-O1 が無難か。
  • -finit-local-zero が便利だけど多用は危険か。というか基本的には使わないでちゃんと自分で初期化したほうが良さげ。

ifort (version 2021.5.0)

$ ifort foo.f90 -xHost -ipo -mcmodel=medium -shared-intel -qopenmp
  • no-prec-div や -fp-model=fast=2 は本番計算で自ら付けるべきものではないような気が今はする。

*1:たぶん。ifortでは-O2がデフォルトだが。