CFDシミュレーションで部屋の寒さを可視化した話

May 27, 2023 (updated: May 28, 2023)
tag icon
cfd
tag icon
flowsquare
tag icon
video
tag icon
lifehack

実例

まずは見てもらった方が早いと思いますので、実例を見てみましょう。

こんな粒子の動きや温度がわかるようなイメージをどこかで見たことはありませんか?テレビなどで見たことがあるのではないでしょうか。

これはコンピュータシミュレーションの1つでCFD(computational fluid dynamics)と呼ばれます。CFDは計算流体力学と訳されます。ざっくり言えば空気や水といった流体の動きを、物理学の流体の運動に関する方程式を使って数値解析(計算)する、というものです。

用途としては、スポーツカーで車の周りを流れる空気の流れを可視化してどんな形状がいいか、というような検討使ったりするのが有名ですが、プロペラの設計や、化学プラントの設計など流体を扱う様々な分野で利用されています。建築もその適用分野の一つです。

今回はこの技術で、筆者の部屋が寒いのを可視化しよう!あわよくば対策も考えよう!という内容です。

Flowsqure+とは

CFDには高価なものから無料のものまでさまざまなソフトが存在していますが、Flowsqure+は無料で利用できるソフトの一つです。今回色々調べる中でFlowsqure+が素晴らしいと思ったのは下記の点です。

  • 無料で利用できる
  • 入力用のデータの準備が簡単
  • (工夫をすると)動画として結果を見ることができる
  • 前処理~ソルバー~後処理が1つにまとまっていて、非常にシンプルで使いやすい

いきなり最後に謎の単語が登場しました。少し詳しく説明しましょう。

一般的にCFDシミュレーションをするには、以下の3つのステップを踏みます。

  • 前処理:計算をする前提となる入力用データの準備
  • ソルバー:入力データをもとに流体の動きをシミュレーションする
  • 後処理:シミュレーションの結果を可視化

前処理:入力用データの準備

前処理で用意する入力用データとはどういうものでしょうか?実はこれは3Dモデルが必要なのです。3次元空間の流体の動きを知るためには、入力データも3次元でないといけません。

いわれてみれば当然ですが、多くのソフトでは入力用データ準備の機能はついていないので、また別にCADソフトを用意して、3Dモデリングをする必要があります。ハードル爆上がりです。

他方Flowsqure+はXYZ方向からみた平面図があれば、そこから必要な3Dモデルを作って計算してくれます(3Dモデルデータの読み込みも可能)。平面図はWindowsに付属しているペイントなどで作成可能ですし、そもそも3Dモデリングよりずっと簡単です。中学校の技術・家庭で学んだ内容が活躍しますね。

これはCADソフトなどを使ったことがない筆者のような人間にとっては大変ありがたいです。きっとこの機能がなければゴールまでたどり着けなかったでしょう。

ソルバー~後処理

まず、突然出てきたソルバーという言葉ですが、特定の計算を、早く、あらかじめわかっている精度でやってくれるソフト、という意味でよく用いられます。今回はCFDの計算ソフトとそれを実行することを指しています。1

通常ソルバーはGUIがなく、コマンドで入力データやシミュレーション条件などを指定して動かします。するとソルバーはそのシミュレーションする時間(はじめから1秒後、2秒後とか)ごとにそれぞれの流体(の圧力・温度・速度)がどうなっているか?を計算して、その瞬間のいわばスナップショットを計算結果として出力します。

一般的にはその計算結果を後処理工程で可視化するのですが、通常はAの時間からBの時間までの静止画で見ることになります。流体の動きを知りたいのでどんなふうに動くか動画としてみたいというのは自然だと思うのですが、簡単にはできないのです。

ところが、Flowsqure+では標準で計算中の結果をリアルタイムで可視化してくれます。なのでシミュレーションを見ていれば、どんなふうに空気が動いているのかといったことを、動画のように見ることができます。

またFlowsqure+自身には結果を動画にする機能はついていないのですが、配信で使われるOBS Studioや、Windows付属のゲームバーのキャプチャーなどを使うと、結果を動画として保存することができます。

つまり、XYZの平面図を用意すれば、動画でシミュレーション結果を残して後で比較などができる、という大変簡単で、使いやすく、便利なCFD環境が実現できます。

Flowsqure+の使い方

Flowsqure+の利用方法は公式サイトの初めて使うFlowsquare+を読むと一通りのことができると思います。

ほとんどの操作は迷わずに進められるのですが、インプット用のBMP画像を作るところで気を付ける(はまった)ポイントは2つあります。

1つ目は壁の書き方です。XYZすべて黒で描くとうまくいかず、筆者の場合は下記のように、XY断面は黒でない色(紫)で、YZ断面は黒で描くことでうまくいきました。

XY断面で描く壁(紫)
XY断面で描く壁(紫)
YZ断面で描く壁(黒)
YZ断面で描く壁(黒)

また、断面図でかぶる位置にあるものは、おなじXY断面でも複数のファイルが読めるので、別々のファイルに描くということです。意図通りのモデルにするにはちょっと試行錯誤が必要です。

必要なPCスペック

Flowsqure+を利用するには、そこそこよいスペックのWindows PCを用意します。ゲーミングPCくらいがいいと思います。CPUが低いスペックのPCでもちゃんと動きますが、単純に計算に時間がかかります。

GPUは理論的には必須ではないのですが、3Dモデルをリアルタイムでぐりぐり動かす、という使われ方を考えると実用上必須だと思います。実際に大きなモデルを試した時には、GUIの表示が非常に遅くなり、事実上操作できなくなりました。

メモリも計算するモデルが大きければそれなりに必要になりますが、16GBあれば足りると思います。GPU側のネックのほうが先に来るイメージです。

今回筆者が利用したPCと、目安になりそうな結果を表に記載します。

項目 メインデスクトップ サブデスクトップ 備考
CPU AMD Ryzen 7 5800x Intel Corei7 8705G 早ければ早いほどよい。
メモリ 32GB 32GB 計算する量(モデル)が大きくなるとたくさん必要。
GPU NVIDIA GeForce RTX3060(12GBモデル) Radeon RX Vega M GL graphics Flowsqure+で画面操作するときに必要。計算には使わない。
目安の時間 1デルタ約60ms 1デルタ約120ms 各種設定に依存するが、今回は64x48x58=178176ボクセル、1ピクセル=5cm、1ステップ=5msで計算した時の数字。

部屋の寒さを可視化

最後に結局自分の部屋の寒さはどうなっているか見てみましょう。

部屋の寒さの可視化

奥の窓から冷たくなった空気が、机の周りに落ちてきていることがシミュレーションできています。そして、その冷たい空気は簡単には撹拌されず、ずっとたまり続けることが分かりました。

いろいろとシミュレーションすると、遠くにサーキュレーターがあったり、下から上にサーキュレーターの風を送ってもほぼ意味がなく、すぐそばの壁際において、冷たい空気に向かってサーキュレータの風をあてて空気をかき混ぜてやらないといけないことが分かりました。

それではみなさんも楽しいCFDシミュレーションライフを!


  1. 余談ですが、CFD以外にもソルバーはいろんなところに登場し、適用する計算に応じてさまざまな種類があります。数理最適化で有名な数理システムのNuorium Optimizerとか、ベイズ推定で有名なStanとか、最近だとGoogleが作ったJAXが機械学習分野で有名です。

Profile picture

i氏 システムのデザインが好きな自称システムアーキテクト。データサイエンティスト見習い。Jamstackのアーキテクチャーに感動して、Gatsbyでブログを始めました。