JP7056452B2 - シミュレーション装置、シミュレーション方法およびシミュレーションプログラム - Google Patents

シミュレーション装置、シミュレーション方法およびシミュレーションプログラム Download PDF

Info

Publication number
JP7056452B2
JP7056452B2 JP2018147071A JP2018147071A JP7056452B2 JP 7056452 B2 JP7056452 B2 JP 7056452B2 JP 2018147071 A JP2018147071 A JP 2018147071A JP 2018147071 A JP2018147071 A JP 2018147071A JP 7056452 B2 JP7056452 B2 JP 7056452B2
Authority
JP
Japan
Prior art keywords
data
distance
grid
node
grid data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2018147071A
Other languages
English (en)
Other versions
JP2020021426A (ja
Inventor
正喜 風間
多聞 諏訪
晋 仲田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2018147071A priority Critical patent/JP7056452B2/ja
Publication of JP2020021426A publication Critical patent/JP2020021426A/ja
Application granted granted Critical
Publication of JP7056452B2 publication Critical patent/JP7056452B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、シミュレーション装置、シミュレーション方法およびシミュレーションプログラムに関する。
複雑な形状を有する3次元構造物の形状を表現する手法として、粒子法を用いたシミュレーションが利用されている。また、粒子データと3次元構造物の壁面との距離を算出する手法としては、粒子データと壁面を構成する三角形パッチとの距離を算出する手法が利用されており、近年ではメッシュフリー陰関数を適用した手法が知られている。図26は、メッシュフリー陰関数を適用した手法を説明する図である。図26に示すように、まず、粒子径dxよりも密にするようにSTL(Standard Triangulated Language)等の表面形状から表面に粒子データを配置する。続いて、外向きに単位法線を設定し、配置した粒子位置を中心にPoU(Partition of Unity)を構成する。そして、配置したPoU内で符号付距離関数を構成し、構成した符号付距離関数を参照して、壁面にめり込んでいる場合に反力を生成する。
特開2017-157076号公報 特開平11-120165号公報 特開2012-048564号公報
しかしながら、上記技術では、粒子データと壁面との距離を算出する際に、計算量が多くなり、壁面表現に時間がかかるので、結果としてシミュレーションの処理時間が長くなる。例えば、図26に示す粒子データPの位置の符号付距離関数の値を得るためには、近傍の3つの粒子データからの寄与計算が必要となる。より複雑な実際の3次元形状では、10から30の粒子データが近傍にあることから、計算コストが非常に高く、処理時間が長くなる。
一つの側面では、シミュレーションの処理時間を短縮することができるシミュレーション装置、シミュレーション方法およびシミュレーションプログラムを提供することを目的とする。
第1の案では、シミュレーション装置は、構造物の形状を示す三角形パッチが含まれるように設定された格子データのうち、前記三角形パッチから所定距離以内にある格子データを抽出する抽出部を有する。シミュレーション装置は、抽出された各格子データの格子点それぞれに対して、前記三角形パッチからの符号付距離を算出して、前記符号付距離に基づく符号付距離関数の係数を設定する設定部を有する。シミュレーション装置は、距離測定の対象である対象点に対応する格子データを特定する特定部と、特定された前記格子データに設定される前記符号付距離関数を用いて、前記対象点と前記三角形パッチとの距離を算出する算出部とを有する。
一実施形態によれば、シミュレーションの処理時間を短縮することができる。
図1は、実施例1にかかるシミュレーション装置の機能構成を示す機能ブロック図である。 図2は、シミュレーション装置を説明する図である。 図3は、入力データの一例を示す図である。 図4は、三角形パッチデータの一例を示す図である。 図5は、節点データの一例を示す図である。 図6は、辺データの一例を示す図である。 図7は、三角形パッチ要素データの一例を示す図である。 図8は、節点要素データの一例を示す図である。 図9は、辺要素データの一例を示す図である。 図10は、辺要素の法線の定義を説明する図である。 図11は、節点要素の法線の定義を説明する図である。 図12は、三角形パッチ要素を説明する図である。 図13は、接点要素を説明する図である。 図14は、辺要素を説明する図である。 図15は、バックグランド格子の生成を説明する図である。 図16は、面要素群から格子データの符号付距離計算方法を説明する図である。 図17は、面要素群から格子点の符号付距離計算方法を説明する図である。 図18は、バックグラウンド格子の各格子のデータ構造を説明する図である。 図19は、対象点との距離計算を説明する図である。 図20は、全体的な処理の流れを示すフローチャートである。 図21は、法線定義処理の流れを示すフローチャートである。 図22は、バックグラウンド格子のデータ生成処理の流れを示すフローチャートである。 図23は、距離計算処理の流れを示すフローチャートである。 図24は、一般手法に比べて精度が改善する例を説明する図である。 図25は、ハードウェア構成例を説明する図である。 図26は、メッシュフリー陰関数を適用した手法を説明する図である。
以下に、本願の開示するシミュレーション装置、シミュレーション方法およびシミュレーションプログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。また、各実施例は、矛盾のない範囲内で適宜組み合わせることができる。
[機能構成]
図1は、実施例1にかかるシミュレーション装置10の機能構成を示す機能ブロック図である。このシミュレーション装置10は、複雑な形状を有する金型などの3次元構造物や地形などの3次元構造の形状をシミュレーションによって正確に表現するコンピュータ装置の一例である。
図2は、シミュレーション装置10を説明する図である。シミュレーション装置10は、図2の(a)に示す3次元構造物の形状を、粒子法を用いたシミュレーションによって正確に表現する(図2の(b)参照)。このとき、シミュレーション装置10は、シミュレーション対象の構造物に対応する三角形パッチデータによって、構造物の形状および壁面を特定する。そして、シミュレーション装置10は、粒子法により算出された粒子データ(対象点)と壁面との距離を正確かつ高速に算出することで、高速な壁面表現を実現する。
例えば、シミュレーション装置10は、三角形パッチから一定距離以内にある格子データを抽出し、各格子データに対して最も近い三角形パッチからの距離を算出して、格子データ毎に距離パラメータを生成する。その後、シミュレーション装置10は、各粒子データの位置情報を基に対応する格子データを選択し、選択した格子データの距離パラメータを基に三角形パッチと粒子データとの距離を算出する。
つまり、シミュレーション装置10は、対象点である粒子データを含んでいる格子データ内の陰関数のみで、対象点と壁面との距離を算出することができるので、シミュレーション処理全体の処理時間を短縮することができる。なお、本実施例では、実際は3次元であるが、説明を簡略化するために、2次元の図で説明する場合がある。
図1に戻り、シミュレーション装置10は、通信部11、記憶部12、制御部30を有する。通信部11は、他の装置の通信を制御する処理部であり、例えば通信インタフェースなどである。例えば、通信部11は、管理者の端末から処理開始指示、形状データ、対象点の指定などを受信し、シミュレーション結果や算出済みの距離情報などを管理者の端末に送信する。
記憶部12は、プログラムやデータを記憶する記憶装置の一例であり、例えばメモリやハードディスクなどである。この記憶部12は、入力データDB13、三角形パッチデータDB14、節点データDB15、辺データDB16、三角形パッチ要素データDB17、節点要素データDB18、辺要素データDB19、シミュレーション結果DB20を記憶する。
入力データDB13は、構造物の形状データとして入力された入力データを記憶するデータベースである。図3は、入力データの一例を示す図である。図3に示すように、入力データDB13が記憶する入力データは、複数の節点座標i(iは自然数)を記憶する。ここで記憶される節点座標は、3つの座標を1つのセットとして三角形を構成し、三角形の集合として三次元構造物の境界形状(壁面)を構築する。図3の例では、節点座標(i,1)と節点座標(i,2)と節点座標(i,3)とで三角形を構成する。
三角形パッチデータDB14は、入力データをSTL等によって変換された三角形パッチデータを記憶するデータベースである。図4は、三角形パッチデータの一例を示す図である。図4に示すように、三角形パッチデータDB14が記憶する三角形パッチデータは、複数の三角形パッチ要素iから構成される。図4の例では、三角形パッチデータDB14は、三角形パッチ要素i、三角形パッチ要素i+1などを記憶する。
節点データDB15は、三角形パッチデータの要素である節点に関する節点データを記憶するデータベースである。図5は、節点データの一例を示す図である。図5に示すように、節点データDB15が記憶する節点データは、複数の節点要素j(jは自然数)から構成される。ここで記憶される節点要素は、三角形パッチデータの三角形の要素の一つである。図5の例では、節点データDB15は、節点要素jと節点要素j+1などを記憶する。
辺データDB16は、三角形パッチデータの要素である辺に関する辺データを記憶するデータベースである。図6は、辺データの一例を示す図である。図6に示すように、辺データDB16が記憶する辺データは、複数の辺要素k(kは自然数)から構成される。ここで記憶される辺要素は、三角形パッチデータの三角形の要素の一つである。図6の例では、辺データDB16は、辺要素kと辺要素k+1などを記憶する。
三角形パッチ要素データDB17は、三角形パッチデータに含まれる各三角形パッチの要素に関する三角形パッチ要素データを記憶するデータベースである。図7は、三角形パッチ要素データの一例を示す図である。図7に示すように、三角形パッチ要素データDB17に記憶される三角形パッチ要素データは、面IDに対応付けて、面法線と3つの節点情報と3つの辺情報とから構成される。なお、ここでは1つの面IDに対応するデータ構造を示しているが、実際には三角形パッチごとに面IDと対応付けられる情報が格納される。
「面ID」は、三角形パッチ要素データを特定する識別子であり、「面法線」は、面IDによって特定される三角形パッチの面に対する法線に関する情報である。「節点ID」は、三角形パッチの要素である各節点を識別する識別子である。「節点座標」は、各節点の座標を示し、「節点角度」は、各節点の角度を示し、「節点法線」は、各節点の法線を示す。「辺ID」は、三角形パッチの要素である各辺を識別する識別子であり、「辺法線」は、各辺の法線を示す。
図7の例は、節点ID1と節点ID2と節点ID3と辺ID1と辺ID2と辺ID3とから構成される三角形パッチのデータを示す。また、節点ID1の座標、角度、法線は、節点座標1、節点角度1、節点法線1であり、節点ID2の座標、角度、法線は、節点座標2、節点角度2、節点法線2であり、節点ID3の座標、角度、法線は、節点座標3、節点角度3、節点法線3である。辺ID1の法線は辺法線1であり、辺ID2の法線は辺法線2であり、辺ID3の法線は辺法線3である。なお、節点座標は、三角形パッチのデータから取得することができ、節点角度は、各節点の座標を用いて算出することができ、各法線は、制御部30によって算出される。
節点要素データDB18は、三角形パッチの要素である節点に関する節点要素データを記憶するデータベースである。図8は、節点要素データの一例を示す図である。図8に示すように、節点要素データDB18に記憶される節点要素データは、節点IDと節点座標と複数の面IDとを有する。なお、ここでは1つの節点IDに対応するデータ構造を示しているが、実際には三角形パッチの各節点の情報が格納される。
ここで記憶される「節点ID」は、節点を識別する識別子であり、「節点座標」は、節点の座標である。「面ID」は、節点を含む、当該節点を要素とする各面を識別する識別子である。図8の例では、面IDが1からNの各面に含まれる節点の情報を示している。
辺要素データDB19は、三角形パッチの要素である辺に関する辺要素データを記憶するデータベースである。図9は、辺要素データの一例を示す図である。図9に示すように、辺要素データDB19に記憶される辺要素データは、辺IDと節点IDと面IDとを有する。なお、ここでは1つの辺IDに対応するデータ構造を示しているが、実際には三角形パッチの各辺の情報が格納される。
ここで記憶される「辺ID」は、辺を識別する識別子である。「節点ID」は、当該辺の端点である、当該辺を要素とする節点を識別する識別子である。「面ID」は、当該辺を含む、当該辺を要素とする面を識別する識別子である。図9の例では、面IDの節点ID1と面ID2の節点ID2とを結んだ辺に関する情報を示している。
制御部30は、シミュレーション装置10全体を司る処理部であり、例えばプロセッサなどである。この制御部30は、事前処理部31、格子生成部32、関数構成部33、算出部34を有する。なお、事前処理部31、格子生成部32、関数構成部33、算出部34は、プロセッサが有する電子回路の一例やプロセッサが実行するプロセスの一例である。
事前処理部31は、取得部31aと定義部31bを有し、三角形パッチの各要素に関するデータの取得や三角形パッチの法線に関する定義の生成を実行する処理部である。
取得部31aは、入力データDB13に記憶される入力データをSTL等の三角形パッチデータとして読み込み、三角形パッチデータによる特定される三角形パッチの各要素に関する要素データを取得する処理部である。具体的には、取得部31aは、三角形パッチデータとして読み込んで、三角形パッチの面、辺、節点、節点の角度を特定し、各情報を各DBに格納する。
また、取得部31aは、複数の三角形パッチの間で重複する節点や辺について、重複してDBに登録しないように、重複を削除して登録する。例えば、取得部31aは、面S11と面S12との両方に節点Vが含まれている場合、節点要素データにVの情報が2つ含まれないように、1つの節点情報(節点ID、節点座標、面ID)を格納する。同様に、取得部31aは、面S11の節点V11と面S12の節点V12とを結ぶ辺Eについて、辺要素データにEの情報が2つ含まれないように、1つの辺情報を格納する。
定義部31bは、三角形パッチデータの面、辺、節点のそれぞれに法線方向を定義する処理部である。具体的には、定義部31bは、面の法線については、三角形パッチの法線を定義し、各法線を各DBに格納する。例えば、定義部31bは、節点V1、V2、V3を用いて、V1V2とV1V3との外積を算出することで、面の法線を算出する。
また、定義部31bは、辺の法線については、近接パッチの法線の平均から算出し、算出した法線を各DBに格納する。図10は、辺要素の法線の定義を説明する図である。図10に示すように、定義部31bは、辺を共有する面要素の法線の平均値を辺要素の法線として算出する。図10の例では、定義部31bは、「(面法線nと面法線nとの和)/(面法線nと面法線nとの和の絶対値)」を、辺要素の法線nEdgeとして算出する。
また、定義部31bは、節点の法線については、近接パッチの法線の平均から算出し、算出した法線を各DBに格納する。図11は、節点要素の法線の定義を説明する図である。図11に示すように、定義部31bは、節点を共有する面要素の法線の角度重み付き平均によって、節点要素の法線を算出する。図11の例では、定義部31bは、「(面法線n×角度θ)+(面法線n×角度θ)+(面法線n×角度θ)+(面法線n×角度θ)+(面法線n×角度θ)+(面法線n×角度θ)」/「(面法線n×角度θ)+(面法線n×角度θ)+(面法線n×角度θ)+(面法線n×角度θ)+(面法線n×角度θ)+(面法線n×角度θ)の絶対値」を、節点要素の法線nNodeとして算出する。
ここで、三角形パッチ要素データについて説明する。図12は、三角形パッチ要素を説明する図である。図12を用いて、三角形パッチデータから三角形パッチ要素を特定して格納する例を説明する。図12に示すように、取得部31aは、三角形パッチの面に面IDとしてSを付与し、この面ID「S」に各要素を対応付ける。
具体的には、取得部31aは、図7の節点ID1、2、3として、Vj1とVj2とVj3とを特定し、これらの座標を節点座標1、節点座標2、節点座標3に格納する。また、取得部31aは、各節点の座標を用いて、節点Vj1の角度θj1と節点Vj2の角度θj2と節点Vj3の角度θj3とを算出し、それぞれを節点角度1、節点角度2、節点角度3に格納する。また、取得部31aは、節点Vj1とVj2とを結ぶ辺Ek1、節点Vj2とVj3とを結ぶ辺Ek2、節点Vj3とVj1とを結ぶ辺Ek3を特定し、それぞれを辺ID1、辺ID2、辺ID3に格納する。
そして、定義部31bは、面Sに対する面法線nを算出して面法線に格納する。また、定義部31bは、図11の手法を用いて、節点Vj1の法線nV1と節点Vj2の法線nV2と節点Vj3の法線nV3とを算出し、それぞれを節点法線1、節点法線2、節点法線3に格納する。また、定義部31bは、図10の手法を用いて、辺Ek1の法線nE1と辺Ek2の法線nE2と辺Ek3の法線nE3とを算出して、それぞれを辺法線1、辺法線2、辺法線3に格納する。このようにして、三角形パッチデータの各要素が生成される。
次に、三角形パッチデータの接点要素データの生成を説明する。図13は、接点要素を説明する図である。図13に示すように、取得部31aは、三角形パッチの面である「Si1」と「Si2」と「Si3」と「Si4」とが共有する節点Vを特定し、図8の節点IDに格納する。また、取得部31aは、節点ID「V」に対応付けて、節点Vの座標「x,y,z」を節点座標に格納するとともに、「Si1」と「Si2」と「Si3」と「Si4」とを面IDに格納する。このようにして、三角形パッチデータの各接点要素データが生成される。
次に、三角形パッチデータの辺要素データの生成を説明する。図14は、辺要素を説明する図である。図14に示すように、取得部31aは、三角形パッチの面である「Si1」と「Si2」とが共有する節点Vj1とVj2とを結ぶ辺Eを特定し、図9の辺IDに格納する。また、取得部31aは、辺ID「E」に対応付けて、辺Eの端点である節点Vj1とVj2を節点IDに格納するとともに、辺Eを共有する「Si1」と「Si2」とを面IDに格納する。このようにして、三角形パッチデータの各辺要素データが生成される。
図1に戻り、格子生成部32は、三角形パッチデータに対して、バックグラウンド格子を生成する処理部である。具体的には、格子生成部32は、図8に示した三角形パッチデータの全節点座標が含まれるように、バウンティングボックスを生成する。言い換えると、格子生成部32は、形状データから特定された三角形パッチデータの全節点座標を包含するバウンティングボックスを生成する。
図15は、バックグランド格子の生成を説明する図である。なお、実際は3次元であるが、説明を簡略化するために2次元で説明する。図15に示すように、格子生成部32は、バウンディングボックスを1辺が指定された長さhの立方体に分割する。例えば、格子生成部32は、原点を「x,y,z」、格子ID(i,j,k)をそれぞれ0からN,N,Nまでとし、各座標を「x+i×h,y+j×h,z+k×h」で表す。なお、各変数は自然数である。
関数構成部33は、三角形パッチデータに対応する各格子データに、符号付距離関数に使用する距離パラメータを設定する処理部である。すなわち、関数構成部33は、PoU領域を格子形状にして、格子内で符号付距離関数を構成する。このとき、関数構成部33は、一般的な二次関数にて陰関数を構成することで、陰関数構成を局所的に行う。
具体的には、関数構成部33は、構造物の形状を示す三角形パッチデータが含まれるように設定された格子(格子データ)のうち、三角形パッチデータから所定距離以内にある格子データを抽出する。そして、関数構成部33は、抽出された各格子データに対して、三角形パッチデータからの距離を算出して、距離に基づく距離パラメータを設定する。このとき、関数構成部33は、抽出された各格子データに対して、当該格子データに含まれる各面要素のうち距離が最も近い面要素のとの距離に基づく距離パラメータを設定することもできる。
図16は、面要素群から格子データの符号付距離計算方法を説明する図である。関数構成部33は、図8に示した三角形パッチデータの各面要素(各面ID)について、図16に示す処理を実行する。例えば、図16に示すように、関数構成部33は、面要素IDを1つ選択し、選択された面IDによって特定される面要素データ、言い換えると節点や辺によって特定される三角形パッチデータの面、を覆うバウンティングボックスを生成する(図16の(a)参照)。
続いて、関数構成部33は、生成したバウンティングボックスを含む格子データを特定する(図16の(b)参照)。言い換えると、関数構成部33は、選択された面要素データから所定距離の範囲内にある格子データを特定する。図16の例では、面要素データを覆うバウンティングボックスと少なくとも一部が重なる4つの格子データが選択される。
そして、関数構成部33は、特定した格子データ(図16では4つの格子データ)それぞれについて、符号付距離を計算する。具体的には、図16に示すように、関数構成部33は、特定した格子データの中心点、および、当該格子データと他の格子データの境界となる境界点を含む合計27個の格子点を選択する。なお、図16では、2次元で表現しているので9個の格子点のみが図示されるが、実際は3次元であることから、選択される点は27個となる。
続いて、関数構成部33は、選択した27個の格子点について、面要素データからの符号付距離を計算する。上記例を用いて説明すると、関数構成部33は、27個の格子点「x+(i+0.5×i)×h,y+(j+0.5×j)×h,z+(k+0.5×k)×h」(i1、1、は0から2の値)に対して、面要素データからの符号付距離を計算する。
図17は、面要素群から格子点の符号付距離計算方法を説明する図である。関数構成部33は、距離を求めたい格子点Pを面要素が生成する平面内に射影する。このとき、射影点の位置が図17の(a)のように面内に入っていた場合、射影点から格子点Pの距離di,Pが符号付距離の絶対値であり、符号は面の法線と射影点をから格子点Pへのベクトルの内積の符号として算出される。一方、射影点が図17の(b)のように三角形要素の外にある場合、要素の辺および節点に最小距離の点hが面要素の境界にある。点hから格子点pまでの距離di,Pが符号付距離関数の絶対値であり、点hから点pのベクトルとhの点の法線との内積が符号となる、なお、点hの符号は、hが面要素の辺上にあった場合は辺の法線、節点にあった場合は節点の法線が採用される。
ここで、関数構成部33は、図8に示した三角形パッチデータの各面要素について上記符号付距離の計算を実行するが、格子点の符号付距離は絶対値の小さいものを上書きしていく。例えば、関数構成部33は、ある格子点Q(X、Y、Z)が面要素データA、B、Cのそれぞれに含まれ、格子点Qと面要素データAとの距離がL1、格子点Qと面要素データBとの距離がL2(L1>L2)、格子点Qと面要素データVとの距離がL3(L2>L3)であったとする。この場合、関数構成部33は、当該格子点Qについては、距離L3のみを対応付けて保持する。
このようにすることで、各格子点は、三角形パッチデータのうち最短距離にある三角形パッチデータの距離情報を保持することができる。図18は、バックグラウンド格子の各格子のデータ構造を説明する図である。関数構成部33は、上述した処理を各格子データについて実行することで、各格子データに対応付けて図18に示すデータを生成する。
具体的には、図18に示すように、IDが「i,j,k」であるバックグラウンド格子の格子データに対して、符号付距離計算点である格子点ID「x+(i+0.5×i)×h,y+(i+0.5×i)×h,z+(i+0.5×i)×h」(i1、1、は0から2の値)」に対して、三角形パッチデータの最小距離を保持する。例えば、座標が「x0,0,0=(x+i×h,y+j×h,z+k×h)」である格子点ID(0,0,0)に対して、最短距離の値f0,0,0を対応付けて保持する。また、座標が「xi1,j1,k1=(x+(i+0.5×i)×h,y+(j+0.5×j)×h,z+(k+0.5×k)×h)」である格子点ID(i,j,k)に対して、最短距離の値fi1,j1,k1を対応付けて保持する。また、座標が「x2,2,2=(x+(i+1)×h,y+(j+1)×h,z+(k+1)×h)」である格子点ID(2,2,2)に対して、最短距離の値f2,2,2を対応付けて保持する。
そして、関数構成部33は、各格子点に対して符号化付距離関数の係数を算出し、各格子点に対応付けて当該係数を保持する。具体的には、関数構成部33は、27個の格子点(i,j,k)それぞれについて、式(1)を用いた連立一次方程式を解くことによって、係数の値ai1,j1,k1のそれぞれを算出する。図18の例では、格子点ID(0,0,0)に対しては係数a0,0,0が算出され、格子点ID(2,2,2)に対しては係数a2,2,2が算出された例を示している。
Figure 0007056452000001
このようにして、関数構成部33は、バックグラウンド格子の各格子の27個の格子点それぞれに対して、三角形パッチデータとの最短距離と、当該最短距離も基づき算出される符号付距離関数の係数a(距離パラメータ)を対応付けて記憶部12等に保持する。このようにして、各格子データが係数を保存することで陰関数の構成が完了する。
図1に戻り、算出部34は、指定された対象点と3次元構造物の壁面との距離を算出する処理部である。具体的には、算出部34は、構成した距離関数を用いて粒子法で壁面反力の計算を行う。例えば、算出部34は、粒子法により算出された粒子データを対象として受け付け、粒子データの位置情報を基に対応する格子データを選択する。そして、算出部34は、選択した格子データの距離パラメータを基に三角形パッチデータと粒子データとの距離を算出する。
図19は、対象点との距離計算を説明する図である。図19に示すように、算出部34は、距離を計算したい対象点xの座標と、各格子データの格子点などの座標とを用いて、対象点xが含まれる格子データのID(i,j,k)を選定する。そして、算出部34は、図18に示した各格子データのデータ構造を参照して、選定した格子データのID(i,j,k)に該当する符号付距離関数の係数ai1,j1,k1(0≦i≦2,0≦j≦2,0≦k≦2)を特定する。その後、算出部34は、係数ai1,j1,k1(0≦i≦2,0≦j≦2,0≦k≦2)を式(2)に代入して、対象点xと壁面との距離d(x)を算出する。そして、公知の手法を用いて、この距離d(x)を用いて壁面からの反力が計算される。なお、算出結果は、シミュレーション結果DB20に格納される。
Figure 0007056452000002
[処理の流れ]
次に、上述した各処理について説明する。ここでは、全体的な処理の流れ、法線定義処理の流れ、バックグラウンド格子の生成処理の流れ、距離計算処理の流れについて説明する。
(全体的な処理)
図20は、全体的な処理の流れを示すフローチャートである。図20に示すように、処理開始が指示されると(S101:Yes)、取得部31aは、入力データDB13から入力データを取得し(S102)、入力データを三角形パッチデータとして読み込み、三角形パッチデータの各要素データを取得する(S103)。
続いて、定義部31bは、三角形パッチデータの面、辺、節点のそれぞれに法線方向を定義して各DBに格納する(S104)。そして、格子生成部32は、三角形パッチデータの全節点座標が含まれるように、バウンティングボックスを生成する(S105)。
その後、関数構成部33は、三角形パッチデータに対応する各格子データに対して、格子位置を選定し(S106)、選定した格子内で符号付距離関数を構成する(S107)。すなわち、関数構成部33は、各格子データについて、三角形パッチデータの最短距離および符号付距離関数の係数を設定する。
その後、算出部34は、距離を計算する対象点がある場合(S108:Yes)、対象点の座標等を特定し(S109)、対象点を含むバックグラウンド格子を選定し(S110)、選定したバックグラウンド格子と対応付けられる各係数を用いて、対象点と壁面との距離を算出する(S111)。
なお、対象点が存在する間、S108からS111が繰り返し実行され、対象点が存在しなくなると(S108:No)、処理が終了する。
(法線定義処理)
図21は、法線定義処理の流れを示すフローチャートである。図21に示すように、事前処理部31は、形状データに含まれる各三角形についてS201からS213を実行する。なお、ここでは、読み込んだ三角形パッチの座標を節点座標(i,1-3)(節点座標(i,1)、節点座標(i,2)、節点座標(i,3))として以下の処理を説明する。
具体的には、事前処理部31は、三角形パッチ要素データDB17に対して、三角形パッチ要素を1つ追加する(S202)。例えば、事前処理部31は、面IDとして新規の値(ID)を生成して格納し、IDの節点座標1から3に、節点座標(i,1)、節点座標(i,2)、節点座標(i,3)を代入する。また、事前処理部31は、節点座標を用いて面法線を算出して、三角形パッチ要素データDB17に格納する。
続いて、事前処理部31は、節点座標(i,1-3)、すなわち節点座標(i,1)、節点座標(i,2)、節点座標(i,3))について、S203からS207を実行する。ここでは、注目している番号をiとして説明する。具体的には、事前処理部31は、節点要素データDB18に節点要素データを追加する(S204)。例えば、事前処理部31は、節点要素データDB18を参照して、節点座標iを持つ節点要素を検索し、検索されたIDをIDとする。このとき、事前処理部31は、該当する節点要素がない場合、節点IDとして新規の値(ID)を生成して、節点要素データDB18に節点座標iを代入する。
そして、事前処理部31は、節点要素データに面IDを追加する(S205)。例えば、事前処理部31は、節点要素データDB18において、節点要素IDの面IDにIDを追加する。
さらに、事前処理部31は、三角形パッチ要素データDB17に、節点IDおよび節点角度を追加する(S206)。例えば、事前処理部31は、三角形パッチ要素IDについて、節点IDにIDを追加し、節点角度iを算出して代入する。
続いて、事前処理部31は、節点IDのペア3組((1,2)、(2,3)、(3,1))についてS208からS212を実行する。なお、ここでは、注目しているIDペアを(IDV1,IDV2)として説明する。具体的には、事前処理部31は、辺要素データDB19に辺要素データを追加する(S209)。例えば、事前処理部31は、辺要素データDB19を参照して、節点IDの組として(IDV1,IDV2)を持つ辺要素を検索し、検索されたIDをIDとする。このとき、事前処理部31は、該当する辺要素がない場合、辺IDとして新規の値(ID)を生成して、辺要素データDB19の節点IDに(IDV1,IDV2)を代入する。
続いて、事前処理部31は、辺要素データに辺要素の面IDを追加する(S210)。例えば、事前処理部31は、辺要素データDB19において、辺要素IDの面IDにIDを追加する。さらに、事前処理部31は、三角形パッチ要素データDB17に辺IDを追加する(S211)。例えば、事前処理部31は、三角形パッチ要素IDについて、辺IDにIDを追加する。
その後、事前処理部31は、節点要素についてS214からS221を実行する。なお、ここでは、節点要素を(ID)として説明する。
具体的には、事前処理部31は、作業用変数nを初期化する(S215)。続いて、事前処理部31は、節点要素IDに含まれる面ID(ID)についてS216からS218を実行する。具体的には、事前処理部31は、角度重み付き総和の計算を実行する(S217)。すなわち、事前処理部31は、三角形パッチ要素IDの面法線をn、節点角度の中で節点IDがIDに対応するものをθとして、「n=n+θn」により角度重み付き総和を算出する。
その後、事前処理部31は、式(3)によりnを算出する(S219)。すなわち、事前処理部31は、角度重み付き総和を角度重み付き平均に変換する。
そして、事前処理部31は、三角形パッチ要素データDB17に、算出した節点法線を代入する(S220)。例えば、事前処理部31は、節点要素に含まれる面IDそれぞれに対して、節点IDがIDに対応する節点法線にnを代入する。
続いて、事前処理部31は、辺要素についてS222からS225を実行する。なお、ここでは、辺要素を(ID)として説明する。
具体的には、事前処理部31は、辺要素に含まれる面IDに対して式(4)により辺法線を算出する(S223)。例えば、事前処理部31は、辺要素に含まれる面IDをIDS1,IDS2とし、IDS1,IDS2のそれぞれの面法線をnS1,nS2として、式(4)により辺法線nを算出する。
そして、事前処理部31は、三角形パッチ要素データDB17に、算出した辺法線を代入する(S224)。例えば、事前処理部31は、IDS1,IDS2のそれぞれに対して、辺IDがIDに対応する辺法線nを代入する。
(バックグラウンド格子の生成処理)
図22は、バックグラウンド格子のデータ生成処理の流れを示すフローチャートである。図22に示すように、格子生成部32は、全ての節点要素が含まれるように、バウンティングボックスを生成する(S301)。続いて、格子生成部32は、バウンティングボックスを長さhの立方体領域(i,j,k)に分割して、格子データを生成する(S302)。
その後、関数構成部33は、三角形パッチデータの全ての面要素についてS303からS305を実行する。具体的には、関数構成部33は、面要素が接触している立方体領域(i,j,k)の符号付距離計算点の値に、面要素からの距離を代入する(S304)。このとき、格子生成部32は、すでに算出済みで値が保持されている場合は、絶対値が小さい値を採用して保持する。
そして、関数構成部33は、すべての立方体領域(i,j,k)に対してS306からS308を実行する。具体的には、関数構成部33は、符号付距離計算点の値を用いて、符号付距離関数の係数を27×27の連立一次方程式によって生成する(S307)。
(距離計算処理)
図23は、距離計算処理の流れを示すフローチャートである。図23に示すように、算出部34は、距離の算出対象となる対象点を特定し(S401)、対象点が含まれる立方体領域(i,j,k)を選定する(S402)。
その後、算出部34は、立方体領域(i,j,k)に対応付けて保持される符号付距離関数の係数と対象点の値(座標等)とから、壁面から対象点までの距離を計算し(S403)、計算結果をシミュレーション結果DB20等に出力する(S404)。
[効果]
上述したように、シミュレーション装置10は、形状データをSTL等の三角形パッチデータとして読み込む。シミュレーション装置10は、三角形パッチデータの面と辺と節点のそれぞれに法線方向を定義する。シミュレーション装置10は、距離関数の構成が必要な格子位置を選定し、三角形パッチが触れている格子+1層の格子を選定する。その後、シミュレーション装置10は、格子内での符号付距離関数を構成し、構成した距離関数を用いて粒子法で壁面反力の計算を行う。
つまり、シミュレーション装置10は、格子内で符号付距離関数を構成し、粒子法のシミュレーションに利用することで、一般的手法の壁面表現に比べ、10倍以上の高速化が達成できる。この結果、シミュレーション装置10は、シミュレーションにかかる時間を短縮することができる。例えば、図26の粒子データPと三角形パッチとの距離を計算する場合、粒子データPが含まれる格子内の陰関数のみで計算が完了するので、図26と比較しても、3倍の計算速度で処理を完了することができる。
また、シミュレーション装置10は、格子データの各格子点について最短距離のみを保持することができるので、メモリ容量等を削減することができる。また、シミュレーション装置10は、最短距離のみを用いて距離を算出することができるので、壁面表現を高速化することができる。
また、シミュレーション装置10は、壁面からの距離が遠い部分における符号付距離関数の精度を向上させることもできる。図24は、一般手法に比べて精度が改善する例を説明する図である。図24の(a)に示す一般手法では、流体粒子iの位置での距離関数は、壁粒子j1の寄与(dj1)と壁粒子j2の寄与(dj2)との重みつき平均として評価されるので、角部分の距離が不正確になる。一方で、図24の(b)に示す実施例1の手法では、格子点での距離をSTLから正確に計算し、格子内の粒子データに対して正確に計算された距離に基づいて算出するので、角部分の距離を高精度に算出することができる。
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。
[角度、法線等の算出、対象点]
上記実施例1で用いた節点角度や各法線の算出手法は、実施例1で説明した手法に限らず、公知の様々な手法を採用することができる。また、データベースやデータ構造も一例であり、図示したものに限定されず、適宜変更することができる。また、対象点は、粒子法による粒子データを用いた場合に限らず、ユーザが座標等で指定することもできる。
[システム]
上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。また、実施例で説明した具体例、分布、数値などは、あくまで一例であり、任意に変更することができる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散や統合の具体的形態は図示のものに限られない。つまり、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
[ハードウェア]
図25は、ハードウェア構成例を説明する図である。図25に示すように、シミュレーション装置10は、通信装置10a、HDD(Hard Disk Drive)10b、メモリ10c、プロセッサ10dを有する。また、図25に示した各部は、バス等で相互に接続される。
通信装置10aは、ネットワークインタフェースカードなどであり、他のサーバや他の端末との通信を行う。HDD10bは、図1に示した機能を動作させるプログラムやDBを記憶する。
プロセッサ10dは、図1に示した各処理部と同様の処理を実行するプログラムをHDD10b等から読み出してメモリ10cに展開することで、図1等で説明した各機能を実行するプロセスを動作させる。すなわち、このプロセスは、シミュレーション装置10が有する各処理部と同様の機能を実行する。具体的には、プロセッサ10dは事前処理部31、格子生成部32、関数構成部33、算出部34等と同様の機能を有するプログラムをHDD10b等から読み出す。そして、プロセッサ10dは、事前処理部31、格子生成部32、関数構成部33、算出部34等と同様の処理を実行するプロセスを実行する。
このようにシミュレーション装置10は、プログラムを読み出して実行することでシミュレーション方法を実行する情報処理装置として動作する。また、シミュレーション装置10は、媒体読取装置によって記録媒体から上記プログラムを読み出し、読み出された上記プログラムを実行することで上記した実施例と同様の機能を実現することもできる。なお、この他の実施例でいうプログラムは、シミュレーション装置10によって実行されることに限定されるものではない。例えば、他のコンピュータまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本発明を同様に適用することができる。
このプログラムは、インターネットなどのネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスク(FD)、CD-ROM、MO(Magneto-Optical disk)、DVD(Digital Versatile Disc)などのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することができる。
10 シミュレーション装置
11 通信部
12 記憶部
13 入力データDB
14 三角形パッチデータDB
15 節点データDB
16 辺データDB
17 三角形パッチ要素データDB
18 節点要素データDB
19 辺要素データDB
20 シミュレーション結果DB
30 制御部
31 事前処理部
31a 取得部
31b 定義部
32 格子生成部
33 関数構成部
34 算出部

Claims (6)

  1. 構造物の形状を示す三角形パッチが含まれるように設定された格子データのうち、前記三角形パッチから所定距離以内にある格子データを抽出する抽出部と、
    抽出された各格子データの格子点それぞれに対して、前記三角形パッチからの符号付距離を算出して、前記符号付距離に基づく符号付距離関数の係数を設定する設定部と、
    距離測定の対象である対象点に対応する格子データを特定する特定部と、
    特定された前記格子データに設定される前記符号付距離関数を用いて、前記対象点と前記三角形パッチとの距離を算出する算出部と
    を有することを特徴とするシミュレーション装置。
  2. 前記抽出部は、前記三角形パッチの要素である各節点要素が含まれるように設定された前記格子データのうち、前記三角形パッチの要素である各面要素を含む格子データを抽出し、
    前記設定部は、抽出された各格子データの格子点それぞれに対して、当該格子データに含まれる各面要素のうち格子点までの距離が最も近い面要素と符号付距離に基づく前記符号付距離関数の係数を設定することを特徴とする請求項1に記載のシミュレーション装置。
  3. 前記設定部は、抽出された前記各格子データの境界点および中心点のそれぞれについて、前記境界点および中心点までの距離が最も近い面要素との間の符号付距離に基づく符号付距離関数の係数を設定し、
    前記算出部は、前記対象点に対応する格子データの境界点および中心点のそれぞれに設定された各係数を用いた符号付距離関数によって、前記対象点と前記三角形パッチとの距離を算出することを特徴とする請求項2に記載のシミュレーション装置。
  4. 前記算出部は、粒子法により算出された粒子データを前記対象点として設定することを特徴とする請求項1から3のいずれか一つに記載のシミュレーション装置。
  5. コンピュータが、
    構造物の形状を示す三角形パッチが含まれるように設定された格子データのうち、前記三角形パッチから所定距離以内にある格子データを抽出し、
    抽出された各格子データの格子点それぞれに対して、前記三角形パッチからの符号付距離を算出して、前記符号付距離に基づく符号付距離関数の係数を設定し、
    距離測定の対象である対象点に対応する格子データを特定し、
    特定された前記格子データに設定される前記符号付距離関数を用いて、前記対象点と前記三角形パッチとの距離を算出する
    処理を実行することを特徴とするシミュレーション方法。
  6. コンピュータに、
    構造物の形状を示す三角形パッチが含まれるように設定された格子データのうち、前記三角形パッチから所定距離以内にある格子データを抽出し、
    抽出された各格子データの格子点それぞれに対して、前記三角形パッチからの符号付距離を算出して、前記符号付距離に基づく符号付距離関数の係数を設定し、
    距離測定の対象である対象点に対応する格子データを特定し、
    特定された前記格子データに設定される前記符号付距離関数を用いて、前記対象点と前記三角形パッチとの距離を算出する
    処理を実行させることを特徴とするシミュレーションプログラム。
JP2018147071A 2018-08-03 2018-08-03 シミュレーション装置、シミュレーション方法およびシミュレーションプログラム Active JP7056452B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2018147071A JP7056452B2 (ja) 2018-08-03 2018-08-03 シミュレーション装置、シミュレーション方法およびシミュレーションプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018147071A JP7056452B2 (ja) 2018-08-03 2018-08-03 シミュレーション装置、シミュレーション方法およびシミュレーションプログラム

Publications (2)

Publication Number Publication Date
JP2020021426A JP2020021426A (ja) 2020-02-06
JP7056452B2 true JP7056452B2 (ja) 2022-04-19

Family

ID=69588576

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018147071A Active JP7056452B2 (ja) 2018-08-03 2018-08-03 シミュレーション装置、シミュレーション方法およびシミュレーションプログラム

Country Status (1)

Country Link
JP (1) JP7056452B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113761812B (zh) * 2021-09-09 2024-03-29 西安交通大学 基于无网格法的单层壁面复杂几何流域的求解方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006172134A (ja) 2004-12-15 2006-06-29 Canon Inc 情報処理装置、情報処理方法
JP2010243293A (ja) 2009-04-03 2010-10-28 Toshiba Corp 流動解析方法、流動解析装置、及び流動解析プログラム
WO2013042234A1 (ja) 2011-09-21 2013-03-28 富士通株式会社 物体運動解析装置、物体運動解析方法、及び物体運動解析プログラム
CN104318598A (zh) 2014-10-17 2015-01-28 中国科学技术大学 一种三维流固单向耦合的实现方法及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006172134A (ja) 2004-12-15 2006-06-29 Canon Inc 情報処理装置、情報処理方法
JP2010243293A (ja) 2009-04-03 2010-10-28 Toshiba Corp 流動解析方法、流動解析装置、及び流動解析プログラム
WO2013042234A1 (ja) 2011-09-21 2013-03-28 富士通株式会社 物体運動解析装置、物体運動解析方法、及び物体運動解析プログラム
CN104318598A (zh) 2014-10-17 2015-01-28 中国科学技术大学 一种三维流固单向耦合的实现方法及系统

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
J.A. Baerentzen,Robust generation of signed distance fields from triangle meshes,Fourth International Workshop on Volume Graphics,2005年,pp.167-175
原田 隆宏,MPS法における壁境界計算モデルの改良,日本計算工学会論文集,2008年03月28日,Vol.2008,p.20080006
原田 隆宏,SPHにおける壁境界計算手法の改良,情報処理学会論文誌,2007年04月15日,Vol.48 No.4,pp.1838-1846

Also Published As

Publication number Publication date
JP2020021426A (ja) 2020-02-06

Similar Documents

Publication Publication Date Title
Liu et al. Construction of iso-contours, bisectors, and Voronoi diagrams on triangulated surfaces
CN104346769A (zh) 三维建模对象的压缩
JP2013507679A (ja) 三次元物体モデルの3dプリントが可能な方法及びシステム
US20170148228A1 (en) Distance field coupled fitted deformation lattices for shape modification
CN112669463A (zh) 三维点云的曲面重建方法、计算机设备和计算机可读存储介质
CN109326002A (zh) 基于钻孔数据的矿体建模方法、装置、系统及存储介质
US11568098B2 (en) Designing convective cooling channels
JP4343590B2 (ja) 絶縁性検証システム、検証プログラム及び検証方法
Wang et al. Efficient boundary extraction of BSP solids based on clipping operations
JP7056452B2 (ja) シミュレーション装置、シミュレーション方法およびシミュレーションプログラム
US20160364908A1 (en) Analysis Model Creation Assistance System, Analysis Model Creation Assistance Device and Analysis Model Creation Assistance Program
CN107567641B (zh) 用于识别复制品的系统和方法
Tierney et al. Using mesh-geometry relationships to transfer analysis models between CAE tools
CN111383341A (zh) 从原始网格生成结构化的3d模型
EP4092557A1 (en) Parameterization of digital irregular freeform geometries
Pai et al. New aspects of the CISAMR algorithm for meshing domain geometries with sharp edges and corners
JP2010211629A (ja) 情報処理装置及び情報処理方法
CN110349265B (zh) 一种四面体拓扑网格生成方法及电子设备
CN103970925A (zh) 撞击事件数字模拟中的、包括低阶和二次有限元的接触表面定义标准
EP4038536A1 (en) Quantum computing device model discretization
Takashima et al. Shape descriptor-based similar feature extraction for finite element meshing
US20140142896A1 (en) System and method of refining a topological indexed mesh
CN112434177B (zh) 一种三维模型检索方法、装置、电子设备及存储介质
Mocanu et al. An experimental evaluation of 3D mesh decimation techniques
CN106777816A (zh) 一种场景动态模型管理系统

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210513

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220125

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220225

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220308

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220321

R150 Certificate of patent or registration of utility model

Ref document number: 7056452

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150