以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態の磁界シミュレータ装置を示す図である。
第1の実施の形態の磁界シミュレータ装置10は、辺要素有限要素法を用いて磁場解析を行う。例えば、磁界シミュレータ装置10は、物体におけるベクトルポテンシャルの分布をシミュレートする。辺要素有限要素法を用いることで、解析的に求めることが難しい磁場に関する物理量について、その近似値を精度よく求めることができる。
磁界シミュレータ装置10は、解析する物体の形状を示すモデル13を使用する。モデル13は、好ましくは、三次元モデルである。磁界シミュレータ装置10は、モデル13を「要素」と呼ばれる複数の小領域に分割する。モデル13が三次元モデルである場合、例えば、各要素は三角形の面をもつ四面体または四角形の面をもつ六面体である。辺要素有限要素法では、辺に対して、解くべき未知数を示す変数が定義される。磁界シミュレータ装置10は、要素毎に元の方程式を一次関数などの比較的単純な「補間関数」で近似する。そして、磁界シミュレータ装置10は、未知数を解くことで、ベクトルポテンシャルなどの磁場に関する物理量を算出する。未知数を解くため、例えば、磁界シミュレータ装置10は、疎な係数行列を生成して大規模連立一次方程式を解く。
第1の実施の形態では、解析する物体は、位置関係が変化する複数の部位を含むものとする。モデル13が示す物体の一例として、固定子と固定子に対して回転する回転子とを含むモータが挙げられる。磁界シミュレータ装置10は、時間の経過に応じた物理量の変化をシミュレートする。このとき、磁界シミュレータ装置10は、ある時点における物理量の解析に用いたモデル13を、要素を再分割せずに、別の時点における物理量の解析に使用できることが好ましい。しかし、複数の部位の間の位置関係が変化すると、その境界では、元は幾つかの辺を共有していた隣接する要素が辺を共有しなくなり、不連続となるおそれがある。一方、辺要素有限要素法では、原則として、各辺に対して独立の変数が定義される。このため、隣接する要素が辺を共有しないと、その要素の間の磁束の流れがモデル13上で適切に表現されず、解析結果の精度が低下するおそれがある。
そこで、磁界シミュレータ装置10は、位置関係の変化によって不連続となった隣接する要素の間で、未知数が関連付けられるようにする。モデル13は、面13a(第1の面)を有する第1の要素と、面13b(第2の面)を有する第2の要素とを含む。面13a,13bは、位置関係が変化した複数の部位の間の境界に位置する。面13aと面13bは、辺を共有せず不連続である。面13a,13bはそれぞれ、三角形や四角形などの任意の二次元形状を有していてよい。面13bは、面13aと重なる重畳領域13cと、面13aなどの何れの要素の面とも重ならない非重畳領域13dとを含む。面13bは、更に別の要素の面と重なる他の重畳領域を含んでもよい。すなわち、面13bは、その一部分のみ1または2以上の他の要素の面と重なっている。
以下、面13a,13bの間で未知数を関連付ける方法について説明する。
磁界シミュレータ装置10は、記憶部11および演算部12を有する。記憶部11は、RAM(Random Access Memory)などの揮発性の記憶装置でもよいし、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性の記憶装置でもよい。演算部12は、CPU(Central Processing Unit)やDSP(Digital Signal Processor)などのプロセッサでもよく、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの特定用途の電子回路を含んでもよい。なお、プロセッサは、RAMなどのメモリに記憶された磁界シミュレータプログラムを実行する。複数のプロセッサの集合(マルチプロセッサ)を「プロセッサ」と言うこともある。
記憶部11は、モデル13についての各種の情報を記憶する。特に、記憶部11は、位置情報14aおよび磁界情報14b(第1の磁界情報)を記憶する。位置情報14aは、少なくとも面13aの位置についての情報(例えば、面13aが有する頂点の位置、面13aが有する辺の位置、または、面13aの重心の位置などを示す情報)を含む。位置情報14aは、面13bの位置についての情報を含んでもよい。磁界情報14bは、面13aに対する磁場に関する情報を含む。磁界情報14bは、例えば、面13aが有する辺それぞれに対して定義された変数を含む。例えば、各辺のベクトルポテンシャルが当該辺に沿った方向ベクトルとその大きさを示す係数との積として与えられる場合、当該係数が解くべき未知数であり当該係数に対応する変数が定義されることになる。
演算部12は、記憶部11に記憶された位置情報14aおよび磁界情報14bに基づいて、重畳領域13cに対する磁界情報14c(第2の磁界情報)を算出する。磁界情報14cは、例えば、重畳領域13cを囲む線分であって非重畳領域13dとの間の境界線を除く線分、すなわち、面13bが有する辺の一部分について、当該線分における物理量を示す未知数の式を含む。この未知数の式は、例えば、面13aの辺に対して定義された変数を用いて表された式であり、当該変数を線形結合した線形式である。この場合、重畳領域13cを囲む線分(重畳領域13cと非重畳領域13dとの間の境界線を除く)に対応する未知数は、面13aの辺に対応する未知数に従属することになる。
また、磁界情報14cは、例えば、重畳領域13cと非重畳領域13dとの間の境界線について、当該境界線における物理量を示す未知数の式を含む。この未知数の式は、例えば、重畳領域13cを囲む線分の場合と同様に、面13aの辺に対して定義された変数を用いて表された式であり、当該変数を線形結合した線形式である。
そして、演算部12は、磁界情報14cと、重畳領域13cと非重畳領域13dの位置関係に基づいて、非重畳領域13dに対する磁界情報14d(第3の磁界情報)を算出する。磁界情報14dは、例えば、非重畳領域13dを囲む線分であって重畳領域13cとの間の境界線を除く線分、すなわち、面13bが有する辺の一部分について、当該線分における物理量を示す未知数の式を含む。この未知数の式は、例えば、面13aの辺に対して定義された変数を用いて表された式であり、当該変数を線形結合した線形式である。この場合、非重畳領域13dを囲む線分(重畳領域13cと非重畳領域13dとの間の境界線を除く)に対応する未知数は、面13aの辺に対応する未知数に従属することになる。
例えば、演算部12は、重畳領域13cと非重畳領域13dとの間の境界線から、非重畳領域13dを囲む線分(境界線を除く)への「寄与」を算出する。すなわち、演算部12は、磁界情報14cが示す境界線における物理量を、非重畳領域13dを囲む線分(境界線を除く)に対して分配することで、非重畳領域13dを囲む線分の物理量を推定する。「寄与」は、境界線を示す方向ベクトルと各線分を示す方向ベクトルとの内積に応じて決定してもよい。例えば、演算部12は、境界線における物理量を、内積に比例するように複数の線分に分配する。この場合、境界線と直交する線分に対する「寄与」はゼロになり、境界線と対向する辺に対して大きい「寄与」が与えられることになる。
上記の例によれば、重畳領域13cを囲む線分と非重畳領域13dを囲む線分それぞれについて、その未知数が、面13aの辺に対して定義された変数を用いて表現される。この場合、演算部12は、磁界情報14c,14dが示す未知数の式を合成することで、面13bの全ての辺の未知数を、面13aの辺の変数を用いて表現することができる。すなわち、面13bの一部が何れの要素の面とも重なっていなくても、面13bが有する全ての辺の未知数が、面13aが有する辺の未知数と関連付けられる。
第1の実施の形態の磁界シミュレータ装置10によれば、位置情報14aと面13aに対する磁界情報14bとに基づいて、重畳領域13cに対する磁界情報14cが算出される。そして、磁界情報14cと重畳領域13c・非重畳領域13dの間の位置関係とに基づいて、非重畳領域13dに対する磁界情報14dが算出される。これにより、モデル13上で複数の部位の位置関係が変化して境界面上に非重畳領域13dが生じても、磁界情報14cに加えて磁界情報14dも算出できる。面13bの磁界情報14c,14dは、面13aの磁界情報14bから独立して定義されるのではなく、磁界情報14bと関連付けられている。よって、面13b全体が面13aと関連付けられ、面13aを有する要素と面13bを有する要素の間の磁束の流れをモデル13上で表現することができる。その結果、辺要素有限要素法を用いた磁界シミュレーションの精度が向上する。
[第2の実施の形態]
次に、第2の実施の形態を説明する。第2の実施の形態の磁界シミュレータ装置100は、辺要素有限要素法を用いて磁場解析を行い、物体におけるベクトルポテンシャルの分布をシミュレートする。磁界シミュレータ装置100は、ユーザが操作するクライアントコンピュータでもよいし、サーバコンピュータでもよい。磁界シミュレータ装置100は、第1の実施の形態の磁界シミュレータ装置10の一例である。
図2は、磁界シミュレータ装置のハードウェア例を示すブロック図である。
磁界シミュレータ装置100は、CPU101、RAM102、HDD103、画像信号処理部104、入力信号処理部105、媒体リーダ106および通信インタフェース107を有する。上記のユニットは、それぞれバス108に接続されている。
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)、プラズマディスプレイ(PDP:Plasma Display Panel)、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなどを用いることができる。
入力信号処理部105は、磁界シミュレータ装置100に接続された入力デバイス112から入力信号を取得し、CPU101に出力する。入力デバイス112としては、マウスやタッチパネルやタッチパッドやトラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、磁界シミュレータ装置100に、複数の種類の入力デバイスが接続されていてもよい。
媒体リーダ106は、記録媒体113に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体113として、例えば、フレキシブルディスク(FD:Flexible Disk)やHDDなどの磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。媒体リーダ106は、例えば、記録媒体113から読み取ったプログラムやデータをRAM102またはHDD103に格納する。
通信インタフェース107は、ネットワーク114に接続され、ネットワーク114を介して他の装置と通信を行う。通信インタフェース107は、スイッチなどの通信装置とケーブルで接続される有線通信インタフェースでもよいし、基地局またはアクセスポイントと無線リンクで接続される無線通信インタフェースでもよい。
ただし、磁界シミュレータ装置100は、媒体リーダ106を備えなくてもよい。また、磁界シミュレータ装置100は、サーバコンピュータである場合、画像信号処理部104や入力信号処理部105を備えなくてもよい。また、ディスプレイ111や入力デバイス112が、磁界シミュレータ装置100の筐体と一体に形成されていてもよい。なお、CPU101は、第1の実施の形態の演算部12の一例である。RAM102またはHDD103は、第1の実施の形態の記憶部11の一例である。
次に、辺要素有限要素法を用いた磁界シミュレーションについて説明する。
図3は、辺要素有限要素法における未知数の例を示す図である。
有限要素法では、節点と辺と要素を含むモデルが用いられる。第2の実施の形態では、磁界シミュレータ装置100は三次元モデルを使用するものとする。有限要素法において、「要素」はモデル空間を細分化した小領域である。「節点」は要素の頂点に相当する点である。「辺」は要素を囲む線分であって2つの節点を結んだものである。なお、要素の集合または個々の要素を「メッシュ」と言うことがある。
三次元モデルの空間を細分化した要素には、(A)四面体要素と(B)六面体要素とが含まれ得る。四面体要素は、三角形の面を4つ有する三次元要素である。六面体要素は、四角形の面を6つ有する三次元要素である。なお、四面体要素は正四面体でなくてよく、六面体要素は正六面体でなくてよい。磁界シミュレータ装置100は、物体の形状に応じて、適切な形状の四面体要素、六面体要素またはそれらの組み合わせを使用できる。
一例として、四面体要素である要素21は、辺21a,21b,21c,21d,21e,21fを有する。辺21a,21b,21cが1つの三角形の面を形成する。辺21a,21d,21eが1つの三角形の面を形成する。辺21b,21e,21fが1つの三角形の面を形成する。辺21c,21d,21fが1つの三角形の面を形成する。
また、一例として、六面体要素である要素22は、辺22a,22b,22c,22d,22e,22f,22g,22h,22i,22j,22k,22lを有する。辺22a,22b,22e,22hが1つの四角形の面を形成する。辺22c,22d,22f,22gが1つの四角形の面を形成する。辺22a,22d,22i,22jが1つの四角形の面を形成する。辺22b,22c,22k,22lが1つの四角形の面を形成する。辺22e,22f,22i,22lが1つの四角形の面を形成する。辺22g,22h,22j,22kが1つの四角形の面を形成する。
辺要素有限要素法では、各辺に対して、辺に沿った所定の長さ(長さ=1)のベクトルである「基底関数」(基底ベクトルと言うこともある)が定義される。各辺の基底関数の方向として、2通りの何れか一方が予め選択される。
例えば、要素21について、辺21aに対して基底関数N1(以下、記載の都合でベクトル記号「→」を省略することがある)が定義される。同様に、辺21b,21c,21d,21e,21fに対して、基底関数N2,N3,N4,N5,N6が定義される。また、例えば、要素22について、辺22a,22b,22c,22d,22e,22f,22g,22h,22i,22j,22k,22lに対して、基底関数N1,N2,N3,N4,N5,N6,N7,N8,N9,N10,N11,N12が定義される。
また、辺要素有限要素法では、各辺に対して、スカラの未知数を示す変数が定義される。辺要素有限要素法を実行することで、この変数の値が算出される。ある辺の未知数は、その辺のベクトルポテンシャルの大きさを示し、その辺の基底関数にかける係数を意味する。すなわち、辺毎に、未知数×基底関数のベクトルポテンシャルが与えられる。ある要素のベクトルポテンシャルAは、式(1)に示すように、その要素を囲む辺(四面体要素の場合は6個の辺、六面体要素の場合は12個の辺)のベクトルポテンシャルを合成することで与えられる。なお、式(1)において、nはある要素を囲む辺の辺番号を示し、Anはn番目の辺の変数を示し、Nnはn番目の辺の基底関数を示す。
例えば、要素21について、辺21a,21b,21c,21d,21e,21fに対して、変数A1,A2,A3,A4,A5,A6が定義される。辺21a,21b,21c,21d,21e,21fのベクトルポテンシャルは、A1N1,A2N2,A3N3,A4N4,A5N5,A6N6と表され、要素21のベクトルポテンシャルはこれらを合成したベクトルとなる。また、例えば、要素22について、辺22a,22b,22c,22d,22e,22f,22g,22h,22i,22j,22k,22lに対して、変数A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12が定義される。辺22a,22b,22c,22d,22e,22f,22g,22h,22i,22j,22k,22lのベクトルポテンシャルは、A1N1,A2N2,A3N3,A4N4,A5N5,A6N6,A7N7,A8N8,A9N9,A10N10,A11N11,A12N12と表され、要素22のベクトルポテンシャルはこれらを合成したベクトルとなる。
このようなモデルに対して、磁界シミュレータ装置100は、式(2)に示す磁場の方程式を解くことで、各辺の変数の値を求める。式(2)において、σは誘電率を示し、μは透磁率を示し、μ0は真空の透磁率を示し、Jは電流密度ベクトルを示し、Mは磁石の磁化ベクトルを示す。磁界シミュレータ装置100は、ベクトルポテンシャルAを用いて、式(3)に示すように磁束密度Bを求めることができる。
ここで、磁界シミュレータ装置100は、位置関係が変化する複数の部位を含む物体について、位置関係の変化に応じたベクトルポテンシャルの分布の変化をシミュレートすることができる。このとき、磁界シミュレータ装置100は、要素の集合を再生成せずに、ある時点におけるベクトルポテンシャルの分布と別の時点におけるベクトルポテンシャルの分布とを算出する。しかし、この場合、複数の部位の境界では、元は幾つかの辺を共有していた隣接する要素が、位置がずれて辺を共有しなくなり不連続になることがある。
図4は、モータのモデル例を示す図である。
モータ30は、磁場解析を行う対象の物体の一例である。モータ30は、固定子31および回転子32を有する。回転子32は、円柱形の部位であり、円柱軸を中心に回転する。一方、固定子31は、回転子32を囲む部位であり回転しない。
ある時点におけるモータ30の形状を複数の要素に細分化すると、固定子31と回転子32の境界では、隣接する要素が境界面の辺を共有するように要素が形成される。すなわち、境界面で接する固定子31の要素と回転子32の要素とが、連続性を有している。図4の例では、境界面を挟んで、固定子31の要素31aと回転子32の要素32aとが隣接している。要素31aと要素32aは、境界面の辺を共有しており連続している。また、境界面を挟んで、固定子31の要素31bと回転子32の要素32bとが隣接している。要素31bと要素32bは、境界面の辺を共有しており連続している。
図5は、回転したモータのモデル例を示す図である。
上記のように複数の要素に分割したモデル上で、固定子31に対して回転子32を回転させると、その境界では隣接する要素がずれる。その結果、隣接する要素が境界面の辺を共有しなくなり不連続となる。図5の例では、境界面を挟んで、固定子31の要素31aが回転子32の要素32a,32bと接している。しかし、要素31aは、境界面の辺を要素32a,32bと共有しておらず、要素32a,32bと不連続である。また、境界面を挟んで、固定子31の要素31bは回転子32の要素32bと接している。しかし、要素31bは、境界面の辺を要素32bと共有しておらず、要素32bと不連続である。
境界面を挟んで要素が不連続になった場合に、一方の側の要素の辺と他方の側の要素の辺とに対して独立に変数を定義してしまうと、それら要素の間に存在する磁束の流れがモデル上で正確に表現されなくなる。その結果、磁場解析の精度が低下するおそれがある。そこで、磁界シミュレータ装置100は、境界面の一方の側の未知数を他方の側の変数の線形式として表現し、他方の側の未知数に従属させる。これにより、一方の側の未知数と他方の側の未知数を関連付けることができ、境界面を挟んだ要素の間の磁束の流れを正確に表現できる。また、不連続な要素を含むモデルのまま、磁場解析を行うことができる。なお、境界上に重なる異なる要素の面のうち、辺に対して独立の変数を定義する面を「マスタ面」、独立の変数を定義しない面を「スレーブ面」と言うことができる。
図6は、マスタ側要素とスレーブ側要素の例を示す図である。
前述の要素21に対して、辺23a,23b,23c,23d,23e,23fを有する四面体の要素23が隣接しているとする。要素23では、辺23a,23b,23cが1つの三角形の面を形成し、辺23a,23d,23eが1つの三角形の面を形成し、辺23b,23e,23fが1つの三角形の面を形成し、辺23c,23d,23fが1つの三角形の面を形成する。要素23の辺23a,23b,23cが形成する面は、要素21の辺21a,21b,21cが形成する面と部分的に接している。この2つの面は辺を共有しておらず、要素21と要素23は不連続である。
要素23の辺23d,23e,23fに対しては、基底関数N7,N8,N9と変数A7,A8,A9が定義されている。すなわち、辺23d,23e,23fのベクトルポテンシャルは、A7N7,A8N8,A9N9と表される。一方、要素21と接する辺23a,23b,23cに対しては、基底関数Ns 1,Ns 2,Ns 3と変数As 1,As 2,As 3が定義されている。すなわち、辺23a,23b,23cのベクトルポテンシャルは、As 1Ns 1,As 2Ns 2,As 3Ns 3と表される。ただし、変数As 1,As 2,As 3は独立した変数ではなく、変数A1,A2,A3などの他の要素の変数に従属する。よって、要素21の辺21a,21b,21cが形成する面を「マスタ面」と言うことができ、要素23の辺23a,23b,23cが形成する面を「スレーブ面」と言うことができる。
要素21のベクトルポテンシャルは、辺21a,21b,21c,21d,21e,21fのベクトルポテンシャルを合成したものであり、式(4)のように表される。要素23のベクトルポテンシャルは、辺23a,23b,23c,23d,23e,23fのベクトルポテンシャルを合成したものであり、式(5)のように表される。式(5)の変数As 1,As 2,As 3は、変数A1,A2,A3などの他の要素の変数の線形式に置き換えられる。よって、要素21と要素23の間の電磁的な連続性が表現される。
図7は、マスタ面の形状とスレーブ面の形状の組み合わせ例を示す図である。
磁界シミュレータ装置100が三角形の面を有する四面体要素と四角形の面を有する六面体要素とを使用する場合、マスタ面とスレーブ面の重なり方は、次の4つのパターンに分類することができる。(A)第1のパターンでは、三角形のマスタ面24aと三角形のスレーブ面25aとが部分的に重なる。(B)第2のパターンでは、四角形のマスタ面24bと四角形のスレーブ面25bとが部分的に重なる。(C)第3のパターンでは、三角形のマスタ面24cと四角形のスレーブ面25cとが部分的に重なる。(D)第4のパターンでは、四角形のマスタ面24dと三角形のスレーブ面25dとが部分的に重なる。
以下では主に、マスタ面とスレーブ面が両方とも三角形である第1のパターンの計算例について説明する。第2〜第4のパターンについても、同様の方針で計算が可能である。
図8は、マスタ面とスレーブ面の第1の重なり例を示す図である。
ここでは、マスタ面41a,41b,41c,41d,41e,41fとスレーブ面42aとが重なっている場合を考える。マスタ面41a,41b,41c,41d,41e,41fおよびスレーブ面42aは、それぞれ異なる要素の1つの面である。
マスタ面41aとマスタ面41bが、1つの辺で接している。マスタ面41bとマスタ面41cが、1つの辺で接している。マスタ面41bとマスタ面41cが、1つの辺で接している。マスタ面41cとマスタ面41dが、1つの辺で接している。マスタ面41dとマスタ面41eが、1つの辺で接している。マスタ面41eとマスタ面41fが、1つの辺で接している。マスタ面41fとマスタ面41aが、1つの辺で接している。
スレーブ面42aは、マスタ面41a,41b,41c,41d,41e,41fそれぞれと部分的に重なっている。すなわち、スレーブ面42aは、マスタ面41aと重なる領域と、マスタ面41bと重なる領域と、マスタ面41cと重なる領域と、マスタ面41dと重なる領域と、マスタ面41eと重なる領域と、マスタ面41fと重なる領域とを含む。スレーブ面42aには、他の要素の面と重ならない領域は存在しない。
マスタ面41aは、基底関数Nm 1,Nm 2,Nm 12が示す辺に囲まれる。マスタ面41bは、基底関数Nm 2,Nm 3,Nm 4が示す辺に囲まれる。マスタ面41cは、基底関数Nm 4,Nm 5,Nm 6が示す辺に囲まれる。マスタ面41dは、基底関数Nm 6,Nm 7,Nm 8が示す辺に囲まれる。マスタ面41eは、基底関数Nm 8,Nm 9,Nm 10が示す辺に囲まれる。マスタ面41fは、基底関数Nm 10,Nm 11,Nm 12が示す辺に囲まれる。基底関数Nm 1,Nm 2,Nm 3,Nm 4,Nm 5,Nm 6,Nm 7,Nm 8,Nm 9,Nm 10,Nm 11,Nm 12が示す辺に対して、解くべき未知数を示す独立の変数Am 1,Am 2,Am 3,Am 4,Am 5,Am 6,Am 7,Am 8,Am 9,Am 10,Am 11,Am 12が定義されている。
スレーブ面42aは、基底関数Ns 1,Ns 2,Ns 3が示す辺に囲まれる。基底関数Ns 1,Ns 2,Ns 3が示す辺に対して、変数As 1,As 2,As 3が定義されている。ただし、変数As 1,As 2,As 3は独立の変数ではなく、変数Am 1,Am 2,Am 3,Am 4,Am 5,Am 6,Am 7,Am 8,Am 9,Am 10,Am 11,Am 12の線形式として表される。
マスタ面の変数Am 1,Am 2,Am 3,Am 4,Am 5,Am 6,Am 7,Am 8,Am 9,Am 10,Am 11,Am 12とスレーブ面の変数As 1,As 2,As 3との関係は、磁束の保存則を用いて算出することができる。式(6)に示すように、磁束Φは磁束密度Bを面積分することで算出される。磁束密度Bは、ベクトルポテンシャルAを線積分することで算出される。式(6)において、dSは積分する面を表し、nはその面に対する法線ベクトルを表す。
スレーブ面42aの辺の未知数は、その辺に沿ってマスタ面上でベクトルポテンシャルを線積分することで算出することが可能である。そこで、線積分を表現するため、スレーブ面42aの辺上に以下のような線ベクトルを定義する。
スレーブ面42aについて、基底関数Ns 1が与えられた辺全体を示すベクトルを線ベクトルls 1、基底関数Ns 2が与えられた辺全体を示すベクトルを線ベクトルls 2、基底関数Ns 3が与えられた辺全体を示すベクトルを線ベクトルls 3と置く。線ベクトルls 1は、マスタ面41fと重なる線分を示す線ベクトルlm6 1と、マスタ面41aと重なる線分を示す線ベクトルlm1 1と、マスタ面41bと重なる線分を示す線ベクトルlm2 1とに分割される。線ベクトルls 2は、マスタ面41bと重なる線分を示す線ベクトルlm2 2と、マスタ面41cと重なる線分を示す線ベクトルlm3 2と、マスタ面41dと重なる線分を示す線ベクトルlm4 2とに分割される。線ベクトルls 3は、マスタ面41dと重なる線分を示す線ベクトルlm4 3と、マスタ面41eと重なる線分を示す線ベクトルlm5 3と、マスタ面41fと重なる線分を示す線ベクトルlm6 3とに分割される。
上記のように線ベクトルを定義すると、マスタ面のベクトルポテンシャルを線ベクトルls 1に沿って線積分したものが、変数As 1の未知数に相当する。線ベクトルls 1の線積分は、マスタ面41f上での線ベクトルlm6 1の線積分と、マスタ面41a上での線ベクトルlm1 1の線積分と、マスタ面41b上での線ベクトルlm2 1の線積分とに分割できる。マスタ面41fのベクトルポテンシャルは、基底関数Nm 10,Nm 11,Nm 12が示す辺のベクトルポテンシャルを合成したものである。マスタ面41aのベクトルポテンシャルは、基底関数Nm 1,Nm 2,Nm 12が示す辺のベクトルポテンシャルを合成したものである。マスタ面41bのベクトルポテンシャルは、基底関数Nm 2,Nm 3,Nm 4が示す辺のベクトルポテンシャルを合成したものである。よって、変数As 1の未知数は、式(7)のように算出できる。すなわち、スレーブ面42aの変数As 1は、変数Am 1,Am 2,Am 3,Am 4,Am 10,Am 11,Am 12の線形式に置換できる。なお、基底関数と上記の線ベクトルとの内積は、各節点の座標が既知であるため、具体的な数値として算出できる。
同様に、マスタ面のベクトルポテンシャルを線ベクトルls 2に沿って線積分したものが、変数As 2の未知数に相当する。線ベクトルls 2の線積分は、マスタ面41b上での線ベクトルlm2 2の線積分と、マスタ面41c上での線ベクトルlm3 2の線積分と、マスタ面41d上での線ベクトルlm4 2の線積分とに分割できる。よって、変数As 2の未知数は、式(8)のように算出できる。すなわち、スレーブ面42aの変数As 2は、変数Am 2,Am 3,Am 4,Am 5,Am 6,Am 7,Am 8の線形式に置換できる。
また、マスタ面のベクトルポテンシャルを線ベクトルls 3に沿って線積分したものが、変数As 3の未知数に相当する。線ベクトルls 3の線積分は、マスタ面41d上での線ベクトルlm4 3の線積分と、マスタ面41e上での線ベクトルlm5 3の線積分と、マスタ面41f上での線ベクトルlm6 3の線積分とに分割できる。よって、変数As 3の未知数は、式(9)のように算出できる。すなわち、スレーブ面42aの変数As 3は、変数Am 6,Am 7,Am 8,Am 9,Am 10,Am 11,Am 12の線形式に置換できる。
上記の式(7),(8),(9)を一般化すると、スレーブ面の変数は式(10)のように定義される。式(10)において、nはスレーブ面が有する辺の辺番号を表し、iはスレーブ面と重なるマスタ面の面番号を表し、jはi番目のマスタ面が有する辺の辺番号を表す。よって、As nはスレーブ面のn番目の辺の変数を表し、Am jはi番目のマスタ面が有するj番目の辺の変数を表し、Nm jはi番目のマスタ面が有するj番目の辺の基底関数を表す。また、lmi nはスレーブ面のn番目の辺のうちi番目のマスタ面と重なる線分についての線ベクトルを表す。これにより、マスタ面の未知数が算出されれば、スレーブ面の未知数を算出することができ、両者を関連付けることができる。
このように、スレーブ面の全体が1または2以上のマスタ面と重なっている場合には、式(7),(8),(9),(10)に従って、スレーブ面が有する辺の未知数を算出することができる。一方、スレーブ面の中に何れのマスタ面とも重ならない領域が存在する場合、そのままではスレーブ面が有する辺の一部分についてベクトルポテンシャルを線積分することができず、式(7),(8),(9),(10)をそのまま使用できない。そこで、次に、何れのマスタ面とも重ならない領域が存在する場合について説明する。
図9は、マスタ面とスレーブ面の第2の重なり例を示す図である。
ここでは、マスタ面43a,43b,43cとスレーブ面44aとが部分的に重なっている場合を考える。マスタ面43a,43b,43cおよびスレーブ面44aは、それぞれ異なる要素の1つの面である。マスタ面43aとマスタ面43bが、1つの辺で接している。マスタ面43bとマスタ面43cが、1つの辺で接している。スレーブ面44aは、マスタ面43a,43b,43cそれぞれと部分的に重なっている。すなわち、スレーブ面44aは、マスタ面43aと重なる領域と、マスタ面43bと重なる領域と、マスタ面43cと重なる領域とを含む。更に、スレーブ面44aは、マスタ面43a,43b,43cを含む他の何れの面とも重ならない領域を含む。
マスタ面43aは、基底関数Nm 1,Nm 2,Nm 3が示す辺に囲まれる。マスタ面43bは、基底関数Nm 2,Nm 4,Nm 5が示す辺に囲まれる。マスタ面43cは、基底関数Nm 5,Nm 6,Nm 7が示す辺に囲まれる。基底関数Nm 1,Nm 2,Nm 3,Nm 4,Nm 5,Nm 6,Nm 7が示す辺に対して、解くべき未知数を示す独立の変数Am 1,Am 2,Am 3,Am 4,Am 5,Am 6,Am 7が定義されている。スレーブ面44aは、基底関数Ns 1,Ns 2,Ns 3が示す辺に囲まれる。基底関数Ns 1,Ns 2,Ns 3が示す辺に対して、変数As 1,As 2,As 3が定義されている。ただし、変数As 1,As 2,As 3は独立の変数ではなく、変数Am 1,Am 2,Am 3,Am 4,Am 5,Am 6,Am 7の線形式として表される。
ここで、図8の場合と同様に、スレーブ面44aの辺上に以下のような線ベクトルを定義する。基底関数Ns 1が与えられた辺全体を示すベクトルを線ベクトルls 1、基底関数Ns 2が与えられた辺全体を示すベクトルを線ベクトルls 2、基底関数Ns 3が与えられた辺全体を示すベクトルを線ベクトルls 3と置く。
また、マスタ面43a,43b,43cとスレーブ面44aとが重なる領域について、当該領域を囲む線分上に以下のような線ベクトルを定義する。線ベクトルls 1が示す辺のうち、マスタ面43aと重なる線分を示すベクトルを線ベクトルlm1 1、マスタ面43bと重なる線分を示すベクトルを線ベクトルlm2 1と置く。線ベクトルls 2が示す辺のうち、マスタ面43bと重なる線分を示すベクトルを線ベクトルlm2 2、マスタ面43cと重なる線分を示すベクトルを線ベクトルlm3 2と置く。
また、マスタ面43a,43b,43cとスレーブ面44aとが重なる領域(重畳領域)と重ならない領域(非重畳領域)との境界を示す線分を、境界線44bと置く。境界線44bのうち、マスタ面43aの辺と重なる線分を示すベクトルを線ベクトルls1 3、マスタ面43cの辺と重なる線分を示すベクトルを線ベクトルls1 7と置く。
上記のように線ベクトルを定義すると、スレーブ面44aの辺のうちマスタ面43a,43b,43cと重なる線分については、マスタ面のベクトルポテンシャルをその線分の線ベクトルに沿って線積分することで値を算出できる。一方、スレーブ面44aの辺のうちマスタ面43a,43b,43cと重ならない線分については、マスタ面43a,43b,43cから直接的な影響を受けないため、その線分の線ベクトルに沿って線積分を行うことはできない。ただし、境界線44bから非重畳領域への影響、すなわち、境界線44bから非重畳領域の線分へのベクトルポテンシャルの「寄与」が存在する。
よって、式(11)に示すように、マスタ面43a上での線ベクトルlm1 1の線積分と、マスタ面43b上での線ベクトルlm2 1の線積分と、境界線44bから線ベクトルls 1の非重畳部分への寄与との合計が、変数As 1の未知数に相当する。マスタ面43aのベクトルポテンシャルは、基底関数Nm 1,Nm 2,Nm 3が示す辺のベクトルポテンシャルを合成したものである。マスタ面43bのベクトルポテンシャルは、基底関数Nm 2,Nm 4,Nm 5が示す辺のベクトルポテンシャルを合成したものである。式(11)において、変数As* 1は境界線44bから線ベクトルls 1の非重畳部分への寄与を表す。
また、式(12)に示すように、マスタ面43b上での線ベクトルlm2 2の線積分と、マスタ面43c上での線ベクトルlm3 2の線積分と、境界線44bから線ベクトルls 2の非重畳部分への寄与との合計が、変数As 2の未知数に相当する。マスタ面43bのベクトルポテンシャルは、基底関数Nm 2,Nm 4,Nm 5が示す辺のベクトルポテンシャルを合成したものである。マスタ面43cのベクトルポテンシャルは、基底関数Nm 5,Nm 6,Nm 7が示す辺のベクトルポテンシャルを合成したものである。式(12)において、変数As* 2は境界線44bから線ベクトルls 2の非重畳部分への寄与を表す。
一方、スレーブ面44aの基底関数Ns 3が示す辺のベクトルポテンシャルは、マスタ面43a,43b,43cから直接的な影響を受けないため、境界線44bからの寄与のみ含む。よって、式(13)に示すように、境界線44bから線ベクトルls 3に相当する辺全体への寄与が、変数As 3の未知数に相当する。式(13)において、変数As* 3は境界線44bから線ベクトルls 3に相当する辺全体への寄与を表す。
スレーブ面44aの変数As 1,As 2,As 3の未知数を算出するにあたり、境界線44b上でのベクトルポテンシャルの線積分を求めることになる。境界線44bの線積分は、線ベクトルls1 3の線積分と線ベクトルls1 7の線積分との合計である。線ベクトルls1 3の線積分は、マスタ面43aの変数Am 3の未知数を、基底関数Nm 3が示す辺に相当する線ベクトルlm 3と当該辺の一部分の線分に相当する線ベクトルls1 3との長さの比に応じて分割した値である。線ベクトルls1 7の線積分は、マスタ面43cの変数Am 7の未知数を、基底関数Nm 7が示す辺に相当する線ベクトルlm 7と当該辺の一部分の線分に相当する線ベクトルls1 3との長さの比に応じて分割した値である。
また、境界線44bの線積分は、基底関数Ns 1が示す辺の非重畳部分に対する分配量(第1の分配量)と、基底関数Ns 2が示す辺の非重畳部分に対する分配量(第2の分配量)と、基底関数Ns 3が示す辺に対する分配量(第3の分配量)の合計でもある。第1の分配量は、基底関数Ns 1を境界線44bに沿って線積分したものと変数As* 1の値との積である。第2の分配量は、基底関数Ns 2を境界線44bに沿って線積分したものと変数As* 2の値との積である。第3の分配量は、基底関数Ns 3を境界線44bに沿って線積分したものと変数As* 3の値との積である。境界線44bの線積分は、線ベクトルls1 3の線積分と線ベクトルls1 7の線積分とに分割できる。よって、境界線44bの線積分は、式(14)のように求めることができる。式(14)において、線ベクトルlmeは線ベクトルls1 3と線ベクトルls1 7を合成したものである。
式(14)を一般化すると、境界線44bの線積分は式(15)のように定義される。式(15)において、kは境界線44bと重なるマスタ面の辺の辺番号を表し、iはスレーブ面の面番号を表し、jはi番目のスレーブ面が有する辺の辺番号を表す。よって、Am kはマスタ面のk番目の辺のベクトルポテンシャルを表し、lsi kはスレーブ面とk番目の辺とが重なった線分の線ベクトルを表す。また、As* jはスレーブ面のj番目の辺に対する境界線44bからの寄与を表し、Ns jはj番目の辺の基底関数を表す。
ここで、式(14),(15)自体からは、境界線44bの線積分をどの様に非重畳領域の複数の線分に対して分配するか一意に決まらないため、変数As* 1,As* 2,As* 3を変数Am 3,Am 7の線形結合(一次結合)した線形式(一次式)として表現できない。そこで、境界線44bから各線分への寄与は、基底関数Ns jを境界線44bに沿って線積分した値に比例するように算出することとする。この仮定を置くと、変数As* 1,As* 2,As* 3の値は、式(16)のように定義できる。式(16)において、tはパラメータであり、基底関数Ns jの線積分に対する倍率を表す。
式(16)を式(14)に代入すると、式(17)が得られる。よって、パラメータtは、式(18)に従って算出することができる。式(15)と同様にして、式(18)を一般化すると、パラメータtは式(19)のように定義される。式(15)と同様に、式(19)のkは境界線44bと重なるマスタ面の辺の辺番号を表し、iはスレーブ面の面番号を表し、jはi番目のスレーブ面が有する辺の辺番号を表す。
以上により、スレーブ面44aの変数As 1は、式(20)に示すように、マスタ面の変数Am 1,Am 2,Am 3,Am 4,Am 5,Am 7の線形式として表現することができる。スレーブ面44aの変数As 2は、式(21)に示すように、マスタ面の変数Am 2,Am 3,Am 4,Am 5,Am 6,Am 7の線形式として表現することができる。スレーブ面44aの変数As 3は、式(22)に示すように、マスタ面の変数Am 3,Am 7の線形式として表現することができる。なお、式(20),(21),(22)のパラメータtは、式(18)に示すように、マスタ面の変数Am 3,Am 7の線形式として表される。式(20),(21),(22)を一般化すると、スレーブ面の未知数は式(23)のように定義される。
次に、マスタ面とスレーブ面が共に四角形であり、マスタ面が境界線と直交する辺を有する例を用いて、上記の「寄与」の算出方法の効果について説明する。
図10は、マスタ面とスレーブ面の第3の重なり例を示す図である。
ここでは、マスタ面45a,45bとスレーブ面46a,46b,46cとが部分的に重なっている場合を考える。マスタ面45a,45bおよびスレーブ面46a,46b,46cは、それぞれ異なる要素の1つの面である。マスタ面45a,45bおよびスレーブ面46a,46b,46cは、四角形である。マスタ面45aとマスタ面45bが、1つの辺で接している。スレーブ面46aとスレーブ面46bが、1つの辺で接している。スレーブ面46bとスレーブ面46cが、1つの辺で接している。
スレーブ面46aは、マスタ面45aと部分的に重なっている。すなわち、スレーブ面46aは、マスタ面45aと重なる重畳領域と、何れのマスタ面とも重ならない非重畳領域を含む。スレーブ面46bは、マスタ面45a,45bと部分的に重なっている。すなわち、スレーブ面46bは、マスタ面45aと重なる重畳領域と、マスタ面45bと重なる重畳領域と、何れのマスタ面とも重ならない非重畳領域を含む。スレーブ面46cは、マスタ面45bと部分的に重なっている。すなわち、スレーブ面46cは、マスタ面45bと重なる重畳領域と、何れのマスタ面とも重ならない非重畳領域を含む。
マスタ面45aは、基底関数Nm 1,Nm 2,Nm 3,Nm 4が示す辺に囲まれる。マスタ面45bは、基底関数Nm 3,Nm 5,Nm 6,Nm 7が示す辺に囲まれる。基底関数Nm 1,Nm 2,Nm 3,Nm 4,Nm 5,Nm 6,Nm 7が示す辺に対して、解くべき未知数を示す独立の変数Am 1,Am 2,Am 3,Am 4,Am 5,Am 6,Am 7が定義されている。スレーブ面46bは、基底関数Ns 1,Ns 2,Ns 3,Ns 4が示す辺に囲まれる。基底関数Ns 1,Ns 2,Ns 3,Ns 4が示す辺に対して、変数As 1,As 2,As 3,As 4が定義されている。スレーブ面の変数As 1,As 2,As 3,As 4は独立の変数ではなく、マスタ面の変数Am 1,Am 2,Am 3,Am 4,Am 5,Am 6,Am 7の線形式として表される。なお、ここではスレーブ面46bに着目し、スレーブ面46a,46cについての説明は省略する。
基底関数Nm 4が与えられた辺全体を示すベクトルを線ベクトルlm 4、基底関数Nm 7が与えられた辺全体を示すベクトルを線ベクトルlm 7と置く。また、スレーブ面46bに含まれる重畳領域と非重畳領域との境界を示す線分を、境界線46dと置く。境界線46dは、スレーブ面46bの2つの辺(基底関数Ns 1,Ns 3の辺)と直交している。境界線46dのうち、マスタ面45aの辺と重なる線分を示すベクトルを線ベクトルls2 4、マスタ面45bの辺と重なる線分を示すベクトルを線ベクトルls2 7と置く。線ベクトルls2 4と線ベクトルls2 7を合成したものを線ベクトルlmeと置く。
この場合、境界線46dの線積分は、上記で説明した方法に従って式(24)のように算出することができる。すなわち、境界線46dの線積分は、線ベクトルls2 4の線積分と線ベクトルls2 7の線積分との合計である。線ベクトルls2 4の線積分は、マスタ面45aの変数Am 4の未知数を、線ベクトルlm 4と線ベクトルls2 4との長さの比に応じて分割した値である。線ベクトルls2 7の線積分は、マスタ面45bの変数Am 7の未知数を、線ベクトルlm 7と線ベクトルls2 7との長さの比に応じて分割した値である。
また、境界線46dの線積分は、基底関数Ns 1が示す辺の非重畳部分に対する分配量(第1の分配量)と、基底関数Ns 3が示す辺の非重畳部分に対する分配量(第2の分配量)と、基底関数Ns 4が示す辺に対する分配量(第3の分配量)の合計でもある。第1の分配量は、基底関数Ns 1を境界線46dに沿って線積分したものと変数As* 1の値との積である。第2の分配量は、基底関数Ns 3を境界線46dに沿って線積分したものと変数As* 3の値との積である。第3の分配量は、基底関数Ns 4を境界線46dに沿って線積分したものと変数As* 4の値との積である。
ここで、基底関数Ns 1,Ns 3が示す辺と境界線46dとは直交することから、基底関数Ns 1と線ベクトルlmeの内積および基底関数Ns 3と線ベクトルlmeの内積はそれぞれゼロである。よって、式(25)に示すように、基底関数Ns 1を境界線46dに沿って線積分した値と、基底関数Ns 3を境界線46dに沿って線積分した値はそれぞれゼロである。前述のように、変数As* nの値は線積分に比例するように決定されるため、As* 1=As* 3=0になる。その結果、境界線46dからの寄与は、境界線46dと平行である基底関数Ns 4が示す辺に対してのみ割り当てられることになる。
基底関数Ns 1が示す辺はスレーブ面46a,46bが共有するため、この辺に対して境界線46dからの寄与が多く割り当てられると、スレーブ面46aの磁束に影響を与える。また、基底関数Ns 3が示す辺はスレーブ面46b,46cが共有するため、この辺に対して境界線46dからの寄与が多く割り当てられると、スレーブ面46cの磁束に影響を与える。これに対し、前述の方法によれば、境界線46dから基底関数Ns 1,Ns 3が示す辺への寄与は小さく算出されやすく、境界線46dから基底関数Ns 4が示す辺への寄与は大きく算出されやすくなる。これにより、スレーブ面46bからスレーブ面46a,46cに与える磁束の影響を抑制することができる。
次に、磁界シミュレータ装置100のシミュレーション機能を説明する。
図11は、磁界シミュレータ装置の機能例を示すブロック図である。
磁界シミュレータ装置100は、幾何データ記憶部121、重みデータ記憶部122、方程式記憶部123、解析結果記憶部124、要素算出部131、変数結合部132、方程式生成部133および解算出部134を有する。幾何データ記憶部121、重みデータ記憶部122、方程式記憶部123および解析結果記憶部124は、例えば、RAM102またはHDD103に確保した記憶領域として実装される。要素算出部131、変数結合部132、方程式生成部133および解算出部134は、例えば、CPU101が実行するプログラムのモジュールとして実装される。
幾何データ記憶部121は、モデルの形状を示す幾何データを記憶する。モデルは複数の要素に細分化される。複数の要素それぞれの形状と位置を表すため、幾何データは節点のデータと辺のデータと面のデータを含む。要素への細分化は、ユーザが予め行っておいてもよい。その場合、ユーザが節点のデータと辺のデータと面のデータを含む幾何データを生成して、幾何データ記憶部121に格納しておく。また、要素への細分化は、要素算出部131が行ってもよい。その場合、ユーザは物体全体の形状を示す幾何データを生成して、幾何データ記憶部121に格納しておく。そして、要素算出部131が、物体全体の形状に基づいて節点のデータと辺のデータと面のデータを生成する。
重みデータ記憶部122は、スレーブ面の未知数をマスタ面の未知数と関連付ける重みデータを記憶する。重みデータは、スレーブ面の未知数をマスタ面の変数の線形式で表した場合に、線形式に含まれる各変数の重みを示す。重みデータは変数結合部132によって生成される。方程式記憶部123は、要素の辺に対して定義された未知数を解くための連立方程式を記憶する。連立方程式は、その係数を集めた係数行列によって表現される。連立方程式は方程式生成部133によって生成される。解析結果記憶部124は、辺要素有限要素法の解析結果を記憶する。解析結果は、連立方程式を解くことで算出された各辺の未知数を含む。解析結果は、解算出部134によって生成される。
要素算出部131は、幾何データ記憶部121が示すモデルが要素に細分化されていない場合、物体全体の形状を考慮してモデルを要素に細分化する。各要素の形状および位置を定義するにあたり、要素算出部131は、節点の位置を決定し、2つの節点を結ぶ辺を決定し、複数の節点によって形成される面を決定し、複数の面を有する要素を決定する。要素としては、三角形の面を有する四面体要素や四角形の面を有する六面体要素を用いることができる。物体の中の部位によって、異なる形状の要素を用いることもできる。
また、要素算出部131は、モデルが示す物体の中に移動可能な部位(例えば、図4の回転子32のような回転可能な部位)が含まれている場合、モデル上でその部位を移動させる。移動方向や1回当たりの移動量は、例えば、ユーザから指定される。
変数結合部132は、要素算出部131がモデルを変形させると、幾何データ記憶部121から変形後のモデルを示す幾何データを読み出す。変数結合部132は、移動した部位と他の部位との境界面において不連続となった要素を検出する。すなわち、変数結合部132は、境界面を挟んで隣接する要素のうち、辺を共有していない要素を検出する。変数結合部132は、不連続な要素のうちの一方が有する面をマスタ面に指定し、他方が有する面をスレーブ面に指定する。マスタ面とスレーブ面の選択は、変数結合部132が任意の基準で行ってもよいし、ユーザが指示してもよい。例えば、図4のモータ30の場合、固定子31側の面をマスタ面とし、回転子32側の面をスレーブ面としてもよい。
また、変数結合部132は、要素の辺それぞれに対して未知数を示す変数を定義する。未知数は、その辺の基底関数にかけるスカラ値であり、その辺のベクトルポテンシャルの大きさを示す。そして、変数結合部132は、スレーブ面が有する辺の変数を、当該スレーブ面と重なるマスタ面が有する辺の変数に従属させる。すなわち、変数結合部132は、スレーブ面の変数をマスタ面の変数の線形式に置き換える。変数結合部132は、線形式に含まれる変数の重み(変数にかける実数)を示す重みデータを生成し、生成した重みデータを重みデータ記憶部122に格納する。
方程式生成部133は、重みデータ記憶部122から重みデータを読み出す。方程式生成部133は、変数結合部132が辺に対して定義した変数と重みデータが示す線形式に基づいて、連立方程式を生成する。連立方程式を生成するにあたり、方程式生成部133は、スレーブ面の辺の未知数を独立した変数として表現せず、重みデータが示す線形式に従ってマスタ面の辺の未知数に依存するものとして取り扱う。そして、方程式生成部133は、連立方程式の係数を集めた係数行列を生成し、方程式記憶部123に格納する。一般に、生成する係数行列は大規模かつ疎な(ゼロが多い)行列であることが多い。
解算出部134は、方程式記憶部123から係数行列を読み出す。解算出部134は、係数行列に対して各種の行列演算を行うことで連立方程式を解く。連立方程式の解法は、既存の任意のものを利用することができる。これにより、各辺の未知数が算出され、その辺のベクトルポテンシャルを特定できる。ただし、スレーブ面が有する辺の未知数は、連立方程式自体からは算出されず、そのスレーブ面と重なるマスタ面が有する辺の未知数と重みデータが示す線形式とから算出される。解算出部134は、算出した未知数などを示す解析結果を生成し、解析結果記憶部124に格納する。なお、解算出部134は、解析結果を可視化して(例えば、ベクトルポテンシャルを矢印やグラデーションなどを用いて表現した画像を生成して)ディスプレイ111に表示してもよい。
図12は、幾何データの構造例を示す図である。
幾何データ記憶部121は、点データ141、辺データ142および面データ143を記憶する。点データ141は、節点の集合を示す。辺データ142は、2つの節点によって特定される辺の集合を示す。面データ143は、複数の節点(例えば、四面体要素の場合は3個の節点、六面体要素の場合は4個の節点)によって特定される面の集合を示す。
点データ141は、点番号、X座標、Y座標およびZ座標の項目を有する。点番号は、節点を識別する自然数の識別番号である。X座標、Y座標およびZ座標は、モデル空間上における節点の位置を示す。辺データ142は、辺番号、点1および点2の項目を有する。辺番号は、辺を識別する自然数の識別番号である。点1および点2は、辺の両端に位置する節点を点番号を用いて特定する項目である。面データ143は、面番号、点1、点2、点3および点4の項目を有する。面番号は、面を識別する自然数の識別番号である。点1、点2、点3および点4は、面の頂点に位置する節点を点番号を用いて特定する項目である。ただし、四面体要素の面については、点4の項目は空でよい。また、面データ143は、点番号に代えて辺番号を用いて面を特定することも可能である。
図13は、重みデータの構造例を示す図である。
重みデータ記憶部122は、重みデータ144を記憶する。重みデータ144は、スレーブ面が有する辺の未知数を算出するための線形式を示す。重みデータ144は、スレーブ辺番号、マスタ辺数、マスタ辺番号および重みの項目を有する。
スレーブ辺番号は、スレーブ面が有する辺の辺番号である。マスタ辺数は、スレーブ辺番号が示す辺の未知数と関連するマスタ面の辺の数であり、線形式に現れるマスタ面の変数の数に相当する。マスタ辺番号は、スレーブ辺番号が示す辺の未知数と関連するマスタ面の辺を、辺番号を用いて特定する項目である。マスタ辺番号の項目では、マスタ辺数の項目が示す数だけ辺番号が列挙される。重みは、スレーブ辺番号が示す辺の未知数と関連するマスタ面の辺について、その辺の変数にかける実数を特定する項目である。重みの項目では、マスタ辺数の項目が示す数だけ実数が列挙される。
図14は、変数結合の手順例を示すフローチャートである。
(S1)要素算出部131は、移動可能な部位を含む物体(例えば、回転子32を含むモータ30)のモデルを、少なくとも一部の部位を移動させることで変形する。変数結合部132は、移動した部位と他の部位の間の境界に位置する要素を抽出する。そして、変数結合部132は、一方の部位に含まれる要素の面であって境界面に属する面を、マスタ面として抽出する。また、変数結合部132は、他方の部位に含まれる要素の面であって境界面に属する面を、スレーブ面として抽出する。2つの部位の何れの側をマスタ面とするかは、変数結合部132が決定してもよいしユーザが選択してもよい。ただし、1つの部位の中にマスタ面とスレーブ面を混在させないことが好ましい。
(S2)変数結合部132は、ステップS1で抽出したスレーブ面を1つ選択する。
(S3)変数結合部132は、ステップS2で選択したスレーブ面が、何れかのマスタ面と重なる重畳領域を含むか判断する。2つの面が重なるか否かは、幾何データ記憶部121に記憶された点データ141および面データ143に基づいて、各面の位置を算出することで判定できる。選択したスレーブ面が重畳領域を含む場合はステップS4に処理が進み、重畳領域を含まない場合はステップS8に処理が進む。
(S4)変数結合部132は、ステップS2で選択したスレーブ面と重なる1または2以上のマスタ面を特定する。変数結合部132は、スレーブ面が有する辺のうち重畳領域に属する部分について、マスタ面のベクトルポテンシャルを線積分する。スレーブ面が有する辺の位置は、幾何データ記憶部121に記憶された点データ141および辺データ142に基づいて算出できる。マスタ面のベクトルポテンシャルは、そのマスタ面が有する辺の基底関数と変数を用いて表現される。よって、線積分の結果は、マスタ面で使用される変数の線形式として表される。ここで算出される線形式は、非重畳領域の存在を考慮しない場合における、スレーブ面が有する辺の変数に対応する。
(S5)変数結合部132は、ステップS2で選択したスレーブ面が、何れのマスタ面とも重ならない非重畳領域を含むか判断する。選択したスレーブ面が非重畳領域を含む場合、ステップS6に処理が進む。スレーブ面が非重畳領域を含まない場合、変数結合部132は、ステップS4で算出した線形式を、重みデータ記憶部122に記憶された重みデータ144に登録する。そして、ステップS8に処理が進む。
(S6)変数結合部132は、重畳領域と非重畳領域の間の境界線を算出する。変数結合部132は、マスタ面のベクトルポテンシャルを境界線に沿って線積分する。そして、変数結合部132は、境界線の線積分の結果を用いて、境界線からスレーブ面が有する辺のうち非重畳領域に属する部分への寄与を決定する。非重畳領域に属する各線分への寄与は、当該線分の基底関数を境界線に沿って線積分した値に比例するように決定される。決定された寄与は、マスタ面で使用される変数の線形式として表される。
(S7)変数結合部132は、スレーブ面の辺毎に、ステップS4で算出した線形式にステップS6で算出した寄与を示す線形式を加える。これによって得られる線形式は、非重畳領域の存在を考慮した場合における、スレーブ面が有する辺の変数に対応する。すなわち、スレーブ面の辺毎に、当該辺の未知数がマスタ面の変数を用いて表現される。変数結合部132は、この線形式を重みデータ144に登録する。
(S8)変数結合部132は、ステップS1で抽出したスレーブ面の全てをステップS2において選択したか判断する。全てのスレーブ面を選択した場合は変数結合の処理が終了し、未選択のスレーブ面がある場合はステップS2に処理が進む。
第2の実施の形態の磁界シミュレータ装置100によれば、辺要素有限要素法において、スレーブ面の辺のうちマスタ面と重なる重畳領域の線分については、マスタ面のベクトルポテンシャルに基づいて未知数を表す線形式が算出される。一方、スレーブ面の辺のうちマスタ面と重ならない非重畳領域の線分については、重畳領域と非重畳領域の境界から受ける寄与を表す線形式が算出される。これにより、スレーブ面が有する辺全体について、その未知数をマスタ面で定義された変数を用いて適切に表現することができる。
よって、マスタ面とスレーブ面が辺を共有せず不連続であっても、マスタ面を含む要素とスレーブ面を含む要素の間の磁束の流れを適切に表現でき、磁場解析の精度を向上させることができる。また、スレーブ面の中に何れのマスタ面とも重ならない非重畳領域が含まれていても、磁束の流れを適切に表現でき、磁場解析の精度を向上させることができる。このため、位置関係が変化する複数の部位を含む物体(例えば、モータなど)について、位置関係が変化する毎に要素を生成し直さなくても磁場解析を行うことができ、そのような物体に対する辺要素有限要素法を用いた磁場解析が容易となる。
また、境界線から非重畳領域への寄与は、非重畳領域の線分と境界線との位置関係に応じて決定される。これにより、境界線と平行な線分に対する寄与を大きくし、境界線と垂直な線分に対する寄与を小さくすることができる。このため、隣接する他のスレーブ面への寄与の影響を抑制することができ、磁場解析の精度を向上させることができると共に、辺要素有限要素法の計算を簡潔にし磁場解析を容易にすることができる。
なお、第1の実施の形態の情報処理は、磁界シミュレータ装置10にプログラムを実行させることで実現できる。第2の実施の形態の情報処理は、磁界シミュレータ装置100にプログラムを実行させることで実現できる。
プログラムは、コンピュータ読み取り可能な記録媒体(例えば、記録媒体113)に記録しておくことができる。記録媒体としては、例えば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクには、FDおよびHDDが含まれる。光ディスクには、CD、CD−R(Recordable)/RW(Rewritable)、DVDおよびDVD−R/RWが含まれる。プログラムは、可搬型の記録媒体に記録されて配布されることがある。その場合、可搬型の記録媒体からHDDなどの他の記録媒体(例えば、HDD103)にプログラムをコピーして実行してもよい。