(57)【特許請求の範囲】
【請求項１】
流体の流れについてのシミュレーションにより算出されるパーティクルの時間毎の物理量に関するシミュレーション結果情報に基づいて、各位置における前記パーティクルの速度を算出する速度算出部と、
前記パーティクルの位置に基づいて、２つの前記パーティクル間の距離を算出し、前記パーティクルの速度に基づいて、２つの前記パーティクル間の速度差を算出し、前記パーティクル間の距離の値が第１の閾値より小さく、かつ前記パーティクル間の速度差の値が第２の閾値より小さい場合、該２つのパーティクルを群化する群化部と、
前記群化された２つのパーティクルの速度ベクトルに基づいて、前記群化された２つのパーティクルの挙動を示す表示オブジェクトを描画する描画情報を生成する描画情報生成部と、
を備えることを特徴とするシミュレーション装置。
【請求項２】
前記描画情報生成部は、前記群化された２つのパーティクルの速度ベクトルのうち、一方のパーティクルの速度ベクトルの始点および終点と他方のパーティクルの速度ベクトルの始点または終点とを頂点とする三角形と、該他方のパーティクルの速度ベクトルの始点および終点と該一方のパーティクルの速度ベクトルの始点または終点を頂点とする三角形とを生成し、該各三角形を形成する面の法線ベクトルを算出し、該法線ベクトルの向きまたは該２つの法線ベクトルのなす角度に応じて、前記表示オブジェクトの表示形態を変化させる
ことを特徴とする請求項１に記載のシミュレーション装置。
【請求項３】
前記描画情報生成部は、前記２つの法線ベクトルのなす角度の値が第３の閾値より小さく、かついずれかの法線ベクトルの所定方向の成分の向きが正の場合、前記表示オブジェクトに第１の色を付与し、前記２つの法線ベクトルのなす角度の値が前記第３の閾値より小さく、かついずれかの法線ベクトルの所定方向の成分の向きが負の場合、前記表示オブジェクトに第２の色を付与し、前記２つの法線ベクトルのなす角度の値が前記第３の閾値以上である場合、前記表示オブジェクトに第３の色を付与する
ことを特徴とする請求項２に記載のシミュレーション装置。
【請求項４】
前記描画情報生成部は、レンダリングにより、前記三角形を形成する面を仮想的な３次元空間内に構成し、該三角形を形成する面に対して、前記第１の色、第２の色、または第３の色を付与する
ことを特徴とする請求項３に記載のシミュレーション装置。
【請求項５】
前記描画情報生成部は、前記２つのパーティクルの速度ベクトルそれぞれを単位長さのベクトルに分割し、該分割した単位長さの２つのパーティクルの速度ベクトルの始点同士または終点同士を結ぶ線分を、前記第１の色、第２の色、または第３の色を用いて描画して、前記表示オブジェクトを生成する
ことを特徴とする請求項３に記載のシミュレーション装置。
【請求項６】
流体の流れについてのシミュレーション結果を表示する処理をコンピュータに実行させるシミュレーション結果表示プログラムであって、
前記シミュレーションにより算出されるパーティクルの時間毎の物理量に関するシミュレーション結果情報に基づいて、各位置における前記パーティクルの速度を算出する速度算出処理と、
前記パーティクルの位置に基づいて、２つの前記パーティクル間の距離を算出し、前記パーティクルの速度に基づいて、２つの前記パーティクル間の速度差を算出し、前記パーティクル間の距離の値が第１の閾値より小さく、かつ前記パーティクル間の速度差の値が第２の閾値より小さい場合、該２つのパーティクルを群化する群化処理と、
前記群化された２つのパーティクルの速度ベクトルに基づいて、前記群化された２つのパーティクルの挙動を示す表示オブジェクトを描画する描画情報を生成する描画情報生成処理と、
をコンピュータに実行させることを特徴とするシミュレーション結果表示プログラム。
【請求項７】
コンピュータにより実行される、流体の流れについてのシミュレーション結果を表示する処理をコンピュータに実行させるシミュレーション結果表示方法であって、
前記コンピュータは、
前記シミュレーションにより算出されるパーティクルの時間毎の物理量に関するシミュレーション結果情報に基づいて、各位置における前記パーティクルの速度を算出し、
前記パーティクルの位置に基づいて、２つの前記パーティクル間の距離を算出し、前記パーティクルの速度に基づいて、２つの前記パーティクル間の速度差を算出し、前記パーティクル間の距離の値が第１の閾値より小さく、かつ前記パーティクル間の速度差の値が第２の閾値より小さい場合、該２つのパーティクルを群化し、
前記群化された２つのパーティクルの速度ベクトルに基づいて、前記群化された２つのパーティクルの挙動を示す表示オブジェクトを描画する描画情報を生成する、
ことを特徴とするシミュレーション結果表示方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書は、計算機による流体のシミュレーションの可視化技術に関する。
【背景技術】
【０００２】
近年の計算機技術の進歩により、ある物理現象に対して大規模な数値計算を実行し、その結果を高解像度の表示機器に表示してその物理現象を理解する、という場面が増えてきた。更に、より多くのオブジェクトを表示機器に同時に表示し、かつそのオブジェクトの拡大・縮小や回転もインタラクティブに指定しつつ、リアルタイムに表示することができるようになった。
【０００３】
一方、計算結果がベクトル場である場合の表示方法のひとつとして、パーティクルフローという手法がある。パーティクルフローとは、パーティクルという無質量の微小粒子が任意時間において置かれた周辺のベクトルの方向に沿って移動することで、流れを表現する手法である。計算機の性能向上によって、これまでより多数のパーティクルを広範囲に分布させることができるようになり、非常に細かい領域の流れを確認できるようになった。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平４−３２０５８９号公報
【特許文献２】特表２００１−５０２０９７号公報
【特許文献３】特開２００７−１８８５０２号公報
【非特許文献】
【０００５】
【非特許文献１】Avizo  Online  Help、［on line］、［平成２２年８月１６日検索］、インターネット<http://docs.drabba.net/avizo/6.1.0/hxvectorfieldanimation/HxParticlesCompute.html>
【発明の概要】
【発明が解決しようとする課題】
【０００６】
多数のパーティクルを同時に表示できたとしても、人間の視覚や認識には限界がある。例えば、乱流境界層内の縦渦をシミュレーションし、パーティクルフローによって結果を観察しようとする場合について考える。この場合、マクロ的には多数の渦を表現しないパーティクルが動く中において、いくつもの小さな渦内をパーティクルが回り、一方渦を渡り歩くように動くパーティクルも同時に表示される。結果としてパーティクルが複雑な動きを示すことになり、目で追えなくなって誤認識を起こす可能性が高い。
【０００７】
よって、パーティクルの動きについては、パーティクルの複雑な振る舞いのため、３次元的な挙動を追跡することは難しかった。また、パーティクルは領域を示さないため、例えば渦領域のような部位の形状を表示することは難しかった。
【０００８】
上記課題に鑑み、本明細書では、パーティクルの３次元的な挙動を追跡することができるシミュレーション装置、該プログラム、及び該方法を提供する。
【課題を解決するための手段】
【０００９】
本明細書に記載のシミュレーション装置の一例は、速度算出部、群化部、描画情報生成部を含む。速度算出部は、流体の流れについてのシミュレーションにより算出されるパーティクルの時間毎の物理量に関するシミュレーション結果情報に基づいて、各位置における前記パーティクルの速度を算出する。
【００１０】
群化部は、前記パーティクルの位置に基づいて、２つの前記パーティクル間の距離を算出する。群化部は、前記パーティクルの速度に基づいて、２つの前記パーティクル間の速度差を算出する。群化部は、前記パーティクル間の距離の値が第１の閾値より小さく、かつ前記パーティクル間の速度差の値が第２の閾値より小さい場合、該２つのパーティクルを群化する。
【００１１】
描画情報生成部は、前記群化された２つのパーティクルの速度ベクトルに基づいて、前記群化された２つのパーティクルの挙動を示す表示オブジェクトを描画する描画情報を生成する。
【発明の効果】
【００１２】
本明細書に記載のシミュレーション装置の一例によれば、パーティクルの３次元的な挙動を追跡することが容易になる。
【図面の簡単な説明】
【００１３】
【図１】パーティクルフローの一例を示す図である。
【図２】パーティクルフローの群化可視化を説明するための図である。
【図３】群化したパーティクルの可視化時の色分け規制（面の表裏による色分け）を示す図である。
【図４】群化したパーティクルの可視化時の色分け規制（ベクトルのねじれ量による色分け）を示す図である。
【図５】第１の実施形態における流体の流れのシミュレーションを実行するシミュレーションシステムの機能構成の一例を示す図である。
【図６】パーティクル位置テーブル４の一例を示す図である。
【図７】パーティクル位置速度テーブル６の一例を示す図である。
【図８】群化テーブル９の一例を示す図である。
【図９】パーティクルフローの群化可視化処理の全体フローを示す図である。
【図１０】図９のＳ１１の群化探索処理の詳細なフローを示す図である。
【図１１】第１の実施形態における図９のＳ１４の可視化処理の詳細なフローを示す図である。
【図１２】第２の実施形態における群化したパーティクルの視覚化について説明するための図である。
【図１３】第２の実施形態における流体の流れのシミュレーションを実行するシミュレーションシステムの機能構成の一例を示す図である。
【図１４】線分描画テーブル２１の一例を示す図である。
【図１５】第２の実施形態における図９のＳ１４の可視化処理の詳細なフローを示す図である。
【図１６】シミュレーションシステムのハードウェア環境の構成ブロック図である。
【発明を実施するための形態】
【００１４】
＜第１の実施形態＞
図１は、パーティクルフローの一例を示す。図１（Ａ）は、隣接する２つの渦を形成するパーティクルフローを示す。曲線で描かれた矢印は、渦の方向を示す。それ以外の、小さな、直線で描かれた矢印は、パーティクルの向かう方向を示す。なお、渦の形状を認識しやすくするために、１対の曲線で描かれた矢印を上面及び底面とする略円筒形状を形成するための側面の輪郭線が、便宜上描かれている。
【００１５】
パーティクルのみを表示させた場合、その表示内容に奥行き感がなく、またパーティクルの動きが分かりづらい。例えば、右側の渦では、パーティクルが反時計回りに回っている。左側の渦では、パーティクルが時計回りに回っている。
【００１６】
もし、表示内容に奥行きを認識することができなければ、略円筒状の渦の外縁の前面側と背面側のパーティクルの動きを同一平面上での動きと認識してしまうおそれもある。この場合、渦形状を認識することができない。
【００１７】
図１（Ｂ）は、複数発生したパーティクルフローを示す。図１（Ｂ）に示すように、パーティクルフローが複数発生すると、パーティクルだけでは領域を認識するのは難しい。
ところで、人間の認識の癖として多数の対象を「固まり」で理解しようとする傾向があり、心理学の分野で「群化」と呼ばれている。無秩序で複雑な配置をした点集合は観察者の脳内で自動的に固まりに分けられ、「群化されたある集団の中の１点」という形で認識される。例えば、上記の渦をまくパーティクルの可視化の例では、見たいパーティクルとその周辺に見えている類似の動きをなすパーティクルがあるならば、それらをひとつの固まりとして認識するのはごく自然なことである。
【００１８】
そこで、複雑な動きをする多数のパーティクルから、位置的に近接し、かつ特定の速度で移動するパーティクル同士を群化して可視化する。これについて、図２を用いて説明する。
【００１９】
図２は、パーティクルフローの群化可視化を説明するための図である。図２（Ａ）は、図１（Ａ）のパーティクルフローを群化可視化したものである。図２（Ｂ）は、図１（Ｂ）のパーティクルフローを群化可視化したものである。
【００２０】
図２（Ａ）（Ｂ）では、複雑な動きをする多数のパーティクルから、位置的に近接し、かつ特定の速度で移動するパーティクル同士を群化して面を生成し、さらに、渦外周の前面側、背面側、及び渦境界領域に応じて色分けしたものである。なお、図２（Ａ）（Ｂ）は、後述する処理において、１ステップ分の面生成を行ったものである。
【００２１】
図１（Ａ）（Ｂ）に比べて、図２（Ａ）（Ｂ）では、その表示内容に奥行き感があり、視覚的に、渦外周の前面側、背面側、及び渦間の境界領域にあるパーティクルの挙動が分かりやすい。なお、流れの特性に応じて任意ステップ分の面を生成すると、境界面を近似的に表現することもできる。
【００２２】
このように、群化可視化により、パーティクルの「固まり」を面として表示することができるので、パーティクルの３次元的な挙動を追跡することが容易になる。
また、渦状に動くパーティクルの渦中心からの距離が同じならば、パーティクルの速度も、ある同程度になる。従って、ある速度しきい値でパーティクルを抽出することにより渦領域の外周部を動くパーティクルが抽出できる。その抽出したパーティクルのうち、位置的に近接し、かつ特定の速度で移動するパーティクル同士をつながりのあるように描画すると、細切れながらも全体で観察すると渦領域がその外縁に沿って円状に見える。よって、渦のような部位の形状を表示され、渦が認識しやすくなる。
【００２３】
さらに、パーティクルフローの群化可視化について説明する。具体的なパーティクルフローの群化可視化方法として、一定の範囲にある２つのパーティクルがなす２つのベクトル間で２つの三角形を構成し、その三角形を描画することによって群化可視化が行われる。
【００２４】
図３は、群化したパーティクルの可視化時の色分け規制（面の表裏による色分け）を示す。渦外周の前面側、背面側とでは、それぞれの面側の法線ベクトルの向きが異なる。このことに着目して、渦外周の前面側にある群化されたパーティクル同士が形成する面と、背面側にある群化されたパーティクル同士が形成する面とに対して、異なる色を着色する。
【００２５】
例えば、位置的に近接し、かつ特定の速度で移動する、第１のパーティクルの速度ベクトルＰ0Ｐ1の始点及び終点と、第２のパーティクルの速度ベクトルＱ0Ｑ1の始点及び終点の、４つの点から２つの三角形状をした面を作成する。
【００２６】
そして、三角形の面の法線ベクトルの向きが視線方向を向いている場合（すなわち、面の表側）（図３（Ａ））と、逆に向いている場合（すなわち、面の裏側）（図３（Ｂ））で、それぞれの面に対して異なる色を着色して表示する（色分け）。
【００２７】
図３（Ａ）は、法線が手前向き（法線方向は線分Ｐ0Ｐ1を基準）である場合の面、すなわち渦外周部の前面側にある面を示す。図３（Ｂ）は、法線が向こう向き（法線方向は線分Ｐ0Ｐ1を基準）である場合の面、すなわち渦外周部の背面側にある面を示す。このように、法線方向による面の向きに応じて、色分けを行う。
これにより、図２に示すように、パーティクルが渦の手前側を通過しているか、奥側を通過しているかが認識しやすくなる。
【００２８】
図４は、群化したパーティクルの可視化時の色分け規制（ベクトルのねじれ量による色分け）を示す。渦同士の境界にあるパーティクルは、近接したパーティクルがそれぞれ、別々の渦の中心へと分かれていくような挙動を示す。そのため、パーティクルの速度ベクトルの向きに着目すると互いにねじれた方向を向いている。
【００２９】
そこで、第１のパーティクルの速度ベクトルＰ0Ｐ1と第２のパーティクルの速度ベクトルＱ0Ｑ1とが同一平面にある場合（図４（Ａ））と、ねじれている場合（図４（Ｂ））とで異なる表示（たとえば色分けする）を施す。
【００３０】
このねじれを検出する方法としては、例えば、次の方法が考えられる。まず、位置的に近接し、かつ特定の速度で移動する、第１のパーティクルの速度ベクトルＰ0Ｐ1の始点及び終点と、第２のパーティクルの速度ベクトルＱ0Ｑ1の始点及び終点の、４つの点から２つの三角形状をした面を作成する。そして、その三角形の面の法線方向を比較する。
【００３１】
図４（Ａ）に示すように、渦外周部では、三角形Ｐ0Ｐ1Ｑ0の法線ａと三角形Ｑ0Ｑ1Ｐ1の法線ｂの方向がそろっている。このことから、三角形Ｐ0Ｐ1Ｑ0と三角形Ｑ0Ｑ1Ｐ1とはねじれていないことが分かる。一方、図４（Ｂ）に示すように、渦境界領域では法線ａの方向と法線ｂの方向がねじれている。このことから、三角形Ｐ0Ｐ1Ｑ0と三角形Ｑ0Ｑ1Ｐ1とはねじれていることが分かる。
【００３２】
このように、２つの法線の角度に応じて、渦領域だけでなく渦同士の境界を示すことが可能である。
ちなみに、ここでは法線の方向を決めるルールとして、例えば「ベクトルＰ0Ｐ1とベクトルＱ0Ｑ1のうち上方にある（y軸で正の方向にある）ベクトルの方向に三角形の頂点をたどり、左手系で上を向く方向」といったように決定するものとした。
【００３３】
従来、このような技術が存在しなかったのは、次の２つの理由が考えられる。まず、第１の理由として、大規模シミュレーションにより多くの渦領域を出力できるようになったのはここ数年であることが考えられる。第２の理由として、第１の理由のように大規模シミュレーションにより多くの渦領域を出力するような計算を行わない場合には、一般的に渦度による等値面表示、速度の絶対値による等値面表示、或いはλ２法などの渦領域抽出を使用することが考えられる。
【００３４】
上記第１の理由について、例えば速度境界中の縦渦は計算機の発展によりようやく解析可能となってきている。この可視化では、例えば、多数の速度境界層中の縦渦が表示されており、縦渦はそれぞれ後流方向に移動し、且つ互い違いの回転方向を持っている。これまでは、これらの領域を包含するような非常に大きな渦領域について、上記第２の理由で挙げた方法など、或いはそれぞれの領域をベクトルの大きさによる等値面表示などによって可視化されてきた。
【００３５】
一方、一般的なパーティクルフローによる可視化では、ユーザが空間内のパーティクル数や動き（時間ステップの刻み幅）を制御することで、結果的に複雑な流れを分かりやすく表現してきた。一つの粒子の回転運動を軌跡に加える手法も存在したが、空間に可視化オブジェクトを増やすだけの結果となって、やはりユーザがパラメータにより制御せざるを得なかった。
【００３６】
本実施形態では、速度的に近く任意時間内では方向が似通っているパーティクルをグループ化することでパーティクル数を制御し、観察をより分かりやすくすることが可能である。また、対の粒子間に面を生成することで、離散的に境界形状を表現する。
【００３７】
図５は、本実施形態における流体の流れのシミュレーションを実行するシミュレーションシステムの機能構成の一例を示す。シミュレーションシステムは、シミュレーション装置１、入力部２、表示装置１５を含む。シミュレーション装置１は、シミュレーション結果格納部３、群化可視化実行部１０、格納部１１、パーティクルフロー描画処理部１２、描画指示部１３、グラフィック処理部１４を含む。
【００３８】
シミュレーション結果格納部３には、流体の流れについてのシミュレーション処理により算出される流体の時間毎の物理量がパーティクル位置結果として格納されている。格納部１１には、その他のオブジェクトに関する情報が格納されている。
【００３９】
群化可視化実行部１０は、パーティクルフローの群化可視化を実行する。群化可視化実行部１０は、速度計算部５、群化判定部７、群化可視化処理部９、格納部１６を含む。格納部１６には、パーティクル位置テーブル４、パーティクル位置速度テーブル６、群化テーブル８、及び後述する閾値や、レンダリング設定条件等の情報が格納されている。
【００４０】
速度計算部５は、シミュレーション結果格納部３からシミュレーション結果を読み出し、そのシミュレーション結果に基づいて、パーティクルの位置情報をパーティクル位置テーブル４に格納する。そして、速度計算部５は、パーティクル位置テーブル４を用いてパーティクルの速度を算出する。パーティクル位置テーブル４については、図６を用いて説明する。
【００４１】
図６は、パーティクル位置テーブル４の一例を示す。パーティクル位置テーブル４は２つ存在する。一方のパーティクル位置テーブル４は、時間Ｔ＝ｔ，ｔ＋１，ｔ＋２，・・・の場合にパーティクルの位置データが格納されるワークテーブルである。他方のパーティクル位置テーブル４は、時間Ｔ＝ｔ＋１，ｔ＋２，ｔ＋３，・・・の場合にパーティクルの位置データが格納されるワークテーブルである。いずれのパーティクル位置テーブル４も、パーティクルを識別するパーティクルＩＤと、そのパーティクルＩＤに対応するパーティクルの位置（ｘ，ｙ，ｚ）が格納される。では、図５の説明に戻る。
【００４２】
速度計算部５は、２つのパーティクル位置テーブル４を用いて、パーティクルの速度を算出し、その結果をパーティクル位置速度テーブル６に格納する。パーティクル位置速度テーブル６については、図７を用いて説明する。
【００４３】
図７は、パーティクル位置速度テーブル６の一例を示す。パーティクル位置速度テーブル６には、パーティクルＩＤ、そのパーティクルＩＤに対応するパーティクルの位置（ｘ，ｙ，ｚ）及び速度ベクトル（速度ｘ，速度ｙ，速度ｚ）が格納される。では、図５の説明に戻る。
【００４４】
群化判定部７は、パーティクル位置速度テーブル６を用いて、どのパーティクルが対になって群化できるかを判定する。そして、群化判定部７は、その群化できると判定された一対のパーティクルのパーティクルＩＤを群化テーブル８に格納する。群化テーブル８について、図８を用いて説明する。
【００４５】
図８は、群化テーブル９の一例を示す。群化テーブル９では、群化できると判定された一対のパーティクルのパーティクルＩＤ（パーティクルＩＤ１、パーティクルＩＤ２）と、その一対のパーティクルを識別する群化ＩＤが格納されている。では、図５の説明に戻る。
【００４６】
群化可視化処理部９は、群化テーブル９を用いて、群化されたパーティクルについて可視化処理を行う。これにより、群化描画データが生成される。
パーティクルフロー描画処理部１２は、入力部２からの入力情報、シミュレーション結果、及び格納部１１に格納されているその他のオブジェクトデータを基にして、通常のパーティクルフローを描画する処理を行う。これにより、パーティクルフロー描画データが生成される。
【００４７】
描画調整部１３は、群化可視化実行部１０から出力された群化描画データと、パーティクルフロー描画処理部１２から出力されたパーティクルフロー描画データとを重畳表示する調整を行う。
グラフィック処理部１４は、描画調整部１３により調整された描画データに対して、グラフィック処理を行い、表示装置１５へ出力する。
【００４８】
図９は、パーティクルフローの群化可視化処理の全体フローを示す。図９は、図５の群化可視化実行部１０（速度計算部５、群化判定部７、群化可視化処理部９）で実行される処理フローを示す。
【００４９】
速度計算部５は、まず時間ｔを０で初期化する（Ｓ１）。速度計算部５は、シミュレーション結果格納部３から、ある時間（この時間を、時間ｔ＝０とする）におけるパーティクルの位置を取得し、一方のパーティクル位置テーブル４へ格納する（Ｓ２）。
【００５０】
速度計算部５は、時間ｔをインクリメントする（Ｓ３）。速度計算部５は、シミュレーション結果格納部３から、時間ｔ＝１におけるパーティクルの位置を取得し、他方のパーティクル位置テーブル４へ格納する（Ｓ４）。
【００５１】
速度計算部５は、パーティクルの速度場を算出する（Ｓ５）。すなわち、速度計算部５は、２つのパーティクル位置テーブル４を用いて、Δｔ（Δｔ＝１−０）でのパーティクル位置の移動量（Δｘ，Δｙ，Δｚ）を算出する。速度計算部５は、（パーティクル位置の移動量）／Δｔより、パーティクルの速度を算出する。速度計算部５は、パーティクルＩＤと共に、時間ｔ＝１におけるパーティクルの位置と、その算出した速度を、パーティクル位置速度テーブル６に格納する。
【００５２】
次に、群化判定部７は、パーティクル位置速度テーブル６に格納されたパーティクルについて、速さに関してフィルタリング処理を行う。すなわち、群化判定部７は、パーティクル位置速度テーブル６に格納されたパーティクルのうち、所定の速さの範囲外にあるパーティクルを削除し、所定の速さの範囲にあるパーティクルのみをパーティクル位置速度テーブル６に残す（Ｓ６）。
【００５３】
群化判定部７は、Ｓ６でのフィルタリング処理後のパーティクル位置速度テーブル６に含まれるパーティクルのうち、任意のパーティクルに対してパーティクル番号ｎ＝１を割り当てる（Ｓ７）。以下、ｎが割り当てられたパーティクルを、対象パーティクルまたは対象パーティクルｎという。
【００５４】
群化判定部７は、その対象パーティクルがすでに群化されているかどうかを群化テーブル８を用いて判定する（Ｓ８）。対象パーティクルが、群化テーブル８の「パーティクルＩＤ１」または「パーティクルＩＤ２」に既に格納されている場合、群化判定部７は、対象パーティクルが群化されていると判定する。
【００５５】
群化判定部７は、対象パーティクルが既に群化されている場合（Ｓ８で「Ｙｅｓ」）、対象パーティクルと対になっているパーティクルが現在時間においても、対象パーティクルの近傍にあるかどうかを判定する（Ｓ９）。すなわち、群化判定部７は、対象パーティクルと、その対象パーティクルと対になっているパーティクルとの距離Δｄの値が閾値ｄqより小さいか否かを判定する。
【００５６】
Δｄ＜のｄq場合（Ｓ９で「Ｙｅｓ」）、群化判定部７は、対象パーティクルと対になっているパーティクルが現在時間においても速さの値が対象パーティクルと近いかどうかを判定する（Ｓ１０）。群化判定部７は、対象パーティクルと、その対象パーティクルと対になっているパーティクルとの速さの差Δｖの値が閾値ｖqより小さいか否かを判定する。対象パーティクルと、その対象パーティクルと対になっているパーティクルとの速さの差Δｖの値が閾値ｖqより小さい場合（Ｓ１０で「Ｎｏ」）、Ｓ１２へ進む。
【００５７】
対象パーティクルが群化されていない場合（Ｓ８で「Ｎｏ」）、または対になるパーティクルが群化の対象から外れた場合（すなわち、Δｄ≧のｄq（Ｓ９で「Ｎｏ」）もしくはΔｖ≧のｖq（Ｓ１０で「Ｎｏ」）の場合）、群化判定部７は次を行う。すなわち、群化判定部７は、対象パーティクルと対になるパーティクルを探索する（群化探索処理）（Ｓ１１）。Ｓ１１の群化探索処理については、後述する。
【００５８】
Ｓ６でのフィルタリング処理後のパーティクル位置速度テーブル６に、未処理のパーティクルがある場合（Ｓ１２で「Ｙｅｓ」）、群化判定部７は、次を行う。すなわち、群化判定部７は、ｎをインクリメントして（Ｓ１３）、その未処理のパーティクルを対象パーティクルとしてＳ８−Ｓ１１の処理を行う。
【００５９】
Ｓ６でのフィルタリング処理後のパーティクル位置速度テーブル６に含まれる全てのパーティクルについて、Ｓ８−Ｓ１１の処理が終わったら（Ｓ１２で「Ｎｏ」）、群化可視化処理部９は、可視化処理を行う（Ｓ１４）。Ｓ１４の処理については、後述する。
【００６０】
可視化処理（Ｓ１４）の終了後、シミュレーション結果格納部３に次のｔ（すなわち、ｔ＋１）におけるシミュレーション結果があれば（Ｓ１５で「Ｙｅｓ」）、群化可視化処理部９は、ｔをインクリメントし（Ｓ１６）、Ｓ４−Ｓ１４の処理を行う。
【００６１】
なお、ループ処理（Ｓ４−Ｓ１５）の度に、Ｓ４にて用いられるパーティクル位置テーブル４は交互に変更される。また、群化テーブル８は、ｔがインクリメントされる毎に書き換わる。
シミュレーション結果格納部３に格納された最終の時間についてのシミュレーション結果について処理を終えるまでＳ４−Ｓ１４の処理を繰り返す。
【００６２】
図１０は、図９のＳ１１の群化探索処理の詳細なフローを示す。群化判定部７は、まず探索領域を設定する（Ｓ２１）。ここで、探索領域とは、対象パーティクルと対となるパーティクルを探索するための、対象パーティクルを中心とする３次元上の所定の探索範囲をいう。
【００６３】
次に、群化判定部７は、Ｓ６でのフィルタリング処理後のパーティクル位置速度テーブル６に含まれるパーティクルのうち、対象パーティクルｎとは異なる任意のパーティクルに対して、パーティクル番号ｍ（ｍ≠ｎ）を設定する（Ｓ２２）。対象パーティクルのパーティクル番号ｎが１でない限り、初期値として、ｍ＝１とする。対象パーティクルのパーティクル番号ｎが１の場合には、初期値として、ｍ＝２とする。なお、以下では、対象パーティクルに対して探索対象となるパーティクルのパーティクル番号ｍを有するパーティクルを、パーティクルｍという。
【００６４】
群化判定部７は、探索対象となるパーティクルｍがすでに群化されているかどうかを群化テーブル８から判定する（Ｓ２３）。すなわち、パーティクルｍのパーティクル番号ｍが、群化テーブル８の「パーティクルＩＤ１」または「パーティクルＩＤ２」に存在する場合（Ｓ２３で「Ｙｅｓ」）、群化判定部７は、パーティクルｍが群化されていると判定する。
【００６５】
パーティクルｍが群化テーブル８に存在しない場合（Ｓ２３で「Ｎｏ」）、群化判定部７は、パーティクルmが探索領域の内側にあるかどうかを判定する（Ｓ２４）。すなわち、群化判定部７は、パーティクル位置速度テーブル６から、パーティクルmの位置情報（ｘ，ｙ，ｚ）を取得し、その位置情報の示す位置が探索領域の範囲内にあるかを判定する。
【００６６】
パーティクルmが探索領域の内側にあると判定された場合（Ｓ２４で「Ｙｅｓ」）、群化判定部７は、パーティクルｍの速さから対象パーティクルｎの速さを差し引いて、パーティクルｍ，ｎの速さの差Δｖを算出する。それから、群化判定部７は、パーティクルｍ，ｎの速さの差Δｖの値が閾値ｖgよりも小さいか否かを判定する（Ｓ２５）。
【００６７】
Δｖ＜ｖgの場合（Ｓ２５で「Ｙｅｓ」）、群化判定部７は、そのパーティクルｍが対象パーティクルｎと対になるパーティクルであると判定する。この場合、群化判定部７は、パーティクルｍのパーティクル番号ｍと対象パーティクルｎのパーティクル番号ｎとを組にし、その組に群化ＩＤを付与する。そして、群化判定部７は、群化ＩＤとパーティクル番号ｍ，ｎを群化テーブル８に格納する（Ｓ２６）。
【００６８】
一方、パーティクルｍが群化テーブル８に存在する場合（Ｓ２３で「Ｙｅｓ」）、パーティクルmが探索領域の内側にない場合（Ｓ２４で「Ｎｏ」）、またはΔｖ≧ｖqの場合（Ｓ２５で「Ｎｏ」）、群化判定部７は次を行う。すなわち、群化判定部７は、Ｓ６でのフィルタリング処理後のパーティクル位置速度テーブル６に含まれるパーティクルのうち、未処理のパーティクルが存在すれば（Ｓ２７で「Ｙｅｓ」）、mをインクリメントして（Ｓ２８）、Ｓ２３−Ｓ２６の処理を行う。なお、Ｓ２８でインクリメントした結果、ｍ＝ｎとなる場合には、群化判定部７は、さらにｍをインクリメントする。
【００６９】
群化ＩＤとパーティクル番号ｍ，ｎを群化テーブル７に格納した場合（Ｓ２６）、またはパーティクル位置速度テーブル６に次のパーティクルが存在しない場合、群化判定部７は、群化探索処理を終了する。
【００７０】
図１１は、第１の実施形態における図９のＳ１４の可視化処理の詳細なフローを示す。本実施形態では、パーティクルをレンダリング（ｒｅｎｄｅｒｉｎｇ）により可視化する。ここでいうレンダリングとは、所定方向から照明された３次元空間の物体を所定の視点で観察した場合に観察される３次元画像であって、影、色相、濃淡等を考慮した３次元画像を生成することをいう。
【００７１】
群化可視化処理部９は、まず、シミュレーション装置１の格納部１６から予め設定されたレンダリング設定条件を読み出す（Ｓ３１）。レンダリング設定条件には、照明の方向、視点位置等の条件が含まれる。
【００７２】
群化可視化処理部９は、２つのパーティクル位置テーブル４を用いて、Δｔの間で移動した対象パーティクルｎの位置についての速度ベクトルの始点をＰ0、終点をＰ1とする。ここで、始点Ｐ0は時間ｔのときの対象パーティクルｎの位置であり、Ｐ1は時間ｔ＋１のときの対象パーティクルｎの位置である。
【００７３】
また、群化可視化処理部９は、２つのパーティクル位置テーブルを用いて、Δｔの間で移動したパーティクルｍの位置についての速度ベクトルの始点をＱ0、終点をＱ1とする。ここで、始点Ｑ0は時間ｔのときのパーティクルｍの位置であり、Ｑ1は時間ｔ＋１のときのパーティクルｍの位置である。
【００７４】
群化可視化処理部９は、三角形Ｐ0Ｐ1Ｑ0の法線ａを算出する（Ｓ３２）。また、群化可視化処理部９は、三角形Ｑ0Ｑ1Ｐ1の法線ｂを算出する（Ｓ３３）。それから、群化可視化処理部９は、三角形Ｐ0Ｐ1Ｑ0と三角形Ｑ0Ｑ1Ｐ1とを面として設定する（Ｓ３４）。
【００７５】
群化可視化処理部９は、法線ベクトルａ，ｂのなす角φから、法線ベクトルａ，ｂのねじれを判定する（Ｓ４５）。角φが閾値φt以上の場合（Ｓ３５で「Ｎｏ」）、群化可視化処理部９は、描画色Ｃ３に第３の色をセットする（Ｓ３９）。ここで、描画色Ｃ３は、渦領域境界を表す描画色である（図４）。
【００７６】
角φが閾値φtより小さい場合（Ｓ３５で「Ｙｅｓ」）、群化可視化処理部９は、法線ベクトルａのｚ成分（ａz）の向きを判定する（Ｓ３６）。法線ベクトルａのｚ成分（ａz）がａz≧０、すなわち正方向を向いていると判定された場合（Ｓ３６で「Ｙｅｓ」）、群化可視化処理部９は、描画色Ｃ１に第１の色をセットする（Ｓ３７）。ここで、描画色Ｃ１は、渦外縁を表す描画色であり、図３（Ａ）で説明したように、三角形Ｐ0Ｐ1Ｑ0のなす面の表側を判別するために用いられる。
【００７７】
一方、法線ベクトルａのｚ成分（ａz）がａz＜０、すなわち負方向を向いていると判定された場合（Ｓ３６で「Ｎｏ」）、群化可視化処理部９は、描画色Ｃ２に第２の色をセットする（Ｓ３８）。ここで、描画色Ｃ２は、渦外縁を表す描画色であり、図３（Ｂ）で説明したように、三角形Ｐ0Ｐ1Ｑ0のなす面の裏側を判別するために用いられる。
【００７８】
それから、群化可視化処理部９は、レンダリング設定条件に基づいて、レンダリングにより三角形Ｐ0Ｐ1Ｑ0と三角形Ｑ0Ｑ1Ｐ1とを描画する。さらに、群化可視化処理部９は、描画色Ｃ１、描画色Ｃ２、または描画色Ｃ３を用いて、描画した三角形Ｐ0Ｐ1Ｑ0がなす面と三角形Ｑ0Ｑ1Ｐ1がなす面に対して色付けを行う（Ｓ３５）。すなわち、群化可視化処理部９は、照明の方向、視点位置、三角形Ｐ0Ｐ1Ｑ0と三角形Ｑ0Ｑ1Ｐ1の位置及び形状に基づいて、レンダリングを行う。このとき、描画色Ｃ１に第１の色が設定されている場合、群化可視化処理部９は、三角形Ｐ0Ｐ1Ｑ0がなす面と三角形Ｑ0Ｑ1Ｐ1がなす面に対して、第１の色を付与する。また、描画色Ｃ２に第２の色が設定されている場合、群化可視化処理部９は、三角形Ｐ0Ｐ1Ｑ0がなす面と三角形Ｑ0Ｑ1Ｐ1がなす面に対して、第２の色を付与する。また、描画色Ｃ３に第３の色が設定されている場合、群化可視化処理部９は、三角形Ｐ0Ｐ1Ｑ0がなす面と三角形Ｑ0Ｑ1Ｐ1がなす面に対して、第３の色を付与する。
【００７９】
このようにして、群化可視化処理部９は、群化描画データを生成する。その結果、例えば、１ステップ分であれば、図２に示すような群化描画データを得ることができる。
なお、図１１では、固定した視点位置から見える範囲で、三角形の面の表と裏に色を付与しているので、視点位置を移動させれば、再度Ｓ３５−Ｓ３９の処理を行って、描画色を付与する。しかしながら、レンダリングの設定環境に応じて、これに限定されず、固定した視点位置から見えない範囲においても、三角形の面の表と裏の両方に色を付与してもよい。
【００８０】
本実施形態によれば、位置と速度の近いパーティクル同士がクラスタリング（群化、グルーピング）され、面として表示される。この群化表示によりパーティクルが固まりとして認識しやすくなる。また渦領域の外縁部と渦同士の境界部が表示されるので、誤認識を起こすことなく、渦状に移動するパーティクルを追跡することができる。
【００８１】
また、Ｓ６のフィルタリング、Ｓ９，Ｓ１０の閾値、Ｓ２１の探索領域を調整することにより、群化の対象となるパーティクルを調整することができる。その結果、表示精度を調整することができる。
【００８２】
＜第２の実施形態＞
本実施形態は、図９のＳ１４の可視化処理の変形例である。第１の実施形態では、レンダリングによりパーティクルフローの視覚化を行った。それに対して、本実施形態では、位置と速度の近い２つのパーティクルの速度ベクトル間を複数の線分で描画し、その線分の集合体を面と見立てて視覚化を行う。本実施形態において、第１の実施形態と同様の構成については、同一の符号を付し、その説明を省略する。
【００８３】
図１２は、本実施形態における群化したパーティクルの視覚化について説明するための図である。本実施形態では、ある一定の範囲にあるパーティクルを２つで１組となし、その２つのパーティクル同士を結ぶ線分を考える。パーティクルの速度ベクトルＰ0Ｐ1，Ｑ0Ｑ1をそれぞれ、単位長さのベクトルに分割し、その単位長さのベクトルの始点（または終点）同士を結ぶ線分を描画する。双方のパーティクルの速度ベクトルの始点から終点に向かって、単位長さのベクトルの始点（または終点）を結んだ線分を順次描画する。すると、図１２に示すように、線分の集合体が同一平面状に並ぶことにより、面をなす。これにより、２つのパーティクル間の群化可視化を行うことができる。
【００８４】
図１３は、本実施形態における流体の流れのシミュレーションを実行するシミュレーションシステムの機能構成の一例を示す。図１３は、図５の群化可視化実行部１０に線分描画テーブル２１を追加したものである。群化可視化処理部９は、線分描画テーブル２１を用いて、２つのパーティクル間での群化可視化を行う。
【００８５】
図１４は、線分描画テーブル２１の一例を示す。線分描画テーブル２１には、速度ベクトルＰ0Ｐ1（＝ｖp）の、始点の座標Ｐ0＝ｒpo＝（ｒpox，ｒpoy，ｒpoz）、正規化したベクトルｖp＝ｒp＝（ｒpx，ｒpy，ｒpz）、終点の座標Ｐ1＝ｒp1＝（ｒp1x，ｒp1y，ｒp1z）が格納される。また、線分描画テーブル２１には、速度ベクトルＱ0Ｑ1（＝ｖq）の、始点の座標Ｑ0＝ｒqo＝（ｒqox，ｒqoy，ｒqoz）、正規化したベクトルｖq＝ｒq＝（ｒqx，ｒqy，ｒqz）、終点の座標Ｑ1＝ｒq1＝（ｒq1x，ｒq1y，ｒq1z）が格納される。
【００８６】
図１５は、図９のＳ１４の可視化処理の詳細なフローを示す。群化可視化処理部９は、まず、線分描画テーブル２１の設定を行う（Ｓ４１）。具体的には、群化可視化処理部９は、２つのパーティクル位置テーブル４のうち、直近（Ｔ＝ｔ＋１）にパーティクル位置が格納されたパーティクル位置テーブル４から対象パーティクルの位置Ｐ1（ｒpx，ｒpy，ｒpz）を取得する。そして、群化可視化処理部９は、その取得した位置Ｐ1（ｒpx，ｒpy，ｒpz）を線分描画テーブル２１の「ｖp終点」に対応する位置ｘ，ｙ，ｚへ格納する。
【００８７】
また、群化可視化処理部９は、他方（Ｔ＝ｔ）のパーティクル位置テーブル４から対象パーティクルの位置Ｐ0（ｒpox，ｒpoy，ｒpoz）を取得し、線分描画テーブル２１の「ｖp始点」に対応する位置ｘ，ｙ，ｚへ格納する。
【００８８】
さらに、群化可視化処理部９は、２つのパーティクル位置テーブル４から、対象パーティクルｎの単位時間Δｔでの位置の移動量（Δｘ，Δｙ，Δｚ）、すなわち速度ベクトルを算出する。群化可視化処理部９は、（Δｘ／｜Δｘ｜，Δｙ／｜Δｙ｜，Δｚ／｜Δｚ｜）により、その速度ベクトルを正規化する。群化可視化処理部９は、その正規化した速度ベクトルを線分描画テーブル２１の「正規化したｖp」に対応する位置ｘ，ｙ，ｚへ格納する。
【００８９】
また、群化可視化処理部９は、２つのパーティクル位置テーブル４のうち、直近（Ｔ＝ｔ＋１）にパーティクル位置が格納されたパーティクル位置テーブルからパーティクルｍの位置Ｑ1（ｒqx，ｒqy，ｒqz）を取得する。そして、群化可視化処理部９は、その取得した位置Ｑ1（ｒqx，ｒqy，ｒqz）を線分描画テーブル２１の「ｖq終点」に対応する位置ｘ，ｙ，ｚへ格納する。
【００９０】
また、群化可視化処理部９は、他方（Ｔ＝ｔ）のパーティクル位置テーブル４からパーティクルｍの位置Ｑ0（ｒqox，ｒqoy，ｒqoz）を取得し、線分描画テーブル２１の「ｖq始点」に対応する位置ｘ，ｙ，ｚへ格納する。
【００９１】
さらに、群化可視化処理部９は、２つのパーティクル位置テーブル４から、パーティクルｍの単位時間Δｔでの位置の移動量（Δｘ，Δｙ，Δｚ）、すなわち速度ベクトルを算出する。群化可視化処理部９は、（Δｘ／｜Δｘ｜，Δｙ／｜Δｙ｜，Δｚ／｜Δｚ｜）により、その速度ベクトルを正規化する。群化可視化処理部９は、その正規化した速度ベクトルを線分描画テーブル２１の「正規化したｖq」に対応する位置ｘ，ｙ，ｚへ格納する。
【００９２】
次に、群化可視化処理部９は、三角形Ｐ0Ｐ1Ｑ0の法線ａを算出する（Ｓ４２）。また、群化可視化処理部９は、三角形Ｑ0Ｑ1Ｐ1の法線ｂを算出する（Ｓ４３）。
群化可視化処理部９は、法線ベクトルａ，ｂのなす角φから、法線ベクトルａ，ｂのねじれを判定する（Ｓ４４）。角φが閾値φt以上の場合（Ｓ４４で「Ｎｏ」）、群化可視化処理部９は、描画色Ｃ３に第３の色をセットする（Ｓ４８）。ここで、描画色Ｃ３は、渦領域境界を表す描画色である（図４）。
【００９３】
角φが閾値φtより小さい場合（Ｓ４４で「Ｙｅｓ」）、群化可視化処理部９は、法線ベクトルａのｚ成分（ａz）の向きを判定する（Ｓ４５）。法線ベクトルａのｚ成分（ａz）がａz≧０、すなわち正方向を向いていると判定された場合（Ｓ４５で「Ｙｅｓ」）、群化可視化処理部９は、描画色Ｃ１に第１の色をセットする（Ｓ４６）。ここで、描画色Ｃ１は、渦外縁を表す描画色であり、図３（Ａ）で説明したように、三角形Ｐ0Ｐ1Ｑ0のなす面の表側を判別するために用いられる。
【００９４】
一方、法線ベクトルａのｚ成分（ａz）がａz＜０、すなわち負方向を向いていると判定された場合（Ｓ４５で「Ｎｏ」）、群化可視化処理部９は、描画色Ｃ２に第２の色をセットする（Ｓ４７）。ここで、描画色Ｃ２は、渦外縁を表す描画色であり、図３（Ｂ）で説明したように、三角形Ｐ0Ｐ1Ｑ0のなす面の裏側を判別するために用いられる。
【００９５】
本実施形態の可視化処理では、図１２で示すように２つの速度ベクトルＰ0Ｐ1，Ｑ0Ｑ1の始点から終点へと向かう、正規化した速度ベクトルｖp，ｖqの終点同士を線分で結ぶ描画処理を行う。そのため、群化可視化処理部９は、その描画点の位置を決定するカウンタｉを０で初期化する（Ｓ４９）。
【００９６】
群化可視化処理部９は、線分描画テーブル２１を読み込み（Ｓ５０）、ベクトルｖpの始点ｒpo＝（ｒpox，ｒpoy，ｒpoz）、正規化したベクトルｖp＝（ｒpx，ｒpy，ｒpz）、ベクトルｖpの終点ｒp1＝（ｒp1x，ｒp1y，ｒp1z）を取得する。群化可視化処理部９は、さらに、ベクトルｖpの始点ｒpoと終点ｒp1とから、ベクトルｖpの長さを算出し、その算出した長さをＬvpに代入する。また、群化可視化処理部９は、線分描画テーブル２１を読み込み、ベクトルｖqの始点ｒqo＝（ｒqox，ｒqoy，ｒqoz）、正規化したベクトルｖq＝（ｒqx，ｒqy，ｒqz）を取得する。
【００９７】
群化可視化処理部９は、ｒp＝ｒp0＋ｉ×（正規化したベクトルｖp）より、ベクトルｖpの描画点ｒpを算出する（Ｓ５１）。また、群化可視化処理部９は、ｒq＝ｒq0＋ｉ×（正規化したベクトルｖq）より、ベクトルｖqの描画点ｒqを算出する（Ｓ５２）。
【００９８】
群化可視化処理部９は、描画色Ｃ１、描画色Ｃ２または描画色Ｃ３を用いて、算出した描画点ｒpと描画点ｒqを結ぶ線分ｒpｒqの描画を行う（Ｓ５３）。すなわち、描画色Ｃ１に第１の色が設定されている場合、群化可視化処理部９は、第１の色を用いて、線分ｒpｒqを描画する。また、描画色Ｃ２に第２の色が設定されている場合、群化可視化処理部９は、第２の色を用いて、線分ｒpｒqを描画する。また、描画色Ｃ３に第３の色が設定されている場合、群化可視化処理部９は、第３の色を用いて、線分ｒpｒqを描画する。
【００９９】
群化可視化処理部９は、ベクトルｖpの長さ分（Ｌvp）に到達したかどうかを判定する（Ｓ５４）。群化可視化処理部９は、双方のベクトルの単位長さ分だけ描画点を進める毎に線分ｒpｒqの描画を行い、ベクトルｖpの長さ分（Ｌvp）だけ繰り返すと、図２の可視化を１組分行うことができる。群化可視化処理部９は、ｉ＜のＬvp場合、カウンタiをインクリメントし、Ｓ５１−Ｓ５３の処理を繰り返す。これにより、位置と速度の近いパーティクルの速度ベクトル間を複数の線分で描画し、その線分の集合体を面と見立てて視覚化を行うことができる。
【０１００】
上記の方法により、位置と速度の近いパーティクル間が複数の線分で結ばれることにより、この線分の集合体を面として見立てることができる。これにより、パーティクルが固まりとして認識しやすくなる。また渦領域の外縁部と渦同士の境界部が表示されるので、誤認識を起こすことなく渦状に移動するパーティクルを追跡することができる。
【０１０１】
また、Ｓ６のフィルタリング、Ｓ９，Ｓ１０の閾値、Ｓ２１の探索領域を調整することにより、群化の対象となるパーティクルを調整することができる。その結果、表示精度を調整することができる。
【０１０２】
図１６は、シミュレーションシステムのハードウェア環境の構成ブロック図である。シミュレーション装置１は、ＣＰＵ３２、ＲＯＭ３３、ＲＡＭ３６、通信Ｉ／Ｆ３４、記憶装置３７、出力Ｉ／Ｆ３１、入力Ｉ／Ｆ３５、読み取り装置３８、バス３９、出力機器４１、入力機器４２によって構成されている。
【０１０３】
ここで、ＣＰＵは、中央演算装置を示す。ＲＯＭは、リードオンリメモリを示す。ＲＡＭは、ランダムアクセスメモリを示す。Ｉ／Ｆは、通信インターフェースを示す。バス３９には、ＣＰＵ３２、ＲＯＭ３３、ＲＡＭ３６、通信Ｉ／Ｆ３４、記憶装置３７、出力Ｉ／Ｆ３１、入力Ｉ／Ｆ３５、及び読み取り装置３８が接続されている。読み取り装置３８は、可搬型記録媒体を読み出す装置である。出力機器４１は、出力Ｉ／Ｆ３１に接続されている。入力機器４２は、入力Ｉ／Ｆ３５に接続にされている。
【０１０４】
記憶装置３７としては、ハードディスク、フラッシュメモリ、磁気ディスクなど様々な形式の記憶装置を使用することができる。
格納部１１，１６としての記憶装置３７またはＲＯＭ３３には、例えば、上記第１または第２の実施形態で説明した処理を実現するプログラムが格納されている。また、記憶装置３７またはＲＯＭ３３には、パーティクル位置テーブル４、パーティクル位置速度テーブル６、群化テーブル８、線分描画テーブル２１、シミュレーション結果、閾値、レンダリング設定条件、その他のオブジェクトに関する情報等が格納されている。
【０１０５】
ＣＰＵ８２は、記憶装置８７等に格納した上記第１または第２の実施形態で説明した処理を実現するプログラムを読み出し、当該プログラムを実行する。
第１または第２の実施形態で説明した処理を実現するプログラムは、プログラム提供者側から通信ネットワーク４０、および通信Ｉ／Ｆ３４を介して、例えば記憶装置３７に格納してもよい。また、第１または第２の実施形態で説明した処理を実現するプログラムは、市販され、流通している可搬型記憶媒体に格納されていてもよい。この場合、この可搬型記憶媒体は読み取り装置３８にセットされて、ＣＰＵ３２によってそのプログラムが読み出されて、実行されてもよい。可搬型記憶媒体としてはＣＤ−ＲＯＭ、フレキシブルディスク、光ディスク、光磁気ディスク、ＩＣカード、ＵＳＢメモリ装置など様々な形式の記憶媒体を使用することができる。このような記憶媒体に格納されたプログラムが読み取り装置３８によって読み取られる。
【０１０６】
また、入力機器４２には、キーボード、マウス、電子カメラ、ウェブカメラ、マイク、スキャナ、センサ、タブレットなどを用いることが可能である。また、出力機器４１には、ディスプレイ、プリンタ、スピーカなどを用いることが可能である。また、ネットワーク４０は、インターネット、ＬＡＮ、ＷＡＮ、専用線、有線、無線等の通信網であってよい。
【０１０７】
第１及び第２の実施形態におけるシミュレーション装置は、速度算出部、群化部、描画情報生成部を含む。
速度算出部は、流体の流れについてのシミュレーションにより算出されるパーティクルの時間毎の物理量に関するシミュレーション結果情報に基づいて、各位置における前記パーティクルの速度を算出する。例えば、速度計算部５は、速度算出部に含まれる。
【０１０８】
群化部は、前記パーティクルの位置に基づいて、２つの前記パーティクル間の距離を算出し、前記パーティクルの速度に基づいて、２つの前記パーティクル間の速度差を算出し、前記パーティクル間の距離の値が第１の閾値より小さく、かつ前記パーティクル間の速度差の値が第２の閾値より小さい場合、該２つのパーティクルを群化する。例えば、群化判定部７は、群化部に含まれる。
【０１０９】
描画情報生成部は、前記群化された２つのパーティクルの速度ベクトルに基づいて、前記群化された２つのパーティクルの挙動を示す表示オブジェクトを描画する描画情報を生成する。例えば、群化可視化処理部９は、描画情報生成部に含まれる。
【０１１０】
このように構成することにより、パーティクルフローの群化可視化により、パーティクルの３次元的な挙動を追跡することが容易になる。
前記描画情報生成部は、前記群化された２つのパーティクルの速度ベクトルのうち、一方のパーティクルの速度ベクトルの始点及び終点と、他方のパーティクルの速度ベクトル始点または終点とを頂点とする２つの三角形を生成する。それから、前記描画情報生成部は、該各三角形を形成する面の法線ベクトルを算出する。そして、前記描画情報生成部は、該法線ベクトルの向きまたは該２つの法線ベクトルのなす角度に応じて、前記表示オブジェクトの表示形態を変化させる。
【０１１１】
このように構成することにより、例えば、乱流におけるパーティクルの挙動を、容易に判別することができる。
また、前記描画情報生成部は、前記２つの法線ベクトルのなす角度の値が第３の閾値より小さく、かついずれかの法線ベクトルの所定方向の成分の向きが正の場合、前記表示オブジェクトに第１の色を付与する。また、前記描画情報生成部は、前記２つの法線ベクトルのなす角度の値が前記第３の閾値より小さく、かついずれかの法線ベクトルの所定方向の成分の向きが負の場合、前記表示オブジェクトに第２の色を付与する。また、前記描画情報生成部は、前記２つの法線ベクトルのなす角度の値が前記第３の閾値以上である場合、前記表示オブジェクトに第３の色を付与する。
【０１１２】
このように構成することにより、例えば、乱流における渦外周の手前側、奥側または渦間の境界を移動するパーティクルの挙動を、容易に判別することができる。
また、前記描画情報生成部は、レンダリングにより、前記三角形を形成する面を仮想的な３次元空間内に構成し、該三角形を形成する面に対して、前記第１の色、第２の色、または第３の色を付与することができる。
【０１１３】
このように構成することにより、レンダリングを用いて、群化された位置と速度の近いパーティクルの速度ベクトルにより形成される面に対して色付けを行うことができる。
また、前記描画情報生成部は、前記２つのパーティクルの速度ベクトルそれぞれを単位長さのベクトルに分割する。そして、前記描画情報生成部は、該分割した単位長さの２つのパーティクルの速度ベクトルの始点同士または終点同士を結ぶ線分を、前記第１の色、第２の色、または第３の色を用いて描画して、前記表示オブジェクトを生成する。
【０１１４】
このように構成することにより、位置と速度の近いパーティクル間が複数の線分で結ばれることにより、この線分の集合体を面として見立てることができる。
なお、第１及び第２の実施形態は、以上に述べた実施の形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
【０１１５】
上記実施形態に関し、更に以下の付記を開示する。
（付記１）
流体の流れについてのシミュレーションにより算出されるパーティクルの時間毎の物理量に関するシミュレーション結果情報に基づいて、各位置における前記パーティクルの速度を算出する速度算出部と、
前記パーティクルの位置に基づいて、２つの前記パーティクル間の距離を算出し、前記パーティクルの速度に基づいて、２つの前記パーティクル間の速度差を算出し、前記パーティクル間の距離の値が第１の閾値より小さく、かつ前記パーティクル間の速度差の値が第２の閾値より小さい場合、該２つのパーティクルを群化する群化部と、
前記群化された２つのパーティクルの速度ベクトルに基づいて、前記群化された２つのパーティクルの挙動を示す表示オブジェクトを描画する描画情報を生成する描画情報生成部と、
を備えることを特徴とするシミュレーション装置。
（付記２）
前記描画情報生成部は、前記群化された２つのパーティクルの速度ベクトルのうち、一方のパーティクルの速度ベクトルの始点及び終点と、他方のパーティクルの速度ベクトル始点または終点とを頂点とする２つの三角形を生成し、該各三角形を形成する面の法線ベクトルを算出し、該法線ベクトルの向きまたは該２つの法線ベクトルのなす角度に応じて、前記表示オブジェクトの表示形態を変化させる
ことを特徴とする付記１に記載のシミュレーション装置。
（付記３）
前記描画情報生成部は、前記２つの法線ベクトルのなす角度の値が第３の閾値より小さく、かついずれかの法線ベクトルの所定方向の成分の向きが正の場合、前記表示オブジェクトに第１の色を付与し、前記２つの法線ベクトルのなす角度の値が前記第３の閾値より小さく、かついずれかの法線ベクトルの所定方向の成分の向きが負の場合、前記表示オブジェクトに第２の色を付与し、前記２つの法線ベクトルのなす角度の値が前記第３の閾値以上である場合、前記表示オブジェクトに第３の色を付与する
ことを特徴とする付記２に記載のシミュレーション装置。
（付記４）
前記描画情報生成部は、レンダリングにより、前記三角形を形成する面を仮想的な３次元空間内に構成し、該三角形を形成する面に対して、前記第１の色、第２の色、または第３の色を付与する
ことを特徴とする付記３に記載のシミュレーション装置。
（付記５）
前記描画情報生成部は、前記２つのパーティクルの速度ベクトルそれぞれを単位長さのベクトルに分割し、該分割した単位長さの２つのパーティクルの速度ベクトルの始点同士または終点同士を結ぶ線分を、前記第１の色、第２の色、または第３の色を用いて描画して、前記表示オブジェクトを生成する
ことを特徴とする付記３に記載のシミュレーション装置。
（付記６）
流体の流れについてのシミュレーション結果を表示する処理をコンピュータに実行させるシミュレーション結果表示プログラムであって、
前記シミュレーションにより算出されるパーティクルの時間毎の物理量に関するシミュレーション結果情報に基づいて、各位置における前記パーティクルの速度を算出する速度算出処理と、
前記パーティクルの位置に基づいて、２つの前記パーティクル間の距離を算出し、前記パーティクルの速度に基づいて、２つの前記パーティクル間の速度差を算出し、前記パーティクル間の距離の値が第１の閾値より小さく、かつ前記パーティクル間の速度差の値が第２の閾値より小さい場合、該２つのパーティクルを群化する群化処理と、
前記群化された２つのパーティクルの速度ベクトルに基づいて、前記群化された２つのパーティクルの挙動を示す表示オブジェクトを描画する描画情報を生成する描画情報生成処理と、
をコンピュータに実行させることを特徴とするシミュレーション結果表示プログラム。
（付記７）
前記描画情報生成処理は、前記群化された２つのパーティクルの速度ベクトルのうち、一方のパーティクルの速度ベクトルの始点及び終点と、他方のパーティクルの速度ベクトル始点または終点とを頂点とする２つの三角形を生成し、該各三角形を形成する面の法線ベクトルを算出し、該法線ベクトルの向きまたは該２つの法線ベクトルのなす角度に応じて、前記表示オブジェクトの表示形態を変化させる
ことを特徴とする付記６に記載のシミュレーション結果表示プログラム。
（付記８）
前記描画情報生成処理は、前記２つの法線ベクトルのなす角度の値が第３の閾値より小さく、かついずれかの法線ベクトルの所定方向の成分の向きが正の場合、前記表示オブジェクトに第１の色を付与し、前記２つの法線ベクトルのなす角度の値が前記第３の閾値より小さく、かついずれかの法線ベクトルの所定方向の成分の向きが負の場合、前記表示オブジェクトに第２の色を付与し、前記２つの法線ベクトルのなす角度の値が前記第３の閾値以上である場合、前記表示オブジェクトに第３の色を付与する
ことを特徴とする付記７に記載のシミュレーション結果表示プログラム。
（付記９）
前記描画情報生成処理は、レンダリングにより、前記三角形を形成する面を仮想的な３次元空間内に構成し、該三角形を形成する面に対して、前記第１の色、第２の色、または第３の色を付与する
ことを特徴とする付記８に記載のシミュレーション結果表示プログラム。
（付記１０）
前記描画情報生成処理は、前記２つのパーティクルの速度ベクトルそれぞれを単位長さのベクトルに分割し、該分割した単位長さの２つのパーティクルの速度ベクトルの始点同士または終点同士を結ぶ線分を、前記第１の色、第２の色、または第３の色を用いて描画して、前記表示オブジェクトを生成する
ことを特徴とする付記８に記載のシミュレーション結果表示プログラム。
（付記１１）
コンピュータにより実行される、流体の流れについてのシミュレーション結果を表示する処理をコンピュータに実行させるシミュレーション結果表示方法であって、
前記コンピュータは、
前記シミュレーションにより算出されるパーティクルの時間毎の物理量に関するシミュレーション結果情報に基づいて、各位置における前記パーティクルの速度を算出し、
前記パーティクルの位置に基づいて、２つの前記パーティクル間の距離を算出し、前記パーティクルの速度に基づいて、２つの前記パーティクル間の速度差を算出し、前記パーティクル間の距離の値が第１の閾値より小さく、かつ前記パーティクル間の速度差の値が第２の閾値より小さい場合、該２つのパーティクルを群化し、
前記群化された２つのパーティクルの速度ベクトルに基づいて、前記群化された２つのパーティクルの挙動を示す表示オブジェクトを描画する描画情報を生成する、
ことを特徴とするシミュレーション結果表示方法。
（付記１２）
前記表示オブジェクトを描画する描画情報を生成する場合、前記コンピュータは、前記群化された２つのパーティクルの速度ベクトルのうち、一方のパーティクルの速度ベクトルの始点及び終点と、他方のパーティクルの速度ベクトル始点または終点とを頂点とする２つの三角形を生成し、該各三角形を形成する面の法線ベクトルを算出し、該法線ベクトルの向きまたは該２つの法線ベクトルのなす角度に応じて、前記表示オブジェクトの表示形態を変化させる
ことを特徴とする付記１１に記載のシミュレーション結果表示方法。
（付記１３）
前記表示オブジェクトを描画する描画情報を生成する場合、前記コンピュータは、前記２つの法線ベクトルのなす角度の値が第３の閾値より小さく、かついずれかの法線ベクトルの所定方向の成分の向きが正の場合、前記表示オブジェクトに第１の色を付与し、前記２つの法線ベクトルのなす角度の値が前記第３の閾値より小さく、かついずれかの法線ベクトルの所定方向の成分の向きが負の場合、前記表示オブジェクトに第２の色を付与し、前記２つの法線ベクトルのなす角度の値が前記第３の閾値以上である場合、前記表示オブジェクトに第３の色を付与する
ことを特徴とする付記１２に記載のシミュレーション結果表示方法。
（付記１４）
前記表示オブジェクトを描画する描画情報を生成する場合、前記コンピュータは、レンダリングにより、前記三角形を形成する面を仮想的な３次元空間内に構成し、該三角形を形成する面に対して、前記第１の色、第２の色、または第３の色を付与する
ことを特徴とする付記１３に記載のシミュレーション結果表示方法。
（付記１５）
前記表示オブジェクトを描画する描画情報を生成する場合、前記コンピュータは、前記２つのパーティクルの速度ベクトルそれぞれを単位長さのベクトルに分割し、該分割した単位長さの２つのパーティクルの速度ベクトルの始点同士または終点同士を結ぶ線分を、前記第１の色、第２の色、または第３の色を用いて描画して、前記表示オブジェクトを生成する
ことを特徴とする付記１３に記載のシミュレーション結果表示方法。
【符号の説明】
【０１１６】
１      シミュレーション装置
２      入力部
３      シミュレーション結果格納部
４      パーティクル位置テーブル
５      速度計算部
６      パーティクル位置速度テーブル
７      群化判定部
８      群化テーブル
９      群化可視化処理部
１０    群化可視化実行部
１１，１６      格納部
１２      パーティクルフロー描画処理部
１３      描画指示部
１４      グラフィック処理部
１５      表示装置
２１      線分描画テーブル
【図５】
0005668373.tif 000002
【図６】
0005668373.tif 000003
【図７】
0005668373.tif 000004
【図８】
0005668373.tif 000005
【図９】
0005668373.tif 000006
【図１０】
0005668373.tif 000007
【図１１】
0005668373.tif 000008
【図１２】
0005668373.tif 000009
【図１３】
0005668373.tif 000010
【図１４】
0005668373.tif 000011
【図１５】
0005668373.tif 000012
【図１６】
0005668373.tif 000013
【図１】
0005668373.tif 000014
【図２】
0005668373.tif 000015
【図３】
0005668373.tif 000016
【図４】
0005668373.tif 000017