(57)【要約】【課題】シミュレーションの処理時間を短縮することを課題とする。【解決手段】シミュレーション装置は、構造物の形状を示す三角形パッチが含まれるように設定された格子データのうち、三角形パッチから所定距離以内にある格子データを抽出する。シミュレーション装置は、抽出された各格子データに対して、三角形パッチからの距離を算出して、距離に基づく距離パラメータを設定する。シミュレーション装置は、距離測定の対象である対象点に対応する格子データを特定する。シミュレーション装置は、特定された格子データに設定される距離パラメータに基づいて、対象点と三角形パッチとの距離を算出する。【選択図】図１
2020021426.tif 000002
【特許請求の範囲】
【請求項１】
構造物の形状を示す三角形パッチが含まれるように設定された格子データのうち、前記三角形パッチから所定距離以内にある格子データを抽出する抽出部と、
抽出された各格子データに対して、前記三角形パッチからの距離を算出して、前記距離に基づく距離パラメータを設定する設定部と、
距離測定の対象である対象点に対応する格子データを特定する特定部と、
特定された前記格子データに設定される前記距離パラメータに基づいて、前記対象点と前記三角形パッチとの距離を算出する算出部と
を有することを特徴とするシミュレーション装置。
【請求項２】
前記抽出部は、前記三角形パッチの要素である各節点要素が含まれるように設定された前記格子データのうち、前記三角形パッチの要素である各面要素を含む格子データを抽出し、
前記設定部は、抽出された各格子データに対して、当該格子データに含まれる各面要素のうち距離が最も近い面要素のとの距離に基づく前記距離パラメータを設定することを特徴とする請求項１に記載のシミュレーション装置。
【請求項３】
前記設定部は、抽出された前記各格子データの境界点および中心点のそれぞれについて、前記距離が最も近い面要素との間の符号付距離に基づく符号付距離関数の係数を設定し、
前記算出部は、前記対象点に対応する格子データの境界点および中心点のそれぞれに設定された各係数を用いた符号付距離関数によって、前記対象点と前記三角形パッチとの距離を算出することを特徴とする請求項２に記載のシミュレーション装置。
【請求項４】
前記算出部は、粒子法により算出された粒子データを前記対象点として設定することを特徴とする請求項１から３のいずれか一つに記載のシミュレーション装置。
【請求項５】
コンピュータが、
構造物の形状を示す三角形パッチが含まれるように設定された格子データのうち、前記三角形パッチから所定距離以内にある格子データを抽出し、
抽出された各格子データに対して、前記三角形パッチからの距離を算出して、前記距離に基づく距離パラメータを設定し、
距離測定の対象である対象点に対応する格子データを特定し、
特定された前記格子データに設定される前記距離パラメータに基づいて、前記対象点と前記三角形パッチとの距離を算出する
処理を実行することを特徴とするシミュレーション方法。
【請求項６】
コンピュータに、
構造物の形状を示す三角形パッチが含まれるように設定された格子データのうち、前記三角形パッチから所定距離以内にある格子データを抽出し、
抽出された各格子データに対して、前記三角形パッチからの距離を算出して、前記距離に基づく距離パラメータを設定し、
距離測定の対象である対象点に対応する格子データを特定し、
特定された前記格子データに設定される前記距離パラメータに基づいて、前記対象点と前記三角形パッチとの距離を算出する
処理を実行させることを特徴とするシミュレーションプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シミュレーション装置、シミュレーション方法およびシミュレーションプログラムに関する。
【背景技術】
【０００２】
複雑な形状を有する３次元構造物の形状を表現する手法として、粒子法を用いたシミュレーションが利用されている。また、粒子データと３次元構造物の壁面との距離を算出する手法としては、粒子データと壁面を構成する三角形パッチとの距離を算出する手法が利用されており、近年ではメッシュフリー陰関数を適用した手法が知られている。図２６は、メッシュフリー陰関数を適用した手法を説明する図である。図２６に示すように、まず、粒子径ｄｘよりも密にするようにＳＴＬ（Standard  Triangulated  Language）等の表面形状から表面に粒子データを配置する。続いて、外向きに単位法線を設定し、配置した粒子位置を中心にＰｏＵ（Partition  of  Unity）を構成する。そして、配置したＰｏＵ内で符号付距離関数を構成し、構成した符号付距離関数を参照して、壁面にめり込んでいる場合に反力を生成する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１７−１５７０７６号公報
【特許文献２】特開平１１−１２０１６５号公報
【特許文献３】特開２０１２−０４８５６４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記技術では、粒子データと壁面との距離を算出する際に、計算量が多くなり、壁面表現に時間がかかるので、結果としてシミュレーションの処理時間が長くなる。例えば、図２６に示す粒子データＰの位置の符号付距離関数の値を得るためには、近傍の３つの粒子データからの寄与計算が必要となる。より複雑な実際の３次元形状では、１０から３０の粒子データが近傍にあることから、計算コストが非常に高く、処理時間が長くなる。
【０００５】
一つの側面では、シミュレーションの処理時間を短縮することができるシミュレーション装置、シミュレーション方法およびシミュレーションプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
第１の案では、シミュレーション装置は、構造物の形状を示す三角形パッチが含まれるように設定された格子データのうち、前記三角形パッチから所定距離以内にある格子データを抽出する抽出部を有する。シミュレーション装置は、抽出された各格子データに対して、前記三角形パッチからの距離を算出して、前記距離に基づく距離パラメータを設定する設定部を有する。シミュレーション装置は、距離測定の対象である対象点に対応する格子データを特定する特定部と、特定された前記格子データに設定される前記距離パラメータに基づいて、前記対象点と前記三角形パッチとの距離を算出する算出部とを有する。
【発明の効果】
【０００７】
一実施形態によれば、シミュレーションの処理時間を短縮することができる。
【図面の簡単な説明】
【０００８】
【図１】図１は、実施例１にかかるシミュレーション装置の機能構成を示す機能ブロック図である。
【図２】図２は、シミュレーション装置を説明する図である。
【図３】図３は、入力データの一例を示す図である。
【図４】図４は、三角形パッチデータの一例を示す図である。
【図５】図５は、節点データの一例を示す図である。
【図６】図６は、辺データの一例を示す図である。
【図７】図７は、三角形パッチ要素データの一例を示す図である。
【図８】図８は、節点要素データの一例を示す図である。
【図９】図９は、辺要素データの一例を示す図である。
【図１０】図１０は、辺要素の法線の定義を説明する図である。
【図１１】図１１は、節点要素の法線の定義を説明する図である。
【図１２】図１２は、三角形パッチ要素を説明する図である。
【図１３】図１３は、接点要素を説明する図である。
【図１４】図１４は、辺要素を説明する図である。
【図１５】図１５は、バックグランド格子の生成を説明する図である。
【図１６】図１６は、面要素群から格子データの符号付距離計算方法を説明する図である。
【図１７】図１７は、面要素群から格子点の符号付距離計算方法を説明する図である。
【図１８】図１８は、バックグラウンド格子の各格子のデータ構造を説明する図である。
【図１９】図１９は、対象点との距離計算を説明する図である。
【図２０】図２０は、全体的な処理の流れを示すフローチャートである。
【図２１】図２１は、法線定義処理の流れを示すフローチャートである。
【図２２】図２２は、バックグラウンド格子のデータ生成処理の流れを示すフローチャートである。
【図２３】図２３は、距離計算処理の流れを示すフローチャートである。
【図２４】図２４は、一般手法に比べて精度が改善する例を説明する図である。
【図２５】図２５は、ハードウェア構成例を説明する図である。
【図２６】図２６は、メッシュフリー陰関数を適用した手法を説明する図である。
【発明を実施するための形態】
【０００９】
以下に、本願の開示するシミュレーション装置、シミュレーション方法およびシミュレーションプログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。また、各実施例は、矛盾のない範囲内で適宜組み合わせることができる。
【実施例１】
【００１０】
［機能構成］
図１は、実施例１にかかるシミュレーション装置１０の機能構成を示す機能ブロック図である。このシミュレーション装置１０は、複雑な形状を有する金型などの３次元構造物や地形などの３次元構造の形状をシミュレーションによって正確に表現するコンピュータ装置の一例である。
【００１１】
図２は、シミュレーション装置１０を説明する図である。シミュレーション装置１０は、図２の（ａ）に示す３次元構造物の形状を、粒子法を用いたシミュレーションによって正確に表現する（図２の（ｂ）参照）。このとき、シミュレーション装置１０は、シミュレーション対象の構造物に対応する三角形パッチデータによって、構造物の形状および壁面を特定する。そして、シミュレーション装置１０は、粒子法により算出された粒子データ（対象点）と壁面との距離を正確かつ高速に算出することで、高速な壁面表現を実現する。
【００１２】
例えば、シミュレーション装置１０は、三角形パッチから一定距離以内にある格子データを抽出し、各格子データに対して最も近い三角形パッチからの距離を算出して、格子データ毎に距離パラメータを生成する。その後、シミュレーション装置１０は、各粒子データの位置情報を基に対応する格子データを選択し、選択した格子データの距離パラメータを基に三角形パッチと粒子データとの距離を算出する。
【００１３】
つまり、シミュレーション装置１０は、対象点である粒子データを含んでいる格子データ内の陰関数のみで、対象点と壁面との距離を算出することができるので、シミュレーション処理全体の処理時間を短縮することができる。なお、本実施例では、実際は３次元であるが、説明を簡略化するために、２次元の図で説明する場合がある。
【００１４】
図１に戻り、シミュレーション装置１０は、通信部１１、記憶部１２、制御部３０を有する。通信部１１は、他の装置の通信を制御する処理部であり、例えば通信インタフェースなどである。例えば、通信部１１は、管理者の端末から処理開始指示、形状データ、対象点の指定などを受信し、シミュレーション結果や算出済みの距離情報などを管理者の端末に送信する。
【００１５】
記憶部１２は、プログラムやデータを記憶する記憶装置の一例であり、例えばメモリやハードディスクなどである。この記憶部１２は、入力データＤＢ１３、三角形パッチデータＤＢ１４、節点データＤＢ１５、辺データＤＢ１６、三角形パッチ要素データＤＢ１７、節点要素データＤＢ１８、辺要素データＤＢ１９、シミュレーション結果ＤＢ２０を記憶する。
【００１６】
入力データＤＢ１３は、構造物の形状データとして入力された入力データを記憶するデータベースである。図３は、入力データの一例を示す図である。図３に示すように、入力データＤＢ１３が記憶する入力データは、複数の節点座標ｉ（ｉは自然数）を記憶する。ここで記憶される節点座標は、３つの座標を１つのセットとして三角形を構成し、三角形の集合として三次元構造物の境界形状（壁面）を構築する。図３の例では、節点座標（ｉ，１）と節点座標（ｉ，２）と節点座標（ｉ，３）とで三角形を構成する。
【００１７】
三角形パッチデータＤＢ１４は、入力データをＳＴＬ等によって変換された三角形パッチデータを記憶するデータベースである。図４は、三角形パッチデータの一例を示す図である。図４に示すように、三角形パッチデータＤＢ１４が記憶する三角形パッチデータは、複数の三角形パッチ要素ｉから構成される。図４の例では、三角形パッチデータＤＢ１４は、三角形パッチ要素ｉ、三角形パッチ要素ｉ＋１などを記憶する。
【００１８】
節点データＤＢ１５は、三角形パッチデータの要素である節点に関する節点データを記憶するデータベースである。図５は、節点データの一例を示す図である。図５に示すように、節点データＤＢ１５が記憶する節点データは、複数の節点要素ｊ（ｊは自然数）から構成される。ここで記憶される節点要素は、三角形パッチデータの三角形の要素の一つである。図５の例では、節点データＤＢ１５は、節点要素ｊと節点要素ｊ＋１などを記憶する。
【００１９】
辺データＤＢ１６は、三角形パッチデータの要素である辺に関する辺データを記憶するデータベースである。図６は、辺データの一例を示す図である。図６に示すように、辺データＤＢ１６が記憶する辺データは、複数の辺要素ｋ（ｋは自然数）から構成される。ここで記憶される辺要素は、三角形パッチデータの三角形の要素の一つである。図６の例では、辺データＤＢ１６は、辺要素ｋと辺要素ｋ＋１などを記憶する。
【００２０】
三角形パッチ要素データＤＢ１７は、三角形パッチデータに含まれる各三角形パッチの要素に関する三角形パッチ要素データを記憶するデータベースである。図７は、三角形パッチ要素データの一例を示す図である。図７に示すように、三角形パッチ要素データＤＢ１７に記憶される三角形パッチ要素データは、面ＩＤに対応付けて、面法線と３つの節点情報と３つの辺情報とから構成される。なお、ここでは１つの面ＩＤに対応するデータ構造を示しているが、実際には三角形パッチごとに面ＩＤと対応付けられる情報が格納される。
【００２１】
「面ＩＤ」は、三角形パッチ要素データを特定する識別子であり、「面法線」は、面ＩＤによって特定される三角形パッチの面に対する法線に関する情報である。「節点ＩＤ」は、三角形パッチの要素である各節点を識別する識別子である。「節点座標」は、各節点の座標を示し、「節点角度」は、各節点の角度を示し、「節点法線」は、各節点の法線を示す。「辺ＩＤ」は、三角形パッチの要素である各辺を識別する識別子であり、「辺法線」は、各辺の法線を示す。
【００２２】
図７の例は、節点ＩＤ１と節点ＩＤ２と節点ＩＤ３と辺ＩＤ１と辺ＩＤ２と辺ＩＤ３とから構成される三角形パッチのデータを示す。また、節点ＩＤ１の座標、角度、法線は、節点座標１、節点角度１、節点法線１であり、節点ＩＤ２の座標、角度、法線は、節点座標２、節点角度２、節点法線２であり、節点ＩＤ３の座標、角度、法線は、節点座標３、節点角度３、節点法線３である。辺ＩＤ１の法線は辺法線１であり、辺ＩＤ２の法線は辺法線２であり、辺ＩＤ３の法線は辺法線３である。なお、節点座標は、三角形パッチのデータから取得することができ、節点角度は、各節点の座標を用いて算出することができ、各法線は、制御部３０によって算出される。
【００２３】
節点要素データＤＢ１８は、三角形パッチの要素である節点に関する節点要素データを記憶するデータベースである。図８は、節点要素データの一例を示す図である。図８に示すように、節点要素データＤＢ１８に記憶される節点要素データは、節点ＩＤと節点座標と複数の面ＩＤとを有する。なお、ここでは１つの節点ＩＤに対応するデータ構造を示しているが、実際には三角形パッチの各節点の情報が格納される。
【００２４】
ここで記憶される「節点ＩＤ」は、節点を識別する識別子であり、「節点座標」は、節点の座標である。「面ＩＤ」は、節点を含む、当該節点を要素とする各面を識別する識別子である。図８の例では、面ＩＤが１からＮｓの各面に含まれる節点の情報を示している。
【００２５】
辺要素データＤＢ１９は、三角形パッチの要素である辺に関する辺要素データを記憶するデータベースである。図９は、辺要素データの一例を示す図である。図９に示すように、辺要素データＤＢ１９に記憶される辺要素データは、辺ＩＤと節点ＩＤと面ＩＤとを有する。なお、ここでは１つの辺ＩＤに対応するデータ構造を示しているが、実際には三角形パッチの各辺の情報が格納される。
【００２６】
ここで記憶される「辺ＩＤ」は、辺を識別する識別子である。「節点ＩＤ」は、当該辺の端点である、当該辺を要素とする節点を識別する識別子である。「面ＩＤ」は、当該辺を含む、当該辺を要素とする面を識別する識別子である。図９の例では、面ＩＤの節点ＩＤ１と面ＩＤ２の節点ＩＤ２とを結んだ辺に関する情報を示している。
【００２７】
制御部３０は、シミュレーション装置１０全体を司る処理部であり、例えばプロセッサなどである。この制御部３０は、事前処理部３１、格子生成部３２、関数構成部３３、算出部３４を有する。なお、事前処理部３１、格子生成部３２、関数構成部３３、算出部３４は、プロセッサが有する電子回路の一例やプロセッサが実行するプロセスの一例である。
【００２８】
事前処理部３１は、取得部３１ａと定義部３１ｂを有し、三角形パッチの各要素に関するデータの取得や三角形パッチの法線に関する定義の生成を実行する処理部である。
【００２９】
取得部３１ａは、入力データＤＢ１３に記憶される入力データをＳＴＬ等の三角形パッチデータとして読み込み、三角形パッチデータによる特定される三角形パッチの各要素に関する要素データを取得する処理部である。具体的には、取得部３１ａは、三角形パッチデータとして読み込んで、三角形パッチの面、辺、節点、節点の角度を特定し、各情報を各ＤＢに格納する。
【００３０】
また、取得部３１ａは、複数の三角形パッチの間で重複する節点や辺について、重複してＤＢに登録しないように、重複を削除して登録する。例えば、取得部３１ａは、面Ｓ１１と面Ｓ１２との両方に節点Ｖが含まれている場合、節点要素データにＶの情報が２つ含まれないように、１つの節点情報（節点ＩＤ、節点座標、面ＩＤ）を格納する。同様に、取得部３１ａは、面Ｓ１１の節点Ｖ１１と面Ｓ１２の節点Ｖ１２とを結ぶ辺Ｅについて、辺要素データにＥの情報が２つ含まれないように、１つの辺情報を格納する。
【００３１】
定義部３１ｂは、三角形パッチデータの面、辺、節点のそれぞれに法線方向を定義する処理部である。具体的には、定義部３１ｂは、面の法線については、三角形パッチの法線を定義し、各法線を各ＤＢに格納する。例えば、定義部３１ｂは、節点Ｖ１、Ｖ２、Ｖ３を用いて、Ｖ１Ｖ２とＶ１Ｖ３との外積を算出することで、面の法線を算出する。
【００３２】
また、定義部３１ｂは、辺の法線については、近接パッチの法線の平均から算出し、算出した法線を各ＤＢに格納する。図１０は、辺要素の法線の定義を説明する図である。図１０に示すように、定義部３１ｂは、辺を共有する面要素の法線の平均値を辺要素の法線として算出する。図１０の例では、定義部３１ｂは、「（面法線ｎ１と面法線ｎ２との和）／（面法線ｎ１と面法線ｎ２との和の絶対値）」を、辺要素の法線ｎＥｄｇｅとして算出する。
【００３３】
また、定義部３１ｂは、節点の法線については、近接パッチの法線の平均から算出し、算出した法線を各ＤＢに格納する。図１１は、節点要素の法線の定義を説明する図である。図１１に示すように、定義部３１ｂは、節点を共有する面要素の法線の角度重み付き平均によって、節点要素の法線を算出する。図１１の例では、定義部３１ｂは、「（面法線ｎ１×角度θ１）＋（面法線ｎ２×角度θ２）＋（面法線ｎ３×角度θ３）＋（面法線ｎ４×角度θ４）＋（面法線ｎ５×角度θ５）＋（面法線ｎ６×角度θ６）」／「（面法線ｎ１×角度θ１）＋（面法線ｎ２×角度θ２）＋（面法線ｎ３×角度θ３）＋（面法線ｎ４×角度θ４）＋（面法線ｎ５×角度θ５）＋（面法線ｎ６×角度θ６）の絶対値」を、節点要素の法線ｎＮｏｄｅとして算出する。
【００３４】
ここで、三角形パッチ要素データについて説明する。図１２は、三角形パッチ要素を説明する図である。図１２を用いて、三角形パッチデータから三角形パッチ要素を特定して格納する例を説明する。図１２に示すように、取得部３１ａは、三角形パッチの面に面ＩＤとしてＳｉを付与し、この面ＩＤ「Ｓｉ」に各要素を対応付ける。
【００３５】
具体的には、取得部３１ａは、図７の節点ＩＤ１、２、３として、Ｖｊ１とＶｊ２とＶｊ３とを特定し、これらの座標を節点座標１、節点座標２、節点座標３に格納する。また、取得部３１ａは、各節点の座標を用いて、節点Ｖｊ１の角度θｊ１と節点Ｖｊ２の角度θｊ２と節点Ｖｊ３の角度θｊ３とを算出し、それぞれを節点角度１、節点角度２、節点角度３に格納する。また、取得部３１ａは、節点Ｖｊ１とＶｊ２とを結ぶ辺Ｅｋ１、節点Ｖｊ２とＶｊ３とを結ぶ辺Ｅｋ２、節点Ｖｊ３とＶｊ１とを結ぶ辺Ｅｋ３を特定し、それぞれを辺ＩＤ１、辺ＩＤ２、辺ＩＤ３に格納する。
【００３６】
そして、定義部３１ｂは、面Ｓｉに対する面法線ｎＳを算出して面法線に格納する。また、定義部３１ｂは、図１１の手法を用いて、節点Ｖｊ１の法線ｎＶ１と節点Ｖｊ２の法線ｎＶ２と節点Ｖｊ３の法線ｎＶ３とを算出し、それぞれを節点法線１、節点法線２、節点法線３に格納する。また、定義部３１ｂは、図１０の手法を用いて、辺Ｅｋ１の法線ｎＥ１と辺Ｅｋ２の法線ｎＥ２と辺Ｅｋ３の法線ｎＥ３とを算出して、それぞれを辺法線１、辺法線２、辺法線３に格納する。このようにして、三角形パッチデータの各要素が生成される。
【００３７】
次に、三角形パッチデータの接点要素データの生成を説明する。図１３は、接点要素を説明する図である。図１３に示すように、取得部３１ａは、三角形パッチの面である「Ｓｉ１」と「Ｓｉ２」と「Ｓｉ３」と「Ｓｉ４」とが共有する節点Ｖｊを特定し、図８の節点ＩＤに格納する。また、取得部３１ａは、節点ＩＤ「Ｖｊ」に対応付けて、節点Ｖｊの座標「ｘｊ，ｙｊ，ｚｊ」を節点座標に格納するとともに、「Ｓｉ１」と「Ｓｉ２」と「Ｓｉ３」と「Ｓｉ４」とを面ＩＤに格納する。このようにして、三角形パッチデータの各接点要素データが生成される。
【００３８】
次に、三角形パッチデータの辺要素データの生成を説明する。図１４は、辺要素を説明する図である。図１４に示すように、取得部３１ａは、三角形パッチの面である「Ｓｉ１」と「Ｓｉ２」とが共有する節点Ｖｊ１とＶｊ２とを結ぶ辺Ｅｋを特定し、図９の辺ＩＤに格納する。また、取得部３１ａは、辺ＩＤ「Ｅｋ」に対応付けて、辺Ｅｋの端点である節点Ｖｊ１とＶｊ２を節点ＩＤに格納するとともに、辺Ｅｋを共有する「Ｓｉ１」と「Ｓｉ２」とを面ＩＤに格納する。このようにして、三角形パッチデータの各辺要素データが生成される。
【００３９】
図１に戻り、格子生成部３２は、三角形パッチデータに対して、バックグラウンド格子を生成する処理部である。具体的には、格子生成部３２は、図８に示した三角形パッチデータの全節点座標が含まれるように、バウンティングボックスを生成する。言い換えると、格子生成部３２は、形状データから特定された三角形パッチデータの全節点座標を包含するバウンティングボックスを生成する。
【００４０】
図１５は、バックグランド格子の生成を説明する図である。なお、実際は３次元であるが、説明を簡略化するために２次元で説明する。図１５に示すように、格子生成部３２は、バウンディングボックスを１辺が指定された長さｈの立方体に分割する。例えば、格子生成部３２は、原点を「ｘ０，ｙ０，ｚ０」、格子ＩＤ（ｉ，ｊ，ｋ）をそれぞれ０からＮｘ，Ｎｙ，Ｎｚまでとし、各座標を「ｘ０＋ｉ×ｈ，ｙ０＋ｊ×ｈ，ｚ０＋ｋ×ｈ」で表す。なお、各変数は自然数である。
【００４１】
関数構成部３３は、三角形パッチデータに対応する各格子データに、符号付距離関数に使用する距離パラメータを設定する処理部である。すなわち、関数構成部３３は、ＰｏＵ領域を格子形状にして、格子内で符号付距離関数を構成する。このとき、関数構成部３３は、一般的な二次関数にて陰関数を構成することで、陰関数構成を局所的に行う。
【００４２】
具体的には、関数構成部３３は、構造物の形状を示す三角形パッチデータが含まれるように設定された格子（格子データ）のうち、三角形パッチデータから所定距離以内にある格子データを抽出する。そして、関数構成部３３は、抽出された各格子データに対して、三角形パッチデータからの距離を算出して、距離に基づく距離パラメータを設定する。このとき、関数構成部３３は、抽出された各格子データに対して、当該格子データに含まれる各面要素のうち距離が最も近い面要素のとの距離に基づく距離パラメータを設定することもできる。
【００４３】
図１６は、面要素群から格子データの符号付距離計算方法を説明する図である。関数構成部３３は、図８に示した三角形パッチデータの各面要素（各面ＩＤ）について、図１６に示す処理を実行する。例えば、図１６に示すように、関数構成部３３は、面要素ＩＤを１つ選択し、選択された面ＩＤによって特定される面要素データ、言い換えると節点や辺によって特定される三角形パッチデータの面、を覆うバウンティングボックスを生成する（図１６の（ａ）参照）。
【００４４】
続いて、関数構成部３３は、生成したバウンティングボックスを含む格子データを特定する（図１６の（ｂ）参照）。言い換えると、関数構成部３３は、選択された面要素データから所定距離の範囲内にある格子データを特定する。図１６の例では、面要素データを覆うバウンティングボックスと少なくとも一部が重なる４つの格子データが選択される。
【００４５】
そして、関数構成部３３は、特定した格子データ（図１６では４つの格子データ）それぞれについて、符号付距離を計算する。具体的には、図１６に示すように、関数構成部３３は、特定した格子データの中心点、および、当該格子データと他の格子データの境界となる境界点を含む合計２７個の格子点を選択する。なお、図１６では、２次元で表現しているので９個の格子点のみが図示されるが、実際は３次元であることから、選択される点は２７個となる。
【００４６】
続いて、関数構成部３３は、選択した２７個の格子点について、面要素データからの符号付距離を計算する。上記例を用いて説明すると、関数構成部３３は、２７個の格子点「ｘ０＋（ｉ＋０．５×ｉ１）×ｈ，ｙ０＋（ｊ＋０．５×ｊ１）×ｈ，ｚ０＋（ｋ＋０．５×ｋ１）×ｈ」（ｉ１、ｊ１、ｋ１は０から２の値）に対して、面要素データからの符号付距離を計算する。
【００４７】
図１７は、面要素群から格子点の符号付距離計算方法を説明する図である。関数構成部３３は、距離を求めたい格子点Ｐを面要素が生成する平面内に射影する。このとき、射影点の位置が図１７の（ａ）のように面内に入っていた場合、射影点から格子点Ｐの距離ｄｉ，Ｐが符号付距離の絶対値であり、符号は面の法線と射影点をから格子点Ｐへのベクトルの内積の符号として算出される。一方、射影点が図１７の（ｂ）のように三角形要素の外にある場合、要素の辺および節点に最小距離の点ｈが面要素の境界にある。点ｈから格子点ｐまでの距離ｄｉ，Ｐが符号付距離関数の絶対値であり、点ｈから点ｐのベクトルとｈの点の法線との内積が符号となる、なお、点ｈの符号は、ｈが面要素の辺上にあった場合は辺の法線、節点にあった場合は節点の法線が採用される。
【００４８】
ここで、関数構成部３３は、図８に示した三角形パッチデータの各面要素について上記符号付距離の計算を実行するが、格子点の符号付距離は絶対値の小さいものを上書きしていく。例えば、関数構成部３３は、ある格子点Ｑ（Ｘ、Ｙ、Ｚ）が面要素データＡ、Ｂ、Ｃのそれぞれに含まれ、格子点Ｑと面要素データＡとの距離がＬ１、格子点Ｑと面要素データＢとの距離がＬ２（Ｌ１＞Ｌ２）、格子点Ｑと面要素データＶとの距離がＬ３（Ｌ２＞Ｌ３）であったとする。この場合、関数構成部３３は、当該格子点Ｑについては、距離Ｌ３のみを対応付けて保持する。
【００４９】
このようにすることで、各格子点は、三角形パッチデータのうち最短距離にある三角形パッチデータの距離情報を保持することができる。図１８は、バックグラウンド格子の各格子のデータ構造を説明する図である。関数構成部３３は、上述した処理を各格子データについて実行することで、各格子データに対応付けて図１８に示すデータを生成する。
【００５０】
具体的には、図１８に示すように、ＩＤが「ｉ，ｊ，ｋ」であるバックグラウンド格子の格子データに対して、符号付距離計算点である格子点ＩＤ「ｘ０＋（ｉ＋０．５×ｉ１）×ｈ，ｙ０＋（ｉ＋０．５×ｉ１）×ｈ，ｚ０＋（ｉ＋０．５×ｉ１）×ｈ」（ｉ１、ｊ１、ｋ１は０から２の値）」に対して、三角形パッチデータの最小距離を保持する。例えば、座標が「ｘ０，０，０＝（ｘ０＋ｉ×ｈ，ｙ０＋ｊ×ｈ，ｚ０＋ｋ×ｈ）」である格子点ＩＤ（０，０，０）に対して、最短距離の値ｆ０，０，０を対応付けて保持する。また、座標が「ｘｉ１，ｊ１，ｋ１＝（ｘ０＋（ｉ＋０．５×ｉ１）×ｈ，ｙ０＋（ｊ＋０．５×ｊ１）×ｈ，ｚ０＋（ｋ＋０．５×ｋ１）×ｈ）」である格子点ＩＤ（ｉ１，ｊ１，ｋ１）に対して、最短距離の値ｆｉ１，ｊ１，ｋ１を対応付けて保持する。また、座標が「ｘ２，２，２＝（ｘ０＋（ｉ＋１）×ｈ，ｙ０＋（ｊ＋１）×ｈ，ｚ０＋（ｋ＋１）×ｈ）」である格子点ＩＤ（２，２，２）に対して、最短距離の値ｆ２，２，２を対応付けて保持する。
【００５１】
そして、関数構成部３３は、各格子点に対して符号化付距離関数の係数を算出し、各格子点に対応付けて当該係数を保持する。具体的には、関数構成部３３は、２７個の格子点（ｉ１，ｊ１，ｋ１）それぞれについて、式（１）を用いた連立一次方程式を解くことによって、係数の値ａｉ１，ｊ１，ｋ１のそれぞれを算出する。図１８の例では、格子点ＩＤ（０，０，０）に対しては係数ａ０，０，０が算出され、格子点ＩＤ（２，２，２）に対しては係数ａ２，２，２が算出された例を示している。
【００５２】
【数１】
2020021426.tif 000003
【００５３】
このようにして、関数構成部３３は、バックグラウンド格子の各格子の２７個の格子点それぞれに対して、三角形パッチデータとの最短距離と、当該最短距離も基づき算出される符号付距離関数の係数ａ（距離パラメータ）を対応付けて記憶部１２等に保持する。このようにして、各格子データが係数を保存することで陰関数の構成が完了する。
【００５４】
図１に戻り、算出部３４は、指定された対象点と３次元構造物の壁面との距離を算出する処理部である。具体的には、算出部３４は、構成した距離関数を用いて粒子法で壁面反力の計算を行う。例えば、算出部３４は、粒子法により算出された粒子データを対象として受け付け、粒子データの位置情報を基に対応する格子データを選択する。そして、算出部３４は、選択した格子データの距離パラメータを基に三角形パッチデータと粒子データとの距離を算出する。
【００５５】
図１９は、対象点との距離計算を説明する図である。図１９に示すように、算出部３４は、距離を計算したい対象点ｘの座標と、各格子データの格子点などの座標とを用いて、対象点ｘが含まれる格子データのＩＤ（ｉ，ｊ，ｋ）を選定する。そして、算出部３４は、図１８に示した各格子データのデータ構造を参照して、選定した格子データのＩＤ（ｉ，ｊ，ｋ）に該当する符号付距離関数の係数ａｉ１，ｊ１，ｋ１（０≦ｉ１≦２，０≦ｊ１≦２，０≦ｋ１≦２）を特定する。その後、算出部３４は、係数ａｉ１，ｊ１，ｋ１（０≦ｉ１≦２，０≦ｊ１≦２，０≦ｋ１≦２）を式（２）に代入して、対象点ｘと壁面との距離ｄ（ｘ）を算出する。そして、公知の手法を用いて、この距離ｄ（ｘ）を用いて壁面からの反力が計算される。なお、算出結果は、シミュレーション結果ＤＢ２０に格納される。
【００５６】
【数２】
2020021426.tif 000004
【００５７】
［処理の流れ］
次に、上述した各処理について説明する。ここでは、全体的な処理の流れ、法線定義処理の流れ、バックグラウンド格子の生成処理の流れ、距離計算処理の流れについて説明する。
【００５８】
（全体的な処理）
図２０は、全体的な処理の流れを示すフローチャートである。図２０に示すように、処理開始が指示されると（Ｓ１０１：Ｙｅｓ）、取得部３１ａは、入力データＤＢ１３から入力データを取得し（Ｓ１０２）、入力データを三角形パッチデータとして読み込み、三角形パッチデータの各要素データを取得する（Ｓ１０３）。
【００５９】
続いて、定義部３１ｂは、三角形パッチデータの面、辺、節点のそれぞれに法線方向を定義して各ＤＢに格納する（Ｓ１０４）。そして、格子生成部３２は、三角形パッチデータの全節点座標が含まれるように、バウンティングボックスを生成する（Ｓ１０５）。
【００６０】
その後、関数構成部３３は、三角形パッチデータに対応する各格子データに対して、格子位置を選定し（Ｓ１０６）、選定した格子内で符号付距離関数を構成する（Ｓ１０７）。すなわち、関数構成部３３は、各格子データについて、三角形パッチデータの最短距離および符号付距離関数の係数を設定する。
【００６１】
その後、算出部３４は、距離を計算する対象点がある場合（Ｓ１０８：Ｙｅｓ）、対象点の座標等を特定し（Ｓ１０９）、対象点を含むバックグラウンド格子を選定し（Ｓ１１０）、選定したバックグラウンド格子と対応付けられる各係数を用いて、対象点と壁面との距離を算出する（Ｓ１１１）。
【００６２】
なお、対象点が存在する間、Ｓ１０８からＳ１１１が繰り返し実行され、対象点が存在しなくなると（Ｓ１０８：Ｎｏ）、処理が終了する。
【００６３】
（法線定義処理）
図２１は、法線定義処理の流れを示すフローチャートである。図２１に示すように、事前処理部３１は、形状データに含まれる各三角形についてＳ２０１からＳ２１３を実行する。なお、ここでは、読み込んだ三角形パッチの座標を節点座標（ｉ，１−３）（節点座標（ｉ，１）、節点座標（ｉ，２）、節点座標（ｉ，３））として以下の処理を説明する。
【００６４】
具体的には、事前処理部３１は、三角形パッチ要素データＤＢ１７に対して、三角形パッチ要素を１つ追加する（Ｓ２０２）。例えば、事前処理部３１は、面ＩＤとして新規の値（ＩＤＳ）を生成して格納し、ＩＤＳの節点座標１から３に、節点座標（ｉ，１）、節点座標（ｉ，２）、節点座標（ｉ，３）を代入する。また、事前処理部３１は、節点座標を用いて面法線を算出して、三角形パッチ要素データＤＢ１７に格納する。
【００６５】
続いて、事前処理部３１は、節点座標（ｉ，１−３）、すなわち節点座標（ｉ，１）、節点座標（ｉ，２）、節点座標（ｉ，３））について、Ｓ２０３からＳ２０７を実行する。ここでは、注目している番号をｉｖとして説明する。具体的には、事前処理部３１は、節点要素データＤＢ１８に節点要素データを追加する（Ｓ２０４）。例えば、事前処理部３１は、節点要素データＤＢ１８を参照して、節点座標ｉｖを持つ節点要素を検索し、検索されたＩＤをＩＤＶとする。このとき、事前処理部３１は、該当する節点要素がない場合、節点ＩＤとして新規の値（ＩＤＶ）を生成して、節点要素データＤＢ１８に節点座標ｉＶを代入する。
【００６６】
そして、事前処理部３１は、節点要素データに面ＩＤを追加する（Ｓ２０５）。例えば、事前処理部３１は、節点要素データＤＢ１８において、節点要素ＩＤＶの面ＩＤにＩＤＳを追加する。
【００６７】
さらに、事前処理部３１は、三角形パッチ要素データＤＢ１７に、節点ＩＤおよび節点角度を追加する（Ｓ２０６）。例えば、事前処理部３１は、三角形パッチ要素ＩＤＳについて、節点ＩＤにＩＤｖを追加し、節点角度ｉＶを算出して代入する。
【００６８】
続いて、事前処理部３１は、節点ＩＤのペア３組（（１，２）、（２，３）、（３，１））についてＳ２０８からＳ２１２を実行する。なお、ここでは、注目しているＩＤペアを（ＩＤＶ１，ＩＤＶ２）として説明する。具体的には、事前処理部３１は、辺要素データＤＢ１９に辺要素データを追加する（Ｓ２０９）。例えば、事前処理部３１は、辺要素データＤＢ１９を参照して、節点ＩＤの組として（ＩＤＶ１，ＩＤＶ２）を持つ辺要素を検索し、検索されたＩＤをＩＤＥとする。このとき、事前処理部３１は、該当する辺要素がない場合、辺ＩＤとして新規の値（ＩＤＥ）を生成して、辺要素データＤＢ１９の節点ＩＤに（ＩＤＶ１，ＩＤＶ２）を代入する。
【００６９】
続いて、事前処理部３１は、辺要素データに辺要素の面ＩＤを追加する（Ｓ２１０）。例えば、事前処理部３１は、辺要素データＤＢ１９において、辺要素ＩＤＥの面ＩＤにＩＤＳを追加する。さらに、事前処理部３１は、三角形パッチ要素データＤＢ１７に辺ＩＤを追加する（Ｓ２１１）。例えば、事前処理部３１は、三角形パッチ要素ＩＤＳについて、辺ＩＤにＩＤＥを追加する。
【００７０】
その後、事前処理部３１は、節点要素についてＳ２１４からＳ２２１を実行する。なお、ここでは、節点要素を（ＩＤＶ）として説明する。
【００７１】
具体的には、事前処理部３１は、作業用変数ｎＶを初期化する（Ｓ２１５）。続いて、事前処理部３１は、節点要素ＩＤＶに含まれる面ＩＤ（ＩＤＳ）についてＳ２１６からＳ２１８を実行する。具体的には、事前処理部３１は、角度重み付き総和の計算を実行する（Ｓ２１７）。すなわち、事前処理部３１は、三角形パッチ要素ＩＤＳの面法線をｎＳ、節点角度の中で節点ＩＤがＩＤＶに対応するものをθとして、「ｎＶ＝ｎＶ＋θｎＳ」により角度重み付き総和を算出する。
【００７２】
その後、事前処理部３１は、式（３）によりｎＶを算出する（Ｓ２１９）。すなわち、事前処理部３１は、角度重み付き総和を角度重み付き平均に変換する。
【００７３】
そして、事前処理部３１は、三角形パッチ要素データＤＢ１７に、算出した節点法線を代入する（Ｓ２２０）。例えば、事前処理部３１は、節点要素に含まれる面ＩＤそれぞれに対して、節点ＩＤがＩＤＶに対応する節点法線にｎＶを代入する。
【００７４】
続いて、事前処理部３１は、辺要素についてＳ２２２からＳ２２５を実行する。なお、ここでは、辺要素を（ＩＤＥ）として説明する。
【００７５】
具体的には、事前処理部３１は、辺要素に含まれる面ＩＤに対して式（４）により辺法線を算出する（Ｓ２２３）。例えば、事前処理部３１は、辺要素に含まれる面ＩＤをＩＤＳ１，ＩＤＳ２とし、ＩＤＳ１，ＩＤＳ２のそれぞれの面法線をｎＳ１，ｎＳ２として、式（４）により辺法線ｎＥを算出する。
【００７６】
そして、事前処理部３１は、三角形パッチ要素データＤＢ１７に、算出した辺法線を代入する（Ｓ２２４）。例えば、事前処理部３１は、ＩＤＳ１，ＩＤＳ２のそれぞれに対して、辺ＩＤがＩＤＥに対応する辺法線ｎＥを代入する。
【００７７】
（バックグラウンド格子の生成処理）
図２２は、バックグラウンド格子のデータ生成処理の流れを示すフローチャートである。図２２に示すように、格子生成部３２は、全ての節点要素が含まれるように、バウンティングボックスを生成する（Ｓ３０１）。続いて、格子生成部３２は、バウンティングボックスを長さｈの立方体領域（ｉ，ｊ，ｋ）に分割して、格子データを生成する（Ｓ３０２）。
【００７８】
その後、関数構成部３３は、三角形パッチデータの全ての面要素についてＳ３０３からＳ３０５を実行する。具体的には、関数構成部３３は、面要素が接触している立方体領域（ｉ，ｊ，ｋ）の符号付距離計算点の値に、面要素からの距離を代入する（Ｓ３０４）。このとき、格子生成部３２は、すでに算出済みで値が保持されている場合は、絶対値が小さい値を採用して保持する。
【００７９】
そして、関数構成部３３は、すべての立方体領域（ｉ，ｊ，ｋ）に対してＳ３０６からＳ３０８を実行する。具体的には、関数構成部３３は、符号付距離計算点の値を用いて、符号付距離関数の係数を２７×２７の連立一次方程式によって生成する（Ｓ３０７）。
【００８０】
（距離計算処理）
図２３は、距離計算処理の流れを示すフローチャートである。図２３に示すように、算出部３４は、距離の算出対象となる対象点を特定し（Ｓ４０１）、対象点が含まれる立方体領域（ｉ，ｊ，ｋ）を選定する（Ｓ４０２）。
【００８１】
その後、算出部３４は、立方体領域（ｉ，ｊ，ｋ）に対応付けて保持される符号付距離関数の係数と対象点の値（座標等）とから、壁面から対象点までの距離を計算し（Ｓ４０３）、計算結果をシミュレーション結果ＤＢ２０等に出力する（Ｓ４０４）。
【００８２】
［効果］
上述したように、シミュレーション装置１０は、形状データをＳＴＬ等の三角形パッチデータとして読み込む。シミュレーション装置１０は、三角形パッチデータの面と辺と節点のそれぞれに法線方向を定義する。シミュレーション装置１０は、距離関数の構成が必要な格子位置を選定し、三角形パッチが触れている格子＋１層の格子を選定する。その後、シミュレーション装置１０は、格子内での符号付距離関数を構成し、構成した距離関数を用いて粒子法で壁面反力の計算を行う。
【００８３】
つまり、シミュレーション装置１０は、格子内で符号付距離関数を構成し、粒子法のシミュレーションに利用することで、一般的手法の壁面表現に比べ、１０倍以上の高速化が達成できる。この結果、シミュレーション装置１０は、シミュレーションにかかる時間を短縮することができる。例えば、図２６の粒子データＰと三角形パッチとの距離を計算する場合、粒子データＰが含まれる格子内の陰関数のみで計算が完了するので、図２６と比較しても、３倍の計算速度で処理を完了することができる。
【００８４】
また、シミュレーション装置１０は、格子データの各格子点について最短距離のみを保持することができるので、メモリ容量等を削減することができる。また、シミュレーション装置１０は、最短距離のみを用いて距離を算出することができるので、壁面表現を高速化することができる。
【００８５】
また、シミュレーション装置１０は、壁面からの距離が遠い部分における符号付距離関数の精度を向上させることもできる。図２４は、一般手法に比べて精度が改善する例を説明する図である。図２４の（ａ）に示す一般手法では、流体粒子ｉの位置での距離関数は、壁粒子ｊ1の寄与（ｄｊ１）と壁粒子ｊ２の寄与（ｄｊ２）との重みつき平均として評価されるので、角部分の距離が不正確になる。一方で、図２４の（ｂ）に示す実施例１の手法では、格子点での距離をＳＴＬから正確に計算し、格子内の粒子データに対して正確に計算された距離に基づいて算出するので、角部分の距離を高精度に算出することができる。
【実施例２】
【００８６】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。
【００８７】
［角度、法線等の算出、対象点］
上記実施例１で用いた節点角度や各法線の算出手法は、実施例１で説明した手法に限らず、公知の様々な手法を採用することができる。また、データベースやデータ構造も一例であり、図示したものに限定されず、適宜変更することができる。また、対象点は、粒子法による粒子データを用いた場合に限らず、ユーザが座標等で指定することもできる。
【００８８】
［システム］
上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。また、実施例で説明した具体例、分布、数値などは、あくまで一例であり、任意に変更することができる。
【００８９】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散や統合の具体的形態は図示のものに限られない。つまり、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００９０】
［ハードウェア］
図２５は、ハードウェア構成例を説明する図である。図２５に示すように、シミュレーション装置１０は、通信装置１０ａ、ＨＤＤ（Hard  Disk  Drive）１０ｂ、メモリ１０ｃ、プロセッサ１０ｄを有する。また、図２５に示した各部は、バス等で相互に接続される。
【００９１】
通信装置１０ａは、ネットワークインタフェースカードなどであり、他のサーバや他の端末との通信を行う。ＨＤＤ１０ｂは、図１に示した機能を動作させるプログラムやＤＢを記憶する。
【００９２】
プロセッサ１０ｄは、図１に示した各処理部と同様の処理を実行するプログラムをＨＤＤ１０ｂ等から読み出してメモリ１０ｃに展開することで、図１等で説明した各機能を実行するプロセスを動作させる。すなわち、このプロセスは、シミュレーション装置１０が有する各処理部と同様の機能を実行する。具体的には、プロセッサ１０ｄは事前処理部３１、格子生成部３２、関数構成部３３、算出部３４等と同様の機能を有するプログラムをＨＤＤ１０ｂ等から読み出す。そして、プロセッサ１０ｄは、事前処理部３１、格子生成部３２、関数構成部３３、算出部３４等と同様の処理を実行するプロセスを実行する。
【００９３】
このようにシミュレーション装置１０は、プログラムを読み出して実行することでシミュレーション方法を実行する情報処理装置として動作する。また、シミュレーション装置１０は、媒体読取装置によって記録媒体から上記プログラムを読み出し、読み出された上記プログラムを実行することで上記した実施例と同様の機能を実現することもできる。なお、この他の実施例でいうプログラムは、シミュレーション装置１０によって実行されることに限定されるものではない。例えば、他のコンピュータまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本発明を同様に適用することができる。
【００９４】
このプログラムは、インターネットなどのネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＭＯ（Magneto−Optical  disk）、ＤＶＤ（Digital  Versatile  Disc）などのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することができる。
【符号の説明】
【００９５】
１０  シミュレーション装置
１１  通信部
１２  記憶部
１３  入力データＤＢ
１４  三角形パッチデータＤＢ
１５  節点データＤＢ
１６  辺データＤＢ
１７  三角形パッチ要素データＤＢ
１８  節点要素データＤＢ
１９  辺要素データＤＢ
２０  シミュレーション結果ＤＢ
３０  制御部
３１  事前処理部
３１ａ  取得部
３１ｂ  定義部
３２  格子生成部
３３  関数構成部
３４  算出部
【図１】
2020021426.tif 000005
【図２】
2020021426.tif 000006
【図３】
2020021426.tif 000007
【図４】
2020021426.tif 000008
【図５】
2020021426.tif 000009
【図６】
2020021426.tif 000010
【図７】
2020021426.tif 000011
【図８】
2020021426.tif 000012
【図９】
2020021426.tif 000013
【図１０】
2020021426.tif 000014
【図１１】
2020021426.tif 000015
【図１２】
2020021426.tif 000016
【図１３】
2020021426.tif 000017
【図１４】
2020021426.tif 000018
【図１５】
2020021426.tif 000019
【図１６】
2020021426.tif 000020
【図１７】
2020021426.tif 000021
【図１８】
2020021426.tif 000022
【図１９】
2020021426.tif 000023
【図２０】
2020021426.tif 000024
【図２１】
2020021426.tif 000025
【図２２】
2020021426.tif 000026
【図２３】
2020021426.tif 000027
【図２４】
2020021426.tif 000028
【図２５】
2020021426.tif 000029
【図２６】
2020021426.tif 000030