(58)【調査した分野】(Int.Cl.,DB名)
前記方向ベクトルの算出では、前記複数の要素それぞれの前記勾配ベクトルに、要素の体積の逆数のγ乗(γは正の実数)を乗算した結果に基づいて、前記方向ベクトルを算出する、
請求項1記載の磁化シミュレーションプログラム。
体積が不均一な複数の要素を含む不均一メッシュモデルで構造が表された磁性体を示す磁性体データと、前記磁性体が置かれた空間の磁界を示す外部磁界データとを記憶する記憶部と、
前記磁性体データと前記外部磁界データとに基づいて、前記複数の要素それぞれにおける磁気的エネルギーの勾配を示す勾配ベクトルを算出し、前記複数の要素それぞれについて、要素の体積の逆数と前記勾配ベクトルとに基づいて、磁気的エネルギーを最小化する状態の探索方向を示す方向ベクトルを算出し、前記複数の要素それぞれの磁化状態を示す磁化ベクトルを前記方向ベクトルが示す方向に変化させることで、前記磁気的エネルギーを最小化する前記複数の要素それぞれの磁化ベクトルを算出し、収束条件を満たすまで、前記勾配ベクトルの算出と、前記方向ベクトルの算出と、前記磁化ベクトルの算出とを繰り返し実行する処理部と、
を有する磁化シミュレーション装置。
【発明を実施するための形態】
【0014】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第1の実施の形態〕
まず第1の実施の形態について説明する。第1の実施の形態は、不均一メッシュモデルを用いたマイクロマグネティックスシミュレーションを効率的に行う磁化シミュレーション装置である。
【0015】
図1は、第1の実施の形態に係る磁化シミュレーション装置の機能構成例を示す図である。磁化シミュレーション装置10は、記憶部11と処理部12とを有する。記憶部11は、例えば磁化シミュレーション装置10が有するメモリ、またはストレージ装置である。処理部12は、例えば磁化シミュレーション装置10が有するプロセッサ、または演算回路である。磁化シミュレーション装置10は、記憶部11と処理部12とを用いて、不均一メッシュモデルを用いたマイクロマグネティックスシミュレーションを効率的に行うための、磁化シミュレーション方法を実現する。例えば磁化シミュレーション装置10は、不均一メッシュモデルを用いたマイクロマグネティックスシミュレーションを効率的に行う処理の手順が記述された磁化シミュレーションプログラムを、処理部12で実行することで、磁化シミュレーション方法を実現する。
【0016】
磁化シミュレーション装置10は、例えばNCG法によるマイクロマグネティックスシミュレーションを実行する。ここで、マイクロマグネティックスシミュレーションについて詳細に説明する。
【0017】
マイクロマグネティックスシミュレーションとは、磁性体の理論計算の一手法である。磁化シミュレーション装置10は、シミュレーション空間内に磁性体を定義し、その磁性体を微小な要素(メッシュと呼ぶこともある)に分割する。各メッシュは、例えば四面体または八面体の立体構造を有している。また各メッシュの体積は不均一である。すなわち磁性体は、複数のメッシュに分割されることで、不均一メッシュモデル1で表されている。
【0018】
磁化シミュレーション装置10は、不均一メッシュモデル1を用いてマイクロマグネティックスシミュレーションを実行する。例えば磁化シミュレーション装置10は、系の全エネルギーである磁気的エネルギーE
totalを示すエネルギー定義情報を記憶している。磁気的エネルギーE
totalは、以下の式で表される。
【0020】
ここでE
aniは異方性エネルギーであり、E
excは交換エネルギーであり、E
applはゼーマンエネルギーであり、E
staticは静磁界エネルギーである。異方性エネルギー、交換エネルギー、ゼーマンエネルギー、および静磁界エネルギーは、それぞれ以下の式で表される。
【0026】
ここで、mは単位磁化ベクトルである。なお、単位磁化ベクトルは、各メッシュの磁化を示す磁化ベクトルを飽和磁化で除算して得られるベクトルである。m
xは単位磁化ベクトルのx成分である。m
yは単位磁化ベクトルのy成分である。m
zは単位磁化ベクトルのz成分である。K
Uは磁気異方性定数である。kは磁気異方性ベクトルである。Aは交換結合定数である。M
sは飽和磁化である。H
applは外部磁界である。φは静磁界ポテンシャルである。H
staticは静磁界ベクトルである。静磁界ポテンシャルφは、以下の関係式から求められる。
【0028】
磁化シミュレーション装置10は、式(1)〜式(7)で表される磁性体エネルギーを最小にするマイクロ磁化の状態を、マイクロマグネティックスシミュレーションによって求める。マイクロマグネティックスシミュレーションを実行する際に、ユーザが実行条件として入力するデータは、体積が不均一な複数の要素を含む不均一メッシュモデル1、不均一メッシュモデル1内の各要素における磁化ベクトルの初期状態、および外部磁界データ11bである。式(2)〜式(7)に含まれる磁気異方性ベクトルk、磁気異方性定数K
U、交換結合定数A、飽和磁化M
sは、解析対象の磁性体の物性値として、予め磁性体データ11aに設定しておくことができる。外部磁界データ11bには、外部磁界H
applの値が含まれる。そして磁化シミュレーション装置10が、例えばNCG法によるマイクロマグネティックスシミュレーションを実行することで、磁気的エネルギーを最小化するような、各メッシュにおける磁化ベクトルの状態を示すデータを出力する。
【0029】
磁化シミュレーション装置10は、処理の反復回数を削減するために、各メッシュの体積の逆数を用いて不均一メッシュモデル1を用いたマイクロマグネティックスシミュレーションを実行する。例えば磁化シミュレーション装置10の記憶部11は、体積が不均一な複数の要素を含む不均一メッシュモデル1で構造が表された磁性体を示す磁性体データ11aと、磁性体が置かれた空間の磁界を示す外部磁界データ11bとを記憶する。
【0030】
処理部12は、不均一メッシュモデル1内の各要素における磁化ベクトルの初期状態を含む磁性体データ11aと外部磁界データ11bとに基づいて、NCG法によるマイクロマグネティックスシミュレーションを実行する。
【0031】
処理部12は、まず磁性体データ11aと外部磁界データ11bとに基づいて、複数の要素それぞれにおける磁気的エネルギーの勾配を示す勾配ベクトルを算出する。磁気的エネルギーは、前述の式(1)〜式(7)で表される。
【0032】
次に処理部12は、複数の要素それぞれについて、要素の体積の逆数と勾配ベクトルとに基づいて、磁気的エネルギーを最小化する状態の探索方向を示す方向ベクトルを算出する。例えば処理部12は、まず磁性体データ11aに示される不均一メッシュモデル1の構造に基づいて、各要素の体積を計算する。そして処理部12は、勾配ベクトルに、要素の体積の逆数のγ乗(γは正の実数)を乗算した結果に基づいて、方向ベクトルを算出する。
【0033】
なお処理部12は、勾配ベクトルの成分に乗算する値を含む前処理行列を予め生成しておいてもよい。例えば処理部12は、複数の要素それぞれの体積の逆数を対角要素とする対角行列を前処理行列として生成する。処理部12は、生成した前処理行列を、例えばメモリに格納する。そして処理部12は、前処理行列を用いて、複数の要素それぞれの方向ベクトルを算出する。
【0034】
要素ごとの方向ベクトルの算出が完了すると、処理部12は、複数の要素それぞれの磁化状態を示す磁化ベクトルを方向ベクトルが示す方向に変化させることで、磁気的エネルギーを最小化する複数の要素それぞれの磁化ベクトルを算出する。なお、1回の磁化ベクトルの算出では、方向ベクトルにより磁化ベクトルの変化の方向が制限されている。そのため、他の方向に磁化ベクトルを変化させれば、磁気的エネルギーをさらに小さくさせる磁化状態(複数の要素それぞれの磁化ベクトル)が存在する可能性がある。
【0035】
そこで処理部12は、収束条件を満たすまで、勾配ベクトルの算出と、方向ベクトルの算出と、磁化ベクトルの算出とを繰り返し実行する。収束条件は、例えば最後に算出した磁化ベクトルと、その前に算出した磁化ベクトルとの差(残差)が所定値以内になっているという条件である。すなわち処理部12は、磁化ベクトルがある一定値に収束した場合、ループ処理から抜ける。
【0036】
処理部12は、収束条件が満たされると、磁性体の磁化状態を示す情報を出力する。例えば処理部12は、最後に計算した各要素の磁化ベクトルを、外部磁界データ11bに応じた磁性体の磁化状態として出力する。
【0037】
このように、各メッシュの体積の逆数を用いてマイクロマグネティックスシミュレーションを実行することで、勾配ベクトル、方向ベクトル、磁化ベクトルといった物理量の計算処理の反復回数を削減することができ、処理の効率化が図れる。
【0038】
すなわち、各メッシュの体積の逆数を用いずに、不均一メッシュモデル1を用いてNCG法によるイクロマグネティックスシミュレーションを計算すると、物理量の計算処理の反復回数が均一メッシュを使用した場合に比べて倍以上増大する。この原因は、以下のように考えられる。
【0039】
磁性体を不均一メッシュモデルで表現すると、各メッシュの体積が不均一になる。また、NCG法で計算する勾配ベクトルの各成分は、有効磁界とメッシュの体積の積に比例する形で表される。そのため、不均一なメッシュサイズは勾配ベクトルの成分の大きさのバラつきを引き起こす。例えばある勾配ベクトルのうち、2つの成分において有効磁界が等しく、かつメッシュサイズ比が10000である場合、2つの成分の比は10000となる。このように不均一メッシュモデルでは均一メッシュモデルに比べて勾配ベクトル成分の大きさのバラつきが非常に大きくなりやすい。勾配ベクトルの各成分のバラつきが大きいと最適化の途中で誤差の影響を受けやすく、磁気的エネルギーの最小値の探索方向を示す方向ベクトルの向きが、最小値が存在する方向からずれてしまう。その結果、磁気的エネルギーの最小値の探索経路がジグザグとなり、エネルギー最小化が遅くなる。このような事情によりNCG法の収束が悪化し、物理量計算処理の反復回数が増大し、計算時間が長くなってしまうと考えることができる。
【0040】
このように、メッシュが不均一になったことに起因して勾配ベクトルの各成分のバラつきが大きくなることが、収束性悪化の原因である。すると、勾配ベクトルの各成分のバラつきを抑止することができれば、収束性が改善するものと考えられる。勾配ベクトルの各成分のバラつきの抑止は、次のような前処理を実行することで実現できる。つまり磁化シミュレーション装置10が、NCG法を用いて磁性体のエネルギー最小状態を求める際、メッシュの体積の逆数を用いた前処理行列を予め用意し、方向ベクトルを計算する際にこの前処理行列を使う。前処理行列として勾配ベクトルの各成分の大きさのバラつきを抑制するものを使用することで、均一メッシュと同程度の反復回数で収束することが期待できる。例えば前処理行列を対角行列として対角スケーリングすることが考えられる。そのような対角行列の各成分は各メッシュ体積の逆0.3〜1.0乗程度の値を持つようにする。
【0041】
このように、方向ベクトルを計算する際に、メッシュの体積の逆数を用いて、メッシュサイズが不均一であることに起因する勾配ベクトルのバラつきを抑制することで、方向ベクトルの向きが適性化される。方向ベクトルの向きが適性化されることで、磁気的エネルギーの最小値に、少ない反復回数で到達することが可能となる。その結果、処理の効率化が図れる。
【0042】
〔第2の実施の形態〕
次に第2の実施の形態について説明する。第2の実施の形態は、コンピュータを用いたマイクロマグネティックスシミュレーションを具体化したものである。
【0043】
図2は、マイクロマグネティックスシミュレーションに用いるコンピュータのハードウェアの一例を示す図である。コンピュータ100は、プロセッサ101によって装置全体が制御されている。プロセッサ101には、バス109を介してメモリ102と複数の周辺機器が接続されている。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、またはDSP(Digital Signal Processor)である。プロセッサ101がプログラムを実行することで実現する機能の少なくとも一部を、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現してもよい。
【0044】
メモリ102は、コンピュータ100の主記憶装置として使用される。メモリ102には、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ102には、プロセッサ101による処理に利用する各種データが格納される。メモリ102としては、例えばRAM(Random Access Memory)などの揮発性の半導体記憶装置が使用される。
【0045】
バス109に接続されている周辺機器としては、ストレージ装置103、グラフィック処理装置104、入力インタフェース105、光学ドライブ装置106、機器接続インタフェース107およびネットワークインタフェース108がある。
【0046】
ストレージ装置103は、内蔵した記録媒体に対して、電気的または磁気的にデータの書き込みおよび読み出しを行う。ストレージ装置103は、コンピュータの補助記憶装置として使用される。ストレージ装置103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ストレージ装置103としては、例えばHDD(Hard Disk Drive)やSSD(Solid State Drive)を使用することができる。
【0047】
グラフィック処理装置104には、モニタ21が接続されている。グラフィック処理装置104は、プロセッサ101からの命令に従って、画像をモニタ21の画面に表示させる。モニタ21としては、有機EL(Electro Luminescence)を用いた表示装置や液晶表示装置などがある。
【0048】
入力インタフェース105には、キーボード22とマウス23とが接続されている。入力インタフェース105は、キーボード22やマウス23から送られてくる信号をプロセッサ101に送信する。なお、マウス23は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【0049】
光学ドライブ装置106は、レーザ光などを利用して、光ディスク24に記録されたデータの読み取りを行う。光ディスク24は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク24には、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。
【0050】
機器接続インタフェース107は、コンピュータ100に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース107には、メモリ装置25やメモリリーダライタ26を接続することができる。メモリ装置25は、機器接続インタフェース107との通信機能を搭載した記録媒体である。メモリリーダライタ26は、メモリカード27へのデータの書き込み、またはメモリカード27からのデータの読み出しを行う装置である。メモリカード27は、カード型の記録媒体である。
【0051】
ネットワークインタフェース108は、ネットワーク20に接続されている。ネットワークインタフェース108は、ネットワーク20を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【0052】
コンピュータ100は、以上のようなハードウェア構成によって、第2の実施の形態の処理機能を実現することができる。なお、第1の実施の形態に示した磁化シミュレーション装置10も、
図2に示したコンピュータ100と同様のハードウェアにより実現することができる。
【0053】
コンピュータ100は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。コンピュータ100に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、コンピュータ100に実行させるプログラムをストレージ装置103に格納しておくことができる。プロセッサ101は、ストレージ装置103内のプログラムの少なくとも一部をメモリ102にロードし、プログラムを実行する。またコンピュータ100に実行させるプログラムを、光ディスク24、メモリ装置25、メモリカード27などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ101からの制御により、ストレージ装置103にインストールされた後、実行可能となる。またプロセッサ101が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【0054】
このようなコンピュータ100により、不均一メッシュを用いた、NCG法によるマイクロマグネティックスシミュレーションが行われる。
図3は、マイクロマグネティックスシミュレーションのための機能を示すブロック図である。コンピュータ100は、マイクロマグネティックスシミュレーションのために、記憶部110、前処理行列作成部120、およびシミュレーション部130を有する。
【0055】
記憶部110は、磁性体データ111と外部磁界データ112とを記憶する。磁性体データ111には、メッシュ構造データ111aと特性データ111bとが含まれる。メッシュ構造データ111aは、不均一なサイズの複数のメッシュに磁性体を分割したときの、各メッシュの位置と形状を示すデータである。特性データ111bは、磁性体の性質に関するデータである。例えば特性データ111bには、単位磁化ベクトルm、磁気異方性ベクトルk、磁気異方性定数K
U、交換結合定数A、飽和磁化M
sなどが含まれる。外部磁界データ112は、磁性体が置かれる空間内の磁界(外部磁界H
appl)を表すデータである。
【0056】
前処理行列作成部120は、NCG法の前処理演算を行い、NCG法による収束性を高めるための行列(前処理行列)を作成する。例えば前処理行列作成部120は、メッシュモデルの各メッシュの体積に応じた値を、前処理行列の要素として設定する。
【0057】
シミュレーション部130は、前処理行列を用いて、NCG法によるマイクロマグネティックスシミュレーションを実行し、メッシュモデルのメッシュごとの磁化ベクトルを算出する。NCG法を用いるため、シミュレーション部130は、所定の収束条件が満たされるまで、メッシュごとの磁化ベクトルの算出を繰り返し実行する。そしてシミュレーション部130は、収束条件が満たされたとき、最後に算出されたメッシュごとの磁化ベクトルを出力する。
【0058】
図4は、メッシュ構造データの一例を示す図である。記憶部110には、磁性体の不均一メッシュモデル31を表すメッシュ構造データ111aが格納される。不均一メッシュモデル31は、サイズが均一の均一メッシュモデル30と比較して、メッシュ数が削減されている。メッシュ構造データ111aには、例えばメッシュデータ111dと節点データ111eとが含まれる。メッシュデータ111dには、不均一メッシュモデル31に含まれるメッシュそれぞれの識別子(メッシュ番号)に対応付けて、そのメッシュの節点の識別子(節点番号)が設定されている。メッシュが4面体であれば、そのメッシュの節点は4個である。またメッシュが6面体であれば、そのメッシュの節点は8個である。節点データ111eには、不均一メッシュモデル31に含まれる節点それぞれの節点番号に対応付けて、その節点の3次元空間での座標値が設定されている。
【0059】
メッシュ構造データ111aに示される不均一メッシュモデル31により、複数のメッシュに分割した磁性体が表現される。特性データ111bに含まれる単位磁化ベクトルは、メッシュごとの磁化(マイクロ磁化)の初期状態を表している。
【0060】
図5は、メッシュごとの磁化が定義された磁性体を示す模式図である。
図5に示すように、磁性体40を複数のメッシュ41に分割したときに、各メッシュ内の磁化の強さと向きが、磁化ベクトルで定義される。そしてコンピュータ100は、NCG法によるマイクロマグネティックスシミュレーションにより、外部磁界データ112に示される外部磁界が存在する空間に磁性体40が置かれたときにおける、マイクロ磁化の振る舞いを計算する。具体的には、コンピュータ100は、式(1)〜式(7)で表される磁気的エネルギーを最小とするマイクロ磁化の状態を計算する。この際、コンピュータ100は、各メッシュの体積の逆数に応じた前処理行列を用いることで、物理量計算処理の反復回数が少ない、効率的なシミュレーション処理を実行する。
【0061】
なおコンピュータ100は、マイクロマグネティックスシミュレーションの処理過程で生じる中間データを、配列を用いてメモリ102上で管理する。
図6は、マイクロマグネティックスシミュレーションに用いる配列の一例を示す図である。例えば前処理行列作成部120は、磁性体データ111に基づいて前処理行列Qを作成すると、その前処理行列Qの要素を行列要素配列Q’に格納する。シミュレーション部130は、行列要素配列Q’から要素の値を取り出し、物理量を計算する。例えばシミュレーション部130は、1回目の物理量計算では、磁性体データ111、外部磁界データ112、および行列要素配列Q’に基づいて、勾配ベクトル、方向ベクトル、および磁化ベクトルを、それぞれメッシュごとに計算する。シミュレーション部130は、算出したメッシュごとの物理量を出力データ用配列群51内の配列に格納する。出力データ用配列群51には、勾配ベクトル配列g
1、方向ベクトル配列d
1、および磁化ベクトル配列m
1が含まれる。
【0062】
1回目の物理量計算が終了すると、シミュレーション部130は、出力データ用配列群51内の各配列の値を、入力データ用配列群52として設けられた配列にコピーする。入力データ用配列群52には、勾配ベクトル配列g
2、方向ベクトル配列d
2、および磁化ベクトル配列m
2が含まれる。
【0063】
シミュレーション部130は、行列要素配列Q’と入力データ用配列群52内の各配列からデータを読み出し、2回目以降の物理量計算を行う。そしてシミュレーション部130は、2回目以降の物理量計算において算出したメッシュごとの物理量を、出力データ用配列群51内の配列に格納する。
【0064】
このように、配列を用いて中間データを管理することで、マイクロマグネティックスシミュレーションを効率的に実行することができる。なお、シミュレーション部130は、ベクトル値を配列に格納する際、ベクトル値のx軸,y軸,z軸の各軸方向の成分それぞれを、配列の1つの要素として格納する。そのためメッシュ数がNのとき、各配列の要素数は3Nとなる。
【0065】
図7は、配列へのベクトルデータの格納方法の一例を示す図である。不均一メッシュモデル31の各メッシュについて計算される物理量としては、磁化ベクトル、勾配ベクトル、および方向ベクトルがある。各メッシュの構造データとしては、メッシュを構成する節点の座標がある。
【0066】
配列には、ベクトルの成分ごとの値それぞれが、配列の要素として格納される。例えば配列内の要素番号が「1」番から昇順の番号となっているとき、配列の1番目の要素には、1番目のメッシュのx値が格納される。配列の2番目の要素には、1番目のメッシュのy値が格納される。配列の3番目の要素には、1番目のメッシュのz値が格納される。そして配列の4番目の要素には、2番目のメッシュのx値が格納される。
【0067】
このように各ベクトルの成分ごとの値を配列に格納したとき、i番目のメッシュに関連するベクトルデータは、各配列の3(i−1)+1番目の要素から3(i−1)+3番目までの3要素に格納される。例えばi番目のメッシュの磁化ベクトルは、磁化ベクトル配列m
1,m
2それぞれの3(i−1)+1番目から3(i−1)+3番目までの3要素に設定される。i番目のメッシュの勾配ベクトルは、勾配ベクトル配列g
1,g
2それぞれの3(i−1)+1番目から3(i−1)+3番目までの3要素に設定される。i番目のメッシュの方向ベクトルは、方向ベクトル配列d
1,d
2それぞれの3(i−1)+1番目から3(i−1)+3番目までの3要素に設定される。
【0068】
以下、NCG法によるマイクロマグネティックスシミュレーションの処理手順について詳細に説明する。
図8は、マイクロマグネティックスシミュレーションの処理手順の一例を示すフローチャートである。以下、
図8に示す処理をステップ番号に沿って説明する。
【0069】
[ステップS101]前処理行列作成部120は、メッシュごとの磁化ベクトルを示す磁化ベクトルデータの初期値の入力を受け付け、メッシュごとの磁化ベクトルの各軸方向の成分を、磁化ベクトル配列m
2に格納する。
【0070】
[ステップS102]前処理行列作成部120は、パラメータγとメッシュ構造データ111aとに基づいて、前処理行列Qの対角成分を示す行列要素配列Q’を作成する。前処理行列は、例えば以下のような対角行列である。
【0072】
ここでγはユーザが予め指定するパラメータであり、シミュレーション中において一定である。γの値は正の実数であり、例えばγの値として0.3〜1.0の範囲内の値が設定される。Nはメッシュ数である。
【0073】
前処理行列Qのi,j成分をQ
ijと書くと、前処理行列Qの各成分の値を以下のように表すことができる。
【0075】
i、jは、それぞれ1からNをとる整数である。s、tは、それぞれ0から2をとる整数である。δ
ijおよびδ
stはクロネッカーのデルタである。V
iは要素番号iの要素の体積である。前処理行列作成部120は、メッシュ構造データ111aに示されている各メッシュの節点の座標値から、そのメッシュの体積を計算する。そして前処理行列作成部120は、計算した各メッシュの体積に基づいて、式(9)により、前処理行列Qの成分の値を計算し、メモリ102に格納する。例えば前処理行列作成部120は、Qの各成分を配列として格納する。その場合、前処理行列作成部120は、次のような要素数3Nの行列要素配列Q’を定義し、その配列に、前処理行列作成部120の対角成分それぞれを3個ずつ格納する。
【0077】
このような行列要素配列Q’に値を格納する前処理行列作成処理の詳細は後述する(
図9参照)。
前処理行列Qが作成されると、シミュレーション部130により、NCG法によるマイクロマグネティックスシミュレーションが実行される。マイクロマグネティックスシミュレーションにおいて、シミュレーション部130は、ステップS103〜S105の処理で物理量を計算する。
【0078】
[ステップS103]シミュレーション部130は、磁化ベクトル配列m
2に基づいて、メッシュごとの勾配ベクトルを計算し、勾配ベクトルの成分を勾配ベクトル配列g
1に格納する。例えば磁化ベクトル配列m
2に示されるi番目のメッシュの磁化ベクトルをm
iとしたとき、そのメッシュの勾配ベクトルg
iは「g
i=−∂E
total/∂m
i」となる。
【0079】
[ステップS104]シミュレーション部130は、勾配ベクトル配列g
1,g
2と方向ベクトル配列d
2とに基づいて、前処理行列Qを用いたメッシュごとの方向ベクトルを計算し、方向ベクトルの成分を方向ベクトル配列d
1に格納する。勾配ベクトル配列g
2と方向ベクトル配列d
2とは、前回の物理量計算処理で計算された値が格納されている。なお、1回目の物理量計算処理の場合、勾配ベクトル配列g
2と方向ベクトル配列d
2とは未計算である。そのため、シミュレーション部130は、1回目の物理量計算処理では、勾配ベクトル配列g
1と行列要素配列Q’とにより、メッシュごとの方向ベクトルを計算する。
【0080】
例えば1回目の物理量計算の場合、シミュレーション部130は、複数のメッシュそれぞれの勾配ベクトルの要素の値(x値、y値、z値)を1列に並べた列ベクトル(勾配ベクトル配列g
1)に、「−Q」を左から乗算する。乗算結果として得られる列ベクトルの要素は、複数のメッシュそれぞれの方向ベクトルの要素を表している。勾配ベクトル配列g
1を勾配ベクトルの列ベクトルとみなした場合、方向ベクトルの列ベクトルは「−Qg
1」となる。
【0081】
また2回目以降の物理量の計算の場合、シミュレーション部130は、以下の式(11)により、修正係数βを算出する。なお式(11)では、各配列を、その配列の要素を有するベクトルとみなしている。
【0083】
ここでv=g
1−g
2である。式(11)の(配列a,配列b)は、配列aで示されるベクトルと配列bで示されるベクトルとの内積演算である。
そしてシミュレーション部130は、ステップS103で算出された勾配ベクトル(勾配ベクトル配列g
1)に「−Q」を左から乗算する。またシミュレーション部130は、前回の物理量計算において算出された方向ベクトル(方向ベクトル配列d
2)を列ベクトルとし、その列ベクトルに「β」を左から乗算する。そしてシミュレーション部130は、「−Q」の勾配ベクトルへの乗算結果と「β」の方向ベクトルへの乗算結果との合計「−Qg
1+βd
2」を、方向ベクトルとする。
【0084】
シミュレーション部130は、計算したメッシュごとの方向ベクトルを、方向ベクトル配列d
1に格納する。方向ベクトル計算処理の詳細は後述する(
図10参照)。
[ステップS105]シミュレーション部130は、方向ベクトル配列d
1と磁化ベクトル配列m
2とに基づいて、ラインサーチ(直接探索)処理により、メッシュごとの磁化ベクトルを計算する。例えばシミュレーション部130は、前回の物理量計算で得られた各メッシュの磁化ベクトル(磁化ベクトル配列m
2)を、各メッシュの方向ベクトル(方向ベクトル配列d
1)の方向へ変化させ、磁気的エネルギーE
totalを最小化させる磁化状態を探索する。シミュレーション部130は、方向ベクトルに示される方向への探索で、磁気的エネルギーE
totalが最小となる各メッシュの磁化ベクトルを、磁化ベクトルの算出結果とする。そしてシミュレーション部130は、メッシュごとに新たに算出した磁化ベクトルで、磁化ベクトル配列m
1の各要素の値を更新する。
【0085】
[ステップS106]シミュレーション部130は、収束条件が満たされたか否かを判定する。例えばシミュレーション部130は、磁化ベクトルの残差|m
1−m
2|が規定値以下か否かを判断する。またシミュレーション部130は、メッシュごとの回転前の磁化ベクトルと回転後の磁化ベクトルとの差分ベクトルの大きさの平均値又は最大値を残差とすることもできる。シミュレーション部130は、残差が規定値以下であれば、収束条件が満たされたと判断する。シミュレーション部130は、収束条件が満たされた場合、処理をステップS108に進める。またシミュレーション部130は、収束条件が満たされていなければ、処理をステップS107に進める。
【0086】
[ステップS107]シミュレーション部130は、ステップS103〜S105で計算した勾配ベクトル、方向ベクトル、および磁化ベクトルを、次のループ処理用のデータとしてコピーする。具体的には、シミュレーション部130は、磁化ベクトル配列m
1内の各要素の値を、磁化ベクトル配列m
2内の各要素にコピーする。また、シミュレーション部130は、勾配ベクトル配列g
1内の各要素の値を、勾配ベクトル配列g
2内の各要素にコピーする。さらにシミュレーション部130は、方向ベクトル配列d
1内の各要素の値を、方向ベクトル配列d
2内の各要素にコピーする。その後、シミュレーション部130は、処理をステップS103に進め、次の物理量計算処理を開始する。
【0087】
[ステップS108]シミュレーション部130は、収束条件が満たされた場合、最後に計算したメッシュごとの磁化ベクトルをファイルに書き出す。例えばシミュレーション部130は、磁化ベクトル配列m
1の各要素の値を、該当要素に対応するメッシュのメッシュ番号に対応付けて、メモリ102上でファイルに書き込む。そしてシミュレーション部130は、そのファイルを例えばストレージ装置103に格納する。
【0088】
このような手順で、NCG法によるマイクロマグネティックスシミュレーションが実行される。
次に、前処理行列作成処理について詳細に説明する。
【0089】
図9は、前処理行列作成処理の手順の一例を示すフローチャートである。以下、
図9に示す処理をステップ番号に沿って説明する。
[ステップS111]前処理行列作成部120は、変数iが1からNになるまで、ステップS112〜S115の処理を繰り返す。
【0090】
[ステップS112]前処理行列作成部120は、i番目のメッシュの体積を計算する。例えば前処理行列作成部120は、磁性体データ111内のメッシュ構造データ111aに示されているi番目のメッシュの節点の座標値に基づいて、そのメッシュの体積を計算する。
【0091】
[ステップS113]前処理行列作成部120は、行列要素配列Q’の3(i−1)+1番目の要素に、i番目のメッシュの体積の−γ乗を格納する。
[ステップS114]前処理行列作成部120は、行列要素配列Q’の3(i−1)+2番目の要素に、i番目のメッシュの体積の−γ乗を格納する。
【0092】
[ステップS115]前処理行列作成部120は、行列要素配列Q’の3(i−1)+3番目の要素に、i番目のメッシュの体積の−γ乗を格納する。
[ステップS116]前処理行列作成部120は、変数iの値がNであれば前処理行列作成処理を終了し、変数iの値がN未満であれば変数iの値に1を加算し、ステップS112〜S115の処理を行う。
【0093】
このような前処理行列作成処理の結果、前処理行列Qの対角成分を格納した行列要素配列Q’が出力される。例えば前処理行列作成部120は、行列要素配列Q’を、処理結果としてメモリ102に格納する。
【0094】
次に、行列要素配列Q’を用いた方向ベクトルの計算処理について詳細に説明する。
図10は、方向ベクトル計算処理の手順の一例を示すフローチャートである。以下、
図10に示す処理をステップ番号に沿って説明する。
【0095】
[ステップS121]シミュレーション部130は、1回目の物理量計算処理か否かを判断する。シミュレーション部130は、1回目の物理量計算処理であれば、処理をステップS122に進める。またシミュレーション部130は、2回目以降の物理量計算処理であれば、処理をステップS125に進める。
【0096】
[ステップS122]シミュレーション部130は、変数iが1から3Nになるまで、ステップS123の処理を繰り返す。
[ステップS123]シミュレーション部130は、勾配ベクトル配列g
1のi番目の要素の値とQのi番目の要素の値と「−1」とを乗算し、方向ベクトル配列d
1のi番目の要素に格納する。
【0097】
[ステップS124]シミュレーション部130は、変数iの値が3Nであれば、方向ベクトル計算処理を終了し、変数iの値が3N未満であれば、変数iの値に1を加算し、ステップS123の処理を行う。
【0098】
[ステップS125]シミュレーション部130は、修正係数βを計算し、計算結果をメモリ102に格納する。
[ステップS126]シミュレーション部130は、変数iが1から3Nになるまで、ステップS127の処理を繰り返す。
【0099】
[ステップS127]シミュレーション部130は、方向ベクトル配列d
2のi番目の要素と修正係数βとの積から、勾配ベクトル配列g
1のi番目の要素と行列要素配列Q’のi番目の要素との積を減算する。そしてシミュレーション部130は、減算結果を、方向ベクトル配列d
1のi番目の要素に格納する。
【0100】
[ステップS128]シミュレーション部130は、変数iの値が3Nであれば、方向ベクトル計算処理を終了し、変数iの値が3N未満であれば、変数iの値に1を加算し、ステップS127の処理を行う。
【0101】
このようにして、方向ベクトルの計算が行われ、処理結果として、方向ベクトル配列d
1がメモリ102に格納される。方向ベクトルの計算では、各メッシュの体積の逆数を含む前処理行列Qを利用することで、メッシュ間の体積の違いの影響が抑制されている。その結果、不均一メッシュモデルを採用したことによる物理量計算の反復回数の増加が抑止される。
【0102】
ここで、前処理行列Qを利用した場合と、前処理行列Qを利用しなかった場合とにおける、物理量計算処理の反復回数の違いの検証結果について説明する。
図11は、マイクロマグネティックスシミュレーションの検証例を示す図である。
図11は、一様に磁化された磁性体が安定な状態まで緩和する計算を行い、収束に必要な反復回数と計算時間について、体積の逆数に基づく前処理行列Qを使用する場合と使用しない場合それぞれでの測定結果を示す。なお前処理行列Qを用いたマイクロマグネティックスシミュレーションでは、γ=1.0としている。
【0103】
検証に使用した不均一メッシュモデル31は、メッシュ数が約1100万個である。この不均一メッシュモデル31で示される磁性体の飽和磁化は1.61Tである。また交換結合定数は1.0×10
-11J/mである。異方性定数は4.50×10
6J/m
3である。
【0104】
このような条件で、前処理行列Qを使用せずにマイクロマグネティックスシミュレーションを実行したところ、反復回数が219回、計算時間が1172秒で収束条件が満たされた。それに対して、体積の逆数に基づく前処理行列Qを使用してマイクロマグネティックスシミュレーションを実行したところ、反復回数が67回、計算時間が388秒で収束条件が満たされた。
【0105】
この例では、前処理行列Qを使用したことで、反復回数が約0.3倍に削減され、計算時間が約0.33倍になっている。このように、前処理行列Qを使用することでより高速なマイクロマグネティックスシミュレーションが可能になる。
【0106】
このようなマイクロマグネティックスシミュレーションにより、例えば磁気メモリなどに用いる磁性体の磁気的な性質を、コンピュータシミュレーションによって解析することができる。例えば外部磁界の強度を変化させながら、マイクロマグネティックスシミュレーションを繰り返し実行することで、磁性体の磁化曲線を得ることができる。
【0107】
図12は、磁化曲線の一例を示す図である。
図12において、縦軸は磁化[T]を表し、横軸は外部磁界[A/m]を表す。
図12には、外部磁界を徐々に強くして、各外部磁界における磁性体の磁化を求めることで得られた磁化曲線60が示されている。磁化曲線60には、ある外部磁界において磁性体の磁化が反転する様子が表されている。例えばコンピュータ100がモニタ21に磁化曲線60を表示することで、ユーザは、磁性体の磁化を所定の方向に安定させるための外部磁界や、安定状態での磁化の強度などの磁性体の特性を把握することができる。
【0108】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。