JP2018067124A - シミュレーションプログラム、シミュレーション方法および情報処理装置 - Google Patents

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

Info

Publication number
JP2018067124A
JP2018067124A JP2016204891A JP2016204891A JP2018067124A JP 2018067124 A JP2018067124 A JP 2018067124A JP 2016204891 A JP2016204891 A JP 2016204891A JP 2016204891 A JP2016204891 A JP 2016204891A JP 2018067124 A JP2018067124 A JP 2018067124A
Authority
JP
Japan
Prior art keywords
nodes
mesh model
matrix data
node
distance
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.)
Granted
Application number
JP2016204891A
Other languages
English (en)
Other versions
JP6788187B2 (ja
Inventor
淳 藤▲崎▼
Jun Fujisaki
淳 藤▲崎▼
清水 香壱
Kouichi Shimizu
香壱 清水
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 JP2016204891A priority Critical patent/JP6788187B2/ja
Priority to US15/688,940 priority patent/US20180107773A1/en
Publication of JP2018067124A publication Critical patent/JP2018067124A/ja
Application granted granted Critical
Publication of JP6788187B2 publication Critical patent/JP6788187B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • G06F30/23Design optimisation, verification or simulation using finite element methods [FEM] or finite difference methods [FDM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/10Numerical modelling

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Complex Calculations (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

【課題】反復法による計算の収束を速くすることができる。【解決手段】情報処理装置1は、第1のメッシュモデル4の複数の節点の間の距離を示す距離データ7の距離に依存する閾値と第1の行列データ6aが示す節点の組に対応する係数値とを比較して、比較結果に応じて複数の節点に対応する複数の評価値のうちの少なくとも一部の評価値を更新する。情報処理装置1は、第1のメッシュモデル4から、複数の評価値に基づいて選択した複数の節点のうちの一部の節点を除外した第2のメッシュモデル5aについての第2の行列データ6bを生成する。そして、情報処理装置1は、第1の行列データ6aおよび第2の行列データ6bを用いて、複数の節点に対応付けられた複数の変数の解を算出する。【選択図】図1

Description

本発明は、シミュレーションプログラム、シミュレーション方法および情報処理装置に関する。
構造解析や流体解析や電磁界解析などのシミュレーションにおいては、物体や空間を示す領域を複数の要素に分割したメッシュモデルを生成し、メッシュモデルから連立方程式を生成して解くことが行われている。例えば、要素の頂点である節点に対して変数を割り当てると共に、節点と節点の組に対して物理法則から導かれる係数値を割り当てる。係数値の集合である係数行列によって定義される連立方程式を解くことで、各節点における変数の値を求めることができる。連立方程式の解法として、共役勾配(CG:Conjugate Gradient)法などの反復法が用いられることがある。反復法では、近似解を求めて誤差を評価する計算を繰り返すことで、段階的に誤差を小さくして近似解を真の解に近付ける。
反復法では、代数的マルチグリッド(AMG:Algebraic Multigrid)法を前処理として使用することがある。代数的マルチグリッド法では、オリジナルの細かいメッシュモデルから一部の節点を除外することで粗いメッシュモデルを生成する。そして、細かいメッシュモデルに対応する係数行列に加えて、粗いメッシュモデルに対応する係数行列を併用して近似解を探索する。これは、ある要素サイズをもつメッシュモデルを使って反復計算を行うと、誤差のうち当該要素サイズに応じた周波数成分が速く減衰するという性質を利用している。すなわち、粗いメッシュモデルを使用することで、細かいメッシュモデルのみでは減衰しづらい低周波成分(長波長成分)の誤差を速く減衰させることができる。
なお、例えば、構造解析や磁場解析に使用するメッシュモデルを自動生成するメッシュ生成装置が提案されている。提案のメッシュ生成装置は、物体を示す領域を複数の要素に分割し、分割した各要素のアスペクト比が所定の許容範囲に収まっているか判定する。アスペクト比が許容範囲に収まっていない長細い要素が存在する場合、メッシュ生成装置は、節点を追加することで当該長細い要素を分割する。
また、例えば、磁気デバイスの磁化分布のシミュレーションを行う磁化分布解析方法が提案されている。提案の磁化分布解析方法では、磁気デバイスのモデルを複数の要素に分割し、要素間の相対位置に基づいて係数を分類してメモリに保存する。そして、相対位置に基づいて分類された係数のうち計算に使用する係数をメモリから適宜読み出して、各要素の磁気エネルギーを合計した全磁気エネルギーの静的平衡状態を算出する。
また、例えば、有限要素法と境界要素法を用いて生成された連立方程式を解く高速演算処理方法が提案されている。提案の高速演算処理方法では、モデルを格子状の複数の要素に分割し、境界の要素が有する辺の中から同一平面上になく互いの距離が小さい2つの辺を抽出する。そして、連立方程式の係数行列の中から、抽出した2つの辺に対応する係数値を特定し、特定した係数値が係数行列の対角線近傍に位置するように並び替える。
特開平5−290015号公報 特開平10−325858号公報 国際公開第2008/026261号
ところで、シミュレーション対象の形状やメッシュモデルの作成方法によっては、扁平形状、長細い形状、他の節点から遠い節点をもつ尖った形状などの歪んだ要素を含むメッシュモデルが作成されることがある。歪んだ要素を含むメッシュモデルを用いて代数的マルチグリッド法などを用いた反復計算を行うと、歪んだ要素を含まないメッシュモデルを用いた場合よりも計算の収束が遅くなる傾向がある。その結果、反復回数が増加する、計算時間が増加する、近似解の精度が低下するなどの問題が生じることがある。
1つの側面では、本発明は、反復法による計算の収束を速くすることができるシミュレーションプログラム、シミュレーション方法および情報処理装置を提供することを目的とする。
1つの態様では、コンピュータに以下の処理を実行させるシミュレーションプログラムが提供される。複数の節点を含む第1のメッシュモデルについて、複数の節点の間の特性を示す係数値を成分として含む第1の行列データを取得する。第1のメッシュモデルが示す複数の節点それぞれの位置座標に基づいて、複数の節点の間の距離を示す距離データを生成する。第1のメッシュモデルの中の複数通りの節点の組それぞれについて、距離データが示す節点の組に対応する距離に依存する閾値を算出し、閾値と第1の行列データが示す節点の組に対応する係数値とを比較し、比較結果に応じて複数の節点に対応する複数の評価値のうちの少なくとも一部の評価値を更新する。複数の評価値に基づいて複数の節点のうちの一部の節点を選択し、第1のメッシュモデルから選択した一部の節点を除外した第2のメッシュモデルについての第2の行列データを生成する。第1の行列データおよび第2の行列データを用いて、複数の節点に対応付けられた複数の変数の解を算出する。
また、1つの態様では、コンピュータが実行するシミュレーション方法が提供される。また、1つの態様では、記憶部と処理部とを有する情報処理装置が提供される。
1つの側面では、反復法による計算の収束を速くすることができる。
第1の実施の形態の情報処理装置の例を示す図である。 第2の実施の形態のシミュレーション装置のハードウェア例を示すブロック図である。 第2の実施の形態のシミュレーション装置が有する機能を表す機能ブロックを示すブロック図である。 第2の実施の形態のシミュレーション装置で実行される行列データ生成処理を示すフローチャートである。 第2の実施の形態のシミュレーション装置で実行される階層化設定処理(n=0)を示すフローチャート(その1)である。 第2の実施の形態のシミュレーション装置で実行される階層化設定処理(n=0)を示すフローチャート(その2)である。 第2の実施の形態のシミュレーション装置で実行される階層化設定処理(n≧1)を示すフローチャートである。 第2の実施の形態のシミュレーション装置で実行される計算処理を示すフローチャートである。 第2の実施の形態のシミュレーション装置で実行される代数的マルチグリッド法による前処理を示すフローチャートである。 メッシュモデルの一例を示す図である。 メッシュモデルの粗視化の一例を示す図である。 磁性体メッシュモデルの一例を示す図である。 静磁ポテンシャルを求解する際の反復回数およびその計算時間を示す表である。
以下、図面を参照して実施の形態について説明する。
[第1の実施の形態]
第1の実施の形態について、図1を用いて説明する。
図1は、第1の実施の形態の情報処理装置の例を示す図である。
情報処理装置1は、解析対象とする物体や空間の領域を複数の要素(メッシュと言うことがある)に細分化して表したメッシュモデルに基づいて、構造解析や流体解析や電磁界解析などのシミュレーションを行う。情報処理装置1は、連立方程式を反復法によって解き、節点に対応付けられた変数(例えば、節点における静磁ポテンシャル)の解を求める。
情報処理装置1は、記憶部2および処理部3を有している。記憶部2は、RAM(Random Access Memory)などの揮発性半導体メモリでもよいし、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性ストレージでもよい。処理部3は、例えば、CPU(Central Processing Unit)やDSP(Digital Signal Processor)などのプロセッサである。ただし、処理部3は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの特定用途の電子回路を含んでもよい。プロセッサは、RAMなどのメモリに記憶されたプログラムを実行する。プログラムには、後述する処理を実行させるシミュレーションプログラムが含まれる。複数のプロセッサの集合を「マルチプロセッサ」または「プロセッサ」と言うこともある。
記憶部2は、複数の節点を含む第1のメッシュモデル4について、複数の節点の間の特性を示す係数値(aij(i,j=1,…,n))を成分として含む第1の行列データ6aを記憶する。第1のメッシュモデル4に含まれる要素は、格子状に細分化されていなくてもよい。第1のメッシュモデル4は、扁平形状、長細い形状、他の節点から遠い節点をもつ尖った形状などの歪んだ要素を含むことがある。第1のメッシュモデル4は、情報処理装置1によって生成されてもよいし、他の情報処理装置によって生成されてもよい。記憶部2は、第1のメッシュモデル4を記憶してもよい。第1の行列データ6aは、例えば、第1のメッシュモデル4に含まれる節点の位置座標、適用される物理法則、解析対象とする物体の材質を示す材料データなどから生成される。第1の行列データ6aは、情報処理装置1によって生成されてもよいし、他の情報処理装置によって作成されてもよい。
処理部3は、第1のメッシュモデル4が示す複数の節点それぞれの位置座標に基づいて、複数の節点の間の距離を示す距離データ7を生成する。距離データ7は、各節点について全ての他の節点との間の距離を網羅的に記載したものでなくてもよく、各節点について近傍にある一部の他の節点との間の距離のみを記載したものであってもよい。「距離」は、例えば、第1のメッシュモデル4上のユークリッド距離によって表現される。
処理部3は、第1のメッシュモデル4の中の複数通りの節点の組それぞれについて、距離データ7が示す節点の組に対応する距離に依存する閾値を算出する。閾値は、例えば、距離が大きいほど閾値が大きくなるように算出される。処理部3は、閾値と第1の行列データ6aが示す節点の組に対応する係数値とを比較し、比較結果に応じて複数の節点に対応する複数の評価値のうちの少なくとも一部の評価値を更新する。例えば、処理部3は、係数値が閾値より大きい場合に、節点の組のうちの一方の節点に対応する評価値を増加させる。この場合、距離が小さいほど評価値は増加しやすくなり、距離が大きいほど評価値は増加しづらくなることになる。
処理部3は、複数の評価値に基づいて複数の節点のうちの一部の節点を選択し、選択した一部の節点を第1のメッシュモデル4から除外した第2のメッシュモデル5aについての第2の行列データ6bを生成する。例えば、処理部3は、第1のメッシュモデル4に含まれる節点のうち、評価値が大きい節点を優先的に第2のメッシュモデル5aに残し、評価値が大きい節点の近傍にある節点を第2のメッシュモデル5aから除外すると判定する。そして、処理部3は、第1の行列データ6aおよび第2の行列データ6bを用いて、複数の節点に対応付けられた複数の変数の解を算出する。例えば、第2の行列データ6bは、反復法の前処理としての代数的マルチグリッド法に使用される。
このような構成を有する情報処理装置1が実行するシミュレーション方法について説明する。
情報処理装置1では、処理部3が、まず、第1のメッシュモデル4が示す複数の節点それぞれの位置座標に基づいて、複数の節点の間の距離を示す距離データ7を生成する。例えば、メッシュモデル4において、各節点の位置座標に基づき、節点1から節点2の距離d12、節点2から節点3の距離d23など、節点iから節点j(i,j(≠i)=1,…,n)まで距離dijを計算して、距離dijを成分として含む距離データ7を生成する。
次に、処理部3は、第1のメッシュモデル4の中の複数通りの節点の組それぞれについて、距離データ7が示す節点の組に対応する距離に依存する閾値εijを算出する。次に、処理部3は、閾値εijと第1の行列データ6aが示す節点の組に対応する係数値aijとを比較し、比較結果に応じて、評価データ8に含まれる複数の節点に対応する複数の評価値λjのうちの少なくとも一部の評価値を更新する。例えば、係数値aijが閾値εijよりも大きい場合には、評価値λjを増加させる(例えば、λjを1だけ増加させる)。なお、評価データ8に含まれる各評価値の初期値は、例えば、0に設定される。
次に、処理部3は、複数の評価値λjに基づいて複数の節点のうちの一部の節点を選択し、選択した一部の節点を第1のメッシュモデル4から除外した第2のメッシュモデル5aについての第2の行列データ6bを生成する。そして、処理部3は、第1の行列データ6aおよび第2の行列データ6bを用いて、複数の節点に対応付けられた複数の変数の解を算出する。
ところで、第1のメッシュモデル4を粗視化する方法によっては、第1のメッシュモデル4から、第2のメッシュモデル5bが得られることがある。メッシュモデル5bは、節点1〜13を含む第1のメッシュモデル4から節点3,5,9,12が選択されて、それら以外の節点が除外されている。メッシュモデル5bは、メッシュモデル5aと異なり、節点3が選択されているために、尖った形状の歪んだ要素が含まれている。このような第2のメッシュモデル5bに基づき、反復法を用いて連立方程式を解こうとすると、誤差の低減が遅くなり計算の収束が遅くなることがある。その結果、反復回数が増加して、計算時間が大幅に増加してしまうことがある。また、反復法によって得られる近似解の精度が低下することがある。
一方、情報処理装置1は、第1のメッシュモデル4の複数の節点の間の距離を示す距離データ7の距離に依存する閾値と第1の行列データ6aが示す節点の組に対応する係数値とを比較して、比較結果に応じて複数の節点に対応する複数の評価値のうちの少なくとも一部の評価値を更新する。情報処理装置1は、第1のメッシュモデル4から、複数の評価値に基づいて選択した複数の節点のうちの一部の節点を除外した第2のメッシュモデル5aについての第2の行列データ6bを生成する。そして、情報処理装置1は、第1の行列データ6aおよび第2の行列データ6bを用いて、複数の節点に対応付けられた複数の変数の解を算出する。これにより、情報処理装置1は、反復法による計算の収束を速くすることができる。その結果、反復回数が減少して計算時間が減少することがある。また、反復法によって得られる近似解の精度が向上することがある。
[第2の実施の形態]
次に、第2の実施の形態を説明する。
図2は、第2の実施の形態のシミュレーション装置のハードウェア例を示すブロック図である。
シミュレーション装置100は、CPU101、RAM102、HDD103、画像信号処理部104、入力信号処理部105、媒体リーダ106および通信インタフェース107を有する。シミュレーション装置100が有する上記ユニットは、バスに接続されている。なお、シミュレーション装置100は、第1の実施の形態の情報処理装置1に対応する。RAM102またはHDD103は、第1の実施の形態の記憶部2に対応する。CPU101は、第1の実施の形態の処理部3に対応する。
CPU101は、プログラムの命令を実行する演算回路を含むプロセッサである。CPU101は、HDD103に記憶されたプログラムやデータの少なくとも一部をRAM102にロードし、プログラムを実行する。なお、CPU101は複数のプロセッサコアを備えてもよく、シミュレーション装置100は複数のプロセッサを備えてもよく、以下で説明する処理を複数のプロセッサまたはプロセッサコアを用いて並列に実行してもよい。また、複数のプロセッサの集合(マルチプロセッサ)を「プロセッサ」と呼んでもよい。
RAM102は、CPU101が実行するプログラムやCPU101が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、シミュレーション装置100は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
HDD103は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。プログラムには、シミュレーションプログラムが含まれる。なお、シミュレーション装置100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
画像信号処理部104は、CPU101からの命令に従って、シミュレーション装置100に接続されたディスプレイ111に画像を出力する。ディスプレイ111としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなどの様々な種類のディスプレイを用いることができる。
入力信号処理部105は、シミュレーション装置100に接続された入力デバイス112から入力信号を取得し、CPU101に出力する。入力デバイス112としては、マウスやタッチパネルやタッチパッドやトラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、シミュレーション装置100に、複数種類の入力デバイスが接続されていてもよい。
媒体リーダ106は、記録媒体113に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体113として、例えば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)が含まれる。
媒体リーダ106は、例えば、記録媒体113から読み取ったプログラムやデータを、RAM102やHDD103などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、CPU101によって実行される。なお、記録媒体113は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体113やHDD103を、コンピュータ読み取り可能な記録媒体と言うことがある。
通信インタフェース107は、ネットワーク114に接続され、ネットワーク114を介して他の装置と通信を行うインタフェースである。通信インタフェース107は、スイッチなどの通信装置とケーブルで接続される有線通信インタフェースでもよいし、基地局と無線リンクで接続される無線通信インタフェースでもよい。
次に、シミュレーション装置により実現される機能を表す機能ブロックについて、図3を用いて説明する。
図3は、第2の実施の形態のシミュレーション装置が有する機能を表す機能ブロックを示すブロック図である。
シミュレーション装置100は、物体や空間を示す領域を複数の要素に分割したメッシュモデルから式(1)で表される連立方程式を生成して解を計算する。
Figure 2018067124
Aは係数行列(メッシュ行列データ)、xは解ベクトル、bは右辺ベクトルである。
シミュレーション装置100は、メッシュデータ保持部11、行列データ保持部12、ベクトルデータ保持部13および計算結果保持部14を有している。メッシュデータ保持部11、行列データ保持部12、ベクトルデータ保持部13および計算結果保持部14は、例えば、RAM102またはHDD103に確保した記憶領域を用いて実装される。また、シミュレーション装置100は、行列データ生成部15および計算処理部16を有している。行列データ生成部15および計算処理部16は、例えば、CPU101が実行するプログラムモジュールを用いて実装される。
メッシュデータ保持部11は、メッシュモデルに含まれる複数の節点および各節点の位置座標を保持する。メッシュデータ保持部11に記憶されるメッシュデータは、シミュレーション装置100が、CAD(Computer Aided Design)ソフトウェアなどのメッシュ作成ソフトウェアが生成する2次元または3次元のモデルに基づいて生成してもよい。例えば、メッシュ作成ソフトウェアに対して、解析対象の表面の形状がユーザによって入力される。すると、メッシュ作成ソフトウェアが、解析対象の内部領域や周辺領域などを線によって細分化した線形式のモデルを自動生成する。この線形式のモデルには、異なる線の交点(節点)の位置座標はまだ計算されていない。シミュレーション装置100は、シミュレーション装置100上で生成された線形式のモデルまたは他の装置から入力された線形式のモデルを取得し、線形式のモデルから各節点の位置座標を計算して上記のメッシュデータを生成する。ただし、上記のメッシュモデルがシミュレーション装置100の外部で生成され、シミュレーション装置100に対して入力されてもよい。
行列データ保持部12は、シミュレーション装置100が生成する各種行列データを保持する。行列データは、例えば、射影行列、連立方程式の係数行列を示すメッシュ行列データ、メッシュ距離データである。
ベクトルデータ保持部13は、シミュレーション装置100で用いられる各種ベクトルデータを保持する。ベクトルデータは、例えば、評価ベクトルデータ、解ベクトル、右辺ベクトルである。
計算結果保持部14は、シミュレーション装置100で計算された結果の情報を保持する。計算結果保持部14が保持する計算結果は、最終的な解ベクトルである。シミュレーション装置100は、計算結果保持部14が保持する計算結果を、ディスプレイ111に表示するなど様々な態様で出力デバイスに出力することができる。例えば、シミュレーション装置100は、解ベクトルを構成する各変数の値をディスプレイ111に表示してもよい。また、シミュレーション装置100は、2次元または3次元のモデル上に計算結果をマッピングして表示してもよい。静磁ポテンシャルなどの物理量を示す矢印・記号・模様などを、モデル上の各節点に対応付けて表示する(可視化する)ことが考えられる。
行列データ生成部15は、射影行列、係数行列を生成する。また、行列データ生成部15は、評価ベクトルデータを更新しながら、各階層で粗視化する節点の設定処理を行って、メッシュ行列データ、メッシュ距離データを生成する。0番目の階層で使用する係数行列(最も細かいメッシュモデルに対応する当初の係数行列)は、メッシュデータ保持部11が保持するメッシュデータ中の節点数を一辺とする正方行列である。また、0番目の階層で使用する解ベクトルおよび右辺ベクトルは、メッシュデータ保持部11が保持するメッシュデータ中の節点数を行数とする列ベクトルである。行列データ生成部15は、メッシュデータ保持部11が保持するメッシュデータと物理法則を示す所定の方程式とから、0番目の階層で使用する係数行列および右辺ベクトルを生成する。
その際、行列データ生成部15は、解析対象の材質または材質に関する物性値を示す材料データを参照してもよい。材料データは、例えば、メッシュデータ保持部11にメッシュデータと合わせて記憶される。材料データは、ユーザによって入力されてもよいし、CADソフトウェアなどのソフトウェアによって生成されてもよい。
計算処理部16は、シミュレーション対象の式(1)の連立方程式について、行列データ、ベクトルデータなどを用いて、計算処理を実行する。また、計算処理部16は、このような計算処理中において、代数的マルチグリッド法による前処理を行う。
このような機能を有するシミュレーション装置100は、まず、行列データ生成部15が、のちの計算処理で用いられる行列データ、ベクトルデータなどを生成する。この作成の際に、行列データ生成部15は、例えば、n番目の階層を構成する節点から、粗視化により有効化されてn番目の階層よりも1階層下位のn+1番目の階層に含まれる節点(C(Coarse)点)を設定する。さらに、行列データ生成部15は、n番目の階層を構成する節点から、粗視化によりn+1番目の階層では無効化される節点(F(Fine)点)を設定する。行列データ生成部15は各階層における行列データ、ベクトルデータなどを生成する。そして、計算処理部16が、行列データ生成部15により生成された行列データ、ベクトルデータを用いて、シミュレーション対象に対する計算処理を実行する。
なお、本実施の形態では、0番目の階層が最上位の階層であり、0番目から1つ下位の階層を1番目の階層とする。すなわち、n番目の階層から1つ下位の階層はn+1番目の階層となる。
次に、シミュレーション装置100において、行列データ生成部15により実行される行列データ作成処理について図4を用いて説明する。代数的マルチグリッド法を前処理として用いる反復法では、前処理を行い前処理の結果を用いて近似解を更新することが繰り返される。代数的マルチグリッド法のためのサイズの異なる複数のメッシュモデル(すなわち、複数の係数行列)は、反復計算の間に繰り返し使用される。そのため、行列データ生成部15は、計算処理部16が反復計算を開始する前に、以下に説明する方法で複数の係数行列を1回だけ生成すればよい。
図4は、第2の実施の形態のシミュレーション装置で実行される行列データ生成処理を示すフローチャートである。
シミュレーション装置100の行列データ生成部15が以下の処理を実行する。
[ステップS11] 行列データ生成部15は、現在の階層を0番目に設定する(n=0)。
[ステップS12] 行列データ生成部15は、メッシュ行列データとメッシュモデルの節点の間の距離とを用いて、0番目の階層に含まれる複数の節点をC点およびF点に分類する階層化設定処理(n=0)を実行する。ステップS12の階層化設定処理(n=0)の詳細については後述する(図5および図6)。
[ステップS13] 行列データ生成部15は、n番目の階層のC点およびF点に基づきn番目の射影行列Pnを生成する。
ここで、代数的マルチグリッド法では、ある階層においてスムージングと言われる解探索処理を行って、各節点に対応させる近似値と残差を算出し、残差を1つ下の階層に伝達する。下位階層では、上位階層から伝達された残差を右辺ベクトルに設定してスムージングを行う。これを、最下層に到達するまで繰り返す。最下層では、係数行列が十分に小さいため各節点に対応させる近似値を直接法によって解き、近似値を1つ上の階層に伝達する。上位階層では、下位階層から伝達された残差に関する近似値(摂動量)を、先に算出した当該上位階層の近似値に加えた上でスムージングを行い、当該上位階層の近似値を更新する。これを、0番目の階層に到達するまで繰り返す。
上位階層から下位階層への伝達を「制限」(Restriction)と言うことがあり、下位階層から上位階層への伝達を「延長」(Prolongation)と言うことがある。上位階層の残差ベクトルを下位階層の右辺ベクトルに変換するときに、射影行列Pnの転置行列であるTnが使用される。一方、下位階層で算出された残差に関する解を上位階層にフィードバックするときに、射影行列Pnが使用される。
このような射影行列Pnは、n番目の階層の節点数を行数とし、n番目の階層のC点の節点数(すなわち、n+1番目の階層の節点数)を列数とする行列であり、以下の式(2)により作成される。
Figure 2018067124
iはn番目の階層の何れかの節点を示す節点番号であり、jはn+1番目の階層の何れかの節点を示す節点番号である。すなわち、節点iがC点の集合に含まれる場合には、Pij=δijで表され、節点iがF点の集合に含まれる場合には、Pij=gijで表される。式(2)のδijは以下の式(3)で、gijは以下の式(4)でそれぞれ表すことができる。
Figure 2018067124
δijは、クロネッカーのデルタである。すなわち、節点iと節点jが同じである場合には、節点i,jの組に対応する射影行列Pnの成分は「1」になり、節点iと節点jが異なる場合には、節点i,jの組に対応する射影行列Pnの成分は「0」になる。
Figure 2018067124
式(4)のkは、F点の集合に含まれる。
ijは、節点iから節点jに対する依存度合に、節点iから他のF点である節点kを経由した節点jに対する依存度合を足し合わせたものを加えたものである。すなわち、粗視化により消失してしまう節点iによる依存度合の、節点jに対する重ね合わせを表している。
このような射影行列Pnを用いて上位階層から下位階層への「制限」を行うと、ある節点がC点である場合、その節点に対応付けられた値は下位階層でもその節点に残る。一方、ある節点がF点である場合、その節点に対応付けられた値は周辺のC点に分散して振り替えられることになる。また、このような射影行列Pnを用いて下位階層から上位階層への「延長」を行うと、下位階層の節点(C点)に対応付けられた値は上位階層でもその節点に残る。一方、下位階層に存在しない節点(F点)に対応付けるべき値は、周辺のC点に対応付けられた値に基づいて補完されることになる。
[ステップS14] 行列データ生成部15は、n番目の階層の係数行列Anを粗視化して、行数、列数が係数行列Anから減少した、n+1番目の階層の係数行列An+1を生成する。
係数行列An+1は、以下の式(5)により生成される。
Figure 2018067124
なお、このようにして得られた係数行列An+1は、ステップS12で設定したC点の節点数を一辺とする正方行列である。
[ステップS15] 行列データ生成部15は、係数行列An+1の次元が、所定の最小次元であるNminよりも小さいか否かを判定する。閾値としてのNminは、例えば、固定値またはユーザにより与えられたものである。
次の処理は、係数行列An+1の次元が、最小次元であるNminよりも小さい場合には、行列データ作成処理を終了し、最小次元であるNminよりも小さくない(Nmin以上である)場合には、ステップS16に進められる。
[ステップS16] 行列データ生成部15は、現在の階層を1つ下位に下げて、n+1番目の階層に設定する。
[ステップS17] 行列データ生成部15は、メッシュ行列データを用いて、n(≧1)番目の階層に含まれる複数の節点をC点およびF点に分類する階層化設定処理(n≧1)を実行する。後述するように、1番目以降の階層の階層化設定処理は、0番目の階層の階層化設定処理とは異なる。ただし、1番目以降の階層の階層化設定処理を、0番目の階層と同様の方法で行うようにしてもよい。次の処理は、再び、ステップS13に進められる。ステップS17の階層化設定処理(n≧1)の詳細については後述する(図7および図6)。
次に、行列データ生成処理(図4)のステップS12について、図5および図6を用いて説明する。
図5および図6は、第2の実施の形態のシミュレーション装置で実行される階層化設定処理(n=0)を示すフローチャートである。
シミュレーション装置100の行列データ生成部15が以下の処理を実行する。
[ステップS21] 行列データ生成部15は、0番目の階層が含む節点に対応付けられた、評価ベクトルデータλの成分である評価値λj(j=0,1,…,N)に初期値0を設定する。ただし、Nは、節点の個数である。
なお、最終的な評価ベクトルデータλは、評価値λj(j=0,1,…,N)を成分とするj列の行ベクトルであり、評価値λjは、節点jに強く依存する他の節点の数を表す。
[ステップS22] 行列データ生成部15は、0番目の階層が含む節点において、各節点の位置座標に基づき2つの節点i,j間の距離dijを計算する。行列データ生成部15は、計算した距離dijを成分として含むメッシュ距離データを生成する。
ここで、行列データ生成部15は、各節点について全ての他の節点との間の距離を算出しなくてもよく、各節点についてその周辺にある他の節点との間の距離を算出すればよい。例えば、行列データ生成部15は、各節点について当該節点と同じ要素に属する他の節点との間の距離を算出する。このとき、1つの節点が複数の要素に属することがある。一例として、節点1,2,3,4が1つの四面体要素を形成し、節点1,2,5,6が1つの四面体要素を形成し、節点7,8,9,10が1つの四面体要素を形成しているとする。節点1は2つの要素に属している。この場合、行列データ生成部15は、節点1について、節点2,3,4,5,6との間の距離を算出することになる。節点1について、節点7,8,9,10との間の距離は算出しなくてよい。
また、以下で使用するiの初期値としてi=0を設定する。
[ステップS23] 行列データ生成部15は、係数行列A0のi行目の非零成分の中から、i=jとなる対角成分を除いて、最大値の係数maxjiijを抽出してamax iとする。
[ステップS24] 行列データ生成部15は、メッシュ距離データのi行目の非零成分の中から、最小距離であるminiijを抽出してdmin iとする。
行列データ生成部15は、j=0,1,…,Nそれぞれについて以下のステップS25〜S27を実行する。ただし、jはiと異なるものとする。
[ステップS25] 行列データ生成部15は、係数行列A0のi行j列の成分に対して適用するεijを、最小距離dmin iと、節点iと節点jの間の距離dijとを用いて、以下の式(6)から算出する。
Figure 2018067124
式(6)のεは、0<ε<1で設定される所定値である。εは固定値でもよいし、ユーザによって指定されてもよい。εijは、距離dijが大きいほど、大きく算出されるものである。
[ステップS26] 行列データ生成部15は、ステップS25のεijとステップS23のamax iから閾値εij×amax iを算出する。行列データ生成部15は、当該閾値と係数行列A0のi行j列の成分aijとを比較し、以下の式(7)を満たすか判定する。すなわち、行列データ生成部15は、aijがεij×amax iより大きいか判定する。
Figure 2018067124
次の処理は、式(7)を満たす場合にはステップS27に進められ、式(7)を満たさない場合にはステップS28に進められる。
[ステップS27] 行列データ生成部15は、評価ベクトルデータλにおいて、式(7)を満たすjに対応する評価値λjに1を加算する。
[ステップS28] 行列データ生成部15は、iが節点の個数N以上か否かを判定する。
次の処理は、iがN以上である場合には、ステップS30(図6)に進められ、iがN以上ではない(iがN未満である)場合には、ステップS29に進められる。
[ステップS29] 行列データ生成部15は、現在のiに1を加算する。次の処理は、再び、ステップS23に進められる。
[ステップS30] 行列データ生成部15は、評価ベクトルデータが含む評価値λiのうち、まだC点にもF点にも分類されていない節点に対応する評価値の中から、最大値の評価値であるmaxiλiを抽出してλmaxとする。
[ステップS31] 行列データ生成部15は、最大の評価値λmaxが0未満であるか否かを判定する。
次の処理は、最大の評価値λmaxが0未満である場合には、階層化設定処理(n=0)を終了し、最大の評価値λmaxが0未満ではない(評価値λmaxが0以上である)場合には、ステップS32に進められる。なお、まだC点にもF点にも分類されていない節点が存在しない場合には、階層化設定処理(n=0)を終了する。
[ステップS32] 行列データ生成部15は、最大の評価値λmaxに対応する節点の節点番号をimaxとして、節点imaxをC点に設定する。
[ステップS33] 行列データ生成部15は、まだC点にもF点にも分類されていない節点jそれぞれについて、係数行列A0のj行imax列の成分ajimax(j=0,1,…,N)が0であるか否か(節点imaxが節点jに依存するか否か)を判定する。
次の処理は、ajimaxが0でないような節点jが存在する場合には、ステップS34に進められ、そのような節点jが存在しない場合には、ステップS36に進められる。
[ステップS34] 行列データ生成部15は、ステップS33を満たす節点jをF点に設定する。
[ステップS35] 行列データ生成部15は、評価ベクトルデータλにおいてステップS33を満たす節点jに対応する評価値λjに1を加算する。
[ステップS36] 行列データ生成部15は、まだC点にもF点にも分類されていない節点jそれぞれについて、係数行列A0のimax行j列の成分aimaxj(j=0,1,…,N)が0であるか否か(節点jが節点imax(C点)に依存するか否か)を判定する。
次の処理は、aimaxjが0でないような節点jが存在する場合には、ステップS37に進められ、そのような節点jが存在しない場合には、ステップS30に進められる。
[ステップS37] 行列データ生成部15は、評価ベクトルデータλにおいてステップS36を満たす節点jに対応する評価値λjから1を減算する。
次に、行列データ生成処理(図4)のステップS17について、図7(並びに図6)を用いて説明する。
図7は、第2の実施の形態のシミュレーション装置で実行される階層化設定処理(n≧1)を示すフローチャートである。
シミュレーション装置100の行列データ生成部15が以下の処理を実行する。
[ステップS41] 行列データ生成部15は、n番目(n≧1)の階層が含む節点に対応付けられた、評価ベクトルデータλの成分である評価値λj(j=0,1,…,N)に初期値0を設定する。また、行列データ生成部15は、以下で使用するiの初期値としてi=0を設定する。
[ステップS42] 行列データ生成部15は、係数行列Anのi行目の非零成分の中から、i=jとなる対角成分を除いて、最大値の係数maxjiijを抽出してamax iとする。
行列データ生成部15は、j=0,1,…,Nそれぞれについて以下のステップS43,S44を実行する。ただし、jはiと異なるものとする。
[ステップS43] 行列データ生成部15は、εとステップS42のamax iから閾値ε×amax iを算出する。行列データ生成部15は、当該閾値と係数行列A0のi行j列の成分aijとを比較し、以下の式(8)を満たすか判定する。すなわち、行列データ生成部15は、aijがε×amax iより大きいか判定する。
Figure 2018067124
式(8)のεは、式(6)と同様に、0<ε<1で設定される所定値である。
次の処理は、式(8)を満たす場合には、ステップS44に進められ、式(8)を満たさない場合には、ステップS45に進められる。
[ステップS44] 行列データ生成部15は、評価ベクトルデータλにおいて、式(8)を満たすjに対応する評価値λjに1を加算する。
[ステップS45] 行列データ生成部15は、iが節点の個数N以上か否かを判定する。
次の処理は、iがN以上である場合には、ステップS30(図6)に進められ、iがN以上ではない(iがN未満である)場合には、ステップS46に進められる。
なお、ステップS30以降は、図6に示したフローチャートに沿った処理が実行され、各節点がC点またはF点に分類される。
[ステップS46] 行列データ生成部15は、現在のiに1を加算する。次の処理は、再び、ステップS42に進められる。
なお、第2の実施の形態では、行列データ生成処理(図4)のステップS17において、階層化設定処理(n≧1)(図7および図6)を実行する場合とした。これに対し、前述のように、当該ステップS17では、n≧1の階層において、階層化設定処理(n=0)(図5および図6)と同様の処理を行うことも可能である。
シミュレーション装置100では、上記のようにメッシュモデルの粗視化を行い、粗視化された階層ごとに行列データを生成し、計算処理部16が計算処理を実行する。
次に、計算処理部16が実行する計算処理について図8を用いて説明する。
図8は、第2の実施の形態のシミュレーション装置で実行される計算処理を示すフローチャートである。
シミュレーション装置100の計算処理部16が以下の処理を実行する。
[ステップS51] 計算処理部16は、メッシュデータ保持部11が保持するメッシュデータと物理法則を示す所定の方程式とから、式(1)の右辺ベクトルbおよび係数行列A(=A0)を計算する。このとき、シミュレーション対象の物体の材質を示す材料データが参照されることもある。
[ステップS52] 計算処理部16は、解ベクトルxの初期値x0として、0を設定する。
[ステップS53] 計算処理部16は、以下の式(9)で表される、近似解をx0とした場合の残差rを計算する。また、計算処理部16は、以下で使用する変数γの初期値を0に設定し、以下で使用するベクトルpの初期値を0に設定する。
Figure 2018067124
[ステップS54] 計算処理部16は、代数的マルチグリッド法による前処理を実行して解ベクトルxに対応するベクトルzを算出する。ステップS54の代数的マルチグリッド法による前処理の詳細については後述する(図9)。
[ステップS55] 計算処理部16は、変数α,β,γ,γoldおよびベクトルpを式(10)〜(14)を用いて計算する。すなわち、計算処理部16は、変数γを、前処理で得られたベクトルzと直近の残差rとを用いて更新し、更新前の変数γの値(γold)と更新後の変数γの値とから変数βを更新する。そして、計算処理部16は、前処理で得られたベクトルzと更新した変数βとを用いてベクトルpを更新し、ベクトルpと係数行列Aと変数γとを用いて変数αを更新する。
Figure 2018067124
Figure 2018067124
Figure 2018067124
ただし、γold=0の場合には、β=0とする。
Figure 2018067124
Figure 2018067124
ただし、p・Apは、pとApとの内積を表す。
[ステップS56] 計算処理部16は、式(15)に変数αおよびベクトルpを適用して解ベクトルx(近似解)を更新する。
Figure 2018067124
また、計算処理部16は、式(16)に変数α、係数行列Aおよびベクトルpを適用して残差rを更新する。
Figure 2018067124
[ステップS57] 計算処理部16は、残差rのノルム(絶対値)を計算する。
[ステップS58] 計算処理部16は、所定の値である閾値δCGに対して、残差rのノルムが、δCG>|r|/|b|であるか否か(すなわち、残差rが十分収束しているか否か)を判定する。
次の処理は、δCG>|r|/|b|である(残差rが十分収束している)場合には、計算処理を終了し、δCG>|r|/|b|ではない(残差rが十分収束していない)場合には、再び、ステップS54に進められる。
次に、計算処理(図8)のステップS54について、図9を用いて説明する。
図9は、第2の実施の形態のシミュレーション装置で実行される代数的マルチグリッド法による前処理を示すフローチャートである。
シミュレーション装置100の計算処理部16が以下の処理を実行する。
[ステップS61] 計算処理部16は、現在の階層を0番目に設定する(n=0)。
[ステップS62] 計算処理部16は、連立方程式Ann=rnについて、n番目の階層の係数行列Anを利用して前進Gauss−Seidel法による以下の式(17)を少なくとも1回計算する。式(17)を2回以上繰り返してもよい。なお、r0(0番目の階層のr)はS53で算出した残差rである。zの初期値は0である。
Figure 2018067124
[ステップS63] 計算処理部16は、n番目の階層から1つ下位のn+1番目の階層の右辺ベクトルrn+1を、以下の式(18)を用いて計算する。
Figure 2018067124
[ステップS64] 計算処理部16は、着目する階層を1つ下の階層に下げる。すなわち、計算処理部16は、nに1を加算する。
[ステップS65] 計算処理部16は、現在の階層が、所定のNmax番目の階層以上であるか否かを判定する。Nmaxは固定値でもよいし、ユーザにより指定されてもよい。次の処理は、nがNmax以上である場合には、ステップS66に進められる。また、nがNmax以上ではない(nがNmax未満である)場合には、再び、ステップS62に進められる。
[ステップS66] 計算処理部16は、連立方程式Ann=rnの解に相当するベクトルznを直接法で計算する。
[ステップS67] 計算処理部16は、着目する階層を1つ上の階層に上げる。すなわち、計算処理部16は、nから1を減算する。
[ステップS68] 計算処理部16は、n番目の階層の解に相当するベクトルznを、以下の式(19)を用いて更新する。
Figure 2018067124
なお、式(19)のn番目の階層のベクトルznは、ベクトルznに対して、1つ下位のn+1番目の階層からの寄与(n+1番目の階層のベクトルzn+1を、n番目の階層の射影行列Pnを用いて変換したもの)を加えることで得られる。
[ステップS69] 計算処理部16は、連立方程式Ann=rnについて、n番目の階層の係数行列Anを利用して後退Gauss−Seidel法による以下の式(20)を少なくとも1回計算する。式(20)を2回以上繰り返してもよい。
Figure 2018067124
[ステップS70] 計算処理部16は、nが0以下であるか否かを判定する。次の処理は、nが0以下である場合は、代数的マルチグリッド法による前処理を終了し、nが0以下ではない(nが0より大きい)場合は、再び、ステップS67に進められる。
以上により、シミュレーション装置100では、計算処理部16が計算処理を行って、連立方程式の解を計算する。
ここで、行列データ生成部15がフローチャート(図5および図6)に沿って実行する、0番目の階層に含まれる節点をC点およびF点に設定する階層化設定処理(n=0)の具体例について図10を用いて説明する。
図10は、メッシュモデルの一例を示す図である。
メッシュモデル20は、図10に示されるように、4つの節点(節点1〜4)を含み、節点1〜4は0番目の階層に含まれているものとする。
このようなメッシュモデル20は、特に、節点3が他の節点から離れて歪んだ要素を含んでいる。
まず、行列データ生成部15は、0番目の階層が含む節点1〜4にそれぞれ対応付けられた、評価ベクトルデータλの成分である評価値λ1〜λ4に初期値0を設定する(ステップS21)。このような評価ベクトルデータλは、以下の式(21)のように表すことができる。
Figure 2018067124
行列データ生成部15は、0番目の階層が含む節点において、各節点の位置座標に基づき、節点iと節点jとの間の距離dij(i,j=1,2,3,4)を計算する。さらに、行列データ生成部15は、計算した距離dijに基づき、メッシュ距離データdを生成する(ステップS22)。このようなメッシュ距離データdは、例えば、式(22)のように表すことができる。
Figure 2018067124
ところで、図10の場合における係数行列Aは、例えば、式(23)のように表されるものとする。
Figure 2018067124
行列データ生成部15は、このような係数行列Aの1行目の非零要素中から、対角成分を除く最大値の0.5を抽出して、amax 1とする(ステップS23)。また、行列データ生成部15は、式(22)のメッシュ距離データdの1行目から、対角成分を除く最小距離の1を抽出してdmin 1とする(ステップS24)。
行列データ生成部15は、メッシュ距離データdのj列目(j=1,2,3,4)に対する閾値ε1jを、最小距離dmin 1(=1)とメッシュ距離データdとを、式(6)に適用して算出する。ただし、ここではεを0.3とした(ステップS25)。
行列データ生成部15は、amax 1に閾値ε1jをかけると、以下の式(24)で表される結果が得られる。
Figure 2018067124
行列データ生成部15は、式(23)で表される係数行列Aの1行目の対角成分以外の非零要素a1j1(j=2,3,4)が、式(7)をそれぞれ満たすか否かを判定する(ステップS26)。
この場合、メッシュ行列データAの1行目の(1 0.5 0.2 0.1)の各列(1列除く)と、amax 1*ε1jの各列とをそれぞれ比較すると、メッシュ行列データAのa12=0.5のみがamax 1*ε1jよりも大きい。
行列データ生成部15は、評価ベクトルデータλのj=2に対応する評価値λ2に1を加算することで、以下の式(25)が得られる(ステップS27)。
Figure 2018067124
行列データ生成部15は、i=1は、節点の個数N=4以上ではないことを判別し(ステップS28)、メッシュ行列データAの2〜4行目(節点2〜4)についてもそれぞれステップS23〜29の処理を繰り返し実行する。
行列データ生成部15は、このような処理を繰り返して、以下の式(26)で表される評価ベクトルデータλが得られる。
Figure 2018067124
行列データ生成部15は、式(26)の評価ベクトルデータλが含む評価値から最大の評価値λ1(=1)を抽出して、これをλmaxとする(ステップS30)。
なお、式(26)の評価ベクトルデータλでは、評価値λ1,λ2が1で最大であるものの、ここでは、評価値λ1を抽出している。評価値λ1に代わって、評価値λ2を抽出しても構わない。
行列データ生成部15は、λmax(評価値λ1(=1))が0未満ではないことを判定し(ステップS31)、最大の評価値λmaxに対応する節点1をC点に設定する(ステップS32)。
行列データ生成部15は、係数行列Aの非零要素のaj1(j=2,3,4)が0ではないことを判定し(ステップS33)、節点2,3,4をF点に設定する(ステップS33)。これにより、節点1,2,3,4がC点とF点に分類され、階層化設定処理(n=0)を終了する。
したがって、シミュレーション装置100は、図10のメッシュモデル20において節点1をC点に、節点2〜4をF点に設定する。
このようにメッシュモデル20に対して節点の間の距離を踏まえて階層化設定処理(図5および図6)を行うと、節点1がC点に、節点2〜4がF点に設定される。下位階層には、節点1がメッシュモデル20から粗視化されて残り、メッシュモデル20の歪んだ要素を含まない。この下位階層を用いて計算処理(図8)を行うと、反復回数の増加が抑制され、計算の収束が速くなる。
一方、メッシュモデル20に対して、節点の間の距離を用いずに、係数行列Aのみを用いて、歪んだ要素を除去しないような階層化設定処理(n≧1)(図7および図6)によりC点、F点の設定を行う場合について説明する。
この場合、行列データ生成部15が階層化設定処理(n≧1)を実行すると、式(27)で表される評価ベクトルデータλが得られる。
Figure 2018067124
式(27)の評価ベクトルデータλでは、評価値λ3が最大であるために、節点3がC点として設定される。その下位階層には、メッシュモデル20の歪みの要素である節点3がメッシュモデル20から粗視化されて残る。この下位階層を用いて計算処理(図8)を行うと、反復回数並びに計算時間が増加してしまう。
上記シミュレーション装置100では、メッシュ行列データと共に、節点の間の距離を用いて、メッシュモデルを粗視化するとメッシュモデルの歪みの要素を除くことができる。このような粗視化されたメッシュモデルを用いて代数的マルチグリッド法による反復計算を行うと、反復回数が減少して、計算の収束が速くなる。
また、別のメッシュモデルにおける粗視化について、図11を用いて説明する。
図11は、メッシュモデルの粗視化の一例を示す図である。
なお、図11のメッシュモデル50には、各節点の位置座標に基づき計算された、節点1から節点2の距離d12、節点2から節点3の距離d23など、節点iから節点j(i,j(≠i)=1,…,n)まで距離dijが付されている。
図11に示すメッシュモデル50に対して、上記で説明した階層化設定処理(n=0)(図5および図6)を実行して、メッシュモデル50に含まれる複数の節点からC点およびF点を設定する。
このようにしてメッシュモデル50から粗視化されたメッシュモデル60aが得られる。メッシュモデル60aは、メッシュモデル50の節点から、節点5,9,12がC点として設定されて、それら以外の節点はF点として設定されている。このようなメッシュモデル50aに含まれる節点5,9,12には、細長い形状、尖った形状などの歪んだ要素が含まれていない。したがって、メッシュモデル60aを用いて代数的マルチグリッド法による反復計算を行うと、反復回数が減少して、計算速度が速くなる。
一方、メッシュモデル50を粗視化する方法によっては、メッシュモデル50から、メッシュモデル60bが得られる。メッシュモデル60bは、メッシュモデル50から節点3,5,9,12が選択されて、それら以外の節点が除外されている。メッシュモデル60bは、メッシュモデル60aと異なり、節点3が選択されているために、尖った形状の歪んだ要素が含まれている。このようなメッシュモデル60bに基づき、反復法を用いて、複数の変数の解を算出しようとすると、反復回数が増加して、計算時間が大幅に増加してしまう。
ここで、上記を踏まえて、シミュレーション装置100が実行するシミュレーションにより静磁界計算を行う場合について説明する。
静磁界とは、磁性体自らの時間的に定常な磁化により生成される磁界であり、その値は、静磁ポテンシャルと呼ばれる磁界のエネルギーの空間微分として与えられる。静磁ポテンシャルは、マクスウェル方程式から導出される式(28)で求められる。
Figure 2018067124
なお、φは、静磁ポテンシャル、Mは、磁性体の平均磁化である。
数値計算上は静磁ポテンシャルを求める際、微分方程式を離散化してメッシュモデルの節点を自由度とする連立方程式の解として計算を行う。この際、式(28)の式(A)との対応関係から、式(28)の左辺から係数行列Aが計算され、式(28)の右辺から右辺ベクトルbが計算される。
この場合の磁性体メッシュモデルについて図12を用いて説明する。
図12は、磁性体メッシュモデルの一例を示す図である。
なお、図12では、磁性体メッシュモデル30に対してx−z平面であって、x>0およびz>0の領域について示されている。
磁性体メッシュモデル30では、立方体状であって、例えば、ネオジム磁石といった磁性体31が空気領域32の中心部(原点)に配置されており、磁性体31から空気領域32に静磁場が生じている。
磁性体メッシュモデル30では、空気領域32の磁性体31に接する面のメッシュ幅(例えば、幅w0)を細かく設定し、さらに、外部境界側の面のメッシュ幅(例えば、幅w1)を非常に粗く設定している。このため、空気領域32では、メッシュ内の最小の辺の長さに対する最大の辺の長さの比が10を超える歪んだ形状になっている。
次に、磁性体メッシュモデル30に関して式(28)の連立方程式を解いて計算結果が1回得られるまでに要する反復回数および計算時間について、図13を用いて説明する。
図13は、静磁ポテンシャルを求解する際の反復回数およびその計算時間を示す表である。
磁性体メッシュモデル30の要素数を80,000〜5,200,000の間に設定し、式(28)の連立方程式を解くまでに要する反復回数および計測時間の計測を行った。
表40は、当該計測結果について、式(28)の連立方程式を解くための磁性体メッシュモデル30の粗視化の際に、メッシュの歪み要素を除去していない場合(歪み要素非除去)を示している。また、表40は、当該計測結果について、式(28)の連立方程式を解くための磁性体メッシュモデル30の粗視化の際に、メッシュ行列データと共に節点間の距離を利用して、メッシュの歪み要素を除去した場合(歪み要素除去)を示している。
この表40によれば、各行列の次元(要素数)において、反復回数は、歪み要素除去の場合の方が、歪み要素非除去の場合に比べて、約35%から約50%減少している。これに伴い、計算時間も同様に、約33%から約50%減少している。特に、行列の次元が大きいほど、反復回数および計算時間がより改善されている。
上記の処理機能は、コンピュータによって実現することができる。その場合、コンピュータが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体には、磁気記憶装置、光ディスク、光磁気記憶媒体、半導体メモリなどがある。磁気記憶装置には、HDD、フレキシブルディスク(FD)、磁気テープ(MT)などがある。光ディスクには、DVD、DVD−RAM、CD−ROM(Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。光磁気記憶媒体には、MOなどがある。半導体メモリには、USB(Universal Serial Bus)メモリなどのフラッシュメモリがある。
上記プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータに格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
上記プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラム若しくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
また、プログラムで記述された処理の一部または全てを、電子回路に置き換えることが可能である。例えば、上記の処理機能の少なくとも一部を、DSP、ASIC、PLD(Programmable Logic Device)などの電子回路で実現してもよい。
なお、上述の実施の形態は、実施の形態の要旨を逸脱しない範囲内において種々の変更を加えることができる。
さらに、上述の実施の形態は、多数の変形、変更が当業者にとって可能であり、説明した正確な構成及び応用例に限定されるものではない。
1 情報処理装置
2 記憶部
3 処理部
4 第1のメッシュモデル
5a,5b 第2のメッシュモデル
6a 第1の行列データ
6b 第2の行列データ
7 距離データ
8 評価データ

Claims (5)

  1. コンピュータに、
    複数の節点を含む第1のメッシュモデルについて、前記複数の節点の間の特性を示す係数値を成分として含む第1の行列データを取得し、
    前記第1のメッシュモデルが示す前記複数の節点それぞれの位置座標に基づいて、前記複数の節点の間の距離を示す距離データを生成し、
    前記第1のメッシュモデルの中の複数通りの節点の組それぞれについて、前記距離データが示す前記節点の組に対応する距離に依存する閾値を算出し、前記閾値と前記第1の行列データが示す前記節点の組に対応する係数値とを比較し、比較結果に応じて前記複数の節点に対応する複数の評価値のうちの少なくとも一部の評価値を更新し、
    前記複数の評価値に基づいて前記複数の節点のうちの一部の節点を選択し、前記第1のメッシュモデルから前記選択した一部の節点を除外した第2のメッシュモデルについての第2の行列データを生成し、
    前記第1の行列データおよび前記第2の行列データを用いて、前記複数の節点に対応付けられた複数の変数の解を算出する、
    処理を実行させるシミュレーションプログラム。
  2. 前記節点の組に対応する距離が大きいほど前記閾値が大きく算出され、
    前記少なくとも一部の評価値の更新では、前記節点の組に対応する係数値が前記閾値より大きい場合に、前記節点の組の一方の節点に対応する評価値を増加させる、
    請求項1記載のシミュレーションプログラム。
  3. 前記節点の組は第1の節点と第2の節点との組であり、
    前記閾値の算出では、前記第2の節点を含む2以上の節点それぞれと前記第1の節点との間の距離の中から最小距離を特定し、前記第1の節点と前記第2の節点との間の距離および前記最小距離に基づいて前記閾値を算出する、
    請求項1記載のシミュレーションプログラム。
  4. コンピュータが実行するシミュレーション方法であって、
    複数の節点を含む第1のメッシュモデルについて、前記複数の節点の間の特性を示す係数値を成分として含む第1の行列データを取得し、
    前記第1のメッシュモデルが示す前記複数の節点それぞれの位置座標に基づいて、前記複数の節点の間の距離を示す距離データを生成し、
    前記第1のメッシュモデルの中の複数通りの節点の組それぞれについて、前記距離データが示す前記節点の組に対応する距離に依存する閾値を算出し、前記閾値と前記第1の行列データが示す前記節点の組に対応する係数値とを比較し、比較結果に応じて前記複数の節点に対応する複数の評価値のうちの少なくとも一部の評価値を更新し、
    前記複数の評価値に基づいて前記複数の節点のうちの一部の節点を選択し、前記第1のメッシュモデルから前記選択した一部の節点を除外した第2のメッシュモデルについての第2の行列データを生成し、
    前記第1の行列データおよび前記第2の行列データを用いて、前記複数の節点に対応付けられた複数の変数の解を算出する、
    シミュレーション方法。
  5. 複数の節点を含む第1のメッシュモデルについて、前記複数の節点の間の特性を示す係数値を成分として含む第1の行列データを記憶する記憶部と、
    前記第1のメッシュモデルが示す前記複数の節点それぞれの位置座標に基づいて、前記複数の節点の間の距離を示す距離データを生成し、前記第1のメッシュモデルの中の複数通りの節点の組それぞれについて、前記距離データが示す前記節点の組に対応する距離に依存する閾値を算出し、前記閾値と前記第1の行列データが示す前記節点の組に対応する係数値とを比較し、比較結果に応じて前記複数の節点に対応する複数の評価値のうちの少なくとも一部の評価値を更新し、前記複数の評価値に基づいて前記複数の節点のうちの一部の節点を選択し、前記第1のメッシュモデルから前記選択した一部の節点を除外した第2のメッシュモデルについての第2の行列データを生成し、前記第1の行列データおよび前記第2の行列データを用いて、前記複数の節点に対応付けられた複数の変数の解を算出する処理部と、
    を有する情報処理装置。
JP2016204891A 2016-10-19 2016-10-19 シミュレーションプログラム、シミュレーション方法および情報処理装置 Active JP6788187B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016204891A JP6788187B2 (ja) 2016-10-19 2016-10-19 シミュレーションプログラム、シミュレーション方法および情報処理装置
US15/688,940 US20180107773A1 (en) 2016-10-19 2017-08-29 Simulation method and information processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016204891A JP6788187B2 (ja) 2016-10-19 2016-10-19 シミュレーションプログラム、シミュレーション方法および情報処理装置

Publications (2)

Publication Number Publication Date
JP2018067124A true JP2018067124A (ja) 2018-04-26
JP6788187B2 JP6788187B2 (ja) 2020-11-25

Family

ID=61902747

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016204891A Active JP6788187B2 (ja) 2016-10-19 2016-10-19 シミュレーションプログラム、シミュレーション方法および情報処理装置

Country Status (2)

Country Link
US (1) US20180107773A1 (ja)
JP (1) JP6788187B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019200615A (ja) * 2018-05-16 2019-11-21 富士通株式会社 磁気シミュレーションプログラム、磁気シミュレーション方法、および磁気シミュレーション装置

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018093325A (ja) * 2016-12-01 2018-06-14 ソニーセミコンダクタソリューションズ株式会社 情報処理装置、情報処理方法、及びプログラム
JP7122209B2 (ja) * 2018-10-01 2022-08-19 住友重機械工業株式会社 シミュレーション装置、シミュレーション方法、及びプログラム
JP7279685B2 (ja) * 2020-04-23 2023-05-23 トヨタ自動車株式会社 情報処理システム
CN114241621B (zh) * 2021-12-20 2023-07-18 合肥工业大学 一种求解大变形薄基片应力的方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5684723A (en) * 1987-11-16 1997-11-04 Fujitsu Limited Device simulation method and device simulator
EP0884690A3 (de) * 1997-06-11 2002-07-24 Infineon Technologies AG Rechnergestütztes Simulationsverfahren zur Bestimmung eines elektromagnetischen Feldes eines Körpers
FR2948475A1 (fr) * 2009-07-24 2011-01-28 Bionext Procede de caracterisation d'objets tridimensionnels

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019200615A (ja) * 2018-05-16 2019-11-21 富士通株式会社 磁気シミュレーションプログラム、磁気シミュレーション方法、および磁気シミュレーション装置

Also Published As

Publication number Publication date
JP6788187B2 (ja) 2020-11-25
US20180107773A1 (en) 2018-04-19

Similar Documents

Publication Publication Date Title
JP6788187B2 (ja) シミュレーションプログラム、シミュレーション方法および情報処理装置
JP7164295B2 (ja) 3dプリンティングのための現実の物体の向き付け
Seo et al. Shape optimization and its extension to topological design based on isogeometric analysis
TWI384379B (zh) 用於評估在實體系統中所產生之波傳播的電腦實施方法和裝置及電腦可讀儲存媒體
CN109584357B (zh) 基于多轮廓线的三维建模方法、装置、系统及存储介质
US20080275677A1 (en) System, methods, and computer readable media, for product design using coupled computer aided engineering models
US20150127301A1 (en) Updating A CAD Model To Reflect Global Or Local Shape Changes
TWI421703B (zh) 模擬技術(一)
Paschalidis et al. Head-on collisions of binary white dwarf-neutron stars: Simulations in full general relativity
JP2020115331A (ja) 大規模環境用のマルチインスタンス型シミュレーション
Perumal New approaches for Delaunay triangulation and optimisation
US20160196373A1 (en) Simulation method and simulation apparatus
US20130226530A1 (en) Mesh generation system
US11669662B2 (en) Machine learning method and computing system
US20200349306A1 (en) General Scattered Field Simulator
US20240078362A1 (en) Systems and methods for machine learning based fast static thermal solver
JP6424651B2 (ja) 磁界シミュレータプログラム、磁界シミュレータ装置および磁界シミュレーション方法
Cuillière et al. Automatic mesh generation and transformation for topology optimization methods
EP2287757A1 (en) Multilevel-Multigrid simulation techniques
JP2022072307A (ja) 訓練データ生成プログラム、訓練データ生成方法および情報処理装置
US10762260B1 (en) Methods, systems, and computer program product for implementing an electronic design with optimization maps
Liu et al. Automatic sizing functions for unstructured mesh generation revisited
JP2008171385A (ja) 電磁界解析プログラム
EP3320460A1 (en) Systems and methods for providing approximate electronic-structure models from calculated band structure data
Potter et al. Ordered line integral methods for solving the eikonal equation

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190709

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20190718

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20190718

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200908

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: 20200929

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201012

R150 Certificate of patent or registration of utility model

Ref document number: 6788187

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150