(57)【特許請求の範囲】
【請求項１】
コンピュータに、
複数の節点とそれぞれが前記複数の節点のうちの３以上の節点によって区切られた領域を示す複数の要素とを含むモデルに対して算出された、前記複数の節点または要素それぞれに対応する第１の値を含む第１のデータを取得し、
直交する２以上の軸によって特定される複数のグリッド点を算出し、前記複数の節点または要素それぞれの位置と前記第１のデータに含まれる前記第１の値とに基づいて、前記複数のグリッド点のうちの少なくとも一部のグリッド点それぞれに対応する第２の値を算出し、前記第２の値を含む第２のデータを記憶装置に保存し、
前記記憶装置から前記第２のデータを読み出す場合に、前記少なくとも一部のグリッド点それぞれの位置と前記第２のデータに含まれる前記第２の値とに基づいて、前記複数の節点または要素それぞれに対応する前記第１の値を復元する、
処理を実行させる有限要素演算プログラム。
【請求項２】
前記第２のデータの保存では、前記複数のグリッド点のうちの一のグリッド点に対応する第２の値を前記第２のデータに含めるか否かを、前記一のグリッド点を含む要素における前記第１の値の勾配と閾値との比較に応じて決定する、
請求項１記載の有限要素演算プログラム。
【請求項３】
前記複数のグリッド点は複数のレベルにグループ化され、前記複数のレベルそれぞれに対して複数の閾値のうちの一の閾値が対応付けられ、
前記閾値は、前記複数の閾値のうち前記一のグリッド点のレベルに応じた閾値である、
請求項２記載の有限要素演算プログラム。
【請求項４】
前記第１の値の復元では、前記一のグリッド点に対応する第２の値が前記第２のデータに含まれていない場合、前記一のグリッド点と隣接する他のグリッド点に対応する第２の値を用いて、前記一のグリッド点に対応する第２の値を補間する、
請求項２または３記載の有限要素演算プログラム。
【請求項５】
前記複数のグリッド点は、前記複数の節点または要素よりも少なくなるよう算出する、
請求項１乃至４の何れか一項に記載の有限要素演算プログラム。
【請求項６】
記憶部と、
複数の節点とそれぞれが前記複数の節点のうちの３以上の節点によって区切られた領域を示す複数の要素とを含むモデルに対して算出された、前記複数の節点または要素それぞれに対応する第１の値を含む第１のデータを取得し、
直交する２以上の軸によって特定される複数のグリッド点を算出し、前記複数の節点または要素それぞれの位置と前記第１のデータに含まれる前記第１の値とに基づいて、前記複数のグリッド点のうちの少なくとも一部のグリッド点それぞれに対応する第２の値を算出し、前記第２の値を含む第２のデータを前記記憶部に保存し、
前記記憶部から前記第２のデータを読み出す場合に、前記少なくとも一部のグリッド点それぞれの位置と前記第２のデータに含まれる前記第２の値とに基づいて、前記複数の節点または要素それぞれに対応する前記第１の値を復元する変換部と、
を有する有限要素演算装置。
【請求項７】
コンピュータが実行する有限要素演算方法であって、
複数の節点とそれぞれが前記複数の節点のうちの３以上の節点によって区切られた領域を示す複数の要素とを含むモデルに対して算出された、前記複数の節点または要素それぞれに対応する第１の値を含む第１のデータを取得し、
直交する２以上の軸によって特定される複数のグリッド点を算出し、前記複数の節点または要素それぞれの位置と前記第１のデータに含まれる前記第１の値とに基づいて、前記複数のグリッド点のうちの少なくとも一部のグリッド点それぞれに対応する第２の値を算出し、前記第２の値を含む第２のデータを記憶装置に保存し、
前記記憶装置から前記第２のデータを読み出す場合に、前記少なくとも一部のグリッド点それぞれの位置と前記第２のデータに含まれる前記第２の値とに基づいて、前記複数の節点または要素それぞれに対応する前記第１の値を復元する、
有限要素演算方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は有限要素演算プログラム、有限要素演算装置および有限要素演算方法に関する。
【背景技術】
【０００２】
コンピュータの演算能力の向上に伴い、様々な物理現象に対してコンピュータを利用した数値解析が行われるようになっている。例えば、ある空間に磁石を配置したときの磁化ベクトルの空間分布を、コンピュータを利用した数値解析によってシミュレートすることが考えられる。数値解析法の１つとして、有限要素法が挙げられる。
【０００３】
有限要素法を用いることで、解析的に解くことが難しい微分方程式の近似解を数値的に求めることができる。有限要素法では、２次元または３次元の空間を「要素」と呼ばれる小領域に分割する。そして、要素毎に元の方程式を一次関数などの比較的単純な「補間関数」で近似することで、元の方程式の近似解を求める。コンピュータは、例えば、疎な係数行列を用いて大規模連立一次方程式を解くことで、当該近似解を求める。演算結果としての数値は、通常、要素または要素の頂点である「節点」に対応付けられる。
【０００４】
なお、建造物や機械部品などの構造物の最適な位相形状を、有限要素法を用いて決定する位相最適化システムが提案されている。この位相最適化システムは、外郭を形成する外辺の長さを１に正規化し、内郭を形成する内辺の長さを０、０．２、０．４、０．６、０．８、１．０の何れかに設定した、２１６通りの格子状の微子構造形状を生成する。位相最適化システムは、内辺の長さに応じた巨視的な応力−歪マトリクスを、ベジェ補間またはラグランジェ補間などの補間処理によって算出する。
【０００５】
また、インクジェットプリンタのインク射出を、四辺形メッシュモデルを用いた有限要素法解析によってシミュレートするシミュレーション方法が提案されている。このシミュレーション方法では、インクと空気の間のインタフェースについて、距離を再設定する方法として、ハイパーキュービック補間法、大域補間法または局部線形補間法を用いる。
【０００６】
また、金型などの物体の温度分布を、六面体メッシュを用いた有限要素法解析によって解析する熱解析装置が提案されている。この熱解析装置は、温度分布の解析中に、六面体メッシュによって表現された物体の中から熱勾配が大きい部位を判定する。熱解析装置は、熱勾配が大きい部位の六面体メッシュのサイズを小さくする。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００２−１８９７６０号公報
【特許文献２】特開２００７−２８０３９５号公報
【特許文献３】特開２００７−２９３３８２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
有限要素法の演算結果のフォーマットとして、要素または節点を識別する識別情報と算出した数値とを、節点毎または要素毎に対応付けて記録するフォーマットが考えられる。例えば、有限要素法を用いた磁場解析では、各要素または各節点における磁化ベクトルを、当該要素または当該節点の識別情報と対応付けて記録することが考えられる。
【０００９】
しかし、モデルに含まれる全ての要素または全ての節点について、その識別情報と数値とを対応付けて記録すると、演算結果のデータ量が膨大になってしまうという問題がある。例えば、一辺が１０００ｎｍの立方体の磁石を一辺が２ｎｍの要素に分割すると、５００×５００×５００＝１．２５億個の要素がモデル上に形成される。各要素について、整数で表した要素番号と浮動小数点で表した３次元の磁化ベクトルとを記録する場合、要素１つにつき約５０バイトのデータが生成される。よって、上記の磁場解析の結果データは、５０バイト×１．２５億個＝６．２５Ｇバイトに達するおそれがある。更に、異なる１００個のタイミングについて磁化ベクトルの時間変化を観測した場合、結果データは６．２５Ｇバイト×１００個＝６２５Ｇバイトに達するおそれがある。
【００１０】
一方で、物理現象の中には、周辺からの数値の変化（勾配）の小さい領域が大部分を占め、勾配の大きい領域は一部分に限られることが多いものがある。例えば、磁石の磁化反転過程の解析では、磁化ベクトルが一の方向に揃った第１の領域と、磁化ベクトルが第１の領域と逆方向に揃った第２の領域とが大部分を占め、勾配の大きい領域は第１・第２の領域の境界付近に限定された結果データが得られることがある。この場合、勾配の小さい領域について、数値を記録する間隔を広くしてデータ量を削減することも考えられる。
【００１１】
しかしながら、一般に有限要素法では、複数の要素または複数の節点は、直交座標系の点のように空間上に規則的に並んでいるとは限らない。また、複数の要素または複数の節点に対して付与される識別情報（例えば、非負整数の識別番号）は、直交座標系の座標のように規則的に並んでいるとは限らない。このため、複数の要素または複数の節点に対応する数値の中から単に一部の数値を削除する方法では、勾配の小さい領域の数値のみ適切に間引くことが難しく、結果データの圧縮が難しいという問題があった。
【００１２】
１つの側面では、本発明は、演算結果のデータ量を削減できる有限要素演算プログラム、有限要素演算装置および有限要素演算方法を提供することを目的とする。
【課題を解決するための手段】
【００１３】
１つの態様では、コンピュータに以下の処理を実行させる有限要素演算プログラムが提供される。複数の節点とそれぞれが複数の節点のうちの３以上の節点によって区切られた領域を示す複数の要素とを含むモデルに対して算出された、複数の節点または要素それぞれに対応する第１の値を含む第１のデータを取得する。直交する２以上の軸によって特定される複数のグリッド点を算出し、複数の節点または要素それぞれの位置と第１のデータに含まれる第１の値とに基づいて、複数のグリッド点のうちの少なくとも一部のグリッド点それぞれに対応する第２の値を算出し、第２の値を含む第２のデータを記憶装置に保存する。記憶装置から第２のデータを読み出す場合に、少なくとも一部のグリッド点それぞれの位置と第２のデータに含まれる第２の値とに基づいて、複数の節点または要素それぞれに対応する第１の値を復元する。
【００１４】
また、１つの態様では、記憶部と変換部とを有する有限要素演算装置が提供される。
また、１つの態様では、コンピュータが実行する有限要素演算方法が提供される。
【発明の効果】
【００１５】
１つの側面では、有限要素法の演算結果のデータ量を削減できる。
【図面の簡単な説明】
【００１６】
【図１】第１の実施の形態の有限要素演算装置を示す図である。
【図２】第２の実施の形態の情報処理システムを示す図である。
【図３】分析装置のハードウェア例を示すブロック図である。
【図４】有限要素法で用いるメッシュ構造の例を示す図である。
【図５】磁化ベクトルの分布例を示す図である。
【図６】グリッドの形成例を示す図である。
【図７】磁化ベクトルを記録するグリッド点の例を示す図である。
【図８】グリッドの形成例を示す他の図である。
【図９】磁化ベクトルの勾配の算出例を示す図である。
【図１０】グリッド点における磁化ベクトルの算出例を示す図である。
【図１１】データ復元時のグリッド点の補間例を示す図である。
【図１２】データ復元時のグリッド点の補間例を示す図（続き）である。
【図１３】有限要素法データの圧縮・復元の流れの例を示す図である。
【図１４】有限要素法データの圧縮・復元の流れの例を示す図（続き）である。
【図１５】モデル分割による並列処理の例を示す図である。
【図１６】分析装置とノードの機能例を示すブロック図である。
【図１７】節点データと要素データの例を示す図である。
【図１８】未圧縮の有限要素法データの例を示す図である。
【図１９】圧縮した有限要素法データの例を示す図である。
【図２０】データ圧縮の手順例を示すフローチャートである。
【図２１】データ復元の手順例を示すフローチャートである。
【図２２】グリッド点補間の手順例を示すフローチャートである。
【発明を実施するための形態】
【００１７】
以下、本実施の形態を図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態の有限要素演算装置を示す図である。
【００１８】
第１の実施の形態の有限要素演算装置１０は、有限要素法を用いた数値解析を行う。例えば、有限要素演算装置１０は、有限要素法を用いて磁場解析を行う。有限要素法を用いることで、数式的に解くのが難しい微分方程式の近似解を数値的に求めることができる。
【００１９】
有限要素演算装置１０は、２次元または３次元の空間を示すモデルを使用する。モデルは、複数の節点と複数の要素を含む。各要素は、３以上の節点によって区切られた小領域を示す。２次元のモデルを使用する場合、例えば、各要素は３つの節点によって区切られる三角形の小領域である。３次元のモデルを使用する場合、例えば、各要素は４つの節点によって区切られる四面体（三角形の面を４つ含む立体）の小領域である。
【００２０】
一例として、有限要素演算装置１０は、節点１３ａ〜１３ｆおよび要素１３ｇ〜１３ｋを含むモデルを使用する。要素１３ｇは、節点１３ａ，１３ｃ，１３ｄを頂点にもつ三角形の小領域である。要素１３ｈは、節点１３ａ，１３ｂ，１３ｄを頂点にもつ三角形の小領域である。要素１３ｉは、節点１３ｂ，１３ｄ，１３ｆを頂点にもつ三角形の小領域である。要素１３ｊは、節点１３ｃ，１３ｄ，１３ｅを頂点にもつ三角形の小領域である。要素１３ｋは、節点１３ｄ，１３ｅ，１３ｆを頂点にもつ三角形の小領域である。
【００２１】
有限要素演算装置１０は、要素毎に、元の方程式を一次関数などの比較的単純な補間関数で近似する。そして、有限要素演算装置１０は、節点または要素それぞれに対して、物理量を表す値を算出する。磁場解析の場合、例えば、有限要素演算装置１０は、節点または要素それぞれに対して、磁化ベクトルやポテンシャルなどを算出する。なお、要素に対応付けられる値は、例えば、要素の重心の位置における値を示す。
【００２２】
有限要素演算装置１０は、記憶部１１および変換部１２を有する。記憶部１１は、有限要素法の解析結果を示すデータを記憶する。記憶部１１は、ＲＡＭ（Random Access Memory）などの揮発性メモリでもよいし、ＨＤＤ（Hard Disk Drive）やフラッシュメモリなどの不揮発性の記憶装置でもよい。変換部１２は、有限要素法の解析結果のデータフォーマットを変換する。変換部１２は、ＣＰＵ（Central Processing Unit）やＤＳＰ（Digital Signal Processor）などのプロセッサでもよい。また、変換部１２は、ＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡ（Field Programmable Gate Array）などの特定用途の電子回路を含んでもよい。なお、プロセッサは、ＲＡＭなどのメモリに記憶された有限要素演算プログラムを実行する。複数のプロセッサの集合（マルチプロセッサ）を「プロセッサ」と呼ぶこともある。
【００２３】
ここで、変換部１２は、有限要素法の解析結果として、節点１３ａ〜１３ｆまたは要素１３ｇ〜１３ｋそれぞれに対応する値（磁場解析の場合、例えば、磁化ベクトルやポテンシャルなど）を含むデータ１３を取得する。図１の例では、データ１３は、節点１３ａ〜１３ｆそれぞれに対応する値を含む。データ１３は、例えば、節点１３ａ〜１３ｆの識別情報と節点１３ａ〜１３ｆにおける値とを対応付けている。
【００２４】
データ１３を取得すると、変換部１２は、直交する２以上の軸によって特定される複数のグリッド点（格子点）を算出する。２次元のモデルを使用している場合、変換部１２は、２次元の直交座標系のグリッド点を算出する。３次元のモデルを使用している場合、変換部１２は、３次元の直交座標系のグリッド点を算出する。一例として、変換部１２は、節点１３ａ〜１３ｆおよび要素１３ｇ〜１３ｋが存在する空間上において、２次元のグリッド点１４ａ〜１４ｆを算出する。ここで算出する単位領域当たりのグリッド点の数（グリッド点の密度）は、節点や要素よりも少なくてよい。
【００２５】
そして、変換部１２は、取得したデータ１３をデータ１４に変換し、データ１３に代えてデータ１４を記憶部１１に保存する。データ１４は、グリッド点１４ａ〜１４ｆのうちの少なくとも一部のグリッド点それぞれに対応する値（磁場解析の場合、例えば、磁化ベクトルやポテンシャルなど）を含む。データ１４は、節点１３ａ〜１３ｆまたは要素１３ｇ〜１３ｋそれぞれに対応する値を含まなくてよい。図１の例では、データ１４は、グリッド点１４ａ〜１４ｄに対応する値を含む。データ１４は、例えば、グリッド点１４ａ〜１４ｄの座標とグリッド点１４ａ〜１４ｄにおける値とを対応付けている。
【００２６】
グリッド点１４ａ〜１４ｄにおける値は、節点１３ａ〜１３ｆの位置とデータ１３に含まれる節点１３ａ〜１３ｆの値、または、要素１３ｇ〜１３ｋの位置とデータ１３に含まれる要素１３ｇ〜１３ｋの値に基づいて算出される。あるグリッド点における値は、その周辺の節点または要素に対応する値から推定することができる。例えば、グリッド点１４ｂが要素１３ｇに含まれている場合、グリッド点１４ｂにおける値は、要素１３ｇを囲む節点１３ａ，１３ｃ，１３ｄに対応付けられた値から推定することができる。
【００２７】
データ１４を生成するにあたり、変換部１２は、グリッド点１４ａ〜１４ｆのうち一部のグリッド点に対応する値を間引くこともできる。図１の例では、グリッド点１４ｅ，１４ｆの値がデータ１４から省略されている。特に、変換部１２は、値の勾配（磁場解析の場合、例えば、磁化ベクトルの勾配）が小さい要素に含まれるグリッド点について、その値を保存しないようにしてもよい。例えば、要素１３ｉにおける勾配が閾値よりも小さい場合、要素１３ｉに含まれるグリッド点１４ｅの値を間引くことが考えられる。
【００２８】
変換部１２は、記憶部１１からデータ１４を読み出す場合、データ１４からデータ１３を復元する。データ１３を復元するにあたり、変換部１２は、直交する２以上の軸によって特定されるグリッド点を算出する。データ１４において値が省略されているグリッド点が存在する場合、変換部１２は、周辺のグリッド点に対応する値を用いて、省略されたグリッド点の値を補間する。図１の例では、グリッド点１４ｅの値がデータ１４に含まれていない一方、グリッド点１４ｅに隣接するグリッド点１４ｂ，１４ｄの値がデータ１４に含まれている。この場合、変換部１２は、グリッド点１４ｅに対応する値を、グリッド点１４ｂ，１４ｄに対応する値を用いて補間する。
【００２９】
そして、変換部１２は、グリッド点１４ａ〜１４ｆの位置とその値（データ１４に含まれる値および補間された値を含む）に基づいて、節点１３ａ〜１３ｆまたは要素１３ｇ〜１３ｋの値を算出する。ある節点または要素における値は、その周辺にあるグリッド点に対応する値から推定することができる。例えば、節点１３ｄがグリッド点１４ｂ，１４ｃ，１４ｅ，１４ｆに囲まれている場合、節点１３ｄにおける値は、グリッド点１４ｂ，１４ｃ，１４ｅ，１４ｆに対応する値から推定することができる。
【００３０】
第１の実施の形態の有限要素演算装置１０によれば、節点または要素に対応する値を含むデータ１３が有限要素法の解析結果として生成されると、節点または要素の値に基づいて直交座標系のグリッド点の値が推定される。そして、データ１３がグリッド点に対応する値を含むデータ１４に変換され、データ１４が記憶部１１に保存される。解析結果を読み出す場合、グリッド点の値に基づいて節点または要素の値を推定することで、記憶部１１に保存されたデータ１４からデータ１３が復元される。
【００３１】
これにより、記憶部１１に保存する解析結果のデータ量を削減することができる。例えば、モデル上に生成するグリッド点の密度を、モデルに含まれる節点や要素よりも小さくすることで、値を保存する点を削減することができる。また、例えば、値の勾配が小さい（変化が小さい）領域に属するグリッド点については値を保存する間隔を大きくすることで、解析結果のデータを適切に圧縮することができる。
【００３２】
ここで、一般的に、有限要素法で使用するモデルに含まれる節点や要素は、直交座標系の点ように空間上に規則的に並んでいるとは限らない。また、節点や要素に対して付与される識別情報（例えば、非負整数の識別番号）は、直交座標系の座標のように規則的に並んでいるとは限らない。このため、節点または要素に対応する値の中から一部の値を直接削除しようとしても、適切に値を間引くことが難しい。これに対し、有限要素演算装置１０では、節点または要素に対応する値からグリッド点に対応する値が算出される。グリッド点に対応する値に変換することで、勾配が小さい領域の値を間引くことが容易になるなど、解析結果のデータを圧縮することが容易となる。
【００３３】
［第２の実施の形態］
図２は、第２の実施の形態の情報処理システムを示す図である。
第２の実施の形態の情報処理システムは、ノード２１〜２７および分析装置１００を有する。ノード２１〜２７および分析装置１００は、ネットワーク２０に接続されている。ネットワーク２０は、ＬＡＮ（Local Area Network）であってもよい。また、ネットワーク２０は、インターネットなどの広域ネットワークを含んでもよい。
【００３４】
ノード２１〜２７は、分析装置１００から指示された計算を並列に実行するサーバコンピュータである。ノード２１〜２７は、磁場解析などの大規模科学技術計算に用いることができる。以下の説明では、主に、磁石を空間に配置したときの磁化ベクトルの空間分布をシミュレートすることを想定する。ノード２１〜２７は、分析装置１００からプログラムファイルと入力データのファイルを受信し、ＨＤＤなどのローカルの記憶装置に保存する。ノード２１〜２７は、プログラムを実行し、計算結果を示す結果データのファイルをローカルの記憶装置に保存する。ノード２１〜２７は、分析装置１００からの要求に応じて、保存した結果データのファイルを分析装置１００に送信する。
【００３５】
分析装置１００は、ユーザからの要求に応じてノード２１〜２７を用いた並列計算を制御し、計算結果をユーザに提示するクライアントコンピュータまたはサーバコンピュータである。分析装置１００は、ユーザからプログラムファイルと入力データのファイルを取得する。すると、分析装置１００は、計算問題を並列実行可能な複数のサブ問題に分割し、サブ問題をノード２１〜２７に割り振る。例えば、分析装置１００は、磁場解析を行う空間モデルを複数の領域に分割し、分割した領域をノード２１〜２７に割り振る。
【００３６】
そして、分析装置１００は、プログラムファイルや入力データのファイルをノード２１〜２７に送信する。このとき、分析装置１００は、各ノードに割り振った担当範囲を示すパラメータを、ノード２１〜２７に送信してもよい。ノード２１〜２７の計算が終了すると、分析装置１００は、結果データのファイルをノード２１〜２７から受信しマージする。分析装置１００は、例えば、結果データを可視化してディスプレイに表示する。なお、小規模な問題については、ノード２１〜２７を用いず分析装置１００で計算してもよい。
【００３７】
図３は、分析装置のハードウェア例を示すブロック図である。
分析装置１００は、ＣＰＵ１０１、ＲＡＭ１０２、ＨＤＤ１０３、画像信号処理部１０４、入力信号処理部１０５、媒体リーダ１０６および通信インタフェース１０７を有する。上記のユニットは、それぞれバス１０８に接続されている。
【００３８】
ＣＰＵ１０１は、プログラムの命令を実行する演算回路を含むプロセッサである。ＣＰＵ１０１は、ＨＤＤ１０３に記憶されたプログラムやデータの少なくとも一部をＲＡＭ１０２にロードし、プログラムを実行する。なお、ＣＰＵ１０１は複数のプロセッサコアを備えてもよく、分析装置１００は複数のプロセッサを備えてもよく、以下で説明する処理を複数のプロセッサまたはプロセッサコアを用いて並列に実行してもよい。また、複数のプロセッサの集合（マルチプロセッサ）を「プロセッサ」と呼んでもよい。
【００３９】
ＲＡＭ１０２は、ＣＰＵ１０１が実行するプログラムやＣＰＵ１０１が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、分析装置１００は、ＲＡＭ以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【００４０】
ＨＤＤ１０３は、ＯＳ（Operating System）やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。プログラムには、有限要素演算プログラムが含まれる。なお、分析装置１００は、フラッシュメモリやＳＳＤ（Solid State Drive）などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【００４１】
画像信号処理部１０４は、ＣＰＵ１０１からの命令に従って、分析装置１００に接続されたディスプレイ１１１に画像を出力する。ディスプレイ１１１としては、ＣＲＴ（Cathode Ray Tube）ディスプレイ、液晶ディスプレイ（ＬＣＤ：Liquid Crystal Display）、プラズマディスプレイ（ＰＤＰ：Plasma Display Panel）、有機ＥＬ（ＯＥＬ：Organic Electro-Luminescence）ディスプレイなどを用いることができる。
【００４２】
入力信号処理部１０５は、分析装置１００に接続された入力デバイス１１２から入力信号を取得し、ＣＰＵ１０１に出力する。入力デバイス１１２としては、マウスやタッチパネルやタッチパッドやトラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、分析装置１００に、複数の種類の入力デバイスが接続されていてもよい。
【００４３】
媒体リーダ１０６は、記録媒体１１３に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体１１３として、例えば、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤなどの磁気ディスク、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）などの光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）、半導体メモリなどを使用できる。媒体リーダ１０６は、例えば、記録媒体１１３から読み取ったプログラムやデータをＲＡＭ１０２またはＨＤＤ１０３に格納する。
【００４４】
通信インタフェース１０７は、ネットワーク２０に接続され、ノード２１〜２７と通信を行う。通信インタフェース１０７は、スイッチなどの通信装置とケーブルで接続される有線通信インタフェースでもよいし、基地局またはアクセスポイントと無線リンクで接続される無線通信インタフェースでもよい。
【００４５】
ただし、分析装置１００は、媒体リーダ１０６を備えなくてもよく、サーバコンピュータである場合は画像信号処理部１０４や入力信号処理部１０５を備えなくてもよい。また、ディスプレイ１１１や入力デバイス１１２が、分析装置１００の筐体と一体に形成されてもよい。ノード２１〜２７も、分析装置１００と同様のハードウェアを用いて実現できる。なお、ＣＰＵ１０１は、第１の実施の形態の変換部１２の一例である。ＲＡＭ１０２またはＨＤＤ１０３は、第１の実施の形態の記憶部１１の一例である。
【００４６】
次に、有限要素法を用いた磁場解析について説明する。
図４は、有限要素法で用いるメッシュ構造の例を示す図である。
有限要素法では、複数の要素と複数の節点を含むモデルが使用される。要素は、解析対象の空間を分割した小領域である。節点は、要素の頂点に相当する。節点は、直交座標系のグリッド点のように規則的に並んでいなくてもよい。２次元のモデルを使用する場合、節点の位置は２次元の座標（Ｘ，Ｙ）によって特定される。要素は、３個の節点を互いに線分で結ぶことで形成される三角形の領域になる。３次元のモデルを使用する場合、節点の位置は３次元の座標（Ｘ，Ｙ，Ｚ）によって特定される。要素は、４個の節点を互いに線分で結ぶことで形成される四面体（三角刑の面を４つ含む立体）の領域になる。
【００４７】
各節点には、識別情報として非負整数の節点番号が付与される。また、各要素には、識別情報として非負整数の要素番号が付与される。有限要素法を用いて磁場解析を行うと、節点または要素に対して、その節点または要素の位置における磁化ベクトルやポテンシャルなどの値が算出される。要素の値は、その要素の重心位置における値を示す。第２の実施の形態では、主に、節点または要素に対して磁化ベクトルが算出される場合を考える。また、第２の実施の形態では、主に、３次元空間を四面体の要素に分割する場合を考える。ただし、以下では説明を簡単にするために、２次元空間の図を参照することがある。
【００４８】
一例として、図４に、節点３１ａ〜３１ｆと要素３２ａ〜３２ｅを含む２次元モデルの例を示している。要素３２ａ〜３２ｅは、三角形の領域である。要素３２ａは、節点３１ａ，３１ｂ，３１ｄを頂点にもつ。要素３２ｂは、節点３１ｂ，３１ｃ，３１ｄを頂点にもつ。すなわち、要素３２ｂは、要素３２ａと１つの辺を共有し、要素３２ａと隣接している。要素３２ｃは、節点３１ａ，３１ｄ，３１ｅを頂点にもち、要素３２ａと１つの辺を共有する。要素３２ｄは、節点３１ｃ，３１ｄ，３１ｆを頂点にもち、要素３２ｂと１つの辺を共有する。要素３２ｅは、節点３１ｄ，３１ｅ，３１ｆを頂点にもち、要素３２ｃと１つの辺を共有し、要素３２ｄと他の１つの辺を共有する。
【００４９】
図５は、磁化ベクトルの分布例を示す図である。
ここでは、各要素の重心位置における磁化ベクトルが算出された場合を考える。磁石を空間４０に配置したときの磁化ベクトルの分布は、勾配の小さい領域が大部分を占め、勾配の大きい領域は一部分に限られることが多い。すなわち、空間４０のうち、磁化ベクトルがほぼ一様に一の方向を向いている領域と、磁化ベクトルがほぼ一様にそれと逆の方向を向いている領域とが大部分を占め、磁化ベクトルの変化が大きい領域は上記２つの領域の境界付近に限られることが多い。図５の例では、領域４１ａでは磁化ベクトルがほぼ一様にＹ軸の負方向を向いており、領域４１ｃでは磁化ベクトルがほぼ一様にＹ軸の正方向を向いている。領域４１ａと領域４１ｃの間に位置する領域４１ｂでは、隣接する要素間で磁化ベクトルが大きく変化しており、勾配が大きくなっている。
【００５０】
ここで、要素に対して磁化ベクトルが算出された場合、磁場解析の結果データとして、要素番号と３次元の磁化ベクトルの組が要素の数だけ出力される。節点に対して磁化ベクトルが算出された場合、磁場解析の結果データとして、節点番号と３次元の磁化ベクトルの組が節点の数だけ出力される。この結果データをそのままファイルに保存すると、モデルに含まれる要素または節点の数に比例してファイルサイズが大きくなってしまう。例えば、一辺が１０００ｎｍの立方体の磁石を一辺が２ｎｍの要素に分割すると、５００×５００×５００＝１．２５億個の要素がモデル上に形成される。各要素について、要素番号と浮動小数点で表した３次元の磁化ベクトルとを記録する場合、要素１つにつき約５０バイトのデータが生成される。よって、磁場解析の結果データは、５０バイト×１．２５億個＝６．２５Ｇバイトに達するおそれがある。
【００５１】
これに対し、上記のように、磁化ベクトルの空間分布は、勾配が小さい領域が大部分を占めるという性質をもつ。そこで、第２の実施の形態では、勾配が小さい領域の磁化ベクトルを適切に間引くことで、結果データを圧縮してファイルに保存することとする。
【００５２】
ただし、モデル上の要素および節点は、直交座標系のグリッド点のように規則的に並んでいるとは限らない。また、要素番号や節点番号は、直交座標系の座標のように規則的に付与されているとは限らない。そのため、有限要素法の結果データから、勾配の小さい領域の磁化ベクトルの一部を直接削除することは容易でない。そこで、第２の実施の形態では、要素または節点の位置における磁化ベクトルを、直交座標系のグリッド点における磁化ベクトルに変換してから、結果データを圧縮することとする。ノード２１〜２７および分析装置１００は、有限要素法の結果データを圧縮してファイルに保存し、圧縮されたファイルから有限要素法の結果データを再現する機能を有する。
【００５３】
以下では、主に、分析装置１００が結果データの圧縮および復元を行う場合を考える。ノード２１〜２７も、同様の圧縮および復元を行うことができる。
図６は、グリッドの形成例を示す図である。
【００５４】
結果データを圧縮するにあたり、分析装置１００は、解析対象の空間に直交座標系のグリッド点を設定する。図６は、説明を簡単にするため、２次元領域にグリッド点を設定した例を示している。グリッド点は、細分化の程度に応じて複数の階層に分類される。
【００５５】
階層１について、分析装置１００は、直交する複数の軸（２次元の場合はＸ軸とＹ軸、３次元の場合はＸ軸とＹ軸とＺ軸）それぞれに対し、所定の間隔で２以上の分割点を設定する。軸毎に何れか１つの分割点を選択することで得られる点が、階層１のグリッド点になる。階層２について、分析装置１００は、直交する複数の軸それぞれに対し、階層１の半分の間隔で分割点を設定する。軸毎に何れか１つの分割点を選択することで得られる点のうち階層１のグリッド点を除いた点が、階層２のグリッド点になる。階層３について、分析装置１００は、直交する複数の軸それぞれに対し、階層２の更に半分の間隔で分割点を設定する。軸毎に何れか１つの分割点を選択することで得られる点のうち階層１，２のグリッド点を除いた点が、階層３のグリッド点になる。階層の深さを４以上にする場合、階層１〜３と同様にして階層４以下のグリッド点を求めることができる。
【００５６】
図６の例では、グリッド点４２ａ，４２ｂ，４２ｃが階層１のグリッド点である。グリッド点４２ｄ，４２ｅが階層２のグリッド点である。グリッド点４２ｄは、グリッド点４２ａとグリッド点４２ｂの中間に位置する。グリッド点４２ｅは、グリッド点４２ｂとグリッド点４２ｃの中間に位置する。グリッド点４２ｆ，４２ｇ，４２ｈ，４２ｉが階層３のグリッド点である。グリッド点４２ｆは、グリッド点４２ａとグリッド点４２ｄの中間に位置する。グリッド点４２ｇは、グリッド点４２ｄとグリッド点４２ｂの中間に位置する。グリッド点４２ｈは、グリッド点４２ｂとグリッド点４２ｅの中間に位置する。グリッド点４２ｉは、グリッド点４２ｅとグリッド点４２ｃの中間に位置する。
【００５７】
図７は、磁化ベクトルを記録するグリッド点の例を示す図である。
分析装置１００は、要素または節点の位置における磁化ベクトルを保存する代わりに、グリッド点における磁化ベクトルを保存する。このとき、分析装置１００は、勾配の小さい領域に属する一部のグリッド点について、磁化ベクトルの保存を省略する。
【００５８】
階層１のグリッド点については、分析装置１００は、勾配にかかわらず磁化ベクトルを保存する。階層２のグリッド点については、分析装置１００は、そのグリッド点を含む要素における勾配が階層２に対応する所定の閾値よりも大きい場合のみ、磁化ベクトルを保存する。よって、階層２のグリッド点の一部について、磁化ベクトルが保存されないことがある。階層３のグリッド点については、分析装置１００は、そのグリッド点を含む要素における勾配が階層３に対応する所定の閾値よりも大きい場合のみ、磁化ベクトルを保存する。よって、階層３のグリッド点の一部について、磁化ベクトルが保存されないことがある。階層３の閾値は、階層２の閾値よりも大きい値にする。よって、深い階層のグリッド点ほど、そのグリッド点に対応する磁化ベクトルが保存されにくくなる。
【００５９】
すなわち、磁化ベクトルの変化の小さい領域では、磁化ベクトルを保存するグリッド点が疎に選択される。磁化ベクトルの変化の大きい領域では、磁化ベクトルを保存するグリッド点が密に選択される。階層の深さを４以上にする場合、階層１〜３と同様にして階層４以下に対しても、１つ上の階層より大きい閾値を設定する。グリッド点における磁化ベクトルは、そのグリッド点を含む要素の磁化ベクトルと、要素の重心位置とグリッド点との距離に基づいて推定することができる。または、グリッド点における磁化ベクトルは、その周辺にある節点の磁化ベクトルに基づいて推定することができる。
【００６０】
図７の例では、階層１のグリッド点４２ａ，４２ｂ，４２ｃについては、その周辺の勾配にかかわらず磁化ベクトルが保存される。階層２のグリッド点４２ｄについては、その周辺の勾配がある程度大きいため磁化ベクトルが保存される。一方、階層２のグリッド点４２ｅについては、その周辺の勾配が十分に小さいため磁化ベクトルが保存されない。階層３のグリッド点４２ｇについては、その周辺の勾配が十分に大きいため磁化ベクトルが保存される。一方、階層３のグリッド点４２ｆ，４２ｈ，４２ｉについては、その周辺の勾配が十分に大きいとは言えないため磁化ベクトルが保存されない。
【００６１】
圧縮した結果データから元の有限要素法の結果データを復元する場合、分析装置１００は、磁化ベクトルが保存されていないグリッド点における磁化ベクトルを、周辺のグリッド点における磁化ベクトルを用いて補間する。全てのグリッド点の磁化ベクトルが特定されると、分析装置１００は、グリッド点と要素または節点との距離を考慮して、要素または節点の磁化ベクトルをその周辺のグリッド点の磁化ベクトルに基づいて推定する。これにより、要素または節点に対応する磁化ベクトルが復元される。
【００６２】
次に、結果データの圧縮および復元の際に行う計算の詳細について説明する。
図８は、グリッドの形成例を示す他の図である。
上記の通り、分析装置１００は、結果データを圧縮するとき、解析対象が存在する空間にグリッド点を設定する。分析装置１００は、グリッド点を設定する直方体の領域を設定し、Ｘ軸のサイズＳｘ、Ｙ軸のサイズＳｙ、Ｚ軸のサイズＳｚを算出する。サイズＳｘ，Ｓｙ，Ｓｚは、モデル上に元々設定された座標系における距離であり、グリッド点に対して新たに付与される座標に基づく距離（グリッド点間のホップ数）とは異なる。
【００６３】
また、分析装置１００は、階層１について、Ｘ軸の分割数ｎｘ１、Ｙ軸の分割数ｎｙ１、Ｚ軸の分割数ｎｚ１を決定する。分割数ｎｘ１，ｎｙ１，ｎｚ１は、ユーザによって指定されてもよいし、サイズＳｘ，Ｓｙ，Ｓｚに応じて分析装置１００が算出してもよい。直方体のＸ軸の辺は、階層１において、ｎｘ１＋１個の分割点によってｎｘ１個の区間に分割されることになる。直方体のＹ軸の辺は、階層１において、ｎｙ１＋１個の分割点によってｎｙ１個の区間に分割されることになる。直方体のＺ軸の辺は、階層１において、ｎｚ１＋１個の分割点によってｎｚ１個の区間に分割されることになる。階層１の分割点が決まると、前述の方法によって階層２以下の分割点も自動的に決まる。
【００６４】
また、分析装置１００は、グリッド点の最大階層Ｎｄを決定する。最大階層Ｎｄは、ユーザによって指定されてもよいし、サイズＳｘ，Ｓｙ，Ｓｚに応じて分析装置１００が算出してもよい。分析装置１００は、Ｘ軸、Ｙ軸、Ｚ軸それぞれについて、階層１から階層Ｎｄまでの各階層の分割点を決定する。最大階層Ｎｄについて、Ｘ軸の分割数はｎｘ１×２Nd-1、Ｙ軸の分割数はｎｙ１×２Nd-1、Ｚ軸の分割数はｎｚ１×２Nd-1となる。また、最大階層Ｎｄについて、Ｘ軸の分割点はｎｘ＝ｎｘ１×２Nd-1＋１個、Ｙ軸の分割点はｎｙ＝ｎｙ１×２Nd-1＋１個、Ｚ軸の分割点はｎｚ＝ｎｚ１×２Nd-1＋１個存在することになる。これにより、階層１から階層Ｎｄまでの各階層のグリッド点が決まる。
【００６５】
グリッド点に対しては、モデル上に元々設定された座標系の空間座標とは異なるグリッド座標が付与される。グリッド座標は、原点を（０，０，０）とする非負整数の３次元座標であり、原点からのホップ数を意味する。グリッド座標の原点（０，０，０）に対応する空間座標を、最小点（ｘ０，ｙ０，ｚ０）とする。グリッド座標（Ｘｎ，Ｙｎ，Ｚｎ）と空間座標（Ｘｃ，Ｙｃ，Ｚｃ）との対応関係は、式（１）によって算出される。
【００６６】
【数１】
0006380051.tif 000002
【００６７】
次に、勾配と任意の点における磁化ベクトルの算出方法について説明する。
図９は、磁化ベクトルの勾配の算出例を示す図である。
ここでは、節点３３ａ〜３３ｆと要素３４ａ〜３４ｄを含むモデルを考える。要素３４ａは、節点３３ａ，３３ｂ，３３ｃを頂点にもつ。要素３４ｂは、節点３３ａ，３３ｂ，３３ｄを頂点にもつ。要素３４ｃは、節点３３ｂ，３３ｃ，３３ｅを頂点にもつ。要素３４ｄは、節点３３ａ，３３ｃ，３３ｆを頂点にもつ。すなわち、要素３４ａは、要素３４ｂ，３４ｃ，３４ｄと隣接している。なお、要素３４ａ〜３４ｄが配置される空間は３次元であるが、要素３４ａと隣接する要素は３つであるとする。
【００６８】
有限要素法によって、要素３４ａ〜３４ｄに対して磁化ベクトルが算出される場合（図９（Ａ））と、節点３３ａ〜３３ｆに対して磁化ベクトルが算出される場合（図９（Ｂ））とがある。要素３４ａ〜３４ｄの磁化ベクトルとは、その重心位置における磁化ベクトルである。ある要素の重心の座標は、その要素の頂点の座標の平均に相当する。よって、要素３４ａの重心の座標は、節点３３ａ，３３ｂ，３３ｃの座標の平均に相当する。要素３４ｂの重心の座標は、節点３３ａ，３３ｂ，３３ｄの座標の平均に相当する。要素３４ｃの重心の座標は、節点３３ｂ，３３ｃ，３３ｅの座標の平均に相当する。要素３４ｄの重心の座標は、節点３３ａ，３３ｃ，３３ｆの座標の平均に相当する。
【００６９】
要素３４ａ〜３４ｄに対して磁化ベクトルが算出された場合、要素３４ａにおける磁化ベクトルの勾配のＸ成分、Ｙ成分、Ｚ成分は、式（２）によって算出できる。式（２）において、∇ｍxは勾配のＸ成分、∇ｍyは勾配のＹ成分、∇ｍzは勾配のＺ成分である。
【００７０】
ｍx,0は要素３４ａの磁化ベクトルのＸ成分、ｍy,0は要素３４ａの磁化ベクトルのＹ成分、ｍz,0は要素３４ａの磁化ベクトルのＺ成分である。ｍx,1は要素３４ｂの磁化ベクトルのＸ成分、ｍy,1は要素３４ｂの磁化ベクトルのＹ成分、ｍz,1は要素３４ｂの磁化ベクトルのＺ成分である。ｍx,2は要素３４ｃの磁化ベクトルのＸ成分、ｍy,2は要素３４ｃの磁化ベクトルのＹ成分、ｍz,2は要素３４ｃの磁化ベクトルのＺ成分である。ｍx,3は要素３４ｄの磁化ベクトルのＸ成分、ｍy,3は要素３４ｄの磁化ベクトルのＹ成分、ｍz,3は要素３４ｄの磁化ベクトルのＺ成分である。Ｖは要素３４ａの体積である。Ｓ1は要素３４ａ，３４ｂの間の断面の法線ベクトル、Ｓ2は要素３４ａ，３４ｃの間の断面の法線ベクトル、Ｓ3は要素３４ａ，３４ｄの間の断面の法線ベクトルである。
【００７１】
【数２】
0006380051.tif 000003
【００７２】
そして、要素３４ａにおける磁化ベクトルの勾配は、式（３）によって算出できる。式（３）において、｜∇ｍ｜は要素３４ａの勾配である。Ｓx,1は要素３４ａと要素３４ｂの間の断面の法線ベクトルのＸ成分、Ｓy,1はそのＹ成分、Ｓz,1はそのＺ成分である。Ｓx,2は要素３４ａと要素３４ｃの間の断面の法線ベクトルのＸ成分、Ｓy,2はそのＹ成分、Ｓz,2はそのＺ成分である。Ｓx,3は要素３４ａと要素３４ｄの間の断面の法線ベクトルのＸ成分、Ｓy,3はそのＹ成分、Ｓz,3はそのＺ成分である。
【００７３】
【数３】
0006380051.tif 000004
【００７４】
節点３３ａ〜３３ｆに対して磁化ベクトルが算出された場合、要素３４ａの磁化ベクトルは、式（４）によって算出される。式（４）において、ｍは要素３４ａの重心位置の磁化ベクトルである。ｍ1は節点３３ａの磁化ベクトル、ｍ2は節点３３ｂの磁化ベクトル、ｍ3は節点３３ｃの磁化ベクトルである。Ｎは３次元座標を引数とする補間関数であり、各節点の磁化ベクトルの重みを示す。Ｎ1は節点３３ａに対する補間関数、Ｎ2は節点３３ｂに対する補間関数、Ｎ3は節点３３ｃに対する補間関数である。
【００７５】
【数４】
0006380051.tif 000005
【００７６】
そして、要素３４ａにおける磁化ベクトルの勾配は、式（５）によって算出できる。式（５）において、｜∇ｍ｜は要素３４ａの勾配である。ｍx,1は節点３３ａの磁化ベクトルのＸ成分、ｍy,1は節点３３ａの磁化ベクトルのＹ成分、ｍz,1は節点３３ａの磁化ベクトルのＺ成分である。ｍx,2は節点３３ｂの磁化ベクトルのＸ成分、ｍy,2は節点３３ｂの磁化ベクトルのＹ成分、ｍz,2は節点３３ｂの磁化ベクトルのＺ成分である。ｍx,3は節点３３ｃの磁化ベクトルのＸ成分、ｍy,3は節点３３ｃの磁化ベクトルのＹ成分、ｍz,3は節点３３ｃの磁化ベクトルのＺ成分である。
【００７７】
【数５】
0006380051.tif 000006
【００７８】
図１０は、グリッド点における磁化ベクトルの算出例を示す図である。
ここでは、節点３３ａ，３３ｂ，３３ｃを頂点にもつ要素３４ａの中に、グリッド点４３が含まれている場合を考える。上記の通り、有限要素法によって、要素３４ａに対して磁化ベクトルが算出される場合（図１０（Ａ））と、節点３３ａ，３３ｂ，３３ｃに対して磁化ベクトルが算出される場合（図１０（Ｂ））とがある。
【００７９】
要素３４ａに対して磁化ベクトルが算出された場合、グリッド点４３における磁化ベクトルは、式（６）によって算出できる。式（６）において、ｍ（ｘ，ｙ，ｚ）はグリッド点４３の磁化ベクトルである。ｍ0は要素３４ａの重心位置における磁化ベクトルである。ｄｒは重心からグリッド点４３へのベクトルである。∇ｍは要素３４ａにおける磁化ベクトルの勾配であり、上記の式（２）や式（３）などに基づいて算出される。
【００８０】
【数６】
0006380051.tif 000007
【００８１】
節点３３ａ，３３ｂ，３３ｃに対して磁化ベクトルが算出された場合、グリッド点４３における磁化ベクトルは、式（７）によって算出できる。式（７）において、ｍ（ｘ，ｙ，ｚ）はグリッド点４３の磁化ベクトルである。座標（ｘ，ｙ，ｚ）は、グリッド点４３の位置を示す。ｍ1は節点３３ａの磁化ベクトル、ｍ2は節点３３ｂの磁化ベクトル、ｍ3は節点３３ｃの磁化ベクトルである。Ｎ1は節点３３ａに対する補間関数、Ｎ2は節点３３ｂに対する補間関数、Ｎ3は節点３３ｃに対する補間関数である。
【００８２】
【数７】
0006380051.tif 000008
【００８３】
次に、図７のように一部のグリッド点の磁化ベクトルが間引かれた結果データから、全てのグリッド点の磁化ベクトルを推定する補間処理について説明する。
図１１は、データ復元時のグリッド点の補間例を示す図である。
【００８４】
あるグリッド点の磁化ベクトルが、圧縮された結果データに含まれておらず未知である場合、分析装置１００は、その周辺のグリッド点の磁化ベクトルから当該グリッド点の磁化ベクトルを補間する。補間処理は、以下の４つの規則に従う。
【００８５】
（１）分析装置１００は、磁化ベクトルが未知である一のグリッド点から、各軸（Ｘ軸・Ｙ軸・Ｚ軸）の正負方向にそれぞれ、磁化ベクトルが既知である高々１つの近傍グリッド点を探す。分析装置１００は、全ての近傍グリッド点の中で距離最小の１または２以上の近傍グリッド点を探す。全ての軸が距離最小の近傍グリッド点をもち、かつ、全ての軸が正負両方向に近傍グリッド点をもつ場合、分析装置１００は、軸毎に正負方向の近傍グリッド点の磁化ベクトルを用いて、上記一のグリッド点の磁化ベクトルを補間する。正方向と負方向とで近傍グリッド点の距離が異なる場合、距離に応じて重み付けする。そして、分析装置１００は、全ての軸の補間値を平均化する。
【００８６】
（２）一部の軸のみが距離最小の近傍グリッド点をもち、かつ、当該一部の軸が正負両方向に近傍グリッド点をもつ場合、分析装置１００は、当該一部の軸毎に正負方向の近傍グリッド点の磁化ベクトルを用いて、上記一のグリッド点の磁化ベクトルを補間する。正方向と負方向とで近傍グリッド点の距離が異なる場合、距離に応じて重み付けする。上記一部の軸が複数ある場合、分析装置１００は、複数の補間値を平均化する。
【００８７】
（３）全ての軸が正負の何れか一方向にのみ近傍グリッド点をもつ場合、分析装置１００は、近傍グリッド点における磁化ベクトルを平均化する。
（４）一部の軸が正負の何れか一方向にのみ近傍グリッド点をもち、他の軸が正負両方向に近傍グリッド点をもつ場合、分析装置１００は、当該他の軸毎に正負方向の近傍グリッド点の磁化ベクトルを用いて、上記一のグリッド点の磁化ベクトルを補間する。正方向と負方向とで近傍グリッド点の距離が異なる場合、距離に応じて重み付けする。上記他の軸が複数ある場合、分析装置１００は、複数の軸の補間値を平均化する。ただし、上記一部の軸が上記他の軸の何れの近傍グリッド点よりも近い近傍グリッド点をもつ場合、分析装置１００は、上記一部の軸の近傍グリッド点における磁化ベクトルを補間値とする。上記一部の軸が複数ある場合、分析装置１００は、複数の補間値を平均化する。
【００８８】
一例として、２次元のモデル上にグリッド点４３ａ〜４３ｇが形成される場合を考える。グリッド点４３ａのグリッド座標は（ｉ，ｊ）である。グリッド点４３ｂのグリッド座標は（ｉ，ｊ＋１）、グリッド点４３ｃのグリッド座標は（ｉ，ｊ−１）である。グリッド点４３ｄのグリッド座標は（ｉ−１，ｊ）、グリッド点４３ｅのグリッド座標は（ｉ＋１，ｊ）、グリッド点４３ｆのグリッド座標は（ｉ−２，ｊ）、グリッド点４３ｇのグリッド座標は（ｉ＋２，ｊ）である。グリッド点４３ａの磁化ベクトルが未知であるため、分析装置１００は、グリッド点４３ａの磁化ベクトルを補間する。
【００８９】
グリッド点４３ｂ，４３ｃ，４３ｄ，４３ｅの磁化ベクトルが既知である場合（図１１（Ａ））、グリッド点４３ａから見た距離最小の近傍グリッド点はグリッド点４３ｂ，４３ｃ，４３ｄ，４３ｅである。この場合、Ｘ軸・Ｙ軸が距離最小の近傍グリッド点をもち、かつ、Ｘ軸・Ｙ軸が正負両方向に近傍グリッド点をもつことになる。よって、上記の規則１に従って、グリッド点４３ａの磁化ベクトルｍi,jは、グリッド点４３ｂ，４３ｃ，４３ｄ，４３ｅの磁化ベクトルを用いて補間される。
【００９０】
グリッド点４３ａの磁化ベクトルｍi,jは、式（８）によって算出できる。すなわち、分析装置１００は、Ｘ軸についてグリッド点４３ｄ，４３ｅの磁化ベクトルの平均を補間値とし、Ｙ軸についてグリッド点４３ｂ，４３ｃの磁化ベクトルの平均を補間値とする。そして、分析装置１００は、Ｘ軸の補間値とＹ軸の補間値を平均化する。
【００９１】
【数８】
0006380051.tif 000009
【００９２】
グリッド点４３ｂ，４３ｃ，４３ｄ，４３ｇの磁化ベクトルが既知である場合（図１１（Ｂ））、グリッド点４３ａから見た距離最小の近傍グリッド点はグリッド点４３ｂ，４３ｃ，４３ｄである。この場合、Ｘ軸・Ｙ軸が距離最小の近傍グリッド点をもち、かつ、Ｘ軸・Ｙ軸が正負両方向に近傍グリッド点をもつことになる。よって、上記の規則１に従って、グリッド点４３ａの磁化ベクトルｍi,jは、グリッド点４３ｂ，４３ｃ，４３ｄ，４３ｇの磁化ベクトルを用いて補間される。
【００９３】
グリッド点４３ａの磁化ベクトルｍi,jは、式（９）によって算出できる。すなわち、分析装置１００は、Ｘ軸について、グリッド点４３ｄ，４３ｇの磁化ベクトルの加重平均を補間値とする。重みは、距離が小さいほど大きい値となる。式（９）では、グリッド点４３ｄの距離とグリッド点４３ｇの距離の比が１：２であるため、グリッド点４３ｄの磁化ベクトルの重みとグリッド点４３ｇの磁化ベクトルの重みの比を２：１としている。また、分析装置１００は、Ｙ軸についてグリッド点４３ｂ，４３ｃの磁化ベクトルの平均を補間値とする。そして、分析装置１００は、Ｘ軸の補間値とＹ軸の補間値を平均化する。
【００９４】
【数９】
0006380051.tif 000010
【００９５】
グリッド点４３ｂ，４３ｃ，４３ｆ，４３ｇの磁化ベクトルが既知である場合（図１１（Ｃ））、グリッド点４３ａから見た距離最小の近傍グリッド点はグリッド点４３ｂ，４３ｃである。この場合、Ｘ軸・Ｙ軸のうちＹ軸のみが距離最小の近傍グリッド点をもち、かつ、Ｙ軸が正負両方向に近傍グリッド点をもつことになる。よって、上記の規則２に従って、グリッド点４３ａの磁化ベクトルｍi,jは、グリッド点４３ｂ，４３ｃの磁化ベクトルを用いて補間される。グリッド点４３ａの磁化ベクトルｍi,jは、式（１０）によって算出できる。グリッド点４３ｂ，４３ｃの磁化ベクトルの平均が補間値となる。
【００９６】
【数１０】
0006380051.tif 000011
【００９７】
図１２は、データ復元時のグリッド点の補間例を示す図（続き）である。
グリッド点４３ｂ，４３ｄの磁化ベクトルが既知である場合（図１２（Ｄ））、グリッド点４３ａから見た距離最小の近傍グリッド点はグリッド点４３ｂ，４３ｄである。この場合、Ｘ軸・Ｙ軸が距離最小の近傍グリッド点をもつものの、Ｘ軸・Ｙ軸はそれぞれ正方向にのみ近傍グリッド点をもつ。よって、上記の規則３に従って、グリッド点４３ａの磁化ベクトルｍi,jは、グリッド点４３ｂ，４３ｄの磁化ベクトルを用いて補間される。グリッド点４３ａの磁化ベクトルｍi,jは、式（１１）によって算出できる。すなわち、分析装置１００は、グリッド点４３ｂ，４３ｄの磁化ベクトルの平均を補間値とする。
【００９８】
【数１１】
0006380051.tif 000012
【００９９】
グリッド点４３ｂ，４３ｄ，４３ｇの磁化ベクトルが既知である場合（図１２（Ｅ））、グリッド点４３ａから見た距離最小の近傍グリッド点はグリッド点４３ｂ，４３ｄである。この場合、Ｘ軸・Ｙ軸が距離最小の近傍グリッド点をもち、Ｘ軸が正負両方向に近傍グリッド点をもち、かつ、Ｙ軸が正方向にのみ近傍グリッド点をもつことになる。よって、上記の規則４に従って、グリッド点４３ａの磁化ベクトルｍi,jは、グリッド点４３ｄ，４３ｇの磁化ベクトルを用いて補間される。グリッド点４３ａの磁化ベクトルｍi,jは、式（１２）によって算出できる。すなわち、分析装置１００は、グリッド点４３ｄ，４３ｇの磁化ベクトルの加重平均を補間値とする。
【０１００】
【数１２】
0006380051.tif 000013
【０１０１】
全てのグリッド点の磁化ベクトルが得られると、分析装置１００は、ラグランジェ補間により、グリッド点の磁化ベクトルを用いて要素または節点の磁化ベクトルを算出する。
２次元モデルにおける要素の磁化ベクトルは、その要素の重心を囲む長方形のグリッドの頂点にある４つのグリッド点の磁化ベクトルから算出される。２次元モデルにおける節点の磁化ベクトルは、その節点を囲む長方形のグリッドの頂点にある４つのグリッド点の磁化ベクトルから算出される。３次元モデルにおける要素の磁化ベクトルは、その要素の重心を囲む直方体のグリッドの頂点にある８つのグリッド点の磁化ベクトルから算出される。３次元モデルにおける節点の磁化ベクトルは、その節点を囲む直方体のグリッドの頂点にある８つのグリッド点の磁化ベクトルから算出される。
【０１０２】
３次元モデルにおける要素または節点の磁化ベクトルは、式（１３）によって算出できる。式（１３）において、（ｘ，ｙ，ｚ）は要素の重心または節点の位置を示す空間座標であり、ｍ（ｘ，ｙ，ｚ）はその位置における磁化ベクトルである。（ｘi，ｙi，ｚi）は要素の重心または節点を含む直方体グリッドの頂点にあるグリッド点の空間座標であり、ｍiはその位置における磁化ベクトルである。ＤｘはＸ軸のグリッド点間距離、ＤｙはＹ軸のグリッド点間距離、ＤｚはＺ軸のグリッド点間距離である。ξiは、ｘi−ｘの符号を調整する符号変数であり、ｘi−ｘが非負のときは１、ｘi−ｘが負のときは−１をとる。ηiは、ｙi−ｙの符号を調整する符号変数であり、ｙi−ｙが非負のときは１、ｙi−ｙが負のときは−１をとる。ζiは、ｚi−ｚの符号を調整する符号変数であり、ｚi−ｚが非負のときは１、ｚi−ｚが負のときは−１をとる。
【０１０３】
【数１３】
0006380051.tif 000014
【０１０４】
次に、有限要素法の結果データの圧縮と復元の流れについて説明する。
図１３は、有限要素法データの圧縮・復元の流れの例を示す図である。
ここでは、図４に示したように、節点３１ａ〜３１ｆと要素３２ａ〜３２ｅを含む２次元モデルを考える。有限要素法を用いた磁場解析によって、節点３１ａ〜３１ｆに対して磁化ベクトルが算出されたとする。すると、分析装置１００は、この２次元モデル上に直交座標系のグリッド点を設定する（図１３（Ａ））。一例として、要素３２ａ内にグリッド点４４ａが設定され、要素３２ｂ内にグリッド点４４ｂが設定され、要素３２ｃ内にグリッド点４４ｃが設定され、要素３２ｅ内にグリッド点４４ｄが設定される。グリッド点は、その間隔に応じて複数の階層（階層１、階層２、階層３など）に分類される。
【０１０５】
分析装置１００は、要素３２ａ〜３２ｅのうちグリッド点を含む要素３２ａ，３２ｂ，３２ｃ，３２ｅについて、磁化ベクトルの勾配を算出する。あるグリッド点を含む要素の勾配が、そのグリッド点の階層に応じた閾値より大きい場合、そのグリッド点の磁化ベクトルが保存される。一方、あるグリッド点を含む要素の勾配が閾値以下である場合、そのグリッド点の磁化ベクトルは保存されない（図１３（Ｂ））。
【０１０６】
一例として、分析装置１００は、節点３１ａ，３１ｂ，３１ｄの磁化ベクトルから要素３２ａの勾配を算出する。算出した勾配が閾値より大きい場合、分析装置１００は、節点３１ａ，３１ｂ，３１ｄの磁化ベクトルからグリッド点４４ａの磁化ベクトルを算出する。また、分析装置１００は、節点３１ｂ，３１ｃ，３１ｄの磁化ベクトルから要素３２ｂの勾配を算出する。算出した勾配が閾値より大きい場合、分析装置１００は、節点３１ｂ，３１ｃ，３１ｄの磁化ベクトルからグリッド点４４ｂの磁化ベクトルを算出する。
【０１０７】
また、分析装置１００は、節点３１ａ，３１ｄ，３１ｅの磁化ベクトルから要素３２ｃの勾配を算出する。算出した勾配が閾値以下である場合、分析装置１００は、グリッド点４４ｃの磁化ベクトルを算出しなくてよい。また、分析装置１００は、節点３１ｄ，３１ｅ，３１ｆの磁化ベクトルから要素３２ｅの勾配を算出する。算出した勾配が閾値より大きい場合、分析装置１００は、節点３１ｄ，３１ｅ，３１ｆの磁化ベクトルからグリッド点４４ｄの磁化ベクトルを算出する。これにより、グリッド点４４ａ，４４ｂ，４４ｄを含みグリッド点４４ｃを含まない複数のグリッド点の磁化ベクトルが保存される。
【０１０８】
図１４は、有限要素法データの圧縮・復元の流れの例を示す図（続き）である。
上記のように圧縮された結果データを読み出す場合、分析装置１００は、２次元モデル上に直交座標系のグリッド点を設定する。分析装置１００は、設定したグリッド点の中から、磁化ベクトルが保存されていない空のグリッド点を検出する。すると、分析装置１００は、保存されている磁化ベクトルを用いて、空のグリッド点の磁化ベクトルを補間する（図１４（Ｃ））。一例として、グリッド点４４ｃの磁化ベクトルが保存されていない場合、分析装置１００は、グリッド点４４ａ，４４ｄなどの近傍グリッド点の磁化ベクトルを用いて、グリッド点４４ｃの磁化ベクトルを補間する。
【０１０９】
全てのグリッド点の磁化ベクトルが得られると、分析装置１００は、それらグリッド点の磁化ベクトルを用いて節点３１ａ〜３１ｆの磁化ベクトルを復元する。ある節点の磁化ベクトルは、その節点を含む長方形グリッドの頂点にあるグリッド点の磁化ベクトルを用いて、ラグランジェ補間法により算出することができる（図１４（Ｄ））。一例として、分析装置１００は、グリッド点４４ａ，４４ｂ，４４ｃ，４４ｄの磁化ベクトルを用いて、節点３１ｄの磁化ベクトルを算出する。これにより、元の結果データが復元される。
【０１１０】
図１５は、モデル分割による並列処理の例を示す図である。
ノード２１〜２７を用いて磁場解析を並列化する場合、分析装置１００は、１つの大きなモデルを複数の領域に分割してノード２１〜２７に割り振る。空間座標の座標系は、モデル全体に対して１つ設定される。図１５の例では、モデルが領域１〜７に分割されている。分析装置１００は、領域１をノード２１に割り当て、領域２をノード２２に割り当て、領域３をノード２３に割り当て、領域４をノード２４に割り当て、領域５をノード２５に割り当て、領域６をノード２６に割り当て、領域７をノード２７に割り当てる。
【０１１１】
モデルに含まれる要素および節点の情報と領域割り当ての情報とは、分析装置１００からノード２１〜２７に送信される。ノード２１〜２７は、並列に、割り当てられた領域に対して有限要素法を用いた磁場解析を行う。これにより、ノード２１〜２７では、割り当てられた領域の磁化ベクトルの分布、すなわち、当該領域に含まれる要素または節点毎の磁化ベクトルが算出される。例えば、ノード２１は領域１の磁化ベクトルの分布を算出し、これと並列に、ノード２２は領域２の磁化ベクトルの分布を算出する。
【０１１２】
ノード２１〜２７は、有限要素法の結果データをそれぞれローカルの記憶装置（例えば、ＨＤＤ）に保存する。このとき、ノード２１〜２７は、結果データを圧縮する。結果データの圧縮にあたり、ノード２１〜２７は、モデル全体に対して共通のグリッド座標の座標系を設定する。同一のモデルに対して同じ算出アルゴリズムを適用することで、共通の座標系を設定できる。ノード２１〜２７は、共通のグリッド座標の座標系に基づいて、割り当てられた領域に含まれるグリッド点を算出し、少なくとも一部のグリッド点それぞれにおける磁化ベクトルを算出して保存する。例えば、ノード２１は、モデル全体が収容されるグリッド座標の座標系を設定し、領域１に含まれるグリッド点における磁化ベクトルを算出する。また、ノード２２は、ノード２１と共通のグリッド座標の座標系を設定し、領域２に含まれるグリッド点における磁化ベクトルを算出する。
【０１１３】
ノード２１〜２７の処理が終了すると、分析装置１００は、ノード２１〜２７から結果データを収集する。例えば、分析装置１００は、ノード２１にアクセスし、ノード２１のローカルの記憶装置に保存された領域１についての結果データを、ノード２１から受信する。また、分析装置１００は、ノード２２にアクセスし、ノード２２のローカルの記憶装置に保存された領域２についての結果データを、ノード２２から受信する。ノード２１〜２７から分析装置１００に送信される結果データは、圧縮されている。
【０１１４】
分析装置１００は、ノード２１〜２７から圧縮された結果データを受信すると、受信した結果データをマージする。このとき、圧縮に用いられたグリッド座標の座標系はノード２１〜２７の間で共通であるため、座標系の変換などを行わなくてもノード２１〜２７の結果データをマージできる。分析装置１００は、例えば、マージされた結果データを、圧縮された状態でＨＤＤ１０３に保存する。また、分析装置１００は、例えば、マージされた結果データから有限要素法の元の結果データ（要素毎または節点毎の磁化ベクトル）を復元し、磁化ベクトルの分布を表示する。ただし、分析装置１００は、ノード２１〜２７から受信した圧縮された結果データを、マージせずに別々のファイルとしてＨＤＤ１０３に保存してもよい。また、分析装置１００は、圧縮された結果データをマージせず、有限要素法の元の結果データに復元してからマージしてもよい。
【０１１５】
次に、分析装置１００およびノード２１〜２７の機能について説明する。
図１６は、分析装置とノードの機能例を示すブロック図である。
ノード２１は、データ記憶部２１ａ、データ入出力部２１ｂ、通信部２１ｅおよびシミュレーション部２１ｆを有する。データ記憶部２１ａは、ノード２１が備えるＨＤＤなどの記憶装置の記憶領域として実現できる。データ入出力部２１ｂ、通信部２１ｅおよびシミュレーション部２１ｆは、ノード２１が備えるＣＰＵが実行するプログラムのモジュールとして実現できる。ノード２２〜２７も、ノード２１と同様のモジュールを有する。
【０１１６】
データ記憶部２１ａは、有限要素法による数値解析の結果データを記憶する。データ記憶部２１ａに記憶される結果データは、前述の方法によって圧縮されている。すなわち、要素または節点における磁化ベクトルを保存する代わりに、直交座標系のグリッド点における磁化ベクトルを保存する。また、一部のグリッド点の磁化ベクトルを間引く。
【０１１７】
データ入出力部２１ｂは、シミュレーション部２１ｆからの要求に応じて、データ記憶部２１ａに結果データを保存し、また、データ記憶部２１ａから結果データを読み出す。データ入出力部２１ｂは、データ圧縮部２１ｃおよびデータ復元部２１ｄを有する。
【０１１８】
データ圧縮部２１ｃは、シミュレーション部２１ｆから未圧縮の結果データを取得し、結果データを圧縮する。このとき、データ圧縮部２１ｃは、モデル全体に対応する直交座標系を設定し、モデルのうちノード２１に割り当てられた領域に含まれるグリッド点を算出する。データ圧縮部２１ｃは、勾配の大きいグリッド点を選択し、選択したグリッド点を含む要素の磁化ベクトルまたはその周辺の節点の磁化ベクトルに基づいて、当該選択したグリッド点における磁化ベクトルを算出する。そして、データ圧縮部２１ｃは、圧縮した結果データを含むファイルをデータ記憶部２１ａに格納する。
【０１１９】
データ復元部２１ｄは、シミュレーション部２１ｆからの要求に応じて、データ記憶部２１ａから圧縮された結果データを読み出す。データ復元部２１ｄは、モデル全体に対応する直交座標系を設定し、モデルのうちノード２１に割り当てられた領域に含まれるグリッド点を算出する。データ復元部２１ｄは、磁化ベクトルが保存されていないグリッド点における磁化ベクトルを、その周辺のグリッド点の磁化ベクトルに基づいて補間する。データ復元部２１ｄは、各要素または節点の磁化ベクトルを、その要素または節点の周辺のグリッド点における磁化ベクトルに基づいて算出する。そして、データ復元部２１ｄは、復元した結果データをシミュレーション部２１ｆに提供する。
【０１２０】
通信部２１ｅは、ネットワーク２０を介して分析装置１００と通信する。通信部２１ｅは、有限要素法による数値解析の指示を分析装置１００から受信する。数値解析の指示には、モデルに含まれる要素や節点を示すモデル情報と、ノード２１に割り当てられた領域を示す割り当て情報とが含まれる。通信部２１ｅは、モデル情報と割り当て情報をシミュレーション部２１ｆに提供する。また、通信部２１ｅは、結果データの要求を分析装置１００から受信する。すると、通信部２１ｅは、シミュレーション部２１ｆを介して、データ記憶部２１ａに保存されている結果データのファイルを取得し、分析装置１００に送信する。結果データは、圧縮された状態で分析装置１００に送信される。
【０１２１】
シミュレーション部２１ｆは、有限要素法による数値解析を行う。シミュレーション部２１ｆは、モデル情報および割り当て情報を取得すると、モデル情報が示すモデルのうち割り当て情報が示す領域に含まれる要素または節点について、磁化ベクトルを算出する。要素と節点の何れに対応する磁化ベクトルを算出するかは、分析装置１００から取得する情報に含まれていてもよい。シミュレーション部２１ｆは、結果データを、データ入出力部２１ｂを介してデータ記憶部２１ａに保存する。また、シミュレーション部２１ｆは、結果データを、データ入出力部２１ｂを介してデータ記憶部２１ａから読み出す。ただし、結果データの要求を分析装置１００から取得した場合、シミュレーション部２１ｆは、圧縮された結果データを通信部２１ｅに提供する。
【０１２２】
分析装置１００は、モデル記憶部１２１、データ記憶部１２２、データ入出力部１２３、通信部１２６およびシミュレーション部１２７を有する。モデル記憶部１２１およびデータ記憶部１２２は、ＲＡＭ１０２またはＨＤＤ１０３に確保した記憶領域として実現できる。データ入出力部１２３、通信部１２６およびシミュレーション部１２７は、ＣＰＵ１０１が実行するプログラムのモジュールとして実現できる。
【０１２３】
モデル記憶部１２１は、解析対象のモデルに含まれる要素および節点を定義したモデル情報を記憶する。モデル情報は、例えば、予めユーザによって作成される。データ記憶部１２２は、有限要素法による数値解析の結果データを含むファイルを記憶する。ノード２１〜２７を用いて数値解析を並列化した場合、データ記憶部１２２には、マージされた結果データを含むファイルが格納される。ただし、マージしていない部分的な結果データを含む複数のファイルを、データ記憶部１２２に格納してもよい。データ記憶部１２２に記憶される結果データは、前述の方法によって圧縮されている。
【０１２４】
データ入出力部１２３は、シミュレーション部１２７からの要求に応じて、データ記憶部１２２に結果データを保存し、また、データ記憶部１２２から結果データを読み出す。データ入出力部１２３の機能は、上記のデータ入出力部２１ｂと同様である。データ入出力部１２３は、データ圧縮部１２４およびデータ復元部１２５を有する。
【０１２５】
データ圧縮部１２４は、シミュレーション部１２７から未圧縮の結果データを取得し、結果データを圧縮する。このとき、データ圧縮部１２４は、モデル全体に対応する直交座標系を設定してグリッド点を算出する。そして、データ圧縮部１２４は、圧縮した結果データを含むファイルをデータ記憶部１２２に格納する。データ復元部１２５は、シミュレーション部１２７からの要求に応じて、圧縮された結果データをデータ記憶部１２２から読み出し、各要素または節点の磁化ベクトルを復元する。このとき、データ復元部１２５は、モデル全体に対応する直交座標系を設定してグリッド点を算出する。そして、データ復元部１２５は、復元した結果データをシミュレーション部１２７に提供する。
【０１２６】
通信部１２６は、ネットワーク２０を介してノード２１〜２７と通信する。通信部１２６は、シミュレーション部１２７からの指示に応じて、有限要素法による数値解析の指示をノード２１〜２７に送信する。また、通信部１２６は、シミュレーション部１２７からの指示に応じて、結果データの要求をノード２１〜２７に送信する。通信部１２６は、結果データを含むファイルをノード２１〜２７から受信し、シミュレーション部１２７に提供する。結果データは、圧縮された状態でノード２１〜２７から受信される。
【０１２７】
シミュレーション部１２７は、有限要素法による数値解析を行う。または、シミュレーション部１２７は、ノード２１〜２７に並列に数値解析を行わせる。前者の場合、シミュレーション部１２７は、モデル記憶部１２１からモデル情報を読み出し、モデル情報が示すモデルに含まれる要素または節点について磁化ベクトルを算出する。要素と節点の何れに対応する磁化ベクトルを算出するかは、ユーザから指定されてもよい。後者の場合、シミュレーション部１２７は、モデルを複数の領域に分割してノード２１〜２７に割り振り、モデル情報と割り当て情報を通信部１２６に提供する。
【０１２８】
シミュレーション部１２７は、ユーザ操作に応じて、結果データを可視化する。例えば、シミュレーション部１２７は、磁化ベクトルを矢印によって表現した図面をディスプレイ１１１に表示する。また、シミュレーション部１２７は、結果データを、データ入出力部１２３を介してデータ記憶部１２２に保存する。また、シミュレーション部１２７は、結果データを、データ入出力部１２３を介してデータ記憶部１２２から読み出す。結果データは、圧縮された状態でデータ記憶部１２２に保存される。
【０１２９】
図１７は、節点データと要素データの例を示す図である。
節点ファイル１３１は、モデル記憶部１２１に記憶されている。節点ファイル１３１には、節点番号と空間座標（Ｘｃ，Ｙｃ，Ｚｃ）の組が複数列挙される。１つの組は１つの節点に対応する。節点番号は、節点を識別する識別番号である。ある節点番号に対応する空間座標は、当該節点番号が示す節点の位置を示す。例えば、節点番号＝「１」、空間座標＝「２．０  １２．０  ０．０」という情報が、節点ファイル１３１に登録される。
【０１３０】
要素ファイル１３２は、モデル記憶部１２１に記憶されている。要素ファイル１３２には、要素番号と節点リストの組が複数列挙される。１つの組は１つの要素に対応する。要素番号は、要素を識別する識別番号である。ある要素番号に対応する節点リストは、当該要素番号が示す要素の頂点に位置する節点の節点番号を含む。２次元モデルの場合は節点リストに３つの節点番号が含まれ、３次元モデルの場合は節点リストに４つの節点番号が含まれる。例えば、要素番号＝「１」、節点リスト＝「１  ２  ４  ８」という情報が、要素ファイル１３２に登録される。これは、要素番号＝１の要素が、節点番号＝１，２，４，８の４個の節点によって囲まれた四面体の小領域であることを示している。
【０１３１】
図１８は、未圧縮の有限要素法データの例を示す図である。
結果ファイル１３３は、未圧縮の結果データを含むファイルである。シミュレーション部１２７は、このような結果データを生成する。ここでは、要素に対して磁化ベクトルが算出されたとする。結果ファイル１３３には、要素番号と磁化ベクトル（Ｍｘ，Ｍｙ，Ｍｚ）の組が複数列挙される。１つの組は１つの要素に対応する。ただし、節点に対して磁化ベクトルが算出された場合、要素番号に代えて節点番号が用いられる。磁化ベクトルは、空間座標の座標系に基づいて定義されるベクトル値である。３次元モデルの場合、磁化ベクトルはＸ成分とＹ成分とＺ成分を含む。シミュレーション部２１ｆも、シミュレーション部１２７と同様の結果データを生成し得る。ただし、シミュレーション部２１ｆは、ノード２１に割り当てられた領域内の磁化ベクトルのみ含む結果データを生成する。
【０１３２】
図１９は、圧縮した有限要素法データの例を示す図である。
結果ファイル１３４は、圧縮された結果データを含むファイルである。結果ファイル１３４は、データ圧縮部１２４によって生成されてデータ記憶部１２２に格納される。結果ファイル１３４は、グリッド基本情報と磁化ベクトル情報を含む。
【０１３３】
グリッド基本情報は、グリッド座標を再現するのに用いられる。グリッド基本情報は、最大階層Ｎｄ、サイズＳｘ，Ｓｙ，Ｓｚ、分割数ｎｘ１，ｎｙ１，ｎｚ１、最小点（ｘ０，ｙ０，ｚ０）を含む。最大階層Ｎｄは、グリッド点の階層の最大値である。サイズＳｘ，Ｓｙ，Ｓｚは、グリッド点を設定する領域のＸ軸方向の長さ、Ｙ軸方向の長さ、Ｚ軸方向の長さである。サイズＳｘ，Ｓｙ，Ｓｚは、空間座標の座標系に基づいて定義される。分割数ｎｘ１，ｎｙ１，ｎｚ１は、階層１のグリッド点によって、Ｘ軸の辺、Ｙ軸の辺、Ｚ軸の辺が幾つの区間に分割されるかを示す。最小点（ｘ０，ｙ０，ｚ０）は、グリッド点の原点（０，０，０）が配置される位置の空間座標である。
【０１３４】
磁化ベクトル情報には、グリッド座標（Ｘｎ，Ｙｎ，Ｚｎ）と磁化ベクトル（Ｍｘ，Ｍｙ，Ｍｚ）の組が複数列挙される。１つの組は１つのグリッド点に対応する。グリッド座標は、グリッド点を識別する座標であり、原点からのＸ軸・Ｙ軸・Ｚ軸のホップ数を示す。磁化ベクトルは、空間座標の座標系に基づいて定義されるベクトル値である。結果ファイル１３４は、全てのグリッド座標に対応する磁化ベクトルが含まれていなくてよい。例えば、図１９の例では、結果ファイル１３４に、グリッド座標（０，０，０）、（２，０，０）、（４，０，０）の磁化ベクトルが含まれている一方、グリッド座標（１，０，０）、（３，０，０）の磁化ベクトルが含まれていない。
【０１３５】
ノード２１〜２７を用いて数値解析を並列化する場合、データ記憶部２１ａにも、結果ファイル１３４と同様のファイルが格納され得る。ただし、データ記憶部２１ａに格納される結果ファイルは、ノード２１に割り当てられた領域内のグリッド点における磁化ベクトルのみ含む。他のノードのデータ記憶部に格納される結果ファイルも、当該他のノードに割り当てられた領域内のグリッド点における磁化ベクトルのみ含む。一方で、結果ファイルに含まれるグリッド基本情報は、ノード２１〜２７の間で共通である。
【０１３６】
以下では、分析装置１００が結果データの圧縮および復元を行う場合を想定してその処理手順を説明する。ただし、ノード２１〜２７においても同様の処理が実行され得る。
図２０は、データ圧縮の手順例を示すフローチャートである。
【０１３７】
（Ｓ１０）データ圧縮部１２４は、グリッドの最大階層Ｎｄを設定する。最大階層Ｎｄは、予め固定しておいてもよいし、ユーザから指定されてもよい。
（Ｓ１１）データ圧縮部１２４は、階層２から階層Ｎｄまでの各階層（階層Ｎ）に対応する勾配の閾値Ｇｎを設定する。閾値Ｇｎは、例えば、Ｇ2＜Ｇ3＜…＜ＧNdのように、階層が深いほど大きい値とする。閾値Ｇｎは、予め固定しておいてもよい。
【０１３８】
（Ｓ１２）データ圧縮部１２４は、モデル空間から数値解析の対象となる領域を特定し、グリッド点を設定する範囲のサイズＳｘ，Ｓｙ，Ｓｚを決定する。また、データ圧縮部１２４は、グリッド点の原点を配置する最小点（ｘ０，ｙ０，ｚ０）を決定する。
【０１３９】
（Ｓ１３）データ圧縮部１２４は、階層１の分割数ｎｘ１，ｎｙ１，ｎｚ１を設定する。階層１の分割数は、予め固定しておいてもよいし、ユーザから指定されてもよいし、サイズＳｘ，Ｓｙ，Ｓｚなどに応じて動的に決定してもよい。
【０１４０】
（Ｓ１４）データ圧縮部１２４は、結果ファイル１３４を生成し、グリッド基本情報を結果ファイル１３４に書き込む。グリッド基本情報は、ステップＳ１０で設定した最大階層Ｎｄと、ステップＳ１２で決定したサイズＳｘ，Ｓｙ，Ｓｚおよび最小点（ｘ０，ｙ０，ｚ０）と、ステップＳ１３で設定した分割数ｎｘ１，ｎｙ１，ｎｚ１を含む。また、データ圧縮部１２４は、グリッド基本情報に基づいて、階層Ｎｄまでのグリッド点の位置を算出する。各グリッド点は、階層１から階層Ｎｄまでの何れかの階層に属する。
【０１４１】
（Ｓ１５）データ圧縮部１２４は、モデルから要素を１つ選択する。
（Ｓ１６）データ圧縮部１２４は、ステップＳ１５で選択した要素が、少なくとも１つのグリッド点を含むか判断する。選択した要素がグリッド点を含む場合はステップＳ１７に処理が進み、グリッド点を含まない場合はステップＳ２１に処理が進む。
【０１４２】
（Ｓ１７）データ圧縮部１２４は、選択した要素における磁化ベクトルの勾配を算出する。図９に示したように、各要素に対して磁化ベクトルが対応付けられている場合、勾配は、選択した要素の磁化ベクトルおよび隣接する他の要素の磁化ベクトルに基づいて算出できる。各節点に対して磁化ベクトルが対応付けられている場合、勾配は、選択した要素の頂点に位置する節点の磁化ベクトルに基づいて算出できる。
【０１４３】
（Ｓ１８）データ圧縮部１２４は、選択した要素に含まれるグリッド点それぞれの階層Ｎとグリッド座標（Ｘｎ，Ｙｎ，Ｚｎ）を特定する。
（Ｓ１９）データ圧縮部１２４は、ステップＳ１７で算出した勾配が、階層Ｎに対応する閾値Ｇｎより大きいか判断する。勾配が閾値Ｇｎより大きい場合はステップＳ２０に処理が進み、勾配が閾値Ｇｎ以下である場合はステップＳ２１に処理が進む。
【０１４４】
（Ｓ２０）データ圧縮部１２４は、選択した要素に含まれるグリッド点それぞれに対応する磁化ベクトルを算出する。図１０に示したように、各要素に対して磁化ベクトルが対応付けられている場合、グリッド点における磁化ベクトルは、重心における磁化ベクトルおよび重心からグリッド点に向かうベクトルｄｒに基づいて算出できる。各節点に対して磁化ベクトルが対応付けられている場合、グリッド点における磁化ベクトルは、選択した要素の頂点に位置する節点の磁化ベクトルに基づいて算出できる。そして、データ圧縮部１２４は、グリッド点毎に、グリッド座標（Ｘｎ，Ｙｎ，Ｚｎ）と磁化ベクトル（Ｍｘ，Ｍｙ，Ｍｚ）とを対応付けて結果ファイル１３４に書き込む。
【０１４５】
（Ｓ２１）データ圧縮部１２４は、ステップＳ１５でモデルに含まれる全ての要素を選択したか判断する。全ての要素を選択した場合、データ圧縮が終了する。未選択の要素が存在する場合、ステップＳ１５に処理が進む。
【０１４６】
図２１は、データ復元の手順例を示すフローチャートである。
（Ｓ３０）データ復元部１２５は、データ記憶部１２２に格納された結果ファイル１３４からグリッド基本情報を読み込む。グリッド基本情報は、最大階層ＮｄとサイズＳｘ，Ｓｙ，Ｓｚと最小点（ｘ０，ｙ０，ｚ０）と分割数ｎｘ１，ｎｙ１，ｎｚ１を含む。
【０１４７】
（Ｓ３１）データ復元部１２５は、グリッド基本情報に基づいて、階層Ｎｄまでのグリッド点の位置を算出する。このグリッド点は、上記のステップＳ１４と同じものである。すなわち、データ圧縮のときに算出されたグリッド点と同じものが復元される。各グリッド点は、階層１から階層Ｎｄまでの何れかの階層に属する。
【０１４８】
（Ｓ３２）データ復元部１２５は、３次元配列ｍｘ，ｍｙ，ｍｚ，ｄｅｆを定義する。これら３次元配列の添字は、３次元のグリッド座標に対応する。配列ｍｘは磁化ベクトルのＸ成分を格納し、配列ｍｙは磁化ベクトルのＹ成分を格納し、配列ｍｚは磁化ベクトルのＺ成分を格納する。また、配列ｄｅｆは磁化ベクトルの有無を示すフラグを格納する。データ復元部１２５は、配列ｄｅｆの各値を「０」に初期化する。なお、２次元モデルの場合は、配列ｍｘ，ｍｙ，ｄｅｆを２次元配列とすればよい。
【０１４９】
（Ｓ３３）データ復元部１２５は、結果ファイル１３４からグリッド座標（Ｘｎ，Ｙｎ，Ｚｎ）と磁化ベクトル（Ｍｘ，Ｍｙ，Ｍｚ）の組を１つ読み込む。
（Ｓ３４）データ復元部１２５は、ｍｘ［Ｘｎ］［Ｙｎ］［Ｚｎ］にＭｘを代入し、ｍｙ［Ｘｎ］［Ｙｎ］［Ｚｎ］にＭｙを代入し、ｍｚ［Ｘｎ］［Ｙｎ］［Ｚｎ］にＭｚを代入し、ｄｅｆ［Ｘｎ］［Ｙｎ］［Ｚｎ］に「１」を代入する。
【０１５０】
（Ｓ３５）データ復元部１２５は、ステップＳ３３で結果ファイル１３４から全ての結果データを読み込んだか判断する。全ての結果データを読み込んだ場合はステップＳ３６に処理が進み、読み込んでいない結果データがある場合はステップＳ３３に処理が進む。
【０１５１】
（Ｓ３６）データ復元部１２５は、グリッド点を１つ選択する。
（Ｓ３７）データ復元部１２５は、ステップＳ３６で選択したグリッド点について、ｄｅｆ［Ｘｎ］［Ｙｎ］［Ｚｎ］＝０か、すなわち、グリッド座標（Ｘｎ，Ｙｎ，Ｚｎ）に対応する磁化ベクトルが空であるか判断する。磁化ベクトルが空の場合はステップＳ３８に処理が進み、空でない場合はステップＳ３９に処理が進む。
【０１５２】
（Ｓ３８）データ復元部１２５は、選択したグリッド点における磁化ベクトルを、その周辺のグリッド点の磁化ベクトルに基づいて補間する。補間の詳細は後述する。
（Ｓ３９）データ復元部１２５は、ステップＳ３６で全てのグリッド点を選択したか判断する。全てのグリッド点を選択した場合はステップＳ４０に処理が進み、未選択のグリッド点がある場合はステップＳ３６に処理が進む。
【０１５３】
（Ｓ４０）データ復元部１２５は、要素または節点の磁化ベクトルを、ラグランジェ補間法などを用いて近傍のグリッド点の磁化ベクトルから算出する。例えば、データ復元部１２５は、要素の重心を含むグリッドの頂点にある４個または８個のグリッド点を特定し、それらグリッド点の磁化ベクトルに基づいて重心の磁化ベクトルを算出する。また、データ復元部１２５は、節点を含むグリッドの頂点にある４個または８個のグリッド点を特定し、それらグリッド点の磁化ベクトルに基づいて節点の磁化ベクトルを算出する。要素と節点の何れに対応する磁化ベクトルを算出するかは、ユーザから指定されてもよい。
【０１５４】
図２２は、グリッド点補間の手順例を示すフローチャートである。
このグリッド点補間は、上記ステップＳ３８において実行される。
（Ｓ５０）データ復元部１２５は、選択したグリッド点を基準にして、各軸（例えば、Ｘ軸・Ｙ軸・Ｚ軸それぞれ）の正方向および負方向に、磁化ベクトルが既知である空でない近傍点を探索する。近傍点としては、軸および正負方向の組み合わせ毎に、選択したグリッド点にできる限り近いものが高々１つ探索される。
【０１５５】
（Ｓ５１）データ復元部１２５は、ステップＳ５０で探索した近傍点の集合の中から、選択したグリッド点からの距離（ホップ数）が最小である１または２以上の近傍点を抽出する。また、データ復元部１２５は、複数の軸（例えば、Ｘ軸・Ｙ軸・Ｚ軸）の中から、距離最小の近傍点を少なくとも１つ含む対象軸を抽出する。
【０１５６】
（Ｓ５２）データ復元部１２５は、ステップＳ５１で抽出した対象軸の全てが、正負方向のうち何れか一方向のみ近傍点をもち、他の方向に近傍点をもたない（その方向には磁化ベクトルが既知のグリッド点が存在しない）か判断する。条件を満たす場合はステップＳ５７に処理が進み、条件を満たさない場合はステップＳ５３に処理が進む。
【０１５７】
（Ｓ５３）データ復元部１２５は、ステップＳ５１で抽出した対象軸の中から、正負方向のうち何れか一方向のみ近傍点をもつ対象軸を除外する。
（Ｓ５４）データ復元部１２５は、対象軸が２以上残っているか判断する。２以上ある場合はステップＳ５５に処理が進み、１つのみの場合はステップＳ５６に処理が進む。
【０１５８】
（Ｓ５５）データ復元部１２５は、対象軸毎に、正方向の近傍点における磁化ベクトルと負方向の近傍点における磁化ベクトルとを用いて、選択したグリッド点における補間値を算出する。選択したグリッド点から正方向の近傍点と負方向の近傍点への距離が同じである場合、データ復元部１２５は、２つの磁化ベクトルの平均を補間値とすればよい。選択したグリッド点から正方向の近傍点と負方向の近傍点への距離が異なる場合、データ復元部１２５は、距離に応じた重みを用いて２つの磁化ベクトルの加重平均を算出し、加重平均を補間値とすればよい。そして、データ復元部１２５は、２以上の対象軸の補間値を平均化し、選択したグリッド点における磁化ベクトルとして採用する。
【０１５９】
（Ｓ５６）データ復元部１２５は、残った１つの対象軸について、正方向の近傍点における磁化ベクトルと負方向の近傍点における磁化ベクトルとを用いて、選択したグリッド点における補間値を算出する。そして、データ復元部１２５は、算出した補間値を、選択したグリッド点における磁化ベクトルとして採用する。
【０１６０】
（Ｓ５７）データ復元部１２５は、対象軸が２以上あるか判断する。２以上ある場合はステップＳ５８に処理が進み、１つのみの場合はステップＳ５９に処理が進む。
（Ｓ５８）データ復元部１２５は、対象軸にかかわらず、全ての近傍点の磁化ベクトルを平均化し、選択したグリッド点における磁化ベクトルとして採用する。
【０１６１】
（Ｓ５９）データ復元部１２５は、唯一の近傍点の磁化ベクトルを、選択したグリッド点における磁化ベクトルとして採用する。
第２の実施の形態の情報処理システムによれば、有限要素法によって要素または節点に対応する磁化ベクトルを含む結果データが生成されると、直交座標系のグリッド点が算出され、グリッド点における磁化ベクトルが推定される。そして、要素または節点の磁化ベクトルに代えて、グリッド点の磁化ベクトルが保持される。これにより、不規則に並んだ要素または節点の磁化ベクトルを直接扱う場合と比べて、一部の磁化ベクトルを結果データから間引くことが容易となる。特に、勾配の小さい領域の磁化ベクトルを間引くことで、結果データの精度の低下を抑制して、結果データを圧縮することができる。
【０１６２】
記憶装置には圧縮された結果データを保存することで、消費する記憶領域を削減することができる。また、ネットワーク２０上では圧縮された結果データを送信することで、消費するネットワーク帯域を削減し、また、通信時間を短縮することができる。圧縮された結果データを読み出す場合、間引かれたグリッド点の磁化ベクトルが、その周辺のグリッド点の磁化ベクトルを用いて補間される。そして、グリッド点の磁化ベクトルに基づいて、要素または節点の磁化ベクトルが復元される。これにより、有限要素法によって生成された元の結果データを、圧縮された結果データから復元することができる。
【０１６３】
なお、第１の実施の形態の情報処理は、有限要素演算装置１０にプログラムを実行させることで実現できる。第２の実施の形態の情報処理は、ノード２１〜２７や分析装置１００にプログラムを実行させることで実現できる。
【０１６４】
プログラムは、コンピュータ読み取り可能な記録媒体（例えば、記録媒体１１３）に記録しておくことができる。記録媒体としては、例えば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクには、ＦＤおよびＨＤＤが含まれる。光ディスクには、ＣＤ、ＣＤ−Ｒ（Recordable）／ＲＷ（Rewritable）、ＤＶＤおよびＤＶＤ−Ｒ／ＲＷが含まれる。プログラムは、可搬型の記録媒体に記録されて配布されることがある。その場合、可搬型の記録媒体からＨＤＤなどの他の記録媒体（例えば、ＨＤＤ１０３）にプログラムをコピーして実行してもよい。
【符号の説明】
【０１６５】
１０  有限要素演算装置
１１  記憶部
１２  変換部
１３，１４  データ
１３ａ〜１３ｆ  節点
１３ｇ〜１３ｋ  要素
１４ａ〜１４ｆ  グリッド点
【図１】
0006380051.tif 000015
【図２】
0006380051.tif 000016
【図３】
0006380051.tif 000017
【図４】
0006380051.tif 000018
【図５】
0006380051.tif 000019
【図６】
0006380051.tif 000020
【図７】
0006380051.tif 000021
【図８】
0006380051.tif 000022
【図９】
0006380051.tif 000023
【図１０】
0006380051.tif 000024
【図１１】
0006380051.tif 000025
【図１２】
0006380051.tif 000026
【図１３】
0006380051.tif 000027
【図１４】
0006380051.tif 000028
【図１５】
0006380051.tif 000029
【図１６】
0006380051.tif 000030
【図１７】
0006380051.tif 000031
【図１８】
0006380051.tif 000032
【図１９】
0006380051.tif 000033
【図２０】
0006380051.tif 000034
【図２１】
0006380051.tif 000035
【図２２】
0006380051.tif 000036