コンテンツへスキップ

カブと流体解析シミュレータ

スポーツカーの紹介記事で流体シミュレーションの画像を見かけたことがあります。誰かカブでもやってみてくれないかなぁとか思っていたのですが、ネットでフリーの流体解析ソフト"Flowsquare"を見つけました。素晴らしいことに複雑な数式を見るとフリーズする脳みそな私でも使える(自分の意図したものかどうかは別にして結果は出る)という便利なものです。
早速、我が家のカブをシミュレーションにかけてみました。

 

環境

FlowsquareはWindows版のみ提供されています。Windows10は動作対象にありませんでしたが、動作するようです。機能的な制約無しにフリーで使用出来ますが、寄付することでシミュレーション速度がアップするようです。

  • OS:Windows10 64bit
  • 流体シミュレーションソフトウェア:Flowsquare ver 4.0
  • 解析対象:プレスカブ(風防+リアボックス付き)

flowsquare_top.png
Flowsquare Ver4.0

シミュレーションの前準備

まず、Flowsquareをダウンロードして適当なフォルダに配置します。展開して出てくる"flowsquare.exe"が本体です。同じ階層にある"bc.bmp"と"grid.txt"がシミュレーションの設定ファイルになります。"bc.bmp"に解析対象の形状等を、"grid.txt"に解析パラメータを記載します。

パラメータの細かいところは私の学力不足ゆえに理解不能なため、Flowsquareのサイトにある車の解析サンプルをベースとして必要な箇所をカブ向けに書き換えました。

 

bc.bmp

カブの車体を写真に撮り、そこからカブ形状を切り出しました。ドライバーはネットからドライバーさんの写真をお借りして加工させて頂きました。また、本来のシミュレーションでは車体の前方に車体の10倍、上方10倍、後方20倍くらいの空間を確保する必要があるそうなのですが、シミュレーション時間的にまず無理なので前方3倍、上方5倍、後方6倍としました(画像としてはPC画面に表示可能なFullHDサイズ)。

DSC_0088.JPG
我が家のカブ
cub_1920_1080_wfil_0.3_bc.png

 

grid.txt

bc.bmpを弄ったのでそれにあわせてシミュレーション空間のサイズ等のパラメータを変更しました。また、サンプルのままだと数値振動(?)が起きるのかシミュレーション画面が真っ青になって途中で止まってしまいます。そこでフィルタのwfil値を"0.3"にセットしてみました。これだと少なくとも20000stepまでは動作しました。

下記にファイル内容を記載します。


---------- Control File for Flowsquare ver 4.0 (Use SI Unit) ----------
------------------------- General Control Data ------------------------
01:cmode 0 // Simulation mode, 0:non-reac, 1:premixed, 2:non-premixed, 3:Euler, 4:analysis
02:nx 1920 // No. grid points
03:ny 1080 // No. grid points
04:lx 19.7 // Domain x-size
05:ly 11.1 // Domain y-size
06:sts 10200 // Start time step (new simulation starts from sts=0)
07:latts 20000 // End time step
08:cflfac 8 // Delta t factor (more is better, but typically 10-1000)
---------------- Numerical Scheme, Smoothing & Accuracy ---------------
09:iorder 3 // 0: low order, 1: high order, 2:2nd+LW, 3:4th+LW
10:nfil 1 // Interval time steps for filtering
11:wfil 0.3 // 0.1 // Relaxation parameter for filtering
12:omega 1.8 // Relaxation parameter for Poisson Eq (for cmode=0-2)
13:peps 1.0E-1 // Convergence limit for Poisson Eq (for cmode=0-2)
14:loopmax 100 // Maximum no. of iteration for Poisson Eq (for cmode=0-2)
15:wdrho 1.0 // Factor for d(rho)/dt (0<=wdrho<=1.0, 1 is ideal for cmode=1&2)
------------------ General BC and Global IC (White) -------------------
16:perikey 0 // 0: no peri, 1: x-peri, 2: y-peri, 3: all peri
17:pres0 1.0E+05 // Pressure in Pa (atmospheric: 1.0E+05 Pa)
18:uin0 20.0 // Initial u
19:vin0 0 // Initial v
20:rho0 1.2 // Initial density (for cmode=0,3)
21:temp0 0 // Initial temperature (for cmode=1,2)
22:scalar0 0 // Initial Mixture fraction (for cmode=2)
------------------ BLUE Local BC and/or IC (optional) -----------------
23:uin1 20.0 // U
24:vin1 0 // V
25:rho1 1.2 // Density (for cmode0,3)
26:temp1 0 // Temperature (for cmode1,2)
27:scalar1 0 // Mixture fraction (for cmode2)
------------------ RED Local BC and/or IC (optional) ------------------
28:uin2 0 // U
29:vin2 0 // V
30:rho2 0 // Density (for cmode0,3)
31:temp2 0 // Temperature (for cmode1,2)
32:scalar2 0 // Mixture fraction (for cmode2)
---------- PINK Local BC and/or IC (pure air flow, optional) ----------
33:uin3 0 // U
34:vin3 0 // V
35:temp3 0 // Temperature
--------------- BLACK Wall Boundary Condition (optional) --------------
36:tempw 0 // Temperature (0: free, for cmode1,2)
-------------- GREEN Moving Boundary Condition (optional) -------------
37:imb 1 // 0:one-time, 1:periodic
38:umb 20.0 // U of moving boundary
39:vmb 0 // V of moving boundary
40:tempmb 0 // Temperature (0: free, for cmode1,2)
------------- YELLOW Scalar Boundary Condition (optional) -------------
41:scalarT 0 // Local scalar value which might be used as tracer
---------- Transport Properties & Thermochemical Conditions -----------
42:mu 2E-5 // Dynamic viscosity of mixture
43:R 0 // Specific gas constant J/kg K (for cmode=1,2)
44:diff 0 // Diffusivity of mixture (for cmode=1,2,yellow BC)
45:Tu 0 // Unburnt temperature (for cmode=1)
46:Tb 0 // Burnt (flame) temperature (for cmode=1,2)
------------------- Chemical Reaction (for cmode=1) -------------------
47:krate 0 // Rate onstant
48:Trate 0 // Activation temperature
49:nrate 0 // Rate ~ rho*k*exp(-Ta/T)*T^n
50:cF 0 // Progress variable at which flame locates (optional for vis)
--------------- Non-Premixed Reacting Flow (for cmode=2) --------------
51:Xst 0 // Stoichiometric mixture fraction at which flame locates
52:sigma 0 // Relaxation parameter for density change (0<=sigma<=1, 1 is ideal) -------------------------- Display & Output --------------------------- 53:box 1 // Pixel size of one grid point 54:nfig 50 // Interval time steps for figure output (0:off) 55:nfile 100 // Interval time steps for dump file output (0:off) 56:bcdisp 1 // Display wall boundary (0:off, 1:on) 57:idisp 4 // 0:off,1:rho,2:u,3:v,4:spd,5:vrt,6:T,7:rate,8:c/xi,9:P 58:cmax 0 // Scale (max). 0:auto scale 59:cmin 0 // Scale (min). 0:auto scale 60:icolor 0 // 0:Jet,1:Rainbow,2:Nishiki,3:Gray,4:Gray(inv),5:Hot,6:Sea,7:Leaf 61:icont 0 // (Reaction front) contour line (0:off,1:blck,2:red,3:grn,4:bl,5:wht) 62:linewidth 0 // Line width of contour line (1, 3, 5 or 7) 63:ivec 1 // Velocity vector (0:off,1:blck,2:red,3:grn,4:bl,5:wht) 64:ndiv 10 // Interval grid points between displayed vectors (0:auto) 65:vecsize 2 // Pixel size of vector arrow (0:auto) ------------------ Lagrangian Trajectory (optional) ------------------- 66:lagkey 0 // 0:off,1:x, 2:y,3:x-x,4:y-y 67:lagcolor 0 // 0:black, 1:white 68:lagsize 0 // Pixel size of particles 69:nlagra 0 // Interval time steps of restart (>=100)
70:npart 0 // No. particle (>=1000)
------------------------ Body Force (optional) ------------------------
71:gfx 0 // X-body force
72:gfy 0 // Y-body force
73:dref 0 // Reference density. 1:max, 2:middle, 3:min density as reference
------------------- Initial Perturbation (optional) -------------------
74:pmode 0 // Mode of perturbation 0:off, 1:single mode, 2:multi, 3:multi (random amp.)
75:umag 0 // Velocity amplitude (m/s)
76:nwave 0 // Number of waves in x-direction
-------------------------------- Others -------------------------------
77:nwait 0 // Wait time
-----------------------------------------------------------------------
#End of file

 

シミュレーション

パターン

我が家のスーパーカブには風防とでっかいホムセン箱が付いています。今は50ccなんで30km/hのとろとろ走行です。多分、多少ヘンテコな形状になっていても影響は少ないでしょう。しかしそのうちボアアップして60km/h出すぜ、という野望があるので風防とホムセン箱の影響を調べてみることにしました。

モデルとして以下のものをシミュレーションを走らせて、結果を見比べてみたいと思います。

  1. 現状のカブ
    我が家の現状そのままです。風防とリアボックスとしてホムセン箱がついた状態です。
  2. ホムセン箱なし
    リアボックスを取り払った状態です。風防はついています。
  3. 風防なし
    風防を取り払った状態です。リアボックスはついています。
  4. 風防角度を45度に変更
    風防の角度をさらに鋭角に倒して45度にしてみました。リアボックスはそのままです。
  5. ドライバー無し(!)
    無人で走るカブ、ナイト2000状態です(笑)。人間の体がどれくらい影響しているのか見ることにしました。

シミュレーション結果

現状のカブ

風防がいい仕事をしているのが分かります。ちょうどメットの真上を風が吹き抜けている感じで、実走行でも同じように感じました。

ホムセン箱の影響が思ったほどなさそうなのがちょっと意外です。前方にそれより表面積のあるドライバーがいるので影響少ないのかな。

cub_wfil0.3_box_driver_spd.png
現状のカブ(流速)

車体周辺の流速

cub_wfil0.3_box_driver_pressure.png
現状のカブ(圧力)

車体周辺の圧力

ホムセン箱なし

リアボックスのでかい箱を取り去ってみました。この箱はカブが我が家にきてすぐに取り付けたもので(メットの格納スペースが無かったゆえ)、素の状態というのをほとんど体験していません。

cub_wfil0.3_nobox_driver_spd.png
車体周辺の流速(ホムセン箱なし)

車体周辺の流速

 

cub_wfil0.3_nobox_driver_pressure.png
車体周辺の圧力(ホムセン箱なし)

 車体周辺の圧力

風防なし

今度はリアボックスと風防を取り去ってみました。カブとして素の状態ですね。前方から風がドライバーの顔面を直撃しているのが分かります。

cub_wfil0.4_nobox_nows_drv_spd.png
車体周辺の流速(風防なし)

  車体周辺の流速

cub_wfil0.4_nobox_nows_drv_pressure.png
車体周辺の圧力(風防なし)

  車体周辺の圧力

風防角度を45度に変更

私のカブはステーを曲げてオリジナルより若干手前に角度をつけてあります。それをさらに倒して45度にしてみました。

すると、風はメットに当たるようになったものの車体前後の圧力が改善しているように見受けられます。圧力差が減ったということは抵抗も減少しているはずです。燃費的にはこれくらい倒したほうがいいのかもしれません。

cub_wfil0.3_box_ws45_driver_spd.png
車体周辺の流速(風防角度を45度に変更)

車体周辺の流速

cub_wfil0.3_box_ws45_driver_pressure.png
車体周辺の圧力(風防角度を45度に変更)

車体周辺の圧力

 

ドライバー無し

最後はドライバー無しです。これと風防/リアボックスありの結果を見比べると、うーん、ドライバー周辺はあまり差が無いように見えます。風防とリアボックスに守られているのかな。

cub_1920_1080_wfil_0.3_spd.png
車体周辺の流速(ドライバー無し)

 車体周辺の流速

cub_1920_1080_wfil_0.3_pressure.png
車体周辺の圧力(ドライバー無し)

 車体周辺の圧力

所感

モデル形状を変えるとどう影響するのかが視覚的に見えるのが面白いですね。エアロパーツの自作なんかにも便利ではないでしょうか。

大抵はモデルを変更して実行してやれば最後までシミュレーションが行われますが、何度かやっていて上手くいかずある程度時間が経過すると画面が真っ青になることがありました。これはガイドにある計算が発散している状態なのでしょうか。wfil(フィルター操作に関する緩和係数)というパラメータを1に設定するとシミュレーションが進むようになりました(きっと数式が分かれば理解が進むのでしょう。腰を据えて勉強してみようかな)。

また、モデルである"bc.bmp"のサイズが大きければ大きいほどシミュレーションに要する時間が増加しました。本家サイトにも以下のように記載されています。

Flowsquareでは差分法を使って計算するので格子点数は一般的に多ければ多いほど良いです。しかし、格子点数の増加は2乗で計算時間の増加に寄与します。

今回は1920x1080という馬鹿でかいサイズ(本来のシミュレーションは更に大きいそうなのですが。。。)で実行したため、20000stepのシミュレーションを終えるのに3日(!)を要してしまいました。バイクや車のパーツを自作するのにシミュレーションを走らせる場合には、もっとサイズを小さくして限定的に見た方がよさそうです。

 

参考

この記事は以下のサイトを参考に記載させて頂きました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください