(57)【要約】      （修正有）【課題】流体シミュレーション装置で行われる複数のプロセッサを用いた粒子ベースの流体シミュレーション方法を提供する。【解決手段】方法は、流体に対する複数の粒子を含むシミュレーション領域をモデリングするステップと、シミュレーション領域を複数のサブ領域に分割するステップと、複数のサブ領域の各々に複数のプロセッサの各々を割り当てるステップと、複数のプロセッサの各々によって該当するサブ領域に対する複数の粒子の流動データを計算するステップと、計算結果に基づいて流体シミュレーションを行うステップと、を含む。複数のプロセッサの各々によって該当するサブ領域に対する複数の粒子の流動データを計算するステップは、複数のプロセッサの各々が隣接した少なくとも１つのプロセッサと複数の粒子の流動データとを交換するステップを含む。【選択図】図５
2020035445.tif 000002
【特許請求の範囲】
【請求項１】
流体シミュレーション装置で行われる複数のプロセッサを用いた粒子ベースの流体シミュレーション方法において、
流体に対する複数の粒子を含むシミュレーション領域をモデリングするステップと、
前記シミュレーション領域を複数のサブ領域に分割するステップと、
前記複数のサブ領域の各々に前記複数のプロセッサの各々を割り当てるステップと、
前記複数のプロセッサの各々によって該当するサブ領域に対する複数の粒子の流動データを計算するステップと、
前記計算結果に基づいて流体シミュレーションを行うステップと、
を含み、
前記複数のプロセッサの各々によって該当するサブ領域に対する複数の粒子の流動データを計算するステップは、
前記複数のプロセッサの各々が隣接した少なくとも１つのプロセッサと前記複数の粒子の流動データとを交換するステップを含む、流体シミュレーション方法。
【請求項２】
前記複数のサブ領域の各々は、隣接したサブ領域と重なる重畳領域を含み、
前記交換する流動データは、前記重畳領域に対する流動データである、請求項１に記載の流体シミュレーション方法。
【請求項３】
前記複数のプロセッサの各々によって前記複数のサブ領域の各々に含まれた前記流体の粒子の流動データを計算するステップは、
前記重畳領域以外の非重畳領域に対する流動データに基づき、前記非重畳領域に対する前記複数の粒子の流動を計算するステップと、
前記隣接した少なくとも１つのプロセッサから受信した前記重畳領域に対する流動データに基づき、前記重畳領域に対する前記複数の粒子の流動を計算するステップと、
を含む、請求項２に記載の流体シミュレーション方法。
【請求項４】
前記複数のプロセッサは、グラフィック処理ユニット（ＧＰＵ：  Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である、請求項１に記載の流体シミュレーション方法。
【請求項５】
前記流体に対する複数の粒子を含むシミュレーション領域をモデリングするステップは、
地形情報、構造物情報、境界条件情報、粒子物性情報、及び重力加速度情報のうち少なくとも１つを入力してもらうステップと、
前記入力してもらった少なくとも１つに基づいて前記シミュレーション領域をモデリングするステップと、
を含む、請求項１に記載の流体シミュレーション方法。
【請求項６】
前記構造物情報は、密度、反発係数、及び摩擦係数のうち少なくとも１つを含む、請求項５に記載の流体シミュレーション方法。
【請求項７】
前記粒子物性情報は、粒子半径、密度、粘性、音速、及び初期速度のうち少なくとも１つを含む、請求項５に記載の流体シミュレーション方法。
【請求項８】
第１のプロセッサ及び第２のプロセッサを含む流体シミュレーション装置で行われる粒子ベースの流体シミュレーション方法において、
流体に対する複数の粒子を含むシミュレーション領域をモデリングするステップと、
前記シミュレーション領域を第１のサブ領域及び前記第１のサブ領域と隣接した第２のサブ領域を含む複数のサブ領域に分割し、前記第１のサブ領域及び前記第２のサブ領域の各々は互いに重なる重畳領域を含むステップと、
前記第１のサブ領域に前記第１のプロセッサを割り当て、前記第２のサブ領域に前記第２のプロセッサを割り当てるステップと、
前記第１のプロセッサによって前記第１のサブ領域に対する複数の粒子の流動データを計算するステップと、
前記第２のプロセッサによって前記第２のサブ領域に対する複数の粒子の流動データを計算するステップと、
前記第１のプロセッサ及び前記第２のプロセッサの各々が前記重畳領域に対する流動データを互いに交換するステップと、を含む、流体シミュレーション方法。
【請求項９】
前記重畳領域は、前記第１のサブ領域と隣接した第１の重畳領域及び前記第２のサブ領域と隣接した第２の重畳領域を含む、請求項８に記載の流体シミュレーション方法。
【請求項１０】
前記第１のプロセッサ及び前記第２のプロセッサの各々が前記重畳領域に対する流動データを互いに交換するステップは、
前記第１のプロセッサが前記第２のプロセッサから前記第２の重畳領域に対する流動データを受信するステップと、
前記第２のプロセッサが前記第１のプロセッサから前記第１の重畳領域に対する流動データを受信するステップと、を含む、請求項９に記載の流体シミュレーション方法。
【請求項１１】
前記第１のプロセッサによって、既計算された前記第１の重畳領域に対する流動データ及び前記第２のプロセッサから受信した前記第２の重畳領域に対する流動データに基づき、前記重畳領域に対する流動データを再計算するステップと、
前記第２のプロセッサによって、既計算された前記第２の重畳領域に対する流動データ及び前記第１のプロセッサから受信した前記第１の重畳領域に対する流動データに基づき、前記重畳領域に対する流動データを再計算するステップと、
を含む、請求項１０に記載の流体シミュレーション方法。
【請求項１２】
複数のプロセッサを用いた粒子ベースの流体をシミュレーションする流体シミュレーション装置において、
前記シミュレーションに関する情報を格納するメモリと、
第１のプロセッサと、
第２のプロセッサと、
第３のプロセッサと、を含み、
前記第１のプロセッサは、
流体に対する複数の粒子を含むシミュレーション領域をモデリングし、
前記シミュレーション領域を複数のサブ領域に分割し、
前記シミュレーション領域を第１のサブ領域及び前記第１のサブ領域と隣接した第２のサブ領域を含む複数のサブ領域に分割し、前記第１のサブ領域及び前記第２のサブ領域の各々は互いに重なる重畳領域を含み、
前記第１のサブ領域に前記第１のプロセッサを割り当て、前記第２のサブ領域に前記第２のプロセッサを割り当て、
前記第２のプロセッサは、
前記第１のサブ領域に対する複数の粒子の流動データを計算し、
前記第３のプロセッサは、
前記第２のサブ領域に対する複数の粒子の流動データを計算し、
前記第２のプロセッサ及び前記第３のプロセッサの各々は、前記重畳領域に対する流動データを互いに交換する、流体シミュレーション装置。
【請求項１３】
前記重畳領域は、前記第１のサブ領域と隣接した第１の重畳領域及び前記第２のサブ領域と隣接した第２の重畳領域を含む、請求項１２に記載の流体シミュレーション装置。
【請求項１４】
前記第２のプロセッサは、前記第３のプロセッサから前記第２の重畳領域に対する流動データを受信し、
前記第３のプロセッサは、前記第２のプロセッサから前記第１の重畳領域に対する流動データを受信する、請求項１３に記載の流体シミュレーション装置。
【請求項１５】
前記第２のプロセッサは、既計算された前記第１の重畳領域に対する流動データ及び前記第３のプロセッサから受信した前記第２の重畳領域に対する流動データに基づき、前記第１の重畳領域に対する流動データを再計算し、
前記第３のプロセッサは、既計算された前記第２の重畳領域に対する流動データ及び前記第２のプロセッサから受信した前記第１の重畳領域に対する流動データに基づき、前記第２の重畳領域に対する流動データを再計算する、請求項１４に記載の流体シミュレーション装置。
【請求項１６】
前記第１のプロセッサは、中央処理装置（ＣＰＵ：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）であり、
前記第２のプロセッサ及び前記第３のプロセッサは、グラフィック処理ユニット（ＧＰＵ：Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である、請求項１２に記載の流体シミュレーション装置。
【請求項１７】
前記第１のプロセッサは、地形情報、構造物情報、境界条件情報、粒子物性情報、及び重力加速度情報のうち少なくとも１つを入力してもらい、前記入力してもらった少なくとも１つに基づいて前記シミュレーション領域をモデリングする、請求項１２に記載の流体シミュレーション装置。
【請求項１８】
前記構造物情報は、密度、反発係数、及び摩擦係数のうち少なくとも１つを含む、請求項１７に記載の流体シミュレーション装置。
【請求項１９】
前記粒子物性情報は、粒子半径、密度、粘性、音速、及び初期速度のうち少なくとも１つを含む、請求項１７に記載の流体シミュレーション装置。
【請求項２０】
請求項１乃至請求項７の何れか一項に記録された方法をコンピュータ装置に実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプロセッサを用いた粒子ベースの流体シミュレーション方法及び流体シミュレーション装置に関する。
【背景技術】
【０００２】
数値流体力学（Ｃｏｍｐｕｔａｔｉｏｎａｌ  Ｆｌｕｉｄ  Ｄｙｎａｍｉｃｓ）は、偏微分方程式であるナビエ−ストークス方程式（Ｎａｉｖｅｒ−Ｓｔｏｋｅｓ  Ｅｑｕａｔｉｏｎ）をＦＤＭ（Ｆｉｎｉｔｅ  Ｄｉｆｆｅｒｅｎｃｅ  Ｍｅｔｈｏｄ）、ＦＥＭ（Ｆｉｎｉｔｅ  Ｅｌｅｍｅｎｔ  Ｍｅｔｈｏｄ）、ＦＶＭ（Ｆｉｎｉｔｅ  Ｖｏｌｕｍｅ  Ｍｅｔｈｏｄ）、及びＳＰＨ（Ｓｍｏｏｔｈｅｄ  Ｐａｒｔｉｃｌｅ  Ｈｙｄｒｏｄｙｎａｍｉｃｓ）などの方法により離散化することで流体の流動を演算する流体力学の一分野である。
【０００３】
ナビエ−ストークス方程式を計算する方法は、格子ベースの方法と粒子ベースの方法がある。
【０００４】
格子ベースの方法は、空間ドメインを小さい空間格子（Ｍｅｓｈ  ｏｒ  Ｇｒｉｄ）に離散化し、各々の格子に対して運動方程式を立て、適切な数値アルゴリズムを用いて流体の流動を演算することである。即ち、格子ベースの方法は、格子の生成が必須として求められる。
【０００５】
それに対し、粒子ベースの方法は、流体を多数の粒子の集合に表現し、各粒子の流動を追跡することによって流体の流動を演算することである。
【０００６】
かかる粒子ベースの方法は、解析対象を格子で表現する代わりに粒子で表現することによって、自然現象や物理現象に対するより自然なシミュレーションが可能となる。
【０００７】
即ち、粒子ベースの方法は、自由表面のような界面における大きい変化を処理することが容易であり、剛体、弾性体及び流体などの複数の物理現象を連発する現象を処理することが容易である。
【０００８】
このような長所によって、流体の流動をシミュレーションするにあたり、最近、ＳＰＨが多く用いられている。
【０００９】
しかし、粒子ベースの方法は、流体を表現する複数の粒子の各々の流動を計算しなければならないので、格子ベースの方法に比べて解析時間が長いという短所がある。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特許第６００９０７５号明細書
【発明の概要】
【発明が解決しようとする課題】
【００１１】
本発明は、解析時間を短縮可能な粒子ベースの流体シミュレーション方法及び流体シミュレーション装置を提供することを目的とする。
【００１２】
但し、本実施例が解決しようとする技術的課題は、上記したような技術的課題に限定されるものではなく、他の技術的課題が存在し得る。
【課題を解決するための手段】
【００１３】
上述した技術的課題を解決するための技術的手段として、本発明の一実施例は、流体シミュレーション装置で行われる複数のプロセッサを用いた粒子ベースの流体シミュレーション方法において、流体に対する複数の粒子を含むシミュレーション領域をモデリングするステップと、前記シミュレーション領域を複数のサブ領域に分割するステップと、前記複数のサブ領域の各々に前記複数のプロセッサの各々を割り当てるステップと、前記複数のプロセッサの各々によって該当するサブ領域に対する複数の粒子の流動データを計算するステップと、前記計算結果に基づいて流体シミュレーションを行うステップと、を含む。前記複数のプロセッサの各々によって該当するサブ領域に対する複数の粒子の流動データを計算するステップは、前記複数のプロセッサの各々が隣接した少なくとも１つのプロセッサと前記複数の粒子の流動データとを交換するステップを含む。
【００１４】
また、本発明の他の実施例は、第１のプロセッサ及び第２のプロセッサを含む流体シミュレーション装置で行われる粒子ベースの流体シミュレーション方法において、流体に対する複数の粒子を含むシミュレーション領域をモデリングするステップと、前記シミュレーション領域を第１のサブ領域及び前記第１のサブ領域と隣接した第２のサブ領域を含む複数のサブ領域に分割し、前記第１のサブ領域及び前記第２のサブ領域の各々は互いに重なる重畳領域を含むステップと、前記第１のサブ領域に前記第１のプロセッサを割り当て、第２のサブ領域に前記第２のプロセッサを割り当てるステップと、前記第１のプロセッサによって前記第１のサブ領域に対する複数の粒子の流動データを計算するステップと、前記第２のプロセッサによって前記第２のサブ領域に対する複数の粒子の流動データを計算するステップと、前記第１のプロセッサ及び前記第２のプロセッサの各々が前記重畳領域に対する流動データを互いに交換するステップと、を含む。
【００１５】
さらに、本発明の他の実施例は、複数のプロセッサを用いた粒子ベースの流体をシミュレーションする流体シミュレーション装置において、前記シミュレーションに関する情報を格納するメモリと、第１のプロセッサと、第２のプロセッサと、第３のプロセッサと、を含む。前記第１のプロセッサは、流体に対する複数の粒子を含むシミュレーション領域をモデリングし、前記シミュレーション領域を複数のサブ領域に分割し、前記シミュレーション領域を第１のサブ領域及び前記第１のサブ領域と隣接した第２のサブ領域を含む複数のサブ領域に分割し、前記第１のサブ領域及び前記第２のサブ領域の各々は互いに重なる重畳領域を含み、前記第１のサブ領域に前記第１のプロセッサを割り当て、第２のサブ領域に前記第２のプロセッサを割り当てる。前記第２のプロセッサは、前記第１のサブ領域に対する複数の粒子の流動データを計算し、前記第３のプロセッサは、前記第２のサブ領域に対する複数の粒子の流動データを計算する。前記第２のプロセッサ及び前記第３のプロセッサの各々は、前記重畳領域に対する流動データを互いに交換する。
【発明の効果】
【００１６】
上述した本発明の課題を解決するための手段の何れか１つによれば、解析時間を短縮可能な粒子ベースの流体シミュレーション方法及び流体シミュレーション装置を提供することができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の一実施例に係る流体シミュレーション装置のブロック図である。
【図２】本発明の一実施例に係る流体シミュレーション方法を例示的に示す図である。
【図３】本発明の一実施例に係る流体シミュレーション方法を説明するための図である。
【図４】本発明の他の実施例に係る流体シミュレーション方法を説明するための図である。
【図５】本発明の一実施例に係る流体シミュレーション方法を示すフローチャートである。
【発明を実施するための形態】
【００１８】
以下では、添付した図面を参照しながら、本発明の属する技術分野において通常の知識を有する者が容易に実施できるように本発明の実施例を詳しく説明する。ところが、本発明は様々な異なる形態に具現されることができ、ここで説明する実施例に限定されるものではない。そして、図面において、本発明を明確に説明するために、説明とは関係ない部分は省略しており、明細書全体に亘って類似した部分に対しては類似した図面符号を付けている。
【００１９】
明細書全体において、ある部分が他の部分と「連結」されているという場合、これは「直接的に連結」されている場合だけでなく、その中間に他の素子を挟んで「電気的に連結」されている場合も含む。また、ある部分がある構成要素を「含む」という場合、これは、特に反対の記載がない限り、他の構成要素を除くのではなく、他の構成要素をさらに含み得ることを意味し、１つ或いはそれ以上の他の特徴や数字、ステップ、動作、構成要素、部分品、又はこれらを組み合わせたものの存在や付加可能性を予め排除するものではないと理解されなければならない。
【００２０】
本明細書において「部」とは、ハードウェアにより実現されるユニット（ｕｎｉｔ）と、ソフトウェアにより実現されるユニットと、両方を用いて実現されるユニットとを含む。また、１つのユニットが２つ以上のハードウェアを用いて実現されても良く、２つ以上のユニットが１つのハードウェアにより実現されても良い。
【００２１】
本明細書において、端末又はデバイスが行うと記述された動作や機能の一部は、当該端末又はデバイスと連結されたサーバで代わりに行われ得る。同様に、サーバが行うと記述された動作や機能の一部も当該サーバと連結された端末又はデバイスで行われ得る。
【００２２】
以下、添付された図面を参考しながら本発明の一実施例を詳しく説明することとする。
【００２３】
図１は、本発明の一実施例に係る流体シミュレーション装置のブロック図である。図１を参照すると、流体シミュレーション装置１は、後述する流体シミュレーション方法に従って流体シミュレーションを行う装置である。
【００２４】
流体シミュレーション装置１は、例えば、パーソナルコンピュータ、タブレットコンピュータ、モバイル装置、ゲームコンソール、及びテレビなどを含む。
【００２５】
本発明の一実施例に係る流体シミュレーション方法は、粒子ベースの流体シミュレーション方法であり、例えば、ＳＰＨ（Ｓｍｏｏｔｈｅｄ  Ｐａｒｔｉｃｌｅ  Ｈｙｄｒｏｄｙｎａｍｉｃｓ）を用いたものである。
【００２６】
本発明に係る流体シミュレーション方法は、流体シミュレーションが実時間で計算される応用分野を含むが、これに限定されるものではなく、流体シミュレーションを必要とする様々な応用分野においても適用される。
【００２７】
例示的な応用分野は、例えば、コンピュータゲーム、医学シミュレーション、科学応用、及びコンピュータアニメーションを含む。
【００２８】
流体シミュレーション装置１は、第１のプロセッサ１００と、第２のプロセッサ１１０と、第３のプロセッサ１２０と、メモリ１３０と、入力部１４０と、出力部１５０と、を含み得る。
【００２９】
第１のプロセッサ１００は、例えば、中央処理装置（ＣＰＵ：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）であり、第２のプロセッサ１１０及び第３のプロセッサ１２０は、グラフィック処理ユニット（ＧＰＵ：Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）であり得る。
【００３０】
第１のプロセッサ１００、第２のプロセッサ１１０、及び第３のプロセッサ１２０は、本発明の流体シミュレーション方法が適用された流体解析ソルバ（Ｓｏｌｖｅｒ）を駆動する。
【００３１】
ここで、流体解析ソルバは、第１のプロセッサ１００、第２のプロセッサ１１０、及び第３のプロセッサ１２０によって並列処理され得る。
【００３２】
例えば、第１のプロセッサ１００、第２のプロセッサ１１０、及び第３のプロセッサ１２０は、並列で流体シミュレーションを行う。
【００３３】
図１には第１のプロセッサ１００、第２のプロセッサ１１０、及び第３のプロセッサ１２０のみを示しているが、流体解析ソルバを駆動するためにより多くのプロセッサが用いられることもできる。
【００３４】
メモリ１３０は、第１のプロセッサ１００、第２のプロセッサ１１０、及び第３のプロセッサ１２０のうち少なくとも１つによって駆動される流体解析ソルバ及びこれに関するデータを格納する。
【００３５】
例えば、メモリ１３０は、第１のプロセッサ１００によって処理されるデータを格納する第１のメモリ領域と、第２のプロセッサ１１０及び第３のプロセッサ１２０によって処理されるデータを格納する第２のメモリ領域と、を含む。
【００３６】
入力部１４０は、ユーザから第１のプロセッサ１００、第２のプロセッサ１１０、及び第３のプロセッサ１２０のうち少なくとも１つによって駆動される流体解析ソルバに対する入力を受信する。
【００３７】
入力部１４０は、例えば、キーボード、マウス、ジョイスティック、タッチスクリーン、及びマイクなどを含む。
【００３８】
出力部１５０は、第１のプロセッサ１００、第２のプロセッサ１１０、及び第３のプロセッサ１２０のうち少なくとも１つによって駆動される流体解析ソルバに対する視覚情報及び音響情報をディスプレイすることができる。
【００３９】
出力部１５０は、例えば、ディスプレイ、スピーカなどを含む。
【００４０】
以下、流体シミュレーション装置１によって行われる流体シミュレーション方法について詳しく説明することとする。
【００４１】
第１のプロセッサ１００は、流体に対する複数の粒子を含むシミュレーション領域をモデリングすることができる。
【００４２】
第１のプロセッサ１００は、シミュレーション領域をモデリングするための情報を入力部１４０を介して入力してもらうことができる。
【００４３】
例えば、第１のプロセッサ１００は、地形情報、構造物情報、境界条件情報、粒子物性情報、及び重力加速度情報のうち少なくとも１つを入力してもらう。
【００４４】
第１のプロセッサ１００は、入力してもらった少なくとも１つに基づいてシミュレーション領域をモデリングすることができる。
【００４５】
ここで、構造物情報は、密度、反発係数、及び摩擦係数のうち少なくとも１つを含み得る。
【００４６】
また、粒子物性情報は、粒子半径、密度、粘性、音速、及び初期速度のうち少なくとも１つを含み得る。
【００４７】
第１のプロセッサ１００は、シミュレーション領域を第１のサブ領域及び第１のサブ領域と隣接した第２のサブ領域を含む複数のサブ領域に分割することができる。
【００４８】
例えば、第１のプロセッサ１００は、シミュレーション領域を流体シミュレーション装置１のグラフィック処理ユニットの数だけ分割する。
【００４９】
このとき、複数のサブ領域の各々は、隣接したサブ領域と重なる重畳領域を含み得る。例えば、第１のサブ領域及び前記第２のサブ領域の各々は、互いに重なる重畳領域を含む。
【００５０】
第１のプロセッサ１００は、複数のサブ領域の各々に複数のプロセッサの各々を割り当てることができる。例えば、第１のプロセッサ１００は、第１のサブ領域に第２のプロセッサ１１０を割り当て、第２のサブ領域に第３のプロセッサ１２０を割り当てる。
【００５１】
ここで、図２及び図３を参照しながら、シミュレーション領域の複数のサブ領域が複数のプロセッサに割り当てられることを説明することとする。
【００５２】
図２には、パイプの構造物とその内部に流れる流体がモデリングされたもの（即ち、シミュレーション領域）が示されている。
【００５３】
第１のプロセッサ１００は、シミュレーション領域を第１のサブ領域２１０、第２のサブ領域２２０、及び第３のサブ領域２３０に分割することができる。
【００５４】
第１のプロセッサ１００は、第１のサブ領域２１０に第２のプロセッサ１１０を割り当て、第２のサブ領域２２０に第３のプロセッサ１２０を割り当てることができる。
【００５５】
また、第１のプロセッサ１００は、第３のサブ領域２３０に第４のプロセッサ（未図示）を割り当てることができる。ここで、第４のプロセッサは、グラフィック処理ユニットであり得る。
【００５６】
このとき、第１のサブ領域２１０及び第２のサブ領域２２０の各々は、互いに重なる重畳領域２４０を含み、第２のサブ領域２２０及び第３のサブ領域２３０の各々は、互いに重なる重畳領域２５０を含む。
【００５７】
図３は、第１のサブ領域２１０及び第２のサブ領域２２０の一部を拡大した図である。
【００５８】
図３を参照すると、第１のサブ領域２１０及び第２のサブ領域２２０の重畳領域２４０は、第１のサブ領域２１０と隣接した第１の重畳領域３１０及び第２のサブ領域２２０と隣接した第２の重畳領域３２０を含み得る。
【００５９】
再び図１を参照すると、第２のプロセッサ１１０は、第１のサブ領域に対する複数の粒子の流動データを計算することができる。
【００６０】
第２のプロセッサ１１０は、ＳＰＨアルゴリズムに基づいて第１のサブ領域に対する複数の粒子の流動データを計算することができる。
【００６１】
ここで、ＳＰＨは、各粒子の物性情報（例えば、質量、速度、粘性、及び加速度）を用いて各粒子の流動を演算するものであり、各粒子の物性情報は、各粒子の位置を中心とした放射基底関数のようなカーネル関数（Ｋｅｒｎｅｌ  Ｆｕｎｃｔｉｏｎ）セットを用いて補間される。
【００６２】
このような方式で各粒子の物性情報を補間すれば、ナビエ−ストークス方程式のような標準方程式を用いて流体の動力学を計算するのに使用できる圧力フィールド及び粘性フィールドのような連続フィールドが生成される。
【００６３】
例えば、ナビエ−ストークス方程式は、流体を次のようにモデリングする。
【００６４】
【数１】
2020035445.tif 000003
【００６５】
数１において、「ｖ」は粒子の速度、「ρ」は粒子の密度、「ｐ」は粒子に対する加圧力、「ｇ」は重力、「μ」は流体の粘性を示す。
【００６６】
一方、ＳＰＨアルゴリズムによると、各粒子の密度は、数２によって導出される。
【００６７】
【数２】
2020035445.tif 000004
【００６８】
また、各粒子の圧力は、数３によって導出される。
【００６９】
【数３】
2020035445.tif 000005
【００７０】
また、各粒子の粘性は、数４によって導出される。
【００７１】
【数４】
2020035445.tif 000006
【００７２】
第２のプロセッサ１１０は、ＳＰＨアルゴリズムを用いて各粒子の密度、圧力及び粘性（以下、流動データ）の変化値を演算する。例えば、第２のプロセッサ１１０は、各粒子の初期流動データに基づいて次の時間ステップ（第１の時間ステップ）における各粒子の流動データを演算し、それに基づいて各粒子の流動を演算する。
【００７３】
また、第２のプロセッサ１１０は、第１の時間ステップにおける各粒子の流動データに基づいてその次の時間ステップにおける各粒子の流動データを演算し、それに基づいて各粒子の流動を演算する。
【００７４】
第２のプロセッサ１１０は、各時間ステップにおける各粒子の流動データを演算し、各粒子の流動を演算することによって、全流体の流動を演算することができる。
【００７５】
第３のプロセッサ１２０は、第２のサブ領域に対する複数の粒子の流動データを計算することができる。
【００７６】
第３のプロセッサ１２０が粒子の流動データを計算する方法は、第２のプロセッサ１１０が粒子の流動データを計算する方法と同一であっても良い。
【００７７】
第２のプロセッサ１１０及び第３のプロセッサ１２０は、重畳領域に対する流動データを互いに交換することができる。
【００７８】
ここで、図４を参照しながら、第２のプロセッサ１１０及び第３のプロセッサ１２０が重畳領域に対する流動データを互いに交換する方法について説明することとする。
【００７９】
図４は、本発明の他の実施例に係る流体シミュレーション方法を説明するための図である。
【００８０】
本発明は、解析時間を短縮するために、各粒子の流動を解析するにおいて複数のプロセッサを通じた並列処理を行っている。
【００８１】
このようなマルチプロセッサ環境において、粒子の流れに従い（特に、サブ領域を往来する流れ）、プロセッサ間で流動データを伝達する必要がある。
【００８２】
また、一般的に、粒子ベースの方式における流体の解析は、基準粒子がその隣接粒子から受ける物理的な力（即ち、密度による力、圧力による力、及び粘性による力など）を考慮することによって当該粒子の流動を計算する。
【００８３】
しかし、端に位置した粒子の場合、隣接粒子の不在によりその流動の計算においてエラーが生じることになる。
【００８４】
それを解決するための方法として、当該サブ領域から外れる粒子に対する流動データを隣接したサブ領域に割り当てられたプロセッサへ受け渡す方法が考えられるが、この場合、計算速度の低下が生じ、別途の処理ルーチンを作らなければならないという問題点がある。
【００８５】
他の方法として、各プロセッサが全てのサブ領域に対する流動データを共有して格納する方法が考えられる。しかし、この場合、各プロセッサの間におけるデータ共有プロセスが行われなければならず、各プロセッサが全ての流動データを格納していなければならないので、多くのメモリ空間が求められるという問題点がある。
【００８６】
上述した問題点を解決するために、本発明においては、各プロセッサが隣接したプロセッサと重畳領域に対する流動データを交換している。
【００８７】
具体的に、図４を参照すると、重畳領域２４０は、第１のサブ領域２１０と隣接した第１の重畳領域３１０及び第２のサブ領域２２０と隣接した第２の重畳領域３２０を含み得る。
【００８８】
このとき、第２のプロセッサ１１０は、第３のプロセッサ１２０から第２の重畳領域３２０に対する流動データ（図４において青色の粒子に対する流動データ）を受信することができる。
【００８９】
ここで、第３のプロセッサ１２０が演算した第２の重畳領域３２０に対する流動データは、エラーのないデータである。何故なら、第２のサブ領域２２０において、第２の重畳領域３２０は端ではないので（第１の重畳領域３１０が端である）、隣接粒子が存在するためである。
【００９０】
その後、第２のプロセッサ１１０は、第２のプロセッサ１１０が計算した第２の重畳領域３２０に対する流動データを第３のプロセッサ１２０から受信した第２の重畳領域３２０に対する流動データに取り替える。
【００９１】
これは、第２のプロセッサ１１０が演算した第２の重畳領域３２０に対する流動データは、エラーのあるデータであるためである。何故なら、第１のサブ領域２１０において、第２の重畳領域３２０は端であるので、隣接粒子が存在しないためである。
【００９２】
次いで、第２のプロセッサ１１０は、第３のプロセッサ１２０から受信した第２の重畳領域３２０に対する流動データに基づき、第１のサブ領域２１０に対する流動データを再計算することができる。
【００９３】
例えば、第２のプロセッサ１１０は、既計算された第１の重畳領域３１０に対する流動データ及び第３のプロセッサ１２０から受信した第２の重畳領域３２０に対する流動データに基づき、重畳領域に対してのみ流動データを再計算することもできる。
【００９４】
一方、第３のプロセッサ１２０も同一のプロセスを処理する。
【００９５】
具体的に、第３のプロセッサ１２０は、第２のプロセッサ１１０から第１の重畳領域３１０に対する流動データ（図４において赤色の粒子に対する流動データ）を受信することができる。
【００９６】
ここで、第２のプロセッサ１１０が演算した第１の重畳領域３１０に対する流動データは、エラーのないデータである。
【００９７】
その後、第３のプロセッサ１２０は、第３のプロセッサ１２０が計算した第１の重畳領域３１０に対する流動データを第２のプロセッサ１１０から受信した第１の重畳領域３１０に対する流動データに取り替える。
【００９８】
これは、第３のプロセッサ１２０が演算した第１の重畳領域３１０に対する流動データは、エラーのあるデータであるためである。
【００９９】
次いで、第３のプロセッサ１２０は、第２のプロセッサ１１０から受信した第１の重畳領域３１０に対する流動データに基づき、第２のサブ領域２２０に対する流動データを再計算することができる。
【０１００】
例えば、第３のプロセッサ１２０は、既計算された第２の重畳領域３２０に対する流動データ及び第２のプロセッサ１１０から受信した第１の重畳領域３１０に対する流動データに基づき、重畳領域に対してのみ流動データを再計算することもできる。
【０１０１】
このように、各プロセッサが隣接したプロセッサと重畳領域に対する流動データのみを交換することによって、比較的小さいメモリ空間が求められる。
【０１０２】
また、各プロセッサが全ての流動データを共有せず、メモリのコピーを最少化するため、データ送信によるオーバーヘッドを低減することができ、これにより演算速度が向上する。
【０１０３】
さらに、マルチプロセッサ環境においても隣接粒子の不在によるエラーが生じないため、正確な流体シミュレーションが可能である。
【０１０４】
再び図１を参照すると、出力部１５０は、複数のプロセッサの計算結果に基づき、実時間流体シミュレーションを行うことができる。
【０１０５】
出力部１５０は、複数のプロセッサの計算結果に基づき、流体の流動を実時間でレンダリングして可視化することができる（図２参照）。
【０１０６】
図５は、本発明の一実施例に係る流体シミュレーション方法を示すフローチャートである。図５に示された事実施例に係る流体シミュレーション方法は、図１に示された流体シミュレーション装置において時系列的に処理されるステップを含む。従って、以下省略された内容であるとしても、図５に示された一実施例によって行われる流体シミュレーション方法にも適用される。
【０１０７】
ステップＳ５００において、流体に対する複数の粒子を含むシミュレーション領域をモデリングする。
【０１０８】
ステップＳ５１０において、シミュレーション領域を複数のサブ領域に分割する。
【０１０９】
ステップＳ５２０において、複数のサブ領域の各々に複数のプロセッサの各々を割り当てる。
【０１１０】
ステップＳ５３０において、複数のプロセッサの各々によって該当するサブ領域に対する複数の粒子の流動データを計算する。
【０１１１】
ステップＳ５４０において、計算結果に基づいて流体シミュレーションを行う。
【０１１２】
図５により説明された流体シミュレーション方法は、媒体に格納されたコンピュータプログラムの形態に具現されるか、コンピュータにより実行されるプログラムモジュールのようなコンピュータにより実行可能な命令語を含む記録媒体の形態でも具現され得る。コンピュータ読み取り可能な媒体は、コンピュータによってアクセスできる任意の可用媒体であっても良く、揮発性及び非揮発性の媒体、分離型及び非分離型の媒体を全て含む。また、コンピュータ読み取り可能な媒体は、コンピュータ格納媒体を含み得る。コンピュータ格納媒体は、コンピュータ読み取り可能な命令語、データ構造、プログラムモジュール、又はその他のデータのような情報格納のための任意の方法又は技術で具現された揮発性及び非揮発性、分離型及び非分離型の媒体を全て含む。
【０１１３】
上述した本発明の説明は例示のためのものであり、本発明の属する技術分野において通常の知識を有する者であれば、本発明の技術的思想や必須の特徴を変更せずに他の具体的な形態に容易に変形可能であるということを理解できるはずである。それゆえ、上記した実施例は全ての面において例示的なものであり、限定的なものではないと理解すべきである。例えば、単一型で説明されている各構成要素は分散して実施されることもでき、同様に、分散したものと説明されている構成要素も結合された形態で実施されることができる。
【０１１４】
本発明の範囲は、上記詳細な説明よりは後述する特許請求の範囲によって示され、特許請求の範囲の意味及び範囲、並びにその均等概念から導出される全ての変更又は変形された形態が本発明の範囲に含まれることと解釈されなければならない。
【符号の説明】
【０１１５】
１：流体シミュレーション装置
１１０：第１のプロセッサ
１２０：第２のプロセッサ
１３０：第３のプロセッサ
１４０：入力部
１５０：出力部
【図１】
2020035445.tif 000007
【図２】
2020035445.tif 000008
【図３】
2020035445.tif 000009
【図４】
2020035445.tif 000010
【図５】
2020035445.tif 000011