その他

Flowsquare+でお手軽エアロダイナミクスシミュレーション遊び

2019年5月19日

モータースポーツに興味を持っている方なら、流体力学(エアロダイナミクス)という言葉を聞いたことがあると思います。

F1やスーパーGTの300km/hを超えるスピードでは、空気は大きな抵抗になる一方で、ダウンフォースとして利用できればトラクションやグリップとなってさらに速く走れることになります。

マシンにはエアロダイナミクスを考えた設計が必要で、目に見えない空気を見るための方法の一つとして、コンピューターシミュレーションが使われています。

このページでは、市販のパソコンとインターネット環境と一般的なWindowsOSの操作だけで、お手軽にF1のエアロダイナミクスを見える化して遊ぶ手順を紹介します。

はじめに

このブログ『43RacePhotos』は、オリンパスのミラーレスカメラを使ったモータースポーツ写真の紹介がメインです。もちろんモータースポーツが好きで撮っているので、モータースポーツの技術も大好きです。

日本がF1ブームだった1990年頃から、F1をはじめとするレーシングカーは複雑なボディ/カウル/ウイング形状や、細かいフィンが増えていきました。

この背景には、コンピューターの発展による設計のデジタル化があり、コンピューターシミュレーションの技術も含まれます。

たまたま見かけたシミュレーションソフトが簡単に使えて、ネットにはいろんな3Dモデルが手に入るご時世、試しに遊んでみたら思いのほか簡単にそれっぽい画面が出てきて技術の進歩を感じました。

F1やモータースポーツの技術に興味のある若い人たちに、お手軽にエアロダイナミクスの世界に触れてもらいたいと思い、畑違いのブログではありますが、私自身、若い頃に憧れて大学で流体力学を専攻することまでやったので、遊び方を書くことにしました。

用意するもの

シミュレーションソフト『Flowsquare+』

そもそもこれを書くきっかけになったアプリケーションが、Nora Scientificさんの『Flowsquare+』です。

コンピューターによる流体力学シミュレーションは、数値流体力学(Computational Fluid Dynamics、略してCFD)と呼ばれる学問分野です。

前提である流体力学の知識に加え、その法則式(多くは微分方程式)を具体的な数字を使って計算で解くための方法やノウハウを体系化した分野ですが、実際に計算するための道具としてプログラミング言語(FortranやC、最近ならPyton)や、そもそもパソコンにそれらをインストール/設定する知識やノウハウが必要です(なので本気で学ぶなら時間のある学生の間がオススメ)。

これらの膨大な手間暇をシステムにまとめて市販されていますが、一般人が購入するには高価です(しかもほとんどが年間保守契約が必要)。

それに比べて『Flowsquare+』は、学生は基本タダ、一般でも¥3,000/月か¥30,000で機能制限なく使えるというのが画期的です。

とりあえずダウンロードだけでもしておくことをお勧めします(ライセンスなしで起動するとトライアル版として300ステップまでの計算ができる)。

パソコン

『Flowsquare+』は一般的なWindowsパソコンで利用できます。Nora Scientificさんのサイトにも推奨環境が載ってます。

今回紹介する例では、古めのノートPCを使っています。CPUはインテルのCore i5 6500U、メインメモリは4GBですが、メモリがたくさん積んでいる方が細かい部分まで計算できた(分割数が増やせる)のかなと思います。

3Dモデル

『Flowsquare+』は”STL”という形式の3Dモデルデータを読み込むことができます。

最近は3Dプリンターが比較的安く市販されるようになってユーザーが増えたことがきっかけで、いろいろな3Dモデルデータがネットで手に入るようになりました。

「○○(車種名)+ free 3D model STL」などで検索すると、いろいろ出てきます(必ずしも全てのデータがフリーということはないので注意してください)。

今回は「Formula 1 free 3D model STL」で検索してみつけた、3Dmag.orgという3D素材共有サイトでみつけたコチラ!

RB14!

レッドブルF1が公式に発表、提供したという話はないので、ファンが独自に作ったデータのようです。速いマシンはすぐコピーされるF1で意匠権をどうこういうのもアレですが、念のためRB14「風」と言っておきますw

3Dmag.orgに会員登録が必要ですが、個人情報の類が気になる人は捨てアカでも作って登録すればいいでしょう。登録後にダウンロードボタンが出るので保存します。

ダウンロードしたファイルがウイルスチェックには引っかからなかったことや、かなりのモデルが登録されていることから、それなりに安心してよさそうです。

43RacePhotos謹製『Flowsquare+』向け設定ファイル

先に紹介した古めのノートPCでも無理なく計算できる条件と、RB14風3Dモデルにシミュレーションする位置を合わせこんだ設定ファイルを用意しました。下記のリンクを右クリックして「名前を付けてリンク先を保存」でダウンロードしてください。

Flowsquare+向けRB14風設定ファイル

実際にシミュレーションした設定なので、中身が分からなくてもそのまま使えます。

シミュレーションの手順

『Flowsquare+』の起動〜設定〜シミュレーション開始

ダウンロードしたファイルの整理

適当な場所にフォルダ(ここでは"RB14"という名前)を作り、次のファイルを入れてください。

  • ダウンロードした3Dモデルのファイル "RB14.stl" を ”bc.stl"にファイル名を変更して保存
  • ダウンロードした『Flowsquare+』の実行ファイル、"FSP.exe"
  • ダウンロードした設定ファイル、"param.txt"

『Flowsquare+』の起動〜設定

RB14フォルダに入れた『Flowsquare+』実行ファイル"FSP.exe"をダブルクリックで起動します。

すでにライセンスキーを持っている場合はライセンスキーを入力、ない場合はそのままで右下のボタンで次に進みます。

今回行うシミュレーションにプロジェクト名をつけます。デフォルトで"project"となっていますので、そのままで次へ。

シミュレーションの計算結果や設定などのデータがプロジェクト名と同じフォルダが作成されて保存されるので、いろいろなシミュレーションをやってみようとしているなら、プロジェクト名が被らないように注意が必要です。

また、"simulation mode"のラジオボタンにチェックが入っていることも確認してください。

『Flowsquare+』では大まかなシミュレーション条件がプリセットされていて選ぶことができます。ここでは左から3番目のモードをクリックして次へ。

ちなみにこのモードは、画面左から流体が入ってきて、同じ速さで画面下も動くことを意味しています。マシンが走行する時に風が当たるのと路面を進む様子を再現することになります。

RB14フォルダに入れた設定ファイル"param.txt"をドラッグ&ドロップでFlowsquare+のウインドウに入れます。

"param.txt"に書かれた設定が表示されます。ここで設定変更が可能ですが、今回は何も変えずに次へ。

ちなみに設定変更しても元の"param.txt"は書き変わりません。

シミュレーションする範囲が黒いワイヤーフレーム(箱)で表示されます。3Dモデルの位置や向きを調整する画面です。

今回はあらかじめ位置を調整してあります。ワイヤーフレームの中にRB14風のモデルがグレイのポリゴンで表示されているのを確認したら次へ。

画面が変わるとシミュレーションがはじまります。

シミュレーション中の画面操作

シミュレーション中は何をしているのか?

ざっくり説明すると、画面に表示されたワイヤーフレームの中の流体(ここでは空気)の、ある瞬間における速度(どちらに向かってどれくらいの速さか)と圧力(圧力の高いところから低いところへ流れる)と密度(空気の薄いところと濃いところ)を計算します。

シミュレーションの中の単位時間”ステップ”

”ある瞬間”を切り取って計算した1回分が、シミュレーションの1ステップです。

1ステップ目で計算した"ある瞬間"の状態をもとに、2ステップ目に"次の瞬間"の計算をします。2ステップ目の結果をもとに3ステップ目、3ステップ目の結果をもとに4ステップ目、…、というふうに時間が進む方向に次々に計算を進めると流体の動きが分かってきます。

雨の中を走行しているマシンをカメラで連写すると、1枚1枚の写真にはマシンと雨粒が写っていますが、連写した写真をパラパラ漫画のように次々に見ていくと、ある雨粒がマシンのカウルに沿って動いていく様子が分かるような感じです。

ある瞬間t(0)を計算するステップと次の瞬間t(1)を計算するステップとの時間間隔 Δt=t(1)-t(0) が短いほど時間の変化(時系列)を細かく計算できますが、その分、たくさんのステップ数を計算しなければいけません。

シミュレーションの中の単位空間を決める"分割数"

1ステップあたりの計算量は、ワイヤーフレームの中の空間をどれだけ細かく分解して計算するかによって変わります。

1立方メートルの空間の中の空気が、全て同じ状態(速度、圧力、密度)だと予想できれば、これを1個のかたまりとして計算してもいいでしょうが、1立方メートル中で細かく状態が変わることが予想できれば、さらに細かいかたまりに分けて計算しないと実際と異なる結果になります。

ワイヤーブレームの中の空間をどれくらいの細かいかたまりに分けるかを決めるパラメーターが分割数です。

分割数が増えると、空間を細かく計算できることになりますが、その分、計算量が増えてシミュレーションの時間がかかります。

シミュレーション中の画面表示の意味について

シミュレーション中は、計算の終わったステップの結果が表示されています。

例えば、マシンの進行方向側面の壁のように見える面はその断面での空気の状態を表示しています。

下の図の場合、流れの速さを青(遅い)から赤(速い)のグラデーションで表しています。カラーコンターといって、色味や濃淡のグラデーションで断面の状態を見た目で知ることができます。

また、矢印はベクターといって、矢印の向きで流れの方向を、矢印の長さで流れの強さ(速さ)があることを表しています。

計算を進めていくと(よく、「シミュレーションを回す」などと言います)、「いつになったら終わるのか」「今どれくらい計算できたのか」が気になってきます。

画面の上下には、今何ステップ目を計算しているのか、1ステップでどれくらい計算できるのか、あと何分かかるのか、が情報として表示されています。

画面に表示する情報の変更方法

シミュレーション中に画面左上の四角のアイコンにマウスポインターを合わせると表示に関する設定メニューが開きます。

デフォルトでは、3Dモデルはポリゴン表示ですが、3Dっぽいレイトレース風の表示にできます。

模型を使った風洞実験では、ビニールひもを細く裂いたものを流れにのせたり、白い煙を流したりして、空気の流れる道筋(流線といいます)を調べますが、同じことをグラフィックで再現できます。

ずいぶん、「それっぽい」画像になってきました。

流れの元になっている面(ここではワイヤフレーム左面の風が入ってくる面)や流れがぶつかる壁や3Dモデルの表面を境界面といいます。

表示している境界面(ここでは3Dモデル表面)の状態をカラーコンターで知ることができます。

例えば、表示する状態について、速度から圧力差(Δpと表記します)に変更すると、3Dモデル表面のカラーコンターにも反映されます。

赤い部分は圧力が初期条件(計算開始時の0ステップ目の状態)より高く、青い部分は圧力が低いということを表しています。

シミュレーションは、最初に設定ファイルで決めたステップ数(今回は5000ステップまで、ライセンスのないトライアル状態だと300ステップまで)を計算し終わると終了です。

シミュレーションの途中で止めたい場合は、ESCキーを押すか、設定メニュー内の一時中断アイコンをクリックすると、確認のダイアログメッセージが出ます。

OKをクリックすれば終了して起動時の画面になります。キャンセルすれば、シミュレーションは再開されます。

途中で止めたシミュレーションは、次回起動時に同じプロジェクト名を入力すると中断した時と同じ表示で再度シミュレーションできます。

(途中で止めたときのステップ数からシミュレーションを続けるには、シミュレーション前に設定ファイル"param.txt"の変更が必要です)

シミュレーション結果の確認

シミュレーション結果は、再度起動時に同じプロジェクト名で"Analysis mode"を選択すれば見ることができます。

"Analysis mode"の画面や操作方法は、シミュレーション中のものと同じです。

スリップストリーム現象を読む

次の画像は1000ステップ(約0.2秒後)の状態です。表示する状態をΔpを選んで圧力の変化を、境界面にもカラーコンターを表示して、マシンとその周辺の圧力の分布を見ています。

一番最初に空気を押しのけるノーズ付近が圧力が高く、逆にマシン後方は押しのけられた後で圧力が低くなっています(負圧と呼びます)。空気の流れと関連して考えると、圧力が低い部分へ空気が流れていくために、この部分の空気はマシンの進行方向と同じ向きになります。

画面左右に矢印のボタンが表示されますが、左をクリックする度に1ステップ戻り、右をクリックする度に1ステップ進みます。

時間を進めると、マシン後方の負圧の部分はさらに後方に伸びていきます。このマシンの負圧部分に後から来た別のマシンが入ると、そのマシンには空気が当たりにくくなって抵抗が減るばかりか、進行方向に引っ張られる効果が得られます。これがスリップストリームです。

ウイングによるダウンフォース

視点を変えてマシンの近くを調べてみましょう。

シミュレーション中の画面も一緒なのですが、マウスの左ドラッグ、右ドラッグ、スクロールホイルの操作で表示しているカメラ位置が変更できます。動かし方は説明を書くよりも、いろいろグリグリやってみてくださいw SPACEキーでデフォルト設定に戻ります。

画像はフロントに回り込んだものです。フロントウイングの一番大きい部分(メインエレメント)の圧力が高くなっています。

流線を表示していますが、メインエレメントの上にある小さなフィン(フラップ)が空気をはね上げたり、外側へ流れを変えており、サスペンションアームなどに直接当たることを避けて抵抗にならないようにしているのがわかります。

なお、このシミュレーションではタイヤの回転を再現できないため、タイヤまわりの流れは実際とは異なることが予想されます。

フロントを路面側から見るとこんな感じ。フロントウイングの下面が上面よりも青ければ、上面から下面に向けてウイングが押されていることになる=ダウンフォースが発生していることになるのですが、このシミュレーションではあまりはっきりしていません。

おそらく、高さ方向の分割数が少なくて(粗くて)、上面と下面の流れを分けて計算できていないと考えられます。

マシン後方もフロントと同じように見てみましょう。

こちらもマシンの形状に沿って流れがあることがわかりますが、全体的に圧力が低くなっており、リアウイングによる効果も見られません。

フロントウイングではね上げられた空気の流れも計算が粗いためにあまりリアに当たらないままになっているようです。

今回提供した設定ファイルは、低スペックPCでも比較的すぐに結果が見えることを重視したものでしたので(300ステップを2〜3分で計算できる)、分割数が小さく、粗い計算になりました。

まずは、『Flowsquare+』がどんなシミュレーションができるか、遊んでみることを重視した点をご理解ください。

応用編

一連のシミュレーションの手順がわかったところで、さらにちょっとだけ遊んでみましょう。

シミュレーション画像をつなげて動画にする

『Flowsquare+』は、最初に決めたプロジェクト名と同じフォルダ(以下、プロジェクトフォルダと呼びます)を作成し、そこにシミュレーション結果を保存します。

シミュレーション結果は"Aanalitics mode"で使用する計算結果そのもの加えて、シミュレーション中の画面のスクリーンショット画像も保存しています。

今回提供した設定では、50ステップに1回スクリーンショットを撮るようにしておきました。

プロジェクトフォルダ内の"figs"というサブフォルダにスクリーンショット画像が保存されています。ファイル名の8桁の数字は、ステップ数を意味しているので、ファイル名で並べると、ステップを追って順番に画像が見れます。

『Flowsquare+』の現在のバージョン(2019R1.1)では、残念ながらシミュレーション結果を動画にする機能がありません。

連番の画像ファイルを、動画編集ソフトやGIFアニメーションソフトに入力して動画にしてみましょう。ソフトがなくてもGIFアニメーション変換サービスを提供しているサイトもあります。

Animizer.netさんのAssemblerというサービスは、連番Jpeg画像から512ピクセルまでのアニメーションGIFに変換してくれます。

海外サイトなので、細かい使い方が不安な方は、GIGAZINEさんで取り上げた記事に使い方が載っていますので参考にしてみてください。

1000ステップ目までを動画にするとこんな感じです。

分割数を増やしてより高精度なシミュレーションをめざす

設定変更で分割数を増やす

冒頭の設定ファイルは、お手軽にシミュレーションを試すために計算量の少ない条件としました。そのために結果がイマイチでしたので、以下の変更を加えます。

  • マシン下面を細かく見れるように分割数を増やす:進行方向×トレッド方向×高さの分割数を120×70×50→240×48×80
  • マシン後方をもう少し見るために領域を伸ばす:12m×3.5m×2.5m→15m×4m×5m

分割数やシミュレーションの物理的な範囲については、理論的/実験的に「こうすべき」というものがありますが、手持ちのPCスペックの都合で、実際にシミュレーションを回しながら、できる範囲を絞った結果です。

Flowsquare+向けRB14風用ファイル高分割数版

シミュレーションの結果

結果はこんな感じ(速度で表示しています)。

流線も設定変更して細かく表示していますが、最近のPCはCPU内臓グラッフィックを使うものが多いため、表示に負担がかかるものもシミュレーションの進みに影響しています(もっとハイスペックのPC欲しい…)。

最初の設定では、300ステップを2〜3分で計算/表示しましたが、分割数が増えたこの設定では、20分以上かかっています。

時間とライセンスの都合(汗)で300ステップごとに区切って3000ステップ分計算したので、3時間以上かかりました。この間はCPUの負荷は常に95%以上で、ノートPCのファンは回りっぱなし。CPU焼き切れるのかと思ったw

動画にするとそれっぽくwなったのが分かると思います。特にスリップストリームははっきりと見えますね。

他の視点でも動画にしてみました。さっきよりは細かく見れるようです。

特に、ウイングとフラップの隙間にもちゃんと流線が通っていたり、マシンの後方の流れが乱れている(後方乱気流)がそれっぽく再現できていたり。

 

答え合わせ

今回試した2つのシミュレーション結果が、どれくらいのデキだったのか、答え合わせもしてみましょう。

残念ながら本当の答えは目に見えない空気の話なので、同じようにF1をもっと本格的にシミュレーションした結果を見てみます。

「formula car CFD」でググってみたところ、Journal of Traffic and Transportation Engineeringの記事PDFが読める状態でした。

イタリアのミラノ近郊のベルガモ大学での研究結果として、オープンソースの流体解析コード集"Open FOAM"を使った大規模なシミュレーション結果が報告されています。

イタリアの大学ということですが、3Dモデルは2017年レギュレーションの平均的なデザインで例の赤いチームのマシンではありませんw

全部読むには英語はもちろん、CFDの知識全般が必要なので誰でも読めるわけではありませんが、例えば、シミュレーションの物理的な範囲とその分割数を読むと、

  • 進行方向はマシンのホイールベース(3.475m)の18倍(62.55m)を1億4000万分割!
  • トレッド方向はマシン全幅片側半分の16倍(左右対称なので半分14.4mでOK)を1億2000万分割!
  • 高さ方向はマシン全高の16倍(15.2m)を9000万分割!

マシン下面をみるために高さ方向に17ミクロンごとに区切っていることに!一方今回のなんちゃってCFDでは6.25cmごとに区切っているので全然違います。

そう!6.25cmではマシン下面は計算していないんです(汗

F1だと最低地上高の規定は明確にはありませんが、静止状態で50〜60mm、走行時はダウンフォースでさらに下がることが予想されますし、近年のF1は車体を前に傾ける(レーキ)こともあるので、実はマシン下面をみるには高さ方向は分割数が足りなかったんですね。

まあ、今回は昔よりも簡単にエアロダイナミクスのシミュレーションで遊べるよ、という趣旨を汲み取ってもらえると幸いです(冷汗)

こんなときは?

オチがついたところで()、みなさんがシミュレーションする時に同じようにいかない場合や、もっとこうしたい、などがあると思いますので、簡単なFAQを作りました。

ここにない情報は、もちろん『Flowsquare+』のサイトにチュートリアルがあるのでそちらを参照ください。

シミュレーション範囲と分割数を変えたい

"param.txt"の次のパラメータを書き換えます。

nx/ny/nzが分割数lx/ly/lzがシミュレーション範囲(単位はm)です。x:マシン進行方向、y:高さ方向、z:トレッド方向に対応します。

シミュレーションの途中で画面がフリーズする

私と同じように残念なスペックのPCをお使いですね(泣)メモリを増やせば楽になると思います。

それでも厳しければ、分割数減らして挑戦してみてください。

ステップは進んでいるのに画面には何の変化もない

カラーコンターが真っ青だったり真っ黄色だったりでしょうか?それは前のステップからの変化が大きくて計算結果がおかしくなっている(発散しているといいます)状態です。

xyzの分割数のバランスが悪いと発散しやすいです。xだけ分割数を増やしたりせず、yもzも同じ程度に増やしてみてください。

シミュレーション完了まで他の作業がしたい/シミュレーションだけに集中させたい

マルチコアCPUなら設定変更で分散化(並列計算)できます。

"param.txt"のparallelの値を0から3の範囲で変えてみてください。0なら並列計算せずに1コアのみ使用、3なら全コアにスレッドを振り分けで並列計算します。

トライアル版の300ステップじゃ足りない

学生さんなら学生証の提示だけでライセンスを発行してもらえるのでためらわずに発行してもらいましょう。社会人はPROライセンスを買いましょうといっておきますが、私もトライアル版でこの記事を書いています(Nora Scientificさんゴメンなさい)

Nora Scientificさんもサイトで紹介しているものの、私が堂々と説明するのもアレなので、詳しくはFreesquare+のチュートリアルを読んでください。

ヒントとしては、解析範囲を狭く初期流速を遅くするとデルタTが大きくなるので300ステップでも足りる、とか、300ステップごとにシミュレーションを繰り返せばいい、とだけ書いておきます。

自分で3Dモデルを作りたい

今回のRB14風モデルはドライバーが乗ってなっかったり、ダクト類は穴が空いてなかったりなので、もう少しこだわりたい方は、STL形式のモデルを編集できる3Dソフトを使ってみてください。

最近の3Dプリンターブームのおかげで、無料で利用できるソフトが増えています。今ならFusion360がおすすめ。

もっと流体力学が知りたくなった

これきっかけで流体力学やエアロダイナミクスに興味を持ってくださってありがとうございます。

今回の記事は、モータースポーツへの興味と高校物理程度の知識があれば、数式がなくても遊べるような内容を心がけましたが、もしもっと深く知りたければ、いろいろ参考書があるので紹介します(今後追加していきます)。

定番のブルーバックスです。高校数学でわかる範囲で流体力学がわかります。

こちらもブルーバックス。

図が中心の解説なのでとっつきやすさがあると思います。

高校卒業レベル(微分・積分と力学のつながりが理解出来るレベル)なら大学流体力学の教科書程度が読めると思います。

シミュレーションが具体的にどういう仕組みかをExcelでデータを見ながら理解できるので行列の勉強にもなります。

CFDを体系的に網羅しているので、これが理解できれば十分。

記事中で紹介したイタリアの大学が使ったシミュレーションのツールの解説書。オープンソースソフトは頻繁に更新される分、初心者には取っつきにくいので一冊あると便利。

最後に

最後までおつきあいいただき、ありがとうございます。

今回紹介した設定では、時間とパソコンのスペックの制約で、必ずしも正しい結果を得ているわけではありませんが、雰囲気をお手軽に味わうには、『Flowsquare+』はとてもいい道具だと思います。

平成の初め頃には大企業や予算のある大学の「計算機センター」みたいなところで、流体力学と数学とプログラミングの知識などを持っている限られた人しかできなかったのがコンピューターシミュレーション。その敷居はとても高いものでした。

それが、条件次第ながら手持ちのノートPCで実行できるのですから、まずはシミュレーションを走らせてみてから考えてみるというのが新しい時代の学び方かもしれません。

お願い

  • 今回の記事は、数式など使わず、専門用語も極力減らしているので、厳密には誤解を生じさせたり間違った解釈があるかもしれませんので、詳しい方は「こう書いてみた方がいいかもよ」などとご提案いだだけると幸いです。
  • この記事のご質問なども極力対応させていただきたいと思います。
  • いずれもTwitter @43racephotosまでお知らせください。
  • このブログは本来はモータースポーツ写真と撮り方を紹介するブログです(ここ大事w)ので、よければ他の記事もご覧いただいて、気に入ったらSNSでご紹介お願いします。(^人^)

-その他
-,