シミュレーション装置、該プログラム、及び該方法
【課題】パーティクルの3次元的な挙動を追跡することができるシミュレーション装置を提供する。
【解決手段】シミュレーション装置は、流体の流れについてのシミュレーションにより算出されるパーティクルの時間毎の物理量に関するシミュレーション結果情報に基づいて、各位置におけるパーティクルの速度を算出する速度算出部と、パーティクルの位置に基づいて、2つのパーティクル間の距離を算出し、パーティクルの速度に基づいて、2つのパーティクル間の速度差を算出し、パーティクル間の距離の値が第1の閾値より小さく、かつパーティクル間の速度差の値が第2の閾値より小さい場合、2つのパーティクルを群化する群化部と、群化された2つのパーティクルの速度ベクトルに基づいて、群化された2つのパーティクルを可視化する表示オブジェクトを描画する描画情報を生成する描画情報生成部と、を備えることにより、上記課題の解決を図る。
【解決手段】シミュレーション装置は、流体の流れについてのシミュレーションにより算出されるパーティクルの時間毎の物理量に関するシミュレーション結果情報に基づいて、各位置におけるパーティクルの速度を算出する速度算出部と、パーティクルの位置に基づいて、2つのパーティクル間の距離を算出し、パーティクルの速度に基づいて、2つのパーティクル間の速度差を算出し、パーティクル間の距離の値が第1の閾値より小さく、かつパーティクル間の速度差の値が第2の閾値より小さい場合、2つのパーティクルを群化する群化部と、群化された2つのパーティクルの速度ベクトルに基づいて、群化された2つのパーティクルを可視化する表示オブジェクトを描画する描画情報を生成する描画情報生成部と、を備えることにより、上記課題の解決を図る。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書は、計算機による流体のシミュレーションの可視化技術に関する。
【背景技術】
【0002】
近年の計算機技術の進歩により、ある物理現象に対して大規模な数値計算を実行し、その結果を高解像度の表示機器に表示してその物理現象を理解する、という場面が増えてきた。更に、より多くのオブジェクトを表示機器に同時に表示し、かつそのオブジェクトの拡大・縮小や回転もインタラクティブに指定しつつ、リアルタイムに表示することができるようになった。
【0003】
一方、計算結果がベクトル場である場合の表示方法のひとつとして、パーティクルフローという手法がある。パーティクルフローとは、パーティクルという無質量の微小粒子が任意時間において置かれた周辺のベクトルの方向に沿って移動することで、流れを表現する手法である。計算機の性能向上によって、これまでより多数のパーティクルを広範囲に分布させることができるようになり、非常に細かい領域の流れを確認できるようになった。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平4−320589号公報
【特許文献2】特表2001−502097号公報
【特許文献3】特開2007−188502号公報
【非特許文献】
【0005】
【非特許文献1】Avizo Online Help、[on line]、[平成22年8月16日検索]、インターネット<http://docs.drabba.net/avizo/6.1.0/hxvectorfieldanimation/HxParticlesCompute.html>
【発明の概要】
【発明が解決しようとする課題】
【0006】
多数のパーティクルを同時に表示できたとしても、人間の視覚や認識には限界がある。例えば、乱流境界層内の縦渦をシミュレーションし、パーティクルフローによって結果を観察しようとする場合について考える。この場合、マクロ的には多数の渦を表現しないパーティクルが動く中において、いくつもの小さな渦内をパーティクルが回り、一方渦を渡り歩くように動くパーティクルも同時に表示される。結果としてパーティクルが複雑な動きを示すことになり、目で追えなくなって誤認識を起こす可能性が高い。
【0007】
よって、パーティクルの動きについては、パーティクルの複雑な振る舞いのため、3次元的な挙動を追跡することは難しかった。また、パーティクルは領域を示さないため、例えば渦領域のような部位の形状を表示することは難しかった。
【0008】
上記課題に鑑み、本明細書では、パーティクルの3次元的な挙動を追跡することができるシミュレーション装置、該プログラム、及び該方法を提供する。
【課題を解決するための手段】
【0009】
本明細書に記載のシミュレーション装置の一例は、速度算出部、群化部、描画情報生成部を含む。速度算出部は、流体の流れについてのシミュレーションにより算出されるパーティクルの時間毎の物理量に関するシミュレーション結果情報に基づいて、各位置における前記パーティクルの速度を算出する。
【0010】
群化部は、前記パーティクルの位置に基づいて、2つの前記パーティクル間の距離を算出する。群化部は、前記パーティクルの速度に基づいて、2つの前記パーティクル間の速度差を算出する。群化部は、前記パーティクル間の距離の値が第1の閾値より小さく、かつ前記パーティクル間の速度差の値が第2の閾値より小さい場合、該2つのパーティクルを群化する。
【0011】
描画情報生成部は、前記群化された2つのパーティクルの速度ベクトルに基づいて、前記群化された2つのパーティクルの挙動を示す表示オブジェクトを描画する描画情報を生成する。
【発明の効果】
【0012】
本明細書に記載のシミュレーション装置の一例によれば、パーティクルの3次元的な挙動を追跡することが容易になる。
【図面の簡単な説明】
【0013】
【図1】パーティクルフローの一例を示す図である。
【図2】パーティクルフローの群化可視化を説明するための図である。
【図3】群化したパーティクルの可視化時の色分け規制(面の表裏による色分け)を示す図である。
【図4】群化したパーティクルの可視化時の色分け規制(ベクトルのねじれ量による色分け)を示す図である。
【図5】第1の実施形態における流体の流れのシミュレーションを実行するシミュレーションシステムの機能構成の一例を示す図である。
【図6】パーティクル位置テーブル4の一例を示す図である。
【図7】パーティクル位置速度テーブル6の一例を示す図である。
【図8】群化テーブル9の一例を示す図である。
【図9】パーティクルフローの群化可視化処理の全体フローを示す図である。
【図10】図9のS11の群化探索処理の詳細なフローを示す図である。
【図11】第1の実施形態における図9のS14の可視化処理の詳細なフローを示す図である。
【図12】第2の実施形態における群化したパーティクルの視覚化について説明するための図である。
【図13】第2の実施形態における流体の流れのシミュレーションを実行するシミュレーションシステムの機能構成の一例を示す図である。
【図14】線分描画テーブル21の一例を示す図である。
【図15】第2の実施形態における図9のS14の可視化処理の詳細なフローを示す図である。
【図16】シミュレーションシステムのハードウェア環境の構成ブロック図である。
【発明を実施するための形態】
【0014】
<第1の実施形態>
図1は、パーティクルフローの一例を示す。図1(A)は、隣接する2つの渦を形成するパーティクルフローを示す。曲線で描かれた矢印は、渦の方向を示す。それ以外の、小さな、直線で描かれた矢印は、パーティクルの向かう方向を示す。なお、渦の形状を認識しやすくするために、1対の曲線で描かれた矢印を上面及び底面とする略円筒形状を形成するための側面の輪郭線が、便宜上描かれている。
【0015】
パーティクルのみを表示させた場合、その表示内容に奥行き感がなく、またパーティクルの動きが分かりづらい。例えば、右側の渦では、パーティクルが反時計回りに回っている。左側の渦では、パーティクルが時計回りに回っている。
【0016】
もし、表示内容に奥行きを認識することができなければ、略円筒状の渦の外縁の前面側と背面側のパーティクルの動きを同一平面上での動きと認識してしまうおそれもある。この場合、渦形状を認識することができない。
【0017】
図1(B)は、複数発生したパーティクルフローを示す。図1(B)に示すように、パーティクルフローが複数発生すると、パーティクルだけでは領域を認識するのは難しい。
ところで、人間の認識の癖として多数の対象を「固まり」で理解しようとする傾向があり、心理学の分野で「群化」と呼ばれている。無秩序で複雑な配置をした点集合は観察者の脳内で自動的に固まりに分けられ、「群化されたある集団の中の1点」という形で認識される。例えば、上記の渦をまくパーティクルの可視化の例では、見たいパーティクルとその周辺に見えている類似の動きをなすパーティクルがあるならば、それらをひとつの固まりとして認識するのはごく自然なことである。
【0018】
そこで、複雑な動きをする多数のパーティクルから、位置的に近接し、かつ特定の速度で移動するパーティクル同士を群化して可視化する。これについて、図2を用いて説明する。
【0019】
図2は、パーティクルフローの群化可視化を説明するための図である。図2(A)は、図1(A)のパーティクルフローを群化可視化したものである。図2(B)は、図1(B)のパーティクルフローを群化可視化したものである。
【0020】
図2(A)(B)では、複雑な動きをする多数のパーティクルから、位置的に近接し、かつ特定の速度で移動するパーティクル同士を群化して面を生成し、さらに、渦外周の前面側、背面側、及び渦境界領域に応じて色分けしたものである。なお、図2(A)(B)は、後述する処理において、1ステップ分の面生成を行ったものである。
【0021】
図1(A)(B)に比べて、図2(A)(B)では、その表示内容に奥行き感があり、視覚的に、渦外周の前面側、背面側、及び渦間の境界領域にあるパーティクルの挙動が分かりやすい。なお、流れの特性に応じて任意ステップ分の面を生成すると、境界面を近似的に表現することもできる。
【0022】
このように、群化可視化により、パーティクルの「固まり」を面として表示することができるので、パーティクルの3次元的な挙動を追跡することが容易になる。
また、渦状に動くパーティクルの渦中心からの距離が同じならば、パーティクルの速度も、ある同程度になる。従って、ある速度しきい値でパーティクルを抽出することにより渦領域の外周部を動くパーティクルが抽出できる。その抽出したパーティクルのうち、位置的に近接し、かつ特定の速度で移動するパーティクル同士をつながりのあるように描画すると、細切れながらも全体で観察すると渦領域がその外縁に沿って円状に見える。よって、渦のような部位の形状を表示され、渦が認識しやすくなる。
【0023】
さらに、パーティクルフローの群化可視化について説明する。具体的なパーティクルフローの群化可視化方法として、一定の範囲にある2つのパーティクルがなす2つのベクトル間で2つの三角形を構成し、その三角形を描画することによって群化可視化が行われる。
【0024】
図3は、群化したパーティクルの可視化時の色分け規制(面の表裏による色分け)を示す。渦外周の前面側、背面側とでは、それぞれの面側の法線ベクトルの向きが異なる。このことに着目して、渦外周の前面側にある群化されたパーティクル同士が形成する面と、背面側にある群化されたパーティクル同士が形成する面とに対して、異なる色を着色する。
【0025】
例えば、位置的に近接し、かつ特定の速度で移動する、第1のパーティクルの速度ベクトルP0P1の始点及び終点と、第2のパーティクルの速度ベクトルQ0Q1の始点及び終点の、4つの点から2つの三角形状をした面を作成する。
【0026】
そして、三角形の面の法線ベクトルの向きが視線方向を向いている場合(すなわち、面の表側)(図3(A))と、逆に向いている場合(すなわち、面の裏側)(図3(B))で、それぞれの面に対して異なる色を着色して表示する(色分け)。
【0027】
図3(A)は、法線が手前向き(法線方向は線分P0P1を基準)である場合の面、すなわち渦外周部の前面側にある面を示す。図3(B)は、法線が向こう向き(法線方向は線分P0P1を基準)である場合の面、すなわち渦外周部の背面側にある面を示す。このように、法線方向による面の向きに応じて、色分けを行う。
これにより、図2に示すように、パーティクルが渦の手前側を通過しているか、奥側を通過しているかが認識しやすくなる。
【0028】
図4は、群化したパーティクルの可視化時の色分け規制(ベクトルのねじれ量による色分け)を示す。渦同士の境界にあるパーティクルは、近接したパーティクルがそれぞれ、別々の渦の中心へと分かれていくような挙動を示す。そのため、パーティクルの速度ベクトルの向きに着目すると互いにねじれた方向を向いている。
【0029】
そこで、第1のパーティクルの速度ベクトルP0P1と第2のパーティクルの速度ベクトルQ0Q1とが同一平面にある場合(図4(A))と、ねじれている場合(図4(B))とで異なる表示(たとえば色分けする)を施す。
【0030】
このねじれを検出する方法としては、例えば、次の方法が考えられる。まず、位置的に近接し、かつ特定の速度で移動する、第1のパーティクルの速度ベクトルP0P1の始点及び終点と、第2のパーティクルの速度ベクトルQ0Q1の始点及び終点の、4つの点から2つの三角形状をした面を作成する。そして、その三角形の面の法線方向を比較する。
【0031】
図4(A)に示すように、渦外周部では、三角形P0P1Q0の法線aと三角形Q0Q1P1の法線bの方向がそろっている。このことから、三角形P0P1Q0と三角形Q0Q1P1とはねじれていないことが分かる。一方、図4(B)に示すように、渦境界領域では法線aの方向と法線bの方向がねじれている。このことから、三角形P0P1Q0と三角形Q0Q1P1とはねじれていることが分かる。
【0032】
このように、2つの法線の角度に応じて、渦領域だけでなく渦同士の境界を示すことが可能である。
ちなみに、ここでは法線の方向を決めるルールとして、例えば「ベクトルP0P1とベクトルQ0Q1のうち上方にある(y軸で正の方向にある)ベクトルの方向に三角形の頂点をたどり、左手系で上を向く方向」といったように決定するものとした。
【0033】
従来、このような技術が存在しなかったのは、次の2つの理由が考えられる。まず、第1の理由として、大規模シミュレーションにより多くの渦領域を出力できるようになったのはここ数年であることが考えられる。第2の理由として、第1の理由のように大規模シミュレーションにより多くの渦領域を出力するような計算を行わない場合には、一般的に渦度による等値面表示、速度の絶対値による等値面表示、或いはλ2法などの渦領域抽出を使用することが考えられる。
【0034】
上記第1の理由について、例えば速度境界中の縦渦は計算機の発展によりようやく解析可能となってきている。この可視化では、例えば、多数の速度境界層中の縦渦が表示されており、縦渦はそれぞれ後流方向に移動し、且つ互い違いの回転方向を持っている。これまでは、これらの領域を包含するような非常に大きな渦領域について、上記第2の理由で挙げた方法など、或いはそれぞれの領域をベクトルの大きさによる等値面表示などによって可視化されてきた。
【0035】
一方、一般的なパーティクルフローによる可視化では、ユーザが空間内のパーティクル数や動き(時間ステップの刻み幅)を制御することで、結果的に複雑な流れを分かりやすく表現してきた。一つの粒子の回転運動を軌跡に加える手法も存在したが、空間に可視化オブジェクトを増やすだけの結果となって、やはりユーザがパラメータにより制御せざるを得なかった。
【0036】
本実施形態では、速度的に近く任意時間内では方向が似通っているパーティクルをグループ化することでパーティクル数を制御し、観察をより分かりやすくすることが可能である。また、対の粒子間に面を生成することで、離散的に境界形状を表現する。
【0037】
図5は、本実施形態における流体の流れのシミュレーションを実行するシミュレーションシステムの機能構成の一例を示す。シミュレーションシステムは、シミュレーション装置1、入力部2、表示装置15を含む。シミュレーション装置1は、シミュレーション結果格納部3、群化可視化実行部10、格納部11、パーティクルフロー描画処理部12、描画指示部13、グラフィック処理部14を含む。
【0038】
シミュレーション結果格納部3には、流体の流れについてのシミュレーション処理により算出される流体の時間毎の物理量がパーティクル位置結果として格納されている。格納部11には、その他のオブジェクトに関する情報が格納されている。
【0039】
群化可視化実行部10は、パーティクルフローの群化可視化を実行する。群化可視化実行部10は、速度計算部5、群化判定部7、群化可視化処理部9、格納部16を含む。格納部16には、パーティクル位置テーブル4、パーティクル位置速度テーブル6、群化テーブル8、及び後述する閾値や、レンダリング設定条件等の情報が格納されている。
【0040】
速度計算部5は、シミュレーション結果格納部3からシミュレーション結果を読み出し、そのシミュレーション結果に基づいて、パーティクルの位置情報をパーティクル位置テーブル4に格納する。そして、速度計算部5は、パーティクル位置テーブル4を用いてパーティクルの速度を算出する。パーティクル位置テーブル4については、図6を用いて説明する。
【0041】
図6は、パーティクル位置テーブル4の一例を示す。パーティクル位置テーブル4は2つ存在する。一方のパーティクル位置テーブル4は、時間T=t,t+1,t+2,・・・の場合にパーティクルの位置データが格納されるワークテーブルである。他方のパーティクル位置テーブル4は、時間T=t+1,t+2,t+3,・・・の場合にパーティクルの位置データが格納されるワークテーブルである。いずれのパーティクル位置テーブル4も、パーティクルを識別するパーティクルIDと、そのパーティクルIDに対応するパーティクルの位置(x,y,z)が格納される。では、図5の説明に戻る。
【0042】
速度計算部5は、2つのパーティクル位置テーブル4を用いて、パーティクルの速度を算出し、その結果をパーティクル位置速度テーブル6に格納する。パーティクル位置速度テーブル6については、図7を用いて説明する。
【0043】
図7は、パーティクル位置速度テーブル6の一例を示す。パーティクル位置速度テーブル6には、パーティクルID、そのパーティクルIDに対応するパーティクルの位置(x,y,z)及び速度ベクトル(速度x,速度y,速度z)が格納される。では、図5の説明に戻る。
【0044】
群化判定部7は、パーティクル位置速度テーブル6を用いて、どのパーティクルが対になって群化できるかを判定する。そして、群化判定部7は、その群化できると判定された一対のパーティクルのパーティクルIDを群化テーブル8に格納する。群化テーブル8について、図8を用いて説明する。
【0045】
図8は、群化テーブル9の一例を示す。群化テーブル9では、群化できると判定された一対のパーティクルのパーティクルID(パーティクルID1、パーティクルID2)と、その一対のパーティクルを識別する群化IDが格納されている。では、図5の説明に戻る。
【0046】
群化可視化処理部9は、群化テーブル9を用いて、群化されたパーティクルについて可視化処理を行う。これにより、群化描画データが生成される。
パーティクルフロー描画処理部12は、入力部2からの入力情報、シミュレーション結果、及び格納部11に格納されているその他のオブジェクトデータを基にして、通常のパーティクルフローを描画する処理を行う。これにより、パーティクルフロー描画データが生成される。
【0047】
描画調整部13は、群化可視化実行部10から出力された群化描画データと、パーティクルフロー描画処理部12から出力されたパーティクルフロー描画データとを重畳表示する調整を行う。
グラフィック処理部14は、描画調整部13により調整された描画データに対して、グラフィック処理を行い、表示装置15へ出力する。
【0048】
図9は、パーティクルフローの群化可視化処理の全体フローを示す。図9は、図5の群化可視化実行部10(速度計算部5、群化判定部7、群化可視化処理部9)で実行される処理フローを示す。
【0049】
速度計算部5は、まず時間tを0で初期化する(S1)。速度計算部5は、シミュレーション結果格納部3から、ある時間(この時間を、時間t=0とする)におけるパーティクルの位置を取得し、一方のパーティクル位置テーブル4へ格納する(S2)。
【0050】
速度計算部5は、時間tをインクリメントする(S3)。速度計算部5は、シミュレーション結果格納部3から、時間t=1におけるパーティクルの位置を取得し、他方のパーティクル位置テーブル4へ格納する(S4)。
【0051】
速度計算部5は、パーティクルの速度場を算出する(S5)。すなわち、速度計算部5は、2つのパーティクル位置テーブル4を用いて、Δt(Δt=1−0)でのパーティクル位置の移動量(Δx,Δy,Δz)を算出する。速度計算部5は、(パーティクル位置の移動量)/Δtより、パーティクルの速度を算出する。速度計算部5は、パーティクルIDと共に、時間t=1におけるパーティクルの位置と、その算出した速度を、パーティクル位置速度テーブル6に格納する。
【0052】
次に、群化判定部7は、パーティクル位置速度テーブル6に格納されたパーティクルについて、速さに関してフィルタリング処理を行う。すなわち、群化判定部7は、パーティクル位置速度テーブル6に格納されたパーティクルのうち、所定の速さの範囲外にあるパーティクルを削除し、所定の速さの範囲にあるパーティクルのみをパーティクル位置速度テーブル6に残す(S6)。
【0053】
群化判定部7は、S6でのフィルタリング処理後のパーティクル位置速度テーブル6に含まれるパーティクルのうち、任意のパーティクルに対してパーティクル番号n=1を割り当てる(S7)。以下、nが割り当てられたパーティクルを、対象パーティクルまたは対象パーティクルnという。
【0054】
群化判定部7は、その対象パーティクルがすでに群化されているかどうかを群化テーブル8を用いて判定する(S8)。対象パーティクルが、群化テーブル8の「パーティクルID1」または「パーティクルID2」に既に格納されている場合、群化判定部7は、対象パーティクルが群化されていると判定する。
【0055】
群化判定部7は、対象パーティクルが既に群化されている場合(S8で「Yes」)、対象パーティクルと対になっているパーティクルが現在時間においても、対象パーティクルの近傍にあるかどうかを判定する(S9)。すなわち、群化判定部7は、対象パーティクルと、その対象パーティクルと対になっているパーティクルとの距離Δdの値が閾値dqより小さいか否かを判定する。
【0056】
Δd<のdq場合(S9で「Yes」)、群化判定部7は、対象パーティクルと対になっているパーティクルが現在時間においても速さの値が対象パーティクルと近いかどうかを判定する(S10)。群化判定部7は、対象パーティクルと、その対象パーティクルと対になっているパーティクルとの速さの差Δvの値が閾値vqより小さいか否かを判定する。対象パーティクルと、その対象パーティクルと対になっているパーティクルとの速さの差Δvの値が閾値vqより小さい場合(S10で「No」)、S12へ進む。
【0057】
対象パーティクルが群化されていない場合(S8で「No」)、または対になるパーティクルが群化の対象から外れた場合(すなわち、Δd≧のdq(S9で「No」)もしくはΔv≧のvq(S10で「No」)の場合)、群化判定部7は次を行う。すなわち、群化判定部7は、対象パーティクルと対になるパーティクルを探索する(群化探索処理)(S11)。S11の群化探索処理については、後述する。
【0058】
S6でのフィルタリング処理後のパーティクル位置速度テーブル6に、未処理のパーティクルがある場合(S12で「Yes」)、群化判定部7は、次を行う。すなわち、群化判定部7は、nをインクリメントして(S13)、その未処理のパーティクルを対象パーティクルとしてS8−S11の処理を行う。
【0059】
S6でのフィルタリング処理後のパーティクル位置速度テーブル6に含まれる全てのパーティクルについて、S8−S11の処理が終わったら(S12で「No」)、群化可視化処理部9は、可視化処理を行う(S14)。S14の処理については、後述する。
【0060】
可視化処理(S14)の終了後、シミュレーション結果格納部3に次のt(すなわち、t+1)におけるシミュレーション結果があれば(S15で「Yes」)、群化可視化処理部9は、tをインクリメントし(S16)、S4−S14の処理を行う。
【0061】
なお、ループ処理(S4−S15)の度に、S4にて用いられるパーティクル位置テーブル4は交互に変更される。また、群化テーブル8は、tがインクリメントされる毎に書き換わる。
シミュレーション結果格納部3に格納された最終の時間についてのシミュレーション結果について処理を終えるまでS4−S14の処理を繰り返す。
【0062】
図10は、図9のS11の群化探索処理の詳細なフローを示す。群化判定部7は、まず探索領域を設定する(S21)。ここで、探索領域とは、対象パーティクルと対となるパーティクルを探索するための、対象パーティクルを中心とする3次元上の所定の探索範囲をいう。
【0063】
次に、群化判定部7は、S6でのフィルタリング処理後のパーティクル位置速度テーブル6に含まれるパーティクルのうち、対象パーティクルnとは異なる任意のパーティクルに対して、パーティクル番号m(m≠n)を設定する(S22)。対象パーティクルのパーティクル番号nが1でない限り、初期値として、m=1とする。対象パーティクルのパーティクル番号nが1の場合には、初期値として、m=2とする。なお、以下では、対象パーティクルに対して探索対象となるパーティクルのパーティクル番号mを有するパーティクルを、パーティクルmという。
【0064】
群化判定部7は、探索対象となるパーティクルmがすでに群化されているかどうかを群化テーブル8から判定する(S23)。すなわち、パーティクルmのパーティクル番号mが、群化テーブル8の「パーティクルID1」または「パーティクルID2」に存在する場合(S23で「Yes」)、群化判定部7は、パーティクルmが群化されていると判定する。
【0065】
パーティクルmが群化テーブル8に存在しない場合(S23で「No」)、群化判定部7は、パーティクルmが探索領域の内側にあるかどうかを判定する(S24)。すなわち、群化判定部7は、パーティクル位置速度テーブル6から、パーティクルmの位置情報(x,y,z)を取得し、その位置情報の示す位置が探索領域の範囲内にあるかを判定する。
【0066】
パーティクルmが探索領域の内側にあると判定された場合(S24で「Yes」)、群化判定部7は、パーティクルmの速さから対象パーティクルnの速さを差し引いて、パーティクルm,nの速さの差Δvを算出する。それから、群化判定部7は、パーティクルm,nの速さの差Δvの値が閾値vgよりも小さいか否かを判定する(S25)。
【0067】
Δv<vgの場合(S25で「Yes」)、群化判定部7は、そのパーティクルmが対象パーティクルnと対になるパーティクルであると判定する。この場合、群化判定部7は、パーティクルmのパーティクル番号mと対象パーティクルnのパーティクル番号nとを組にし、その組に群化IDを付与する。そして、群化判定部7は、群化IDとパーティクル番号m,nを群化テーブル8に格納する(S26)。
【0068】
一方、パーティクルmが群化テーブル8に存在する場合(S23で「Yes」)、パーティクルmが探索領域の内側にない場合(S24で「No」)、またはΔv≧vqの場合(S25で「No」)、群化判定部7は次を行う。すなわち、群化判定部7は、S6でのフィルタリング処理後のパーティクル位置速度テーブル6に含まれるパーティクルのうち、未処理のパーティクルが存在すれば(S27で「Yes」)、mをインクリメントして(S28)、S23−S26の処理を行う。なお、S28でインクリメントした結果、m=nとなる場合には、群化判定部7は、さらにmをインクリメントする。
【0069】
群化IDとパーティクル番号m,nを群化テーブル7に格納した場合(S26)、またはパーティクル位置速度テーブル6に次のパーティクルが存在しない場合、群化判定部7は、群化探索処理を終了する。
【0070】
図11は、第1の実施形態における図9のS14の可視化処理の詳細なフローを示す。本実施形態では、パーティクルをレンダリング(rendering)により可視化する。ここでいうレンダリングとは、所定方向から照明された3次元空間の物体を所定の視点で観察した場合に観察される3次元画像であって、影、色相、濃淡等を考慮した3次元画像を生成することをいう。
【0071】
群化可視化処理部9は、まず、シミュレーション装置1の格納部16から予め設定されたレンダリング設定条件を読み出す(S31)。レンダリング設定条件には、照明の方向、視点位置等の条件が含まれる。
【0072】
群化可視化処理部9は、2つのパーティクル位置テーブル4を用いて、Δtの間で移動した対象パーティクルnの位置についての速度ベクトルの始点をP0、終点をP1とする。ここで、始点P0は時間tのときの対象パーティクルnの位置であり、P1は時間t+1のときの対象パーティクルnの位置である。
【0073】
また、群化可視化処理部9は、2つのパーティクル位置テーブルを用いて、Δtの間で移動したパーティクルmの位置についての速度ベクトルの始点をQ0、終点をQ1とする。ここで、始点Q0は時間tのときのパーティクルmの位置であり、Q1は時間t+1のときのパーティクルmの位置である。
【0074】
群化可視化処理部9は、三角形P0P1Q0の法線aを算出する(S32)。また、群化可視化処理部9は、三角形Q0Q1P1の法線bを算出する(S33)。それから、群化可視化処理部9は、三角形P0P1Q0と三角形Q0Q1P1とを面として設定する(S34)。
【0075】
群化可視化処理部9は、法線ベクトルa,bのなす角φから、法線ベクトルa,bのねじれを判定する(S45)。角φが閾値φt以上の場合(S35で「No」)、群化可視化処理部9は、描画色C3に第3の色をセットする(S39)。ここで、描画色C3は、渦領域境界を表す描画色である(図4)。
【0076】
角φが閾値φtより小さい場合(S35で「Yes」)、群化可視化処理部9は、法線ベクトルaのz成分(az)の向きを判定する(S36)。法線ベクトルaのz成分(az)がaz≧0、すなわち正方向を向いていると判定された場合(S36で「Yes」)、群化可視化処理部9は、描画色C1に第1の色をセットする(S37)。ここで、描画色C1は、渦外縁を表す描画色であり、図3(A)で説明したように、三角形P0P1Q0のなす面の表側を判別するために用いられる。
【0077】
一方、法線ベクトルaのz成分(az)がaz<0、すなわち負方向を向いていると判定された場合(S36で「No」)、群化可視化処理部9は、描画色C2に第2の色をセットする(S38)。ここで、描画色C2は、渦外縁を表す描画色であり、図3(B)で説明したように、三角形P0P1Q0のなす面の裏側を判別するために用いられる。
【0078】
それから、群化可視化処理部9は、レンダリング設定条件に基づいて、レンダリングにより三角形P0P1Q0と三角形Q0Q1P1とを描画する。さらに、群化可視化処理部9は、描画色C1、描画色C2、または描画色C3を用いて、描画した三角形P0P1Q0がなす面と三角形Q0Q1P1がなす面に対して色付けを行う(S35)。すなわち、群化可視化処理部9は、照明の方向、視点位置、三角形P0P1Q0と三角形Q0Q1P1の位置及び形状に基づいて、レンダリングを行う。このとき、描画色C1に第1の色が設定されている場合、群化可視化処理部9は、三角形P0P1Q0がなす面と三角形Q0Q1P1がなす面に対して、第1の色を付与する。また、描画色C2に第2の色が設定されている場合、群化可視化処理部9は、三角形P0P1Q0がなす面と三角形Q0Q1P1がなす面に対して、第2の色を付与する。また、描画色C3に第3の色が設定されている場合、群化可視化処理部9は、三角形P0P1Q0がなす面と三角形Q0Q1P1がなす面に対して、第3の色を付与する。
【0079】
このようにして、群化可視化処理部9は、群化描画データを生成する。その結果、例えば、1ステップ分であれば、図2に示すような群化描画データを得ることができる。
なお、図11では、固定した視点位置から見える範囲で、三角形の面の表と裏に色を付与しているので、視点位置を移動させれば、再度S35−S39の処理を行って、描画色を付与する。しかしながら、レンダリングの設定環境に応じて、これに限定されず、固定した視点位置から見えない範囲においても、三角形の面の表と裏の両方に色を付与してもよい。
【0080】
本実施形態によれば、位置と速度の近いパーティクル同士がクラスタリング(群化、グルーピング)され、面として表示される。この群化表示によりパーティクルが固まりとして認識しやすくなる。また渦領域の外縁部と渦同士の境界部が表示されるので、誤認識を起こすことなく、渦状に移動するパーティクルを追跡することができる。
【0081】
また、S6のフィルタリング、S9,S10の閾値、S21の探索領域を調整することにより、群化の対象となるパーティクルを調整することができる。その結果、表示精度を調整することができる。
【0082】
<第2の実施形態>
本実施形態は、図9のS14の可視化処理の変形例である。第1の実施形態では、レンダリングによりパーティクルフローの視覚化を行った。それに対して、本実施形態では、位置と速度の近い2つのパーティクルの速度ベクトル間を複数の線分で描画し、その線分の集合体を面と見立てて視覚化を行う。本実施形態において、第1の実施形態と同様の構成については、同一の符号を付し、その説明を省略する。
【0083】
図12は、本実施形態における群化したパーティクルの視覚化について説明するための図である。本実施形態では、ある一定の範囲にあるパーティクルを2つで1組となし、その2つのパーティクル同士を結ぶ線分を考える。パーティクルの速度ベクトルP0P1,Q0Q1をそれぞれ、単位長さのベクトルに分割し、その単位長さのベクトルの始点(または終点)同士を結ぶ線分を描画する。双方のパーティクルの速度ベクトルの始点から終点に向かって、単位長さのベクトルの始点(または終点)を結んだ線分を順次描画する。すると、図12に示すように、線分の集合体が同一平面状に並ぶことにより、面をなす。これにより、2つのパーティクル間の群化可視化を行うことができる。
【0084】
図13は、本実施形態における流体の流れのシミュレーションを実行するシミュレーションシステムの機能構成の一例を示す。図13は、図5の群化可視化実行部10に線分描画テーブル21を追加したものである。群化可視化処理部9は、線分描画テーブル21を用いて、2つのパーティクル間での群化可視化を行う。
【0085】
図14は、線分描画テーブル21の一例を示す。線分描画テーブル21には、速度ベクトルP0P1(=vp)の、始点の座標P0=rpo=(rpox,rpoy,rpoz)、正規化したベクトルvp=rp=(rpx,rpy,rpz)、終点の座標P1=rp1=(rp1x,rp1y,rp1z)が格納される。また、線分描画テーブル21には、速度ベクトルQ0Q1(=vq)の、始点の座標Q0=rqo=(rqox,rqoy,rqoz)、正規化したベクトルvq=rq=(rqx,rqy,rqz)、終点の座標Q1=rq1=(rq1x,rq1y,rq1z)が格納される。
【0086】
図15は、図9のS14の可視化処理の詳細なフローを示す。群化可視化処理部9は、まず、線分描画テーブル21の設定を行う(S41)。具体的には、群化可視化処理部9は、2つのパーティクル位置テーブル4のうち、直近(T=t+1)にパーティクル位置が格納されたパーティクル位置テーブル4から対象パーティクルの位置P1(rpx,rpy,rpz)を取得する。そして、群化可視化処理部9は、その取得した位置P1(rpx,rpy,rpz)を線分描画テーブル21の「vp終点」に対応する位置x,y,zへ格納する。
【0087】
また、群化可視化処理部9は、他方(T=t)のパーティクル位置テーブル4から対象パーティクルの位置P0(rpox,rpoy,rpoz)を取得し、線分描画テーブル21の「vp始点」に対応する位置x,y,zへ格納する。
【0088】
さらに、群化可視化処理部9は、2つのパーティクル位置テーブル4から、対象パーティクルnの単位時間Δtでの位置の移動量(Δx,Δy,Δz)、すなわち速度ベクトルを算出する。群化可視化処理部9は、(Δx/|Δx|,Δy/|Δy|,Δz/|Δz|)により、その速度ベクトルを正規化する。群化可視化処理部9は、その正規化した速度ベクトルを線分描画テーブル21の「正規化したvp」に対応する位置x,y,zへ格納する。
【0089】
また、群化可視化処理部9は、2つのパーティクル位置テーブル4のうち、直近(T=t+1)にパーティクル位置が格納されたパーティクル位置テーブルからパーティクルmの位置Q1(rqx,rqy,rqz)を取得する。そして、群化可視化処理部9は、その取得した位置Q1(rqx,rqy,rqz)を線分描画テーブル21の「vq終点」に対応する位置x,y,zへ格納する。
【0090】
また、群化可視化処理部9は、他方(T=t)のパーティクル位置テーブル4からパーティクルmの位置Q0(rqox,rqoy,rqoz)を取得し、線分描画テーブル21の「vq始点」に対応する位置x,y,zへ格納する。
【0091】
さらに、群化可視化処理部9は、2つのパーティクル位置テーブル4から、パーティクルmの単位時間Δtでの位置の移動量(Δx,Δy,Δz)、すなわち速度ベクトルを算出する。群化可視化処理部9は、(Δx/|Δx|,Δy/|Δy|,Δz/|Δz|)により、その速度ベクトルを正規化する。群化可視化処理部9は、その正規化した速度ベクトルを線分描画テーブル21の「正規化したvq」に対応する位置x,y,zへ格納する。
【0092】
次に、群化可視化処理部9は、三角形P0P1Q0の法線aを算出する(S42)。また、群化可視化処理部9は、三角形Q0Q1P1の法線bを算出する(S43)。
群化可視化処理部9は、法線ベクトルa,bのなす角φから、法線ベクトルa,bのねじれを判定する(S44)。角φが閾値φt以上の場合(S44で「No」)、群化可視化処理部9は、描画色C3に第3の色をセットする(S48)。ここで、描画色C3は、渦領域境界を表す描画色である(図4)。
【0093】
角φが閾値φtより小さい場合(S44で「Yes」)、群化可視化処理部9は、法線ベクトルaのz成分(az)の向きを判定する(S45)。法線ベクトルaのz成分(az)がaz≧0、すなわち正方向を向いていると判定された場合(S45で「Yes」)、群化可視化処理部9は、描画色C1に第1の色をセットする(S46)。ここで、描画色C1は、渦外縁を表す描画色であり、図3(A)で説明したように、三角形P0P1Q0のなす面の表側を判別するために用いられる。
【0094】
一方、法線ベクトルaのz成分(az)がaz<0、すなわち負方向を向いていると判定された場合(S45で「No」)、群化可視化処理部9は、描画色C2に第2の色をセットする(S47)。ここで、描画色C2は、渦外縁を表す描画色であり、図3(B)で説明したように、三角形P0P1Q0のなす面の裏側を判別するために用いられる。
【0095】
本実施形態の可視化処理では、図12で示すように2つの速度ベクトルP0P1,Q0Q1の始点から終点へと向かう、正規化した速度ベクトルvp,vqの終点同士を線分で結ぶ描画処理を行う。そのため、群化可視化処理部9は、その描画点の位置を決定するカウンタiを0で初期化する(S49)。
【0096】
群化可視化処理部9は、線分描画テーブル21を読み込み(S50)、ベクトルvpの始点rpo=(rpox,rpoy,rpoz)、正規化したベクトルvp=(rpx,rpy,rpz)、ベクトルvpの終点rp1=(rp1x,rp1y,rp1z)を取得する。群化可視化処理部9は、さらに、ベクトルvpの始点rpoと終点rp1とから、ベクトルvpの長さを算出し、その算出した長さをLvpに代入する。また、群化可視化処理部9は、線分描画テーブル21を読み込み、ベクトルvqの始点rqo=(rqox,rqoy,rqoz)、正規化したベクトルvq=(rqx,rqy,rqz)を取得する。
【0097】
群化可視化処理部9は、rp=rp0+i×(正規化したベクトルvp)より、ベクトルvpの描画点rpを算出する(S51)。また、群化可視化処理部9は、rq=rq0+i×(正規化したベクトルvq)より、ベクトルvqの描画点rqを算出する(S52)。
【0098】
群化可視化処理部9は、描画色C1、描画色C2または描画色C3を用いて、算出した描画点rpと描画点rqを結ぶ線分rprqの描画を行う(S53)。すなわち、描画色C1に第1の色が設定されている場合、群化可視化処理部9は、第1の色を用いて、線分rprqを描画する。また、描画色C2に第2の色が設定されている場合、群化可視化処理部9は、第2の色を用いて、線分rprqを描画する。また、描画色C3に第3の色が設定されている場合、群化可視化処理部9は、第3の色を用いて、線分rprqを描画する。
【0099】
群化可視化処理部9は、ベクトルvpの長さ分(Lvp)に到達したかどうかを判定する(S54)。群化可視化処理部9は、双方のベクトルの単位長さ分だけ描画点を進める毎に線分rprqの描画を行い、ベクトルvpの長さ分(Lvp)だけ繰り返すと、図2の可視化を1組分行うことができる。群化可視化処理部9は、i<のLvp場合、カウンタiをインクリメントし、S51−S53の処理を繰り返す。これにより、位置と速度の近いパーティクルの速度ベクトル間を複数の線分で描画し、その線分の集合体を面と見立てて視覚化を行うことができる。
【0100】
上記の方法により、位置と速度の近いパーティクル間が複数の線分で結ばれることにより、この線分の集合体を面として見立てることができる。これにより、パーティクルが固まりとして認識しやすくなる。また渦領域の外縁部と渦同士の境界部が表示されるので、誤認識を起こすことなく渦状に移動するパーティクルを追跡することができる。
【0101】
また、S6のフィルタリング、S9,S10の閾値、S21の探索領域を調整することにより、群化の対象となるパーティクルを調整することができる。その結果、表示精度を調整することができる。
【0102】
図16は、シミュレーションシステムのハードウェア環境の構成ブロック図である。シミュレーション装置1は、CPU32、ROM33、RAM36、通信I/F34、記憶装置37、出力I/F31、入力I/F35、読み取り装置38、バス39、出力機器41、入力機器42によって構成されている。
【0103】
ここで、CPUは、中央演算装置を示す。ROMは、リードオンリメモリを示す。RAMは、ランダムアクセスメモリを示す。I/Fは、通信インターフェースを示す。バス39には、CPU32、ROM33、RAM36、通信I/F34、記憶装置37、出力I/F31、入力I/F35、及び読み取り装置38が接続されている。読み取り装置38は、可搬型記録媒体を読み出す装置である。出力機器41は、出力I/F31に接続されている。入力機器42は、入力I/F35に接続にされている。
【0104】
記憶装置37としては、ハードディスク、フラッシュメモリ、磁気ディスクなど様々な形式の記憶装置を使用することができる。
格納部11,16としての記憶装置37またはROM33には、例えば、上記第1または第2の実施形態で説明した処理を実現するプログラムが格納されている。また、記憶装置37またはROM33には、パーティクル位置テーブル4、パーティクル位置速度テーブル6、群化テーブル8、線分描画テーブル21、シミュレーション結果、閾値、レンダリング設定条件、その他のオブジェクトに関する情報等が格納されている。
【0105】
CPU82は、記憶装置87等に格納した上記第1または第2の実施形態で説明した処理を実現するプログラムを読み出し、当該プログラムを実行する。
第1または第2の実施形態で説明した処理を実現するプログラムは、プログラム提供者側から通信ネットワーク40、および通信I/F34を介して、例えば記憶装置37に格納してもよい。また、第1または第2の実施形態で説明した処理を実現するプログラムは、市販され、流通している可搬型記憶媒体に格納されていてもよい。この場合、この可搬型記憶媒体は読み取り装置38にセットされて、CPU32によってそのプログラムが読み出されて、実行されてもよい。可搬型記憶媒体としてはCD−ROM、フレキシブルディスク、光ディスク、光磁気ディスク、ICカード、USBメモリ装置など様々な形式の記憶媒体を使用することができる。このような記憶媒体に格納されたプログラムが読み取り装置38によって読み取られる。
【0106】
また、入力機器42には、キーボード、マウス、電子カメラ、ウェブカメラ、マイク、スキャナ、センサ、タブレットなどを用いることが可能である。また、出力機器41には、ディスプレイ、プリンタ、スピーカなどを用いることが可能である。また、ネットワーク40は、インターネット、LAN、WAN、専用線、有線、無線等の通信網であってよい。
【0107】
第1及び第2の実施形態におけるシミュレーション装置は、速度算出部、群化部、描画情報生成部を含む。
速度算出部は、流体の流れについてのシミュレーションにより算出されるパーティクルの時間毎の物理量に関するシミュレーション結果情報に基づいて、各位置における前記パーティクルの速度を算出する。例えば、速度計算部5は、速度算出部に含まれる。
【0108】
群化部は、前記パーティクルの位置に基づいて、2つの前記パーティクル間の距離を算出し、前記パーティクルの速度に基づいて、2つの前記パーティクル間の速度差を算出し、前記パーティクル間の距離の値が第1の閾値より小さく、かつ前記パーティクル間の速度差の値が第2の閾値より小さい場合、該2つのパーティクルを群化する。例えば、群化判定部7は、群化部に含まれる。
【0109】
描画情報生成部は、前記群化された2つのパーティクルの速度ベクトルに基づいて、前記群化された2つのパーティクルの挙動を示す表示オブジェクトを描画する描画情報を生成する。例えば、群化可視化処理部9は、描画情報生成部に含まれる。
【0110】
このように構成することにより、パーティクルフローの群化可視化により、パーティクルの3次元的な挙動を追跡することが容易になる。
前記描画情報生成部は、前記群化された2つのパーティクルの速度ベクトルのうち、一方のパーティクルの速度ベクトルの始点及び終点と、他方のパーティクルの速度ベクトル始点または終点とを頂点とする2つの三角形を生成する。それから、前記描画情報生成部は、該各三角形を形成する面の法線ベクトルを算出する。そして、前記描画情報生成部は、該法線ベクトルの向きまたは該2つの法線ベクトルのなす角度に応じて、前記表示オブジェクトの表示形態を変化させる。
【0111】
このように構成することにより、例えば、乱流におけるパーティクルの挙動を、容易に判別することができる。
また、前記描画情報生成部は、前記2つの法線ベクトルのなす角度の値が第3の閾値より小さく、かついずれかの法線ベクトルの所定方向の成分の向きが正の場合、前記表示オブジェクトに第1の色を付与する。また、前記描画情報生成部は、前記2つの法線ベクトルのなす角度の値が前記第3の閾値より小さく、かついずれかの法線ベクトルの所定方向の成分の向きが負の場合、前記表示オブジェクトに第2の色を付与する。また、前記描画情報生成部は、前記2つの法線ベクトルのなす角度の値が前記第3の閾値以上である場合、前記表示オブジェクトに第3の色を付与する。
【0112】
このように構成することにより、例えば、乱流における渦外周の手前側、奥側または渦間の境界を移動するパーティクルの挙動を、容易に判別することができる。
また、前記描画情報生成部は、レンダリングにより、前記三角形を形成する面を仮想的な3次元空間内に構成し、該三角形を形成する面に対して、前記第1の色、第2の色、または第3の色を付与することができる。
【0113】
このように構成することにより、レンダリングを用いて、群化された位置と速度の近いパーティクルの速度ベクトルにより形成される面に対して色付けを行うことができる。
また、前記描画情報生成部は、前記2つのパーティクルの速度ベクトルそれぞれを単位長さのベクトルに分割する。そして、前記描画情報生成部は、該分割した単位長さの2つのパーティクルの速度ベクトルの始点同士または終点同士を結ぶ線分を、前記第1の色、第2の色、または第3の色を用いて描画して、前記表示オブジェクトを生成する。
【0114】
このように構成することにより、位置と速度の近いパーティクル間が複数の線分で結ばれることにより、この線分の集合体を面として見立てることができる。
なお、第1及び第2の実施形態は、以上に述べた実施の形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
【0115】
上記実施形態に関し、更に以下の付記を開示する。
(付記1)
流体の流れについてのシミュレーションにより算出されるパーティクルの時間毎の物理量に関するシミュレーション結果情報に基づいて、各位置における前記パーティクルの速度を算出する速度算出部と、
前記パーティクルの位置に基づいて、2つの前記パーティクル間の距離を算出し、前記パーティクルの速度に基づいて、2つの前記パーティクル間の速度差を算出し、前記パーティクル間の距離の値が第1の閾値より小さく、かつ前記パーティクル間の速度差の値が第2の閾値より小さい場合、該2つのパーティクルを群化する群化部と、
前記群化された2つのパーティクルの速度ベクトルに基づいて、前記群化された2つのパーティクルの挙動を示す表示オブジェクトを描画する描画情報を生成する描画情報生成部と、
を備えることを特徴とするシミュレーション装置。
(付記2)
前記描画情報生成部は、前記群化された2つのパーティクルの速度ベクトルのうち、一方のパーティクルの速度ベクトルの始点及び終点と、他方のパーティクルの速度ベクトル始点または終点とを頂点とする2つの三角形を生成し、該各三角形を形成する面の法線ベクトルを算出し、該法線ベクトルの向きまたは該2つの法線ベクトルのなす角度に応じて、前記表示オブジェクトの表示形態を変化させる
ことを特徴とする付記1に記載のシミュレーション装置。
(付記3)
前記描画情報生成部は、前記2つの法線ベクトルのなす角度の値が第3の閾値より小さく、かついずれかの法線ベクトルの所定方向の成分の向きが正の場合、前記表示オブジェクトに第1の色を付与し、前記2つの法線ベクトルのなす角度の値が前記第3の閾値より小さく、かついずれかの法線ベクトルの所定方向の成分の向きが負の場合、前記表示オブジェクトに第2の色を付与し、前記2つの法線ベクトルのなす角度の値が前記第3の閾値以上である場合、前記表示オブジェクトに第3の色を付与する
ことを特徴とする付記2に記載のシミュレーション装置。
(付記4)
前記描画情報生成部は、レンダリングにより、前記三角形を形成する面を仮想的な3次元空間内に構成し、該三角形を形成する面に対して、前記第1の色、第2の色、または第3の色を付与する
ことを特徴とする付記3に記載のシミュレーション装置。
(付記5)
前記描画情報生成部は、前記2つのパーティクルの速度ベクトルそれぞれを単位長さのベクトルに分割し、該分割した単位長さの2つのパーティクルの速度ベクトルの始点同士または終点同士を結ぶ線分を、前記第1の色、第2の色、または第3の色を用いて描画して、前記表示オブジェクトを生成する
ことを特徴とする付記3に記載のシミュレーション装置。
(付記6)
流体の流れについてのシミュレーション結果を表示する処理をコンピュータに実行させるシミュレーション結果表示プログラムであって、
前記シミュレーションにより算出されるパーティクルの時間毎の物理量に関するシミュレーション結果情報に基づいて、各位置における前記パーティクルの速度を算出する速度算出処理と、
前記パーティクルの位置に基づいて、2つの前記パーティクル間の距離を算出し、前記パーティクルの速度に基づいて、2つの前記パーティクル間の速度差を算出し、前記パーティクル間の距離の値が第1の閾値より小さく、かつ前記パーティクル間の速度差の値が第2の閾値より小さい場合、該2つのパーティクルを群化する群化処理と、
前記群化された2つのパーティクルの速度ベクトルに基づいて、前記群化された2つのパーティクルの挙動を示す表示オブジェクトを描画する描画情報を生成する描画情報生成処理と、
をコンピュータに実行させることを特徴とするシミュレーション結果表示プログラム。
(付記7)
前記描画情報生成処理は、前記群化された2つのパーティクルの速度ベクトルのうち、一方のパーティクルの速度ベクトルの始点及び終点と、他方のパーティクルの速度ベクトル始点または終点とを頂点とする2つの三角形を生成し、該各三角形を形成する面の法線ベクトルを算出し、該法線ベクトルの向きまたは該2つの法線ベクトルのなす角度に応じて、前記表示オブジェクトの表示形態を変化させる
ことを特徴とする付記6に記載のシミュレーション結果表示プログラム。
(付記8)
前記描画情報生成処理は、前記2つの法線ベクトルのなす角度の値が第3の閾値より小さく、かついずれかの法線ベクトルの所定方向の成分の向きが正の場合、前記表示オブジェクトに第1の色を付与し、前記2つの法線ベクトルのなす角度の値が前記第3の閾値より小さく、かついずれかの法線ベクトルの所定方向の成分の向きが負の場合、前記表示オブジェクトに第2の色を付与し、前記2つの法線ベクトルのなす角度の値が前記第3の閾値以上である場合、前記表示オブジェクトに第3の色を付与する
ことを特徴とする付記7に記載のシミュレーション結果表示プログラム。
(付記9)
前記描画情報生成処理は、レンダリングにより、前記三角形を形成する面を仮想的な3次元空間内に構成し、該三角形を形成する面に対して、前記第1の色、第2の色、または第3の色を付与する
ことを特徴とする付記8に記載のシミュレーション結果表示プログラム。
(付記10)
前記描画情報生成処理は、前記2つのパーティクルの速度ベクトルそれぞれを単位長さのベクトルに分割し、該分割した単位長さの2つのパーティクルの速度ベクトルの始点同士または終点同士を結ぶ線分を、前記第1の色、第2の色、または第3の色を用いて描画して、前記表示オブジェクトを生成する
ことを特徴とする付記8に記載のシミュレーション結果表示プログラム。
(付記11)
コンピュータにより実行される、流体の流れについてのシミュレーション結果を表示する処理をコンピュータに実行させるシミュレーション結果表示方法であって、
前記コンピュータは、
前記シミュレーションにより算出されるパーティクルの時間毎の物理量に関するシミュレーション結果情報に基づいて、各位置における前記パーティクルの速度を算出し、
前記パーティクルの位置に基づいて、2つの前記パーティクル間の距離を算出し、前記パーティクルの速度に基づいて、2つの前記パーティクル間の速度差を算出し、前記パーティクル間の距離の値が第1の閾値より小さく、かつ前記パーティクル間の速度差の値が第2の閾値より小さい場合、該2つのパーティクルを群化し、
前記群化された2つのパーティクルの速度ベクトルに基づいて、前記群化された2つのパーティクルの挙動を示す表示オブジェクトを描画する描画情報を生成する、
ことを特徴とするシミュレーション結果表示方法。
(付記12)
前記表示オブジェクトを描画する描画情報を生成する場合、前記コンピュータは、前記群化された2つのパーティクルの速度ベクトルのうち、一方のパーティクルの速度ベクトルの始点及び終点と、他方のパーティクルの速度ベクトル始点または終点とを頂点とする2つの三角形を生成し、該各三角形を形成する面の法線ベクトルを算出し、該法線ベクトルの向きまたは該2つの法線ベクトルのなす角度に応じて、前記表示オブジェクトの表示形態を変化させる
ことを特徴とする付記11に記載のシミュレーション結果表示方法。
(付記13)
前記表示オブジェクトを描画する描画情報を生成する場合、前記コンピュータは、前記2つの法線ベクトルのなす角度の値が第3の閾値より小さく、かついずれかの法線ベクトルの所定方向の成分の向きが正の場合、前記表示オブジェクトに第1の色を付与し、前記2つの法線ベクトルのなす角度の値が前記第3の閾値より小さく、かついずれかの法線ベクトルの所定方向の成分の向きが負の場合、前記表示オブジェクトに第2の色を付与し、前記2つの法線ベクトルのなす角度の値が前記第3の閾値以上である場合、前記表示オブジェクトに第3の色を付与する
ことを特徴とする付記12に記載のシミュレーション結果表示方法。
(付記14)
前記表示オブジェクトを描画する描画情報を生成する場合、前記コンピュータは、レンダリングにより、前記三角形を形成する面を仮想的な3次元空間内に構成し、該三角形を形成する面に対して、前記第1の色、第2の色、または第3の色を付与する
ことを特徴とする付記13に記載のシミュレーション結果表示方法。
(付記15)
前記表示オブジェクトを描画する描画情報を生成する場合、前記コンピュータは、前記2つのパーティクルの速度ベクトルそれぞれを単位長さのベクトルに分割し、該分割した単位長さの2つのパーティクルの速度ベクトルの始点同士または終点同士を結ぶ線分を、前記第1の色、第2の色、または第3の色を用いて描画して、前記表示オブジェクトを生成する
ことを特徴とする付記13に記載のシミュレーション結果表示方法。
【符号の説明】
【0116】
1 シミュレーション装置
2 入力部
3 シミュレーション結果格納部
4 パーティクル位置テーブル
5 速度計算部
6 パーティクル位置速度テーブル
7 群化判定部
8 群化テーブル
9 群化可視化処理部
10 群化可視化実行部
11,16 格納部
12 パーティクルフロー描画処理部
13 描画指示部
14 グラフィック処理部
15 表示装置
21 線分描画テーブル
【技術分野】
【0001】
本明細書は、計算機による流体のシミュレーションの可視化技術に関する。
【背景技術】
【0002】
近年の計算機技術の進歩により、ある物理現象に対して大規模な数値計算を実行し、その結果を高解像度の表示機器に表示してその物理現象を理解する、という場面が増えてきた。更に、より多くのオブジェクトを表示機器に同時に表示し、かつそのオブジェクトの拡大・縮小や回転もインタラクティブに指定しつつ、リアルタイムに表示することができるようになった。
【0003】
一方、計算結果がベクトル場である場合の表示方法のひとつとして、パーティクルフローという手法がある。パーティクルフローとは、パーティクルという無質量の微小粒子が任意時間において置かれた周辺のベクトルの方向に沿って移動することで、流れを表現する手法である。計算機の性能向上によって、これまでより多数のパーティクルを広範囲に分布させることができるようになり、非常に細かい領域の流れを確認できるようになった。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平4−320589号公報
【特許文献2】特表2001−502097号公報
【特許文献3】特開2007−188502号公報
【非特許文献】
【0005】
【非特許文献1】Avizo Online Help、[on line]、[平成22年8月16日検索]、インターネット<http://docs.drabba.net/avizo/6.1.0/hxvectorfieldanimation/HxParticlesCompute.html>
【発明の概要】
【発明が解決しようとする課題】
【0006】
多数のパーティクルを同時に表示できたとしても、人間の視覚や認識には限界がある。例えば、乱流境界層内の縦渦をシミュレーションし、パーティクルフローによって結果を観察しようとする場合について考える。この場合、マクロ的には多数の渦を表現しないパーティクルが動く中において、いくつもの小さな渦内をパーティクルが回り、一方渦を渡り歩くように動くパーティクルも同時に表示される。結果としてパーティクルが複雑な動きを示すことになり、目で追えなくなって誤認識を起こす可能性が高い。
【0007】
よって、パーティクルの動きについては、パーティクルの複雑な振る舞いのため、3次元的な挙動を追跡することは難しかった。また、パーティクルは領域を示さないため、例えば渦領域のような部位の形状を表示することは難しかった。
【0008】
上記課題に鑑み、本明細書では、パーティクルの3次元的な挙動を追跡することができるシミュレーション装置、該プログラム、及び該方法を提供する。
【課題を解決するための手段】
【0009】
本明細書に記載のシミュレーション装置の一例は、速度算出部、群化部、描画情報生成部を含む。速度算出部は、流体の流れについてのシミュレーションにより算出されるパーティクルの時間毎の物理量に関するシミュレーション結果情報に基づいて、各位置における前記パーティクルの速度を算出する。
【0010】
群化部は、前記パーティクルの位置に基づいて、2つの前記パーティクル間の距離を算出する。群化部は、前記パーティクルの速度に基づいて、2つの前記パーティクル間の速度差を算出する。群化部は、前記パーティクル間の距離の値が第1の閾値より小さく、かつ前記パーティクル間の速度差の値が第2の閾値より小さい場合、該2つのパーティクルを群化する。
【0011】
描画情報生成部は、前記群化された2つのパーティクルの速度ベクトルに基づいて、前記群化された2つのパーティクルの挙動を示す表示オブジェクトを描画する描画情報を生成する。
【発明の効果】
【0012】
本明細書に記載のシミュレーション装置の一例によれば、パーティクルの3次元的な挙動を追跡することが容易になる。
【図面の簡単な説明】
【0013】
【図1】パーティクルフローの一例を示す図である。
【図2】パーティクルフローの群化可視化を説明するための図である。
【図3】群化したパーティクルの可視化時の色分け規制(面の表裏による色分け)を示す図である。
【図4】群化したパーティクルの可視化時の色分け規制(ベクトルのねじれ量による色分け)を示す図である。
【図5】第1の実施形態における流体の流れのシミュレーションを実行するシミュレーションシステムの機能構成の一例を示す図である。
【図6】パーティクル位置テーブル4の一例を示す図である。
【図7】パーティクル位置速度テーブル6の一例を示す図である。
【図8】群化テーブル9の一例を示す図である。
【図9】パーティクルフローの群化可視化処理の全体フローを示す図である。
【図10】図9のS11の群化探索処理の詳細なフローを示す図である。
【図11】第1の実施形態における図9のS14の可視化処理の詳細なフローを示す図である。
【図12】第2の実施形態における群化したパーティクルの視覚化について説明するための図である。
【図13】第2の実施形態における流体の流れのシミュレーションを実行するシミュレーションシステムの機能構成の一例を示す図である。
【図14】線分描画テーブル21の一例を示す図である。
【図15】第2の実施形態における図9のS14の可視化処理の詳細なフローを示す図である。
【図16】シミュレーションシステムのハードウェア環境の構成ブロック図である。
【発明を実施するための形態】
【0014】
<第1の実施形態>
図1は、パーティクルフローの一例を示す。図1(A)は、隣接する2つの渦を形成するパーティクルフローを示す。曲線で描かれた矢印は、渦の方向を示す。それ以外の、小さな、直線で描かれた矢印は、パーティクルの向かう方向を示す。なお、渦の形状を認識しやすくするために、1対の曲線で描かれた矢印を上面及び底面とする略円筒形状を形成するための側面の輪郭線が、便宜上描かれている。
【0015】
パーティクルのみを表示させた場合、その表示内容に奥行き感がなく、またパーティクルの動きが分かりづらい。例えば、右側の渦では、パーティクルが反時計回りに回っている。左側の渦では、パーティクルが時計回りに回っている。
【0016】
もし、表示内容に奥行きを認識することができなければ、略円筒状の渦の外縁の前面側と背面側のパーティクルの動きを同一平面上での動きと認識してしまうおそれもある。この場合、渦形状を認識することができない。
【0017】
図1(B)は、複数発生したパーティクルフローを示す。図1(B)に示すように、パーティクルフローが複数発生すると、パーティクルだけでは領域を認識するのは難しい。
ところで、人間の認識の癖として多数の対象を「固まり」で理解しようとする傾向があり、心理学の分野で「群化」と呼ばれている。無秩序で複雑な配置をした点集合は観察者の脳内で自動的に固まりに分けられ、「群化されたある集団の中の1点」という形で認識される。例えば、上記の渦をまくパーティクルの可視化の例では、見たいパーティクルとその周辺に見えている類似の動きをなすパーティクルがあるならば、それらをひとつの固まりとして認識するのはごく自然なことである。
【0018】
そこで、複雑な動きをする多数のパーティクルから、位置的に近接し、かつ特定の速度で移動するパーティクル同士を群化して可視化する。これについて、図2を用いて説明する。
【0019】
図2は、パーティクルフローの群化可視化を説明するための図である。図2(A)は、図1(A)のパーティクルフローを群化可視化したものである。図2(B)は、図1(B)のパーティクルフローを群化可視化したものである。
【0020】
図2(A)(B)では、複雑な動きをする多数のパーティクルから、位置的に近接し、かつ特定の速度で移動するパーティクル同士を群化して面を生成し、さらに、渦外周の前面側、背面側、及び渦境界領域に応じて色分けしたものである。なお、図2(A)(B)は、後述する処理において、1ステップ分の面生成を行ったものである。
【0021】
図1(A)(B)に比べて、図2(A)(B)では、その表示内容に奥行き感があり、視覚的に、渦外周の前面側、背面側、及び渦間の境界領域にあるパーティクルの挙動が分かりやすい。なお、流れの特性に応じて任意ステップ分の面を生成すると、境界面を近似的に表現することもできる。
【0022】
このように、群化可視化により、パーティクルの「固まり」を面として表示することができるので、パーティクルの3次元的な挙動を追跡することが容易になる。
また、渦状に動くパーティクルの渦中心からの距離が同じならば、パーティクルの速度も、ある同程度になる。従って、ある速度しきい値でパーティクルを抽出することにより渦領域の外周部を動くパーティクルが抽出できる。その抽出したパーティクルのうち、位置的に近接し、かつ特定の速度で移動するパーティクル同士をつながりのあるように描画すると、細切れながらも全体で観察すると渦領域がその外縁に沿って円状に見える。よって、渦のような部位の形状を表示され、渦が認識しやすくなる。
【0023】
さらに、パーティクルフローの群化可視化について説明する。具体的なパーティクルフローの群化可視化方法として、一定の範囲にある2つのパーティクルがなす2つのベクトル間で2つの三角形を構成し、その三角形を描画することによって群化可視化が行われる。
【0024】
図3は、群化したパーティクルの可視化時の色分け規制(面の表裏による色分け)を示す。渦外周の前面側、背面側とでは、それぞれの面側の法線ベクトルの向きが異なる。このことに着目して、渦外周の前面側にある群化されたパーティクル同士が形成する面と、背面側にある群化されたパーティクル同士が形成する面とに対して、異なる色を着色する。
【0025】
例えば、位置的に近接し、かつ特定の速度で移動する、第1のパーティクルの速度ベクトルP0P1の始点及び終点と、第2のパーティクルの速度ベクトルQ0Q1の始点及び終点の、4つの点から2つの三角形状をした面を作成する。
【0026】
そして、三角形の面の法線ベクトルの向きが視線方向を向いている場合(すなわち、面の表側)(図3(A))と、逆に向いている場合(すなわち、面の裏側)(図3(B))で、それぞれの面に対して異なる色を着色して表示する(色分け)。
【0027】
図3(A)は、法線が手前向き(法線方向は線分P0P1を基準)である場合の面、すなわち渦外周部の前面側にある面を示す。図3(B)は、法線が向こう向き(法線方向は線分P0P1を基準)である場合の面、すなわち渦外周部の背面側にある面を示す。このように、法線方向による面の向きに応じて、色分けを行う。
これにより、図2に示すように、パーティクルが渦の手前側を通過しているか、奥側を通過しているかが認識しやすくなる。
【0028】
図4は、群化したパーティクルの可視化時の色分け規制(ベクトルのねじれ量による色分け)を示す。渦同士の境界にあるパーティクルは、近接したパーティクルがそれぞれ、別々の渦の中心へと分かれていくような挙動を示す。そのため、パーティクルの速度ベクトルの向きに着目すると互いにねじれた方向を向いている。
【0029】
そこで、第1のパーティクルの速度ベクトルP0P1と第2のパーティクルの速度ベクトルQ0Q1とが同一平面にある場合(図4(A))と、ねじれている場合(図4(B))とで異なる表示(たとえば色分けする)を施す。
【0030】
このねじれを検出する方法としては、例えば、次の方法が考えられる。まず、位置的に近接し、かつ特定の速度で移動する、第1のパーティクルの速度ベクトルP0P1の始点及び終点と、第2のパーティクルの速度ベクトルQ0Q1の始点及び終点の、4つの点から2つの三角形状をした面を作成する。そして、その三角形の面の法線方向を比較する。
【0031】
図4(A)に示すように、渦外周部では、三角形P0P1Q0の法線aと三角形Q0Q1P1の法線bの方向がそろっている。このことから、三角形P0P1Q0と三角形Q0Q1P1とはねじれていないことが分かる。一方、図4(B)に示すように、渦境界領域では法線aの方向と法線bの方向がねじれている。このことから、三角形P0P1Q0と三角形Q0Q1P1とはねじれていることが分かる。
【0032】
このように、2つの法線の角度に応じて、渦領域だけでなく渦同士の境界を示すことが可能である。
ちなみに、ここでは法線の方向を決めるルールとして、例えば「ベクトルP0P1とベクトルQ0Q1のうち上方にある(y軸で正の方向にある)ベクトルの方向に三角形の頂点をたどり、左手系で上を向く方向」といったように決定するものとした。
【0033】
従来、このような技術が存在しなかったのは、次の2つの理由が考えられる。まず、第1の理由として、大規模シミュレーションにより多くの渦領域を出力できるようになったのはここ数年であることが考えられる。第2の理由として、第1の理由のように大規模シミュレーションにより多くの渦領域を出力するような計算を行わない場合には、一般的に渦度による等値面表示、速度の絶対値による等値面表示、或いはλ2法などの渦領域抽出を使用することが考えられる。
【0034】
上記第1の理由について、例えば速度境界中の縦渦は計算機の発展によりようやく解析可能となってきている。この可視化では、例えば、多数の速度境界層中の縦渦が表示されており、縦渦はそれぞれ後流方向に移動し、且つ互い違いの回転方向を持っている。これまでは、これらの領域を包含するような非常に大きな渦領域について、上記第2の理由で挙げた方法など、或いはそれぞれの領域をベクトルの大きさによる等値面表示などによって可視化されてきた。
【0035】
一方、一般的なパーティクルフローによる可視化では、ユーザが空間内のパーティクル数や動き(時間ステップの刻み幅)を制御することで、結果的に複雑な流れを分かりやすく表現してきた。一つの粒子の回転運動を軌跡に加える手法も存在したが、空間に可視化オブジェクトを増やすだけの結果となって、やはりユーザがパラメータにより制御せざるを得なかった。
【0036】
本実施形態では、速度的に近く任意時間内では方向が似通っているパーティクルをグループ化することでパーティクル数を制御し、観察をより分かりやすくすることが可能である。また、対の粒子間に面を生成することで、離散的に境界形状を表現する。
【0037】
図5は、本実施形態における流体の流れのシミュレーションを実行するシミュレーションシステムの機能構成の一例を示す。シミュレーションシステムは、シミュレーション装置1、入力部2、表示装置15を含む。シミュレーション装置1は、シミュレーション結果格納部3、群化可視化実行部10、格納部11、パーティクルフロー描画処理部12、描画指示部13、グラフィック処理部14を含む。
【0038】
シミュレーション結果格納部3には、流体の流れについてのシミュレーション処理により算出される流体の時間毎の物理量がパーティクル位置結果として格納されている。格納部11には、その他のオブジェクトに関する情報が格納されている。
【0039】
群化可視化実行部10は、パーティクルフローの群化可視化を実行する。群化可視化実行部10は、速度計算部5、群化判定部7、群化可視化処理部9、格納部16を含む。格納部16には、パーティクル位置テーブル4、パーティクル位置速度テーブル6、群化テーブル8、及び後述する閾値や、レンダリング設定条件等の情報が格納されている。
【0040】
速度計算部5は、シミュレーション結果格納部3からシミュレーション結果を読み出し、そのシミュレーション結果に基づいて、パーティクルの位置情報をパーティクル位置テーブル4に格納する。そして、速度計算部5は、パーティクル位置テーブル4を用いてパーティクルの速度を算出する。パーティクル位置テーブル4については、図6を用いて説明する。
【0041】
図6は、パーティクル位置テーブル4の一例を示す。パーティクル位置テーブル4は2つ存在する。一方のパーティクル位置テーブル4は、時間T=t,t+1,t+2,・・・の場合にパーティクルの位置データが格納されるワークテーブルである。他方のパーティクル位置テーブル4は、時間T=t+1,t+2,t+3,・・・の場合にパーティクルの位置データが格納されるワークテーブルである。いずれのパーティクル位置テーブル4も、パーティクルを識別するパーティクルIDと、そのパーティクルIDに対応するパーティクルの位置(x,y,z)が格納される。では、図5の説明に戻る。
【0042】
速度計算部5は、2つのパーティクル位置テーブル4を用いて、パーティクルの速度を算出し、その結果をパーティクル位置速度テーブル6に格納する。パーティクル位置速度テーブル6については、図7を用いて説明する。
【0043】
図7は、パーティクル位置速度テーブル6の一例を示す。パーティクル位置速度テーブル6には、パーティクルID、そのパーティクルIDに対応するパーティクルの位置(x,y,z)及び速度ベクトル(速度x,速度y,速度z)が格納される。では、図5の説明に戻る。
【0044】
群化判定部7は、パーティクル位置速度テーブル6を用いて、どのパーティクルが対になって群化できるかを判定する。そして、群化判定部7は、その群化できると判定された一対のパーティクルのパーティクルIDを群化テーブル8に格納する。群化テーブル8について、図8を用いて説明する。
【0045】
図8は、群化テーブル9の一例を示す。群化テーブル9では、群化できると判定された一対のパーティクルのパーティクルID(パーティクルID1、パーティクルID2)と、その一対のパーティクルを識別する群化IDが格納されている。では、図5の説明に戻る。
【0046】
群化可視化処理部9は、群化テーブル9を用いて、群化されたパーティクルについて可視化処理を行う。これにより、群化描画データが生成される。
パーティクルフロー描画処理部12は、入力部2からの入力情報、シミュレーション結果、及び格納部11に格納されているその他のオブジェクトデータを基にして、通常のパーティクルフローを描画する処理を行う。これにより、パーティクルフロー描画データが生成される。
【0047】
描画調整部13は、群化可視化実行部10から出力された群化描画データと、パーティクルフロー描画処理部12から出力されたパーティクルフロー描画データとを重畳表示する調整を行う。
グラフィック処理部14は、描画調整部13により調整された描画データに対して、グラフィック処理を行い、表示装置15へ出力する。
【0048】
図9は、パーティクルフローの群化可視化処理の全体フローを示す。図9は、図5の群化可視化実行部10(速度計算部5、群化判定部7、群化可視化処理部9)で実行される処理フローを示す。
【0049】
速度計算部5は、まず時間tを0で初期化する(S1)。速度計算部5は、シミュレーション結果格納部3から、ある時間(この時間を、時間t=0とする)におけるパーティクルの位置を取得し、一方のパーティクル位置テーブル4へ格納する(S2)。
【0050】
速度計算部5は、時間tをインクリメントする(S3)。速度計算部5は、シミュレーション結果格納部3から、時間t=1におけるパーティクルの位置を取得し、他方のパーティクル位置テーブル4へ格納する(S4)。
【0051】
速度計算部5は、パーティクルの速度場を算出する(S5)。すなわち、速度計算部5は、2つのパーティクル位置テーブル4を用いて、Δt(Δt=1−0)でのパーティクル位置の移動量(Δx,Δy,Δz)を算出する。速度計算部5は、(パーティクル位置の移動量)/Δtより、パーティクルの速度を算出する。速度計算部5は、パーティクルIDと共に、時間t=1におけるパーティクルの位置と、その算出した速度を、パーティクル位置速度テーブル6に格納する。
【0052】
次に、群化判定部7は、パーティクル位置速度テーブル6に格納されたパーティクルについて、速さに関してフィルタリング処理を行う。すなわち、群化判定部7は、パーティクル位置速度テーブル6に格納されたパーティクルのうち、所定の速さの範囲外にあるパーティクルを削除し、所定の速さの範囲にあるパーティクルのみをパーティクル位置速度テーブル6に残す(S6)。
【0053】
群化判定部7は、S6でのフィルタリング処理後のパーティクル位置速度テーブル6に含まれるパーティクルのうち、任意のパーティクルに対してパーティクル番号n=1を割り当てる(S7)。以下、nが割り当てられたパーティクルを、対象パーティクルまたは対象パーティクルnという。
【0054】
群化判定部7は、その対象パーティクルがすでに群化されているかどうかを群化テーブル8を用いて判定する(S8)。対象パーティクルが、群化テーブル8の「パーティクルID1」または「パーティクルID2」に既に格納されている場合、群化判定部7は、対象パーティクルが群化されていると判定する。
【0055】
群化判定部7は、対象パーティクルが既に群化されている場合(S8で「Yes」)、対象パーティクルと対になっているパーティクルが現在時間においても、対象パーティクルの近傍にあるかどうかを判定する(S9)。すなわち、群化判定部7は、対象パーティクルと、その対象パーティクルと対になっているパーティクルとの距離Δdの値が閾値dqより小さいか否かを判定する。
【0056】
Δd<のdq場合(S9で「Yes」)、群化判定部7は、対象パーティクルと対になっているパーティクルが現在時間においても速さの値が対象パーティクルと近いかどうかを判定する(S10)。群化判定部7は、対象パーティクルと、その対象パーティクルと対になっているパーティクルとの速さの差Δvの値が閾値vqより小さいか否かを判定する。対象パーティクルと、その対象パーティクルと対になっているパーティクルとの速さの差Δvの値が閾値vqより小さい場合(S10で「No」)、S12へ進む。
【0057】
対象パーティクルが群化されていない場合(S8で「No」)、または対になるパーティクルが群化の対象から外れた場合(すなわち、Δd≧のdq(S9で「No」)もしくはΔv≧のvq(S10で「No」)の場合)、群化判定部7は次を行う。すなわち、群化判定部7は、対象パーティクルと対になるパーティクルを探索する(群化探索処理)(S11)。S11の群化探索処理については、後述する。
【0058】
S6でのフィルタリング処理後のパーティクル位置速度テーブル6に、未処理のパーティクルがある場合(S12で「Yes」)、群化判定部7は、次を行う。すなわち、群化判定部7は、nをインクリメントして(S13)、その未処理のパーティクルを対象パーティクルとしてS8−S11の処理を行う。
【0059】
S6でのフィルタリング処理後のパーティクル位置速度テーブル6に含まれる全てのパーティクルについて、S8−S11の処理が終わったら(S12で「No」)、群化可視化処理部9は、可視化処理を行う(S14)。S14の処理については、後述する。
【0060】
可視化処理(S14)の終了後、シミュレーション結果格納部3に次のt(すなわち、t+1)におけるシミュレーション結果があれば(S15で「Yes」)、群化可視化処理部9は、tをインクリメントし(S16)、S4−S14の処理を行う。
【0061】
なお、ループ処理(S4−S15)の度に、S4にて用いられるパーティクル位置テーブル4は交互に変更される。また、群化テーブル8は、tがインクリメントされる毎に書き換わる。
シミュレーション結果格納部3に格納された最終の時間についてのシミュレーション結果について処理を終えるまでS4−S14の処理を繰り返す。
【0062】
図10は、図9のS11の群化探索処理の詳細なフローを示す。群化判定部7は、まず探索領域を設定する(S21)。ここで、探索領域とは、対象パーティクルと対となるパーティクルを探索するための、対象パーティクルを中心とする3次元上の所定の探索範囲をいう。
【0063】
次に、群化判定部7は、S6でのフィルタリング処理後のパーティクル位置速度テーブル6に含まれるパーティクルのうち、対象パーティクルnとは異なる任意のパーティクルに対して、パーティクル番号m(m≠n)を設定する(S22)。対象パーティクルのパーティクル番号nが1でない限り、初期値として、m=1とする。対象パーティクルのパーティクル番号nが1の場合には、初期値として、m=2とする。なお、以下では、対象パーティクルに対して探索対象となるパーティクルのパーティクル番号mを有するパーティクルを、パーティクルmという。
【0064】
群化判定部7は、探索対象となるパーティクルmがすでに群化されているかどうかを群化テーブル8から判定する(S23)。すなわち、パーティクルmのパーティクル番号mが、群化テーブル8の「パーティクルID1」または「パーティクルID2」に存在する場合(S23で「Yes」)、群化判定部7は、パーティクルmが群化されていると判定する。
【0065】
パーティクルmが群化テーブル8に存在しない場合(S23で「No」)、群化判定部7は、パーティクルmが探索領域の内側にあるかどうかを判定する(S24)。すなわち、群化判定部7は、パーティクル位置速度テーブル6から、パーティクルmの位置情報(x,y,z)を取得し、その位置情報の示す位置が探索領域の範囲内にあるかを判定する。
【0066】
パーティクルmが探索領域の内側にあると判定された場合(S24で「Yes」)、群化判定部7は、パーティクルmの速さから対象パーティクルnの速さを差し引いて、パーティクルm,nの速さの差Δvを算出する。それから、群化判定部7は、パーティクルm,nの速さの差Δvの値が閾値vgよりも小さいか否かを判定する(S25)。
【0067】
Δv<vgの場合(S25で「Yes」)、群化判定部7は、そのパーティクルmが対象パーティクルnと対になるパーティクルであると判定する。この場合、群化判定部7は、パーティクルmのパーティクル番号mと対象パーティクルnのパーティクル番号nとを組にし、その組に群化IDを付与する。そして、群化判定部7は、群化IDとパーティクル番号m,nを群化テーブル8に格納する(S26)。
【0068】
一方、パーティクルmが群化テーブル8に存在する場合(S23で「Yes」)、パーティクルmが探索領域の内側にない場合(S24で「No」)、またはΔv≧vqの場合(S25で「No」)、群化判定部7は次を行う。すなわち、群化判定部7は、S6でのフィルタリング処理後のパーティクル位置速度テーブル6に含まれるパーティクルのうち、未処理のパーティクルが存在すれば(S27で「Yes」)、mをインクリメントして(S28)、S23−S26の処理を行う。なお、S28でインクリメントした結果、m=nとなる場合には、群化判定部7は、さらにmをインクリメントする。
【0069】
群化IDとパーティクル番号m,nを群化テーブル7に格納した場合(S26)、またはパーティクル位置速度テーブル6に次のパーティクルが存在しない場合、群化判定部7は、群化探索処理を終了する。
【0070】
図11は、第1の実施形態における図9のS14の可視化処理の詳細なフローを示す。本実施形態では、パーティクルをレンダリング(rendering)により可視化する。ここでいうレンダリングとは、所定方向から照明された3次元空間の物体を所定の視点で観察した場合に観察される3次元画像であって、影、色相、濃淡等を考慮した3次元画像を生成することをいう。
【0071】
群化可視化処理部9は、まず、シミュレーション装置1の格納部16から予め設定されたレンダリング設定条件を読み出す(S31)。レンダリング設定条件には、照明の方向、視点位置等の条件が含まれる。
【0072】
群化可視化処理部9は、2つのパーティクル位置テーブル4を用いて、Δtの間で移動した対象パーティクルnの位置についての速度ベクトルの始点をP0、終点をP1とする。ここで、始点P0は時間tのときの対象パーティクルnの位置であり、P1は時間t+1のときの対象パーティクルnの位置である。
【0073】
また、群化可視化処理部9は、2つのパーティクル位置テーブルを用いて、Δtの間で移動したパーティクルmの位置についての速度ベクトルの始点をQ0、終点をQ1とする。ここで、始点Q0は時間tのときのパーティクルmの位置であり、Q1は時間t+1のときのパーティクルmの位置である。
【0074】
群化可視化処理部9は、三角形P0P1Q0の法線aを算出する(S32)。また、群化可視化処理部9は、三角形Q0Q1P1の法線bを算出する(S33)。それから、群化可視化処理部9は、三角形P0P1Q0と三角形Q0Q1P1とを面として設定する(S34)。
【0075】
群化可視化処理部9は、法線ベクトルa,bのなす角φから、法線ベクトルa,bのねじれを判定する(S45)。角φが閾値φt以上の場合(S35で「No」)、群化可視化処理部9は、描画色C3に第3の色をセットする(S39)。ここで、描画色C3は、渦領域境界を表す描画色である(図4)。
【0076】
角φが閾値φtより小さい場合(S35で「Yes」)、群化可視化処理部9は、法線ベクトルaのz成分(az)の向きを判定する(S36)。法線ベクトルaのz成分(az)がaz≧0、すなわち正方向を向いていると判定された場合(S36で「Yes」)、群化可視化処理部9は、描画色C1に第1の色をセットする(S37)。ここで、描画色C1は、渦外縁を表す描画色であり、図3(A)で説明したように、三角形P0P1Q0のなす面の表側を判別するために用いられる。
【0077】
一方、法線ベクトルaのz成分(az)がaz<0、すなわち負方向を向いていると判定された場合(S36で「No」)、群化可視化処理部9は、描画色C2に第2の色をセットする(S38)。ここで、描画色C2は、渦外縁を表す描画色であり、図3(B)で説明したように、三角形P0P1Q0のなす面の裏側を判別するために用いられる。
【0078】
それから、群化可視化処理部9は、レンダリング設定条件に基づいて、レンダリングにより三角形P0P1Q0と三角形Q0Q1P1とを描画する。さらに、群化可視化処理部9は、描画色C1、描画色C2、または描画色C3を用いて、描画した三角形P0P1Q0がなす面と三角形Q0Q1P1がなす面に対して色付けを行う(S35)。すなわち、群化可視化処理部9は、照明の方向、視点位置、三角形P0P1Q0と三角形Q0Q1P1の位置及び形状に基づいて、レンダリングを行う。このとき、描画色C1に第1の色が設定されている場合、群化可視化処理部9は、三角形P0P1Q0がなす面と三角形Q0Q1P1がなす面に対して、第1の色を付与する。また、描画色C2に第2の色が設定されている場合、群化可視化処理部9は、三角形P0P1Q0がなす面と三角形Q0Q1P1がなす面に対して、第2の色を付与する。また、描画色C3に第3の色が設定されている場合、群化可視化処理部9は、三角形P0P1Q0がなす面と三角形Q0Q1P1がなす面に対して、第3の色を付与する。
【0079】
このようにして、群化可視化処理部9は、群化描画データを生成する。その結果、例えば、1ステップ分であれば、図2に示すような群化描画データを得ることができる。
なお、図11では、固定した視点位置から見える範囲で、三角形の面の表と裏に色を付与しているので、視点位置を移動させれば、再度S35−S39の処理を行って、描画色を付与する。しかしながら、レンダリングの設定環境に応じて、これに限定されず、固定した視点位置から見えない範囲においても、三角形の面の表と裏の両方に色を付与してもよい。
【0080】
本実施形態によれば、位置と速度の近いパーティクル同士がクラスタリング(群化、グルーピング)され、面として表示される。この群化表示によりパーティクルが固まりとして認識しやすくなる。また渦領域の外縁部と渦同士の境界部が表示されるので、誤認識を起こすことなく、渦状に移動するパーティクルを追跡することができる。
【0081】
また、S6のフィルタリング、S9,S10の閾値、S21の探索領域を調整することにより、群化の対象となるパーティクルを調整することができる。その結果、表示精度を調整することができる。
【0082】
<第2の実施形態>
本実施形態は、図9のS14の可視化処理の変形例である。第1の実施形態では、レンダリングによりパーティクルフローの視覚化を行った。それに対して、本実施形態では、位置と速度の近い2つのパーティクルの速度ベクトル間を複数の線分で描画し、その線分の集合体を面と見立てて視覚化を行う。本実施形態において、第1の実施形態と同様の構成については、同一の符号を付し、その説明を省略する。
【0083】
図12は、本実施形態における群化したパーティクルの視覚化について説明するための図である。本実施形態では、ある一定の範囲にあるパーティクルを2つで1組となし、その2つのパーティクル同士を結ぶ線分を考える。パーティクルの速度ベクトルP0P1,Q0Q1をそれぞれ、単位長さのベクトルに分割し、その単位長さのベクトルの始点(または終点)同士を結ぶ線分を描画する。双方のパーティクルの速度ベクトルの始点から終点に向かって、単位長さのベクトルの始点(または終点)を結んだ線分を順次描画する。すると、図12に示すように、線分の集合体が同一平面状に並ぶことにより、面をなす。これにより、2つのパーティクル間の群化可視化を行うことができる。
【0084】
図13は、本実施形態における流体の流れのシミュレーションを実行するシミュレーションシステムの機能構成の一例を示す。図13は、図5の群化可視化実行部10に線分描画テーブル21を追加したものである。群化可視化処理部9は、線分描画テーブル21を用いて、2つのパーティクル間での群化可視化を行う。
【0085】
図14は、線分描画テーブル21の一例を示す。線分描画テーブル21には、速度ベクトルP0P1(=vp)の、始点の座標P0=rpo=(rpox,rpoy,rpoz)、正規化したベクトルvp=rp=(rpx,rpy,rpz)、終点の座標P1=rp1=(rp1x,rp1y,rp1z)が格納される。また、線分描画テーブル21には、速度ベクトルQ0Q1(=vq)の、始点の座標Q0=rqo=(rqox,rqoy,rqoz)、正規化したベクトルvq=rq=(rqx,rqy,rqz)、終点の座標Q1=rq1=(rq1x,rq1y,rq1z)が格納される。
【0086】
図15は、図9のS14の可視化処理の詳細なフローを示す。群化可視化処理部9は、まず、線分描画テーブル21の設定を行う(S41)。具体的には、群化可視化処理部9は、2つのパーティクル位置テーブル4のうち、直近(T=t+1)にパーティクル位置が格納されたパーティクル位置テーブル4から対象パーティクルの位置P1(rpx,rpy,rpz)を取得する。そして、群化可視化処理部9は、その取得した位置P1(rpx,rpy,rpz)を線分描画テーブル21の「vp終点」に対応する位置x,y,zへ格納する。
【0087】
また、群化可視化処理部9は、他方(T=t)のパーティクル位置テーブル4から対象パーティクルの位置P0(rpox,rpoy,rpoz)を取得し、線分描画テーブル21の「vp始点」に対応する位置x,y,zへ格納する。
【0088】
さらに、群化可視化処理部9は、2つのパーティクル位置テーブル4から、対象パーティクルnの単位時間Δtでの位置の移動量(Δx,Δy,Δz)、すなわち速度ベクトルを算出する。群化可視化処理部9は、(Δx/|Δx|,Δy/|Δy|,Δz/|Δz|)により、その速度ベクトルを正規化する。群化可視化処理部9は、その正規化した速度ベクトルを線分描画テーブル21の「正規化したvp」に対応する位置x,y,zへ格納する。
【0089】
また、群化可視化処理部9は、2つのパーティクル位置テーブル4のうち、直近(T=t+1)にパーティクル位置が格納されたパーティクル位置テーブルからパーティクルmの位置Q1(rqx,rqy,rqz)を取得する。そして、群化可視化処理部9は、その取得した位置Q1(rqx,rqy,rqz)を線分描画テーブル21の「vq終点」に対応する位置x,y,zへ格納する。
【0090】
また、群化可視化処理部9は、他方(T=t)のパーティクル位置テーブル4からパーティクルmの位置Q0(rqox,rqoy,rqoz)を取得し、線分描画テーブル21の「vq始点」に対応する位置x,y,zへ格納する。
【0091】
さらに、群化可視化処理部9は、2つのパーティクル位置テーブル4から、パーティクルmの単位時間Δtでの位置の移動量(Δx,Δy,Δz)、すなわち速度ベクトルを算出する。群化可視化処理部9は、(Δx/|Δx|,Δy/|Δy|,Δz/|Δz|)により、その速度ベクトルを正規化する。群化可視化処理部9は、その正規化した速度ベクトルを線分描画テーブル21の「正規化したvq」に対応する位置x,y,zへ格納する。
【0092】
次に、群化可視化処理部9は、三角形P0P1Q0の法線aを算出する(S42)。また、群化可視化処理部9は、三角形Q0Q1P1の法線bを算出する(S43)。
群化可視化処理部9は、法線ベクトルa,bのなす角φから、法線ベクトルa,bのねじれを判定する(S44)。角φが閾値φt以上の場合(S44で「No」)、群化可視化処理部9は、描画色C3に第3の色をセットする(S48)。ここで、描画色C3は、渦領域境界を表す描画色である(図4)。
【0093】
角φが閾値φtより小さい場合(S44で「Yes」)、群化可視化処理部9は、法線ベクトルaのz成分(az)の向きを判定する(S45)。法線ベクトルaのz成分(az)がaz≧0、すなわち正方向を向いていると判定された場合(S45で「Yes」)、群化可視化処理部9は、描画色C1に第1の色をセットする(S46)。ここで、描画色C1は、渦外縁を表す描画色であり、図3(A)で説明したように、三角形P0P1Q0のなす面の表側を判別するために用いられる。
【0094】
一方、法線ベクトルaのz成分(az)がaz<0、すなわち負方向を向いていると判定された場合(S45で「No」)、群化可視化処理部9は、描画色C2に第2の色をセットする(S47)。ここで、描画色C2は、渦外縁を表す描画色であり、図3(B)で説明したように、三角形P0P1Q0のなす面の裏側を判別するために用いられる。
【0095】
本実施形態の可視化処理では、図12で示すように2つの速度ベクトルP0P1,Q0Q1の始点から終点へと向かう、正規化した速度ベクトルvp,vqの終点同士を線分で結ぶ描画処理を行う。そのため、群化可視化処理部9は、その描画点の位置を決定するカウンタiを0で初期化する(S49)。
【0096】
群化可視化処理部9は、線分描画テーブル21を読み込み(S50)、ベクトルvpの始点rpo=(rpox,rpoy,rpoz)、正規化したベクトルvp=(rpx,rpy,rpz)、ベクトルvpの終点rp1=(rp1x,rp1y,rp1z)を取得する。群化可視化処理部9は、さらに、ベクトルvpの始点rpoと終点rp1とから、ベクトルvpの長さを算出し、その算出した長さをLvpに代入する。また、群化可視化処理部9は、線分描画テーブル21を読み込み、ベクトルvqの始点rqo=(rqox,rqoy,rqoz)、正規化したベクトルvq=(rqx,rqy,rqz)を取得する。
【0097】
群化可視化処理部9は、rp=rp0+i×(正規化したベクトルvp)より、ベクトルvpの描画点rpを算出する(S51)。また、群化可視化処理部9は、rq=rq0+i×(正規化したベクトルvq)より、ベクトルvqの描画点rqを算出する(S52)。
【0098】
群化可視化処理部9は、描画色C1、描画色C2または描画色C3を用いて、算出した描画点rpと描画点rqを結ぶ線分rprqの描画を行う(S53)。すなわち、描画色C1に第1の色が設定されている場合、群化可視化処理部9は、第1の色を用いて、線分rprqを描画する。また、描画色C2に第2の色が設定されている場合、群化可視化処理部9は、第2の色を用いて、線分rprqを描画する。また、描画色C3に第3の色が設定されている場合、群化可視化処理部9は、第3の色を用いて、線分rprqを描画する。
【0099】
群化可視化処理部9は、ベクトルvpの長さ分(Lvp)に到達したかどうかを判定する(S54)。群化可視化処理部9は、双方のベクトルの単位長さ分だけ描画点を進める毎に線分rprqの描画を行い、ベクトルvpの長さ分(Lvp)だけ繰り返すと、図2の可視化を1組分行うことができる。群化可視化処理部9は、i<のLvp場合、カウンタiをインクリメントし、S51−S53の処理を繰り返す。これにより、位置と速度の近いパーティクルの速度ベクトル間を複数の線分で描画し、その線分の集合体を面と見立てて視覚化を行うことができる。
【0100】
上記の方法により、位置と速度の近いパーティクル間が複数の線分で結ばれることにより、この線分の集合体を面として見立てることができる。これにより、パーティクルが固まりとして認識しやすくなる。また渦領域の外縁部と渦同士の境界部が表示されるので、誤認識を起こすことなく渦状に移動するパーティクルを追跡することができる。
【0101】
また、S6のフィルタリング、S9,S10の閾値、S21の探索領域を調整することにより、群化の対象となるパーティクルを調整することができる。その結果、表示精度を調整することができる。
【0102】
図16は、シミュレーションシステムのハードウェア環境の構成ブロック図である。シミュレーション装置1は、CPU32、ROM33、RAM36、通信I/F34、記憶装置37、出力I/F31、入力I/F35、読み取り装置38、バス39、出力機器41、入力機器42によって構成されている。
【0103】
ここで、CPUは、中央演算装置を示す。ROMは、リードオンリメモリを示す。RAMは、ランダムアクセスメモリを示す。I/Fは、通信インターフェースを示す。バス39には、CPU32、ROM33、RAM36、通信I/F34、記憶装置37、出力I/F31、入力I/F35、及び読み取り装置38が接続されている。読み取り装置38は、可搬型記録媒体を読み出す装置である。出力機器41は、出力I/F31に接続されている。入力機器42は、入力I/F35に接続にされている。
【0104】
記憶装置37としては、ハードディスク、フラッシュメモリ、磁気ディスクなど様々な形式の記憶装置を使用することができる。
格納部11,16としての記憶装置37またはROM33には、例えば、上記第1または第2の実施形態で説明した処理を実現するプログラムが格納されている。また、記憶装置37またはROM33には、パーティクル位置テーブル4、パーティクル位置速度テーブル6、群化テーブル8、線分描画テーブル21、シミュレーション結果、閾値、レンダリング設定条件、その他のオブジェクトに関する情報等が格納されている。
【0105】
CPU82は、記憶装置87等に格納した上記第1または第2の実施形態で説明した処理を実現するプログラムを読み出し、当該プログラムを実行する。
第1または第2の実施形態で説明した処理を実現するプログラムは、プログラム提供者側から通信ネットワーク40、および通信I/F34を介して、例えば記憶装置37に格納してもよい。また、第1または第2の実施形態で説明した処理を実現するプログラムは、市販され、流通している可搬型記憶媒体に格納されていてもよい。この場合、この可搬型記憶媒体は読み取り装置38にセットされて、CPU32によってそのプログラムが読み出されて、実行されてもよい。可搬型記憶媒体としてはCD−ROM、フレキシブルディスク、光ディスク、光磁気ディスク、ICカード、USBメモリ装置など様々な形式の記憶媒体を使用することができる。このような記憶媒体に格納されたプログラムが読み取り装置38によって読み取られる。
【0106】
また、入力機器42には、キーボード、マウス、電子カメラ、ウェブカメラ、マイク、スキャナ、センサ、タブレットなどを用いることが可能である。また、出力機器41には、ディスプレイ、プリンタ、スピーカなどを用いることが可能である。また、ネットワーク40は、インターネット、LAN、WAN、専用線、有線、無線等の通信網であってよい。
【0107】
第1及び第2の実施形態におけるシミュレーション装置は、速度算出部、群化部、描画情報生成部を含む。
速度算出部は、流体の流れについてのシミュレーションにより算出されるパーティクルの時間毎の物理量に関するシミュレーション結果情報に基づいて、各位置における前記パーティクルの速度を算出する。例えば、速度計算部5は、速度算出部に含まれる。
【0108】
群化部は、前記パーティクルの位置に基づいて、2つの前記パーティクル間の距離を算出し、前記パーティクルの速度に基づいて、2つの前記パーティクル間の速度差を算出し、前記パーティクル間の距離の値が第1の閾値より小さく、かつ前記パーティクル間の速度差の値が第2の閾値より小さい場合、該2つのパーティクルを群化する。例えば、群化判定部7は、群化部に含まれる。
【0109】
描画情報生成部は、前記群化された2つのパーティクルの速度ベクトルに基づいて、前記群化された2つのパーティクルの挙動を示す表示オブジェクトを描画する描画情報を生成する。例えば、群化可視化処理部9は、描画情報生成部に含まれる。
【0110】
このように構成することにより、パーティクルフローの群化可視化により、パーティクルの3次元的な挙動を追跡することが容易になる。
前記描画情報生成部は、前記群化された2つのパーティクルの速度ベクトルのうち、一方のパーティクルの速度ベクトルの始点及び終点と、他方のパーティクルの速度ベクトル始点または終点とを頂点とする2つの三角形を生成する。それから、前記描画情報生成部は、該各三角形を形成する面の法線ベクトルを算出する。そして、前記描画情報生成部は、該法線ベクトルの向きまたは該2つの法線ベクトルのなす角度に応じて、前記表示オブジェクトの表示形態を変化させる。
【0111】
このように構成することにより、例えば、乱流におけるパーティクルの挙動を、容易に判別することができる。
また、前記描画情報生成部は、前記2つの法線ベクトルのなす角度の値が第3の閾値より小さく、かついずれかの法線ベクトルの所定方向の成分の向きが正の場合、前記表示オブジェクトに第1の色を付与する。また、前記描画情報生成部は、前記2つの法線ベクトルのなす角度の値が前記第3の閾値より小さく、かついずれかの法線ベクトルの所定方向の成分の向きが負の場合、前記表示オブジェクトに第2の色を付与する。また、前記描画情報生成部は、前記2つの法線ベクトルのなす角度の値が前記第3の閾値以上である場合、前記表示オブジェクトに第3の色を付与する。
【0112】
このように構成することにより、例えば、乱流における渦外周の手前側、奥側または渦間の境界を移動するパーティクルの挙動を、容易に判別することができる。
また、前記描画情報生成部は、レンダリングにより、前記三角形を形成する面を仮想的な3次元空間内に構成し、該三角形を形成する面に対して、前記第1の色、第2の色、または第3の色を付与することができる。
【0113】
このように構成することにより、レンダリングを用いて、群化された位置と速度の近いパーティクルの速度ベクトルにより形成される面に対して色付けを行うことができる。
また、前記描画情報生成部は、前記2つのパーティクルの速度ベクトルそれぞれを単位長さのベクトルに分割する。そして、前記描画情報生成部は、該分割した単位長さの2つのパーティクルの速度ベクトルの始点同士または終点同士を結ぶ線分を、前記第1の色、第2の色、または第3の色を用いて描画して、前記表示オブジェクトを生成する。
【0114】
このように構成することにより、位置と速度の近いパーティクル間が複数の線分で結ばれることにより、この線分の集合体を面として見立てることができる。
なお、第1及び第2の実施形態は、以上に述べた実施の形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
【0115】
上記実施形態に関し、更に以下の付記を開示する。
(付記1)
流体の流れについてのシミュレーションにより算出されるパーティクルの時間毎の物理量に関するシミュレーション結果情報に基づいて、各位置における前記パーティクルの速度を算出する速度算出部と、
前記パーティクルの位置に基づいて、2つの前記パーティクル間の距離を算出し、前記パーティクルの速度に基づいて、2つの前記パーティクル間の速度差を算出し、前記パーティクル間の距離の値が第1の閾値より小さく、かつ前記パーティクル間の速度差の値が第2の閾値より小さい場合、該2つのパーティクルを群化する群化部と、
前記群化された2つのパーティクルの速度ベクトルに基づいて、前記群化された2つのパーティクルの挙動を示す表示オブジェクトを描画する描画情報を生成する描画情報生成部と、
を備えることを特徴とするシミュレーション装置。
(付記2)
前記描画情報生成部は、前記群化された2つのパーティクルの速度ベクトルのうち、一方のパーティクルの速度ベクトルの始点及び終点と、他方のパーティクルの速度ベクトル始点または終点とを頂点とする2つの三角形を生成し、該各三角形を形成する面の法線ベクトルを算出し、該法線ベクトルの向きまたは該2つの法線ベクトルのなす角度に応じて、前記表示オブジェクトの表示形態を変化させる
ことを特徴とする付記1に記載のシミュレーション装置。
(付記3)
前記描画情報生成部は、前記2つの法線ベクトルのなす角度の値が第3の閾値より小さく、かついずれかの法線ベクトルの所定方向の成分の向きが正の場合、前記表示オブジェクトに第1の色を付与し、前記2つの法線ベクトルのなす角度の値が前記第3の閾値より小さく、かついずれかの法線ベクトルの所定方向の成分の向きが負の場合、前記表示オブジェクトに第2の色を付与し、前記2つの法線ベクトルのなす角度の値が前記第3の閾値以上である場合、前記表示オブジェクトに第3の色を付与する
ことを特徴とする付記2に記載のシミュレーション装置。
(付記4)
前記描画情報生成部は、レンダリングにより、前記三角形を形成する面を仮想的な3次元空間内に構成し、該三角形を形成する面に対して、前記第1の色、第2の色、または第3の色を付与する
ことを特徴とする付記3に記載のシミュレーション装置。
(付記5)
前記描画情報生成部は、前記2つのパーティクルの速度ベクトルそれぞれを単位長さのベクトルに分割し、該分割した単位長さの2つのパーティクルの速度ベクトルの始点同士または終点同士を結ぶ線分を、前記第1の色、第2の色、または第3の色を用いて描画して、前記表示オブジェクトを生成する
ことを特徴とする付記3に記載のシミュレーション装置。
(付記6)
流体の流れについてのシミュレーション結果を表示する処理をコンピュータに実行させるシミュレーション結果表示プログラムであって、
前記シミュレーションにより算出されるパーティクルの時間毎の物理量に関するシミュレーション結果情報に基づいて、各位置における前記パーティクルの速度を算出する速度算出処理と、
前記パーティクルの位置に基づいて、2つの前記パーティクル間の距離を算出し、前記パーティクルの速度に基づいて、2つの前記パーティクル間の速度差を算出し、前記パーティクル間の距離の値が第1の閾値より小さく、かつ前記パーティクル間の速度差の値が第2の閾値より小さい場合、該2つのパーティクルを群化する群化処理と、
前記群化された2つのパーティクルの速度ベクトルに基づいて、前記群化された2つのパーティクルの挙動を示す表示オブジェクトを描画する描画情報を生成する描画情報生成処理と、
をコンピュータに実行させることを特徴とするシミュレーション結果表示プログラム。
(付記7)
前記描画情報生成処理は、前記群化された2つのパーティクルの速度ベクトルのうち、一方のパーティクルの速度ベクトルの始点及び終点と、他方のパーティクルの速度ベクトル始点または終点とを頂点とする2つの三角形を生成し、該各三角形を形成する面の法線ベクトルを算出し、該法線ベクトルの向きまたは該2つの法線ベクトルのなす角度に応じて、前記表示オブジェクトの表示形態を変化させる
ことを特徴とする付記6に記載のシミュレーション結果表示プログラム。
(付記8)
前記描画情報生成処理は、前記2つの法線ベクトルのなす角度の値が第3の閾値より小さく、かついずれかの法線ベクトルの所定方向の成分の向きが正の場合、前記表示オブジェクトに第1の色を付与し、前記2つの法線ベクトルのなす角度の値が前記第3の閾値より小さく、かついずれかの法線ベクトルの所定方向の成分の向きが負の場合、前記表示オブジェクトに第2の色を付与し、前記2つの法線ベクトルのなす角度の値が前記第3の閾値以上である場合、前記表示オブジェクトに第3の色を付与する
ことを特徴とする付記7に記載のシミュレーション結果表示プログラム。
(付記9)
前記描画情報生成処理は、レンダリングにより、前記三角形を形成する面を仮想的な3次元空間内に構成し、該三角形を形成する面に対して、前記第1の色、第2の色、または第3の色を付与する
ことを特徴とする付記8に記載のシミュレーション結果表示プログラム。
(付記10)
前記描画情報生成処理は、前記2つのパーティクルの速度ベクトルそれぞれを単位長さのベクトルに分割し、該分割した単位長さの2つのパーティクルの速度ベクトルの始点同士または終点同士を結ぶ線分を、前記第1の色、第2の色、または第3の色を用いて描画して、前記表示オブジェクトを生成する
ことを特徴とする付記8に記載のシミュレーション結果表示プログラム。
(付記11)
コンピュータにより実行される、流体の流れについてのシミュレーション結果を表示する処理をコンピュータに実行させるシミュレーション結果表示方法であって、
前記コンピュータは、
前記シミュレーションにより算出されるパーティクルの時間毎の物理量に関するシミュレーション結果情報に基づいて、各位置における前記パーティクルの速度を算出し、
前記パーティクルの位置に基づいて、2つの前記パーティクル間の距離を算出し、前記パーティクルの速度に基づいて、2つの前記パーティクル間の速度差を算出し、前記パーティクル間の距離の値が第1の閾値より小さく、かつ前記パーティクル間の速度差の値が第2の閾値より小さい場合、該2つのパーティクルを群化し、
前記群化された2つのパーティクルの速度ベクトルに基づいて、前記群化された2つのパーティクルの挙動を示す表示オブジェクトを描画する描画情報を生成する、
ことを特徴とするシミュレーション結果表示方法。
(付記12)
前記表示オブジェクトを描画する描画情報を生成する場合、前記コンピュータは、前記群化された2つのパーティクルの速度ベクトルのうち、一方のパーティクルの速度ベクトルの始点及び終点と、他方のパーティクルの速度ベクトル始点または終点とを頂点とする2つの三角形を生成し、該各三角形を形成する面の法線ベクトルを算出し、該法線ベクトルの向きまたは該2つの法線ベクトルのなす角度に応じて、前記表示オブジェクトの表示形態を変化させる
ことを特徴とする付記11に記載のシミュレーション結果表示方法。
(付記13)
前記表示オブジェクトを描画する描画情報を生成する場合、前記コンピュータは、前記2つの法線ベクトルのなす角度の値が第3の閾値より小さく、かついずれかの法線ベクトルの所定方向の成分の向きが正の場合、前記表示オブジェクトに第1の色を付与し、前記2つの法線ベクトルのなす角度の値が前記第3の閾値より小さく、かついずれかの法線ベクトルの所定方向の成分の向きが負の場合、前記表示オブジェクトに第2の色を付与し、前記2つの法線ベクトルのなす角度の値が前記第3の閾値以上である場合、前記表示オブジェクトに第3の色を付与する
ことを特徴とする付記12に記載のシミュレーション結果表示方法。
(付記14)
前記表示オブジェクトを描画する描画情報を生成する場合、前記コンピュータは、レンダリングにより、前記三角形を形成する面を仮想的な3次元空間内に構成し、該三角形を形成する面に対して、前記第1の色、第2の色、または第3の色を付与する
ことを特徴とする付記13に記載のシミュレーション結果表示方法。
(付記15)
前記表示オブジェクトを描画する描画情報を生成する場合、前記コンピュータは、前記2つのパーティクルの速度ベクトルそれぞれを単位長さのベクトルに分割し、該分割した単位長さの2つのパーティクルの速度ベクトルの始点同士または終点同士を結ぶ線分を、前記第1の色、第2の色、または第3の色を用いて描画して、前記表示オブジェクトを生成する
ことを特徴とする付記13に記載のシミュレーション結果表示方法。
【符号の説明】
【0116】
1 シミュレーション装置
2 入力部
3 シミュレーション結果格納部
4 パーティクル位置テーブル
5 速度計算部
6 パーティクル位置速度テーブル
7 群化判定部
8 群化テーブル
9 群化可視化処理部
10 群化可視化実行部
11,16 格納部
12 パーティクルフロー描画処理部
13 描画指示部
14 グラフィック処理部
15 表示装置
21 線分描画テーブル
【特許請求の範囲】
【請求項1】
流体の流れについてのシミュレーションにより算出されるパーティクルの時間毎の物理量に関するシミュレーション結果情報に基づいて、各位置における前記パーティクルの速度を算出する速度算出部と、
前記パーティクルの位置に基づいて、2つの前記パーティクル間の距離を算出し、前記パーティクルの速度に基づいて、2つの前記パーティクル間の速度差を算出し、前記パーティクル間の距離の値が第1の閾値より小さく、かつ前記パーティクル間の速度差の値が第2の閾値より小さい場合、該2つのパーティクルを群化する群化部と、
前記群化された2つのパーティクルの速度ベクトルに基づいて、前記群化された2つのパーティクルの挙動を示す表示オブジェクトを描画する描画情報を生成する描画情報生成部と、
を備えることを特徴とするシミュレーション装置。
【請求項2】
前記描画情報生成部は、前記群化された2つのパーティクルの速度ベクトルのうち、一方のパーティクルの速度ベクトルの始点及び終点と、他方のパーティクルの速度ベクトル始点または終点とを頂点とする2つの三角形を生成し、該各三角形を形成する面の法線ベクトルを算出し、該法線ベクトルの向きまたは該2つの法線ベクトルのなす角度に応じて、前記表示オブジェクトの表示形態を変化させる
ことを特徴とする請求項1に記載のシミュレーション装置。
【請求項3】
前記描画情報生成部は、前記2つの法線ベクトルのなす角度の値が第3の閾値より小さく、かついずれかの法線ベクトルの所定方向の成分の向きが正の場合、前記表示オブジェクトに第1の色を付与し、前記2つの法線ベクトルのなす角度の値が前記第3の閾値より小さく、かついずれかの法線ベクトルの所定方向の成分の向きが負の場合、前記表示オブジェクトに第2の色を付与し、前記2つの法線ベクトルのなす角度の値が前記第3の閾値以上である場合、前記表示オブジェクトに第3の色を付与する
ことを特徴とする請求項2に記載のシミュレーション装置。
【請求項4】
前記描画情報生成部は、レンダリングにより、前記三角形を形成する面を仮想的な3次元空間内に構成し、該三角形を形成する面に対して、前記第1の色、第2の色、または第3の色を付与する
ことを特徴とする請求項3に記載のシミュレーション装置。
【請求項5】
前記描画情報生成部は、前記2つのパーティクルの速度ベクトルそれぞれを単位長さのベクトルに分割し、該分割した単位長さの2つのパーティクルの速度ベクトルの始点同士または終点同士を結ぶ線分を、前記第1の色、第2の色、または第3の色を用いて描画して、前記表示オブジェクトを生成する
ことを特徴とする請求項3に記載のシミュレーション装置。
【請求項6】
流体の流れについてのシミュレーション結果を表示する処理をコンピュータに実行させるシミュレーション結果表示プログラムであって、
前記シミュレーションにより算出されるパーティクルの時間毎の物理量に関するシミュレーション結果情報に基づいて、各位置における前記パーティクルの速度を算出する速度算出処理と、
前記パーティクルの位置に基づいて、2つの前記パーティクル間の距離を算出し、前記パーティクルの速度に基づいて、2つの前記パーティクル間の速度差を算出し、前記パーティクル間の距離の値が第1の閾値より小さく、かつ前記パーティクル間の速度差の値が第2の閾値より小さい場合、該2つのパーティクルを群化する群化処理と、
前記群化された2つのパーティクルの速度ベクトルに基づいて、前記群化された2つのパーティクルの挙動を示す表示オブジェクトを描画する描画情報を生成する描画情報生成処理と、
をコンピュータに実行させることを特徴とするシミュレーション結果表示プログラム。
【請求項7】
コンピュータにより実行される、流体の流れについてのシミュレーション結果を表示する処理をコンピュータに実行させるシミュレーション結果表示方法であって、
前記コンピュータは、
前記シミュレーションにより算出されるパーティクルの時間毎の物理量に関するシミュレーション結果情報に基づいて、各位置における前記パーティクルの速度を算出し、
前記パーティクルの位置に基づいて、2つの前記パーティクル間の距離を算出し、前記パーティクルの速度に基づいて、2つの前記パーティクル間の速度差を算出し、前記パーティクル間の距離の値が第1の閾値より小さく、かつ前記パーティクル間の速度差の値が第2の閾値より小さい場合、該2つのパーティクルを群化し、
前記群化された2つのパーティクルの速度ベクトルに基づいて、前記群化された2つのパーティクルの挙動を示す表示オブジェクトを描画する描画情報を生成する、
ことを特徴とするシミュレーション結果表示方法。
【請求項1】
流体の流れについてのシミュレーションにより算出されるパーティクルの時間毎の物理量に関するシミュレーション結果情報に基づいて、各位置における前記パーティクルの速度を算出する速度算出部と、
前記パーティクルの位置に基づいて、2つの前記パーティクル間の距離を算出し、前記パーティクルの速度に基づいて、2つの前記パーティクル間の速度差を算出し、前記パーティクル間の距離の値が第1の閾値より小さく、かつ前記パーティクル間の速度差の値が第2の閾値より小さい場合、該2つのパーティクルを群化する群化部と、
前記群化された2つのパーティクルの速度ベクトルに基づいて、前記群化された2つのパーティクルの挙動を示す表示オブジェクトを描画する描画情報を生成する描画情報生成部と、
を備えることを特徴とするシミュレーション装置。
【請求項2】
前記描画情報生成部は、前記群化された2つのパーティクルの速度ベクトルのうち、一方のパーティクルの速度ベクトルの始点及び終点と、他方のパーティクルの速度ベクトル始点または終点とを頂点とする2つの三角形を生成し、該各三角形を形成する面の法線ベクトルを算出し、該法線ベクトルの向きまたは該2つの法線ベクトルのなす角度に応じて、前記表示オブジェクトの表示形態を変化させる
ことを特徴とする請求項1に記載のシミュレーション装置。
【請求項3】
前記描画情報生成部は、前記2つの法線ベクトルのなす角度の値が第3の閾値より小さく、かついずれかの法線ベクトルの所定方向の成分の向きが正の場合、前記表示オブジェクトに第1の色を付与し、前記2つの法線ベクトルのなす角度の値が前記第3の閾値より小さく、かついずれかの法線ベクトルの所定方向の成分の向きが負の場合、前記表示オブジェクトに第2の色を付与し、前記2つの法線ベクトルのなす角度の値が前記第3の閾値以上である場合、前記表示オブジェクトに第3の色を付与する
ことを特徴とする請求項2に記載のシミュレーション装置。
【請求項4】
前記描画情報生成部は、レンダリングにより、前記三角形を形成する面を仮想的な3次元空間内に構成し、該三角形を形成する面に対して、前記第1の色、第2の色、または第3の色を付与する
ことを特徴とする請求項3に記載のシミュレーション装置。
【請求項5】
前記描画情報生成部は、前記2つのパーティクルの速度ベクトルそれぞれを単位長さのベクトルに分割し、該分割した単位長さの2つのパーティクルの速度ベクトルの始点同士または終点同士を結ぶ線分を、前記第1の色、第2の色、または第3の色を用いて描画して、前記表示オブジェクトを生成する
ことを特徴とする請求項3に記載のシミュレーション装置。
【請求項6】
流体の流れについてのシミュレーション結果を表示する処理をコンピュータに実行させるシミュレーション結果表示プログラムであって、
前記シミュレーションにより算出されるパーティクルの時間毎の物理量に関するシミュレーション結果情報に基づいて、各位置における前記パーティクルの速度を算出する速度算出処理と、
前記パーティクルの位置に基づいて、2つの前記パーティクル間の距離を算出し、前記パーティクルの速度に基づいて、2つの前記パーティクル間の速度差を算出し、前記パーティクル間の距離の値が第1の閾値より小さく、かつ前記パーティクル間の速度差の値が第2の閾値より小さい場合、該2つのパーティクルを群化する群化処理と、
前記群化された2つのパーティクルの速度ベクトルに基づいて、前記群化された2つのパーティクルの挙動を示す表示オブジェクトを描画する描画情報を生成する描画情報生成処理と、
をコンピュータに実行させることを特徴とするシミュレーション結果表示プログラム。
【請求項7】
コンピュータにより実行される、流体の流れについてのシミュレーション結果を表示する処理をコンピュータに実行させるシミュレーション結果表示方法であって、
前記コンピュータは、
前記シミュレーションにより算出されるパーティクルの時間毎の物理量に関するシミュレーション結果情報に基づいて、各位置における前記パーティクルの速度を算出し、
前記パーティクルの位置に基づいて、2つの前記パーティクル間の距離を算出し、前記パーティクルの速度に基づいて、2つの前記パーティクル間の速度差を算出し、前記パーティクル間の距離の値が第1の閾値より小さく、かつ前記パーティクル間の速度差の値が第2の閾値より小さい場合、該2つのパーティクルを群化し、
前記群化された2つのパーティクルの速度ベクトルに基づいて、前記群化された2つのパーティクルの挙動を示す表示オブジェクトを描画する描画情報を生成する、
ことを特徴とするシミュレーション結果表示方法。
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図1】
【図2】
【図3】
【図4】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図1】
【図2】
【図3】
【図4】
【公開番号】特開2012−53794(P2012−53794A)
【公開日】平成24年3月15日(2012.3.15)
【国際特許分類】
【出願番号】特願2010−197228(P2010−197228)
【出願日】平成22年9月3日(2010.9.3)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
【公開日】平成24年3月15日(2012.3.15)
【国際特許分類】
【出願日】平成22年9月3日(2010.9.3)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
[ Back to top ]