JP2007232487A - 解析装置、解析方法、解析プログラム、および解析プログラムを記録したコンピュータ読取り可能な記録媒体 - Google Patents
解析装置、解析方法、解析プログラム、および解析プログラムを記録したコンピュータ読取り可能な記録媒体 Download PDFInfo
- Publication number
- JP2007232487A JP2007232487A JP2006052747A JP2006052747A JP2007232487A JP 2007232487 A JP2007232487 A JP 2007232487A JP 2006052747 A JP2006052747 A JP 2006052747A JP 2006052747 A JP2006052747 A JP 2006052747A JP 2007232487 A JP2007232487 A JP 2007232487A
- Authority
- JP
- Japan
- Prior art keywords
- physical property
- variable
- data
- analysis
- value
- 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.)
- Withdrawn
Links
Images
Abstract
【課題】長時間に渡る物性値の挙動を求め得るようにする。
【解決手段】電磁界解析装置100は、メモリ624と、CPU622と、ディスプレイ610とを含む。メモリ624は、吸収境界層と解析領域とを含む領域を分割した各ブロックについて、物性値データを記憶する。CPU622は、互いに隣接する複数のブロックについての物性値データに基づいて、複数のブロックそれぞれについての物性値を計算し、物性値データの内容を更新し、更新された物性値データに基づいて、解析領域におけるエネルギの総和を計算し、エネルギの総和が閾値を越えるか否かを判断し、エネルギの総和が閾値を越える場合、物性値データの内容を補正する。ディスプレイ610は、メモリ624が記憶したデータを出力する。
【選択図】図2
【解決手段】電磁界解析装置100は、メモリ624と、CPU622と、ディスプレイ610とを含む。メモリ624は、吸収境界層と解析領域とを含む領域を分割した各ブロックについて、物性値データを記憶する。CPU622は、互いに隣接する複数のブロックについての物性値データに基づいて、複数のブロックそれぞれについての物性値を計算し、物性値データの内容を更新し、更新された物性値データに基づいて、解析領域におけるエネルギの総和を計算し、エネルギの総和が閾値を越えるか否かを判断し、エネルギの総和が閾値を越える場合、物性値データの内容を補正する。ディスプレイ610は、メモリ624が記憶したデータを出力する。
【選択図】図2
Description
本発明は、解析装置、解析方法、解析プログラム、および解析プログラムを記録したコンピュータ読取り可能な記録媒体に関し、特に、FDTD法を用いる解析装置、解析方法、解析プログラム、および解析プログラムを記録したコンピュータ読取り可能な記録媒体に関する。
FDTD(Finite Difference Time Domain Method)による電磁界解析手法は、解析領域を格子で分割し、格子点に未知電磁界を配置するものである。FDTD法は、未知電界を配置する格子と未知磁界を配置する格子とを、格子の半分の幅だけずらすYee格子という構造を取る。FDTD法は、次の手順により解析領域全体の電磁界挙動を求める、差分法に基づく解析手法である。その第1の手順は、未知電界、磁界と隣接する未知磁界、電界の間に働く関係式を電磁気学に基づく方程式から導く手順である。第2の手順は、導き出された関係式を基に未知電界、磁界をあるタイムステップを単位に更新する手順である。第2の手順において、あるタイムステップで電界を更新し、1/2タイムステップ後に磁界を更新し、1タイムステップ後に電界を更新するというように、電界、磁界を交互に求める。このように、FDTD法では、解析領域内の未知変数を陽解法により逐次的に計算することで、解析領域の電磁界の応答を時系列に従って解析する。非特許文献1は、FDTD法を具体的に紹介するものである。
特許文献1は、複数の他の情報処理装置とともに、解析の対象となる領域を分割して、FDTD法により電界および磁界を解析する情報処理装置を開示する。この情報処理装置は、分割された領域であって、複数の他の情報処理装置のうちの少なくとも1つの情報処理装置が、電界または磁界を個々に解析するオーバーラップ領域の、計算上の所定の時刻における電界の強さおよび磁界の強さの少なくとも一方を演算する第1の演算装置と、オーバーラップ領域を解析する他の情報処理装置への、第1の演算装置により演算された、計算上の時刻におけるオーバーラップ領域の磁界の強さおよび電界の強さの少なくとも一方の送信を制御する送信制御装置と、送信制御装置により制御された送信と並列に、分割された領域のうちの、オーバーラップ領域が除外された領域の、計算上の時刻における電界の強さおよび磁界の強さの少なくとも一方を演算する第2の演算装置とを含む。
特許文献1に開示された発明によると、精度を劣化させることなく、複数の情報処理装置を用いて、より迅速に、FDTD法により、電界および磁界を解析できる。
特開2003−223426号公報
宇野亨,「FDTD法による電磁界およびアンテナ解析」,第1版,コロナ社,1998年3月20日,p1−57,p58−102,p175−192
ところで、FDTD法が有限の解析領域での解析しか扱えないため、無限の空間内に解析対象を配置した解析を行う場合には、吸収境界層というものを作成し、無限の空間を近似して解析を進める。吸収境界層としてはMurの吸収境界、PML(Perfectly Matched Layer)などいくつかの方式が存在するが、どれも、エネルギを完全に吸収することはできず、多少の反射を生じ、さらに特定の周波数、方向の電磁波についてはエネルギを増幅させる場合もある。このように吸収境界層は完全なものではないため、一般には解析対象となる構造体と吸収境界層との間に緩衝領域を設ける。これにより、吸収境界層での誤差により、構造体部分に関する解析結果に直接及ぶような影響を軽減する。図15は、構造体の含まれる領域と緩衝領域と吸収境界層との配置の関係を表わす図である。以下の説明では、解析対象となる構造体の含まれる領域および緩衝領域をまとめて解析領域と表現する。
緩衝領域を設ける方法には、解析領域や吸収境界領での計算誤差が蓄積するという欠点がある。そのような計算誤差は、吸収境界層で増幅される。これにより、解析領域の内部に含まれる誤差の絶対値は解析時間とともに増大する。最終的には、その絶対値は発散してしまう。
そのため、FDTD法には、次に述べるシステム解析には用い難いであるという問題点がある。そのシステム解析とは、長時間に渡る電磁界挙動を求める必要のあるシステム解析である。非特許文献には、この問題点に対する解決法が何ら開示されていない。特許文献1に開示された発明は、この問題点を解決できない。
本発明は上述の問題点を解決するためになされたものであって、その目的は、長時間に渡る物性値の挙動を求めることができる解析装置、解析方法、解析プログラム、および解析プログラムを記録したコンピュータ読取り可能な記録媒体を提供することにある。
上記目的を達成するために、本発明のある局面に従うと、解析装置は、第1の記憶手段と、第1の計算手段と、更新手段と、第2の計算手段と、判断手段と、補正手段と、出力手段とを含む。第1の記憶手段は、解析領域の周囲にあって解析領域に対する反射波を抑制する領域である吸収境界層と解析領域とを含む領域を分割した各ブロックについて、物性を表わすデータである物性値データを記憶する。第1の計算手段は、互いに隣接する複数のブロックについての物性値データに基づいて、複数のブロックそれぞれについての物性値を計算する。更新手段は、物性値データの内容を第1の計算手段が計算した物性値に更新する。第2の計算手段は、物性値データに基づいて、解析領域におけるエネルギの総和を計算する。判断手段は、物性値データの内容の更新後に第2の計算手段が計算したエネルギの総和が閾値を越えるか否かを判断する。補正手段は、第2の計算手段が計算したエネルギの総和が閾値を越える場合、物性値データの内容を補正する。出力手段は、第1の記憶手段が記憶したデータを出力する。
また、上述の補正手段は、第2の計算手段が計算したエネルギの総和が閾値を越える場合、補正後の解析領域におけるエネルギの総和が閾値と等しくなるように、物性値データの内容を補正するための手段を含むことが望ましい。
もしくは、上述の物性値データの内容を補正するための手段は、第2の計算手段が計算したエネルギの総和に対する閾値の割合の平方根と補正前の物性値データが表わす値との積に、物性値データの内容を補正するための手段を含むことが望ましい。
また、上述の第1の記憶手段は、各ブロックについて、ブロックを構成する辺における電界のデータである電界データとブロックの面における磁界のデータである磁界データとを記憶するための手段を含むことが望ましい。併せて、第1の計算手段は、電界の大きさを計算するための手段と、磁界の大きさを計算するための手段とを含むことが望ましい。電界の大きさを計算するための手段は、磁界データに基づいて、任意の時点である第1の時点の各ブロックの頂点における電界の大きさを計算する。磁界の大きさを計算するための手段は、電界の大きさを計算するための手段が計算した電界の大きさに基づいて、第1の時点より後の時点である第2の時点の各ブロックの面における磁界の大きさを計算する。更新手段は、電界データの内容を更新するための手段と、磁界データの内容を更新するための手段とを含むことが望ましい。電界データの内容を更新するための手段は、電界の大きさを計算するための手段が計算した値に電界データの内容を更新する。磁界データの内容を更新するための手段は、磁界の大きさを計算するための手段が計算した値に磁界データの内容を更新する。第2の計算手段は、内容を更新した電界データおよび内容を更新した磁界データに基づいて、解析領域におけるエネルギの総和を計算するための手段を含むことが望ましい。
もしくは、上述した解析領域におけるエネルギの総和を計算するための手段は、第2の記憶手段と、計算するための手段と、値を更新するための手段とを含むことが望ましい。第2の記憶手段は、解析領域におけるエネルギの総和を表わす値を記憶する。計算するための手段は、解析領域におけるエネルギの流入量と解析領域の外に向くポインティングベクトルの大きさに対応するエネルギの流出量と第2の記憶手段が記憶した値とに基づいて、電界データおよび磁界データの内容を更新した後の解析領域におけるエネルギの総和を計算する。値を更新するための手段は、計算するための手段が計算した値に第2の記憶手段が記憶した値を更新する。
また、上述の第2の計算手段は、第2の記憶手段と、計算するための手段と、値を更新するための手段とを含むことが望ましい。第2の記憶手段は、解析領域におけるエネルギの総和を表わす値を記憶する。計算するための手段は、物性値データの更新により生じた解析領域におけるエネルギの変化量と第2の記憶手段が記憶した値との和を計算する。値を更新するための手段は、計算するための手段が計算した値に第2の記憶手段が記憶した値を更新する。
本発明の他の局面に従うと、解析方法は第1の記憶ステップと、第1の計算ステップと、更新ステップと、第2の計算ステップと、判断ステップと、補正ステップと、出力ステップとを含む。第1の記憶ステップは、解析装置が、解析領域の周囲にあって解析領域に対する反射波を抑制する領域である吸収境界層と解析領域とを含む領域を分割した各ブロックについて、物性値のデータである物性値データを記憶する。第1の計算ステップは、解析装置が、互いに隣接する複数のブロックについての物性値データに基づいて、複数のブロックそれぞれについての、任意の時点の物性値を計算する。更新ステップは、解析装置が、物性値データの内容を第1の計算ステップにおいて計算した物性値に更新する。第2の計算ステップは、解析装置が、更新ステップにおいて物性値データの内容を更新すると、物性値データに基づいて、解析領域におけるエネルギの総和を計算する。判断ステップは、解析装置が、第2の計算ステップにおいて計算した解析領域におけるエネルギの総和が閾値を越えるか否かを判断する。補正ステップは、解析装置が、解析領域におけるエネルギの総和が閾値を越える場合、物性値データの内容を補正する。出力ステップは、解析装置が、第1の記憶ステップにおいて記憶したデータを出力する。
本発明の他の局面に従うと、解析プログラムは、第1の記憶ステップと、第1の計算ステップと、更新ステップと、第2の計算ステップと、判断ステップと、補正ステップと、出力ステップとを含む各ステップをコンピュータに実行させる。第1の記憶ステップは、コンピュータが、解析領域の周囲にあって解析領域に対する反射波を抑制する領域である吸収境界層と解析領域とを含む領域を分割した各ブロックについて、物性値のデータである物性値データを記憶する。第1の計算ステップは、コンピュータが、互いに隣接する複数のブロックについての物性値データに基づいて、複数のブロックそれぞれについての、任意の時点の物性値を計算する。更新ステップは、コンピュータが、物性値データの内容を第1の計算ステップにおいて計算した物性値に更新する。第2の計算ステップは、コンピュータが、更新ステップにおいて物性値データの内容を更新すると、物性値データに基づいて、解析領域におけるエネルギの総和を計算する。判断ステップは、コンピュータが、第2の計算ステップにおいて計算した解析領域におけるエネルギの総和が閾値を越えるか否かを判断する。補正ステップは、コンピュータが、解析領域におけるエネルギの総和が閾値を越える場合、物性値データの内容を補正する。出力ステップは、コンピュータが、第1の記憶ステップにおいて記憶したデータを出力する。
本発明の他の局面に従うと、記録媒体は、解析プログラムを記憶したコンピュータ読取り可能な記録媒体である。解析プログラムは、第1の記憶ステップと、第1の計算ステップと、更新ステップと、第2の計算ステップと、判断ステップと、補正ステップと、出力ステップとを含むステップをコンピュータに実行させる。第1の記憶ステップは、コンピュータが、解析領域の周囲にあって解析領域に対する反射波を抑制する領域である吸収境界層と解析領域とを含む領域を分割した各ブロックについて、物性値のデータである物性値データを記憶する。第1の計算ステップは、コンピュータが、互いに隣接する複数のブロックについての物性値データに基づいて、複数のブロックそれぞれについての、任意の時点の物性値を計算する。更新ステップは、コンピュータが、物性値データの内容を第1の計算ステップにおいて計算した物性値に更新する。第2の計算ステップは、コンピュータが、更新ステップにおいて物性値データの内容を更新すると、物性値データに基づいて、解析領域におけるエネルギの総和を計算する。判断ステップは、コンピュータが、第2の計算ステップにおいて計算した解析領域におけるエネルギの総和が閾値を越えるか否かを判断する。補正ステップは、コンピュータが、解析領域におけるエネルギの総和が閾値を越える場合、物性値データの内容を補正する。出力ステップは、コンピュータが、第1の記憶ステップにおいて記憶したデータを出力する。
本発明に係る解析装置、解析方法、解析プログラム、および解析プログラムを記録したコンピュータ読取り可能な記録媒体は、長時間に渡る物性値の挙動を求めることができる。
以下、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同一である。したがって、それらについての詳細な説明は繰返さない。
図1は本実施の形態における電磁界解析装置100の構成図である。電磁界解析装置100は、計算部102と、記憶部104と、補正部106とを含む。計算部102は電界と磁界とを解析する。計算部102は、記憶部104が記憶した電界変数と磁界変数とを自らが解析した結果に基づいて更新する部分でもある。計算部102は、電源による流入エネルギを計算し、流入エネルギ量を補正部106に通知する部分でもある。記憶部104は電界変数と磁界変数とを記憶する。補正部106は、記憶部104が記憶した変数値から、解析領域におけるエネルギ量の最新値と流出エネルギ量とを計算する。また、補正部106は、エネルギ上限値Emaxおよび計算部102から与えられた流入エネルギ量から、電磁界エネルギ量の上限値を更新する部分でもある。さらに補正部106は、補正が必要な場合には記憶部104の電磁界変数を補正する部分でもある。この際、補正部106は、エネルギ上限Emaxと電磁界エネルギ量との関係に基づいて補正が必要か否かを判断する。
図2は、本実施の形態における電磁界解析装置100を実現するコンピュータハードウェアのブロック図である。このコンピュータハードウェアは、ディスプレイ610と、CPU(Central Processing Unit)622と、メモリ624と、固定ディスク626と、FD(flexible disk)駆動装置630と、CD−ROM(Compact Disk Read Only Memory)駆動装置640と、キーボード650と、通信インターフェイス680とを含む。ディスプレイ610は、表示により情報を出力する。CPU622は、各種の演算を実施する。CPU622は、図2に示すコンピュータハードウェアの各部を制御する回路でもある。メモリ624は、情報を記憶する。固定ディスク626は、本実施の形態における電磁界解析装置100を実現するためのプログラムなどを記憶する。FD駆動装置630は、FD632から情報を読取る。CD−ROM駆動装置640は、CD−ROM642から本実施の形態における電磁界解析装置100を実現するためのプログラムなどを読取る。キーボード650は、ユーザが情報を入力する装置である。通信インターフェイス680は、ネットワークを介して図示しないコンピュータと通信する。
この電磁界解析装置100は、コンピュータハードウェアとCPU622により実行されるソフトウェアとにより実現される。一般的にこうしたソフトウェアは、CD−ROM(Compact Disk Read Only Memory)642などの記録媒体に格納されて流通し、CD−ROM駆動装置640などにより記録媒体から読取られて固定ディスク626に一旦格納される。さらにメモリ624に読出されて、上述したCPU622により実行される。上述したコンピュータのハードウェア自体は一般的なものである。したがって、本発明の最も本質的な部分は、CD−ROM642などの記録媒体に記録されたソフトウェアである。なお、コンピュータ自体の動作は周知であるので、ここではその詳細な説明は繰返さない。
図3は、本実施の形態における電磁界解析装置100の処理方法を表すフローチャートである。本発明にかかる解析装置は、物性値の解析にあたり、エネルギ保存則を適用する。本実施の形態の場合、適用されるエネルギ保存則は電磁エネルギの保存則である。図3を参照して、電磁界解析装置100で実行されるプログラムは、電界および磁界の解析に関し、以下のような制御を実行する。
ステップS800にて、計算部102または補正部106として動作するCPU622は、初期化処理を実施する。この処理は、後述するステップS820〜ステップS836の処理に相当する。
ステップS802にて、計算部102として動作するCPU622は、互いに隣接する複数のブロックについての磁界変数の値と1タイムステップ前のその値とに基づいて、複数のブロックそれぞれについての電界変数の値を計算する。電界変数の値が計算されると、計算部102として動作するCPU622は、記憶部104に記憶された電界変数を表わす物性値データの内容をCPU622自身が計算した値に更新する。これに伴い、解析領域と吸収境界層との電界変数の値が周辺の磁界変数の値をもとに計算されることとなる。電界変数の値を算出するための式は次の通りである。
Ex n=cexa(i,j,k)・Ex n−1
+cexb(i,j,k)・{Hz n−1(i,j,k)−Hz n−1(i,j-1,k)}
−cexc(i,j,k)・{Hy n−1(i,j,k)−Hy n−1(i,j,k-1)}
Ey n=ceya(i,j,k)・Ey n−1
+ceyb(i,j,k)・{Hx n−1(i,j,k)−Hx n−1(i,j,k-1)}
−ceyc(i,j,k)・{Hz n−1(i,j,k)−Hz n−1(i-1,j,k)}
Ez n=ceza(i,j,k)・Ez n−1
+cezb(i,j,k)・{Hy n−1(i,j,k)−Hy n−1(i-1,j,k)}
−cezc(i,j,k)・{Hx n−1(i,j,k)−Hx n−1(i,j-1,k)}
ただし、Ex n,Ey n,Ez nは基準とする時点の3次元位置(i,j,k)における電界変数Ex(i,j,k), Ey(i,j,k), Ez(i,j,k)を表わす。Ex n−1, Ey n−1, Ez n−1は基準とする時点より1タイムステップ前の時点における電界変数Ex(i,j,k), Ey(i,j,k), Ez(i,j,k)を表わす。Hx n-1(i,j,k), Hy n-1(i,j,k), Hz n-1(i,j,k)は基準とする時点より0.5タイムステップ前の時点における磁界変数 Hx(i,j,k), Hy(i,j,k), Hz(i,j,k)を表わす。
+cexb(i,j,k)・{Hz n−1(i,j,k)−Hz n−1(i,j-1,k)}
−cexc(i,j,k)・{Hy n−1(i,j,k)−Hy n−1(i,j,k-1)}
Ey n=ceya(i,j,k)・Ey n−1
+ceyb(i,j,k)・{Hx n−1(i,j,k)−Hx n−1(i,j,k-1)}
−ceyc(i,j,k)・{Hz n−1(i,j,k)−Hz n−1(i-1,j,k)}
Ez n=ceza(i,j,k)・Ez n−1
+cezb(i,j,k)・{Hy n−1(i,j,k)−Hy n−1(i-1,j,k)}
−cezc(i,j,k)・{Hx n−1(i,j,k)−Hx n−1(i,j-1,k)}
ただし、Ex n,Ey n,Ez nは基準とする時点の3次元位置(i,j,k)における電界変数Ex(i,j,k), Ey(i,j,k), Ez(i,j,k)を表わす。Ex n−1, Ey n−1, Ez n−1は基準とする時点より1タイムステップ前の時点における電界変数Ex(i,j,k), Ey(i,j,k), Ez(i,j,k)を表わす。Hx n-1(i,j,k), Hy n-1(i,j,k), Hz n-1(i,j,k)は基準とする時点より0.5タイムステップ前の時点における磁界変数 Hx(i,j,k), Hy(i,j,k), Hz(i,j,k)を表わす。
ステップS804にて、計算部102として動作するCPU622と記憶部104として動作するメモリ624とは、すべての電圧源について、エネルギの流入量を算出する。この処理は、後述するステップS840〜ステップS850の処理に相当する。
ステップS806にて、計算部102として動作するCPU622は、複数のブロックそれぞれについての磁界変数の値を計算する。CPU622は、互いに隣接する複数のブロックについての電界変数の値と1タイムステップ前のその値とに基づいて、磁界変数の値を計算する。磁界変数の値が計算されると、計算部102として動作するCPU622は、記憶部104に記憶された磁界変数を表わす物性値データの内容をCPU622自身が計算した値に更新する。これに伴い、解析領域と吸収境界層との磁界変数の値が周辺の電界変数の値をもとに計算されることとなる。磁界変数の値を算出するための式は次の通りである。
Hx n=Hx n-1
−chxa(i,j,k)・{Ez n(i,j+1,k)−Ez n(i,j,k)}
−chxb(i,j,k)・{Ey n(i,j,k+1)−Ey n(i,j,k)}
Hy n=Hy n-1
−chya(i,j,k)・{Ex n(i,j,k+1)−Ex n(i,j,k)}
−chyb(i,j,k)・{Ez n(i+1,j,k)−Ez n(i,j,k)}
Hz n=Hz n-1
−chza(i,j,k)・{Ey n(i+1,j,k)−Ey n(i,j,k)}
−chzb(i,j,k)・{Ex n(i,j+1,k)−Ex n(i,j,k)}
ただし、Hx n,Hy n,Hz nは基準とする時点から0.5タイムステップ後の時点の三次元位置(i,j,k)における磁界変数Hx(i,j,k), Hy(i,j,k), Hz(i,j,k)を表わす。Hx n-1, Hy n-1, Hz n-1は基準とする時点より0.5タイムステップ前の時点における磁界変数Hx(i,j,k), Hy(i,j,k), Hz(i,j,k)を表わす。Ex n(i,j,k), Ey n(i,j,k), Ez n(i,j,k)は基準とする時点における電界変数Ex(i,j,k), Ey(i,j,k), Ez(i,j,k)を表わす。
−chxa(i,j,k)・{Ez n(i,j+1,k)−Ez n(i,j,k)}
−chxb(i,j,k)・{Ey n(i,j,k+1)−Ey n(i,j,k)}
Hy n=Hy n-1
−chya(i,j,k)・{Ex n(i,j,k+1)−Ex n(i,j,k)}
−chyb(i,j,k)・{Ez n(i+1,j,k)−Ez n(i,j,k)}
Hz n=Hz n-1
−chza(i,j,k)・{Ey n(i+1,j,k)−Ey n(i,j,k)}
−chzb(i,j,k)・{Ex n(i,j+1,k)−Ex n(i,j,k)}
ただし、Hx n,Hy n,Hz nは基準とする時点から0.5タイムステップ後の時点の三次元位置(i,j,k)における磁界変数Hx(i,j,k), Hy(i,j,k), Hz(i,j,k)を表わす。Hx n-1, Hy n-1, Hz n-1は基準とする時点より0.5タイムステップ前の時点における磁界変数Hx(i,j,k), Hy(i,j,k), Hz(i,j,k)を表わす。Ex n(i,j,k), Ey n(i,j,k), Ez n(i,j,k)は基準とする時点における電界変数Ex(i,j,k), Ey(i,j,k), Ez(i,j,k)を表わす。
ステップS808にて、補正部106として動作するCPU622は、解析領域と吸収境界層との境界部から吸収境界層へ流出するエネルギを計算する。これにより、補正部106として動作するCPU622は、ステップS802とステップS806とにおいて内容を更新した物性値データに基づいて、解析領域におけるエネルギの総和を計算することとなる。このステップにおいて、「内容を更新した物性値データ」とは、電界変数と磁界変数とを意味する。この処理は、後述するステップS860〜ステップS864の処理に相当する。
ステップS810にて、計算部102として動作するCPU622は、エネルギの補正のタイミングを判定するため、時刻変数iが変数Nの倍数か否かを判断する。本実施の形態において、変数Nはユーザが計算部102として動作するキーボード650に入力し、キーボード650が受付けた値を表わす。時刻変数iが変数Nの倍数と判断した場合(ステップS810にてYES)、処理はステップS812に移行する。もしそうでないと(ステップS810にてNO)、処理はステップS814に移行する。
ステップS812にて、補正部106として動作するCPU622は、必要に応じて電界変数などを補正する。この処理は、後述するステップS870〜ステップS874の処理に相当する。
ステップS814にて、計算部102として動作するディスプレイ610は、解析結果の出力形態を指定する情報に従って、メモリ624が記憶した、電界変数の値と磁界変数の値とを出力する。解析結果の出力形態を指定する情報は、ステップS800にてFD駆動装置630がFD632から読取った情報である。
ステップS816にて、計算部102として動作するCPU622は、時刻変数iに「1」を加える。
ステップS818にて、計算部102として動作するCPU622は、解析を終了する条件に基づき、解析を終了するか否かを判断する。解析を終了する条件は、ステップS800にてFD駆動装置630がFD632から情報として読取っていることとする。本実施の形態の場合、解析を終了する条件は、ユーザが指定したステップ数Nを時刻変数iが上回ることとする。解析を終了すると判断した場合(ステップS818にてYES)、処理は終了する。もしそうでないと(ステップS818にてNO)、処理はステップS802へと移される。
図4を参照して、電磁界解析装置100で実行されるプログラムは、初期化に関し、以下のような制御を実行する。
ステップS820にて、計算部102として動作するFD駆動装置630は、解析条件を表わす情報をFD632から読取る。計算部102として動作するFD駆動装置630は、解析条件を受付けることとなる。
本実施の形態の場合、解析条件を表わす情報は、複数の種類の情報からなる。解析条件を表わす情報は、解析領域のサイズを表わす情報と、タイムステップΔtを表わす情報と、解析領域内の構造体の配置を表わす情報と、物性値データと、電界や磁界の大きさの初期値を表わす情報と、吸収境界層における境界条件を表わす情報と、電圧源が接続された位置を表わす情報と、電圧源の内部抵抗を表わす情報と、出力波形などを表わす波源情報と、解析を終了する条件を表わす情報と、解析結果の出力形態を指定する情報とによって構成される。
解析領域のサイズを表わす情報は、解析領域を構成する格子1つのサイズを表わす情報と、解析領域全体の大きさを表わす情報とを含む。解析領域を構成する格子1つのサイズを表わす情報は、格子のX方向のサイズdxの情報と、格子のY方向のサイズdyの情報と、格子のZ方向のサイズdzの情報とを含む。解析領域全体の大きさを表わす情報は、X方向に並ぶ格子の数sxの情報と、Y方向に並ぶ格子の数syの情報と、Z方向に並ぶ格子の数szの情報とを含む。
物性値データは、物性を表わすデータである。物性値データは、配列変数epsilonx(i,j,k)に格納されるX方向の誘電率のデータと、配列変数sigmax(i,j,k)に格納されるX方向の導電率のデータと、配列変数epsilony(i,j,k)に格納されるY方向の誘電率のデータと、配列変数sigmay(i,j,k)に格納されるY方向の導電率のデータと、配列変数epsilonz(i,j,k)に格納されるZ方向の誘電率のデータと、配列変数sigmaz(i,j,k)に格納されるZ方向の導電率のデータと、配列変数mux(i,j,k)に格納されるYZ平面に平行な面の透磁率のデータと、配列変数muy(i,j,k)に格納されるZX平面に平行な面の透磁率のデータと、配列変数muz(i,j,k)に格納されるXY平面に平行な面の透磁率のデータとを含む。これらのデータが表わす誘電率と導電率とは、いずれも各格子の各辺の中心における物性を表わす。これらのデータが表わす透磁率は、いずれも各格子の各面の中心における透磁率を表わす。
ステップS822にて、計算部102として動作するCPU622は、解析領域を格子に分割する。「解析領域を格子に分割する」とは、物性値データを表わす配列変数の宣言を意味する。これらの配列変数の添字は、その配列変数が対応付けられた格子の配置を表わす。解析領域と併せて、吸収境界層も格子に分割される。解析領域と吸収境界層とが格子に分割されると、計算部102として動作するCPU622は、宣言された配列変数に、ステップS820にて読取られた物性値データの内容を定義する。これにより、記憶部104として動作するメモリ624は、解析領域の周囲にあって解析領域に対する反射波を抑制する領域である吸収境界層と解析領域とを含む領域を分割した各ブロックについて、物性値データを記憶することとなる。
ステップS824にて、計算部102として動作するCPU622は、電界変数と磁界変数とを配置する。「電界変数と磁界変数とを配置する」とは、次に述べる2種類の配列変数の宣言を意味する。その配列変数の1種類目は、電界変数となる配列変数である。電界変数は、各格子を構成する辺それぞれの中心における電界の大きさを表わす変数である。この配列変数において、X方向の電界の大きさを表わす電界変数Ex(i,j,k)における添字の最大値は、添字iの最大値が(sx-1)、添字jの最大値がsy、添字kの最大値がszである。Y方向の電界の大きさを表わす電界変数Ey(i,j,k)における添字の最大値は、添字iの最大値がsx、添字jの最大値が(sy-1)、添字kの最大値がszである。Z方向の電界の大きさを表わす電界変数Ez(i,j,k)における添字の最大値は、添字iの最大値がsx、添字jの最大値がsy、添字kの最大値が(sz-1)である。配列変数の2種類目は、磁界変数となる配列変数である。磁界変数は、各格子を構成する面それぞれの中心における磁界の大きさを表わす変数である。この配列変数において、X方向の磁界の大きさを表わす磁界変数Hx(i,j,k)における添字の最大値は、添字iの最大値がsx、添字jの最大値が(sy-1)、添字kの最大値が(sz-1)である。Y方向の磁界の大きさを表わす磁界変数Hy(i,j,k)における添字の最大値は、添字iの最大値が(sx-1)、添字jの最大値がsy、添字kの最大値が(sz-1)である。Z方向の磁界の大きさを表わす磁界変数Hz(i,j,k)における添字の最大値は、添字iの最大値が(sx-1)、添字jの最大値が(sy-1)、添字kの最大値がszである。なお、配列変数の添字は、解析領域または吸収境界領における位置を表わす。
ステップS826にて、計算部102として動作するCPU622は、配列変数cexa(i,j,k)、配列変数cexb(i,j,k)、配列変数cexc(i,j,k)、配列変数ceya(i,j,k)、配列変数ceyb(i,j,k)、配列変数ceyc(i,j,k)、配列変数ceza(i,j,k)、配列変数cezb(i,j,k)、配列変数cezc(i,j,k)、配列変数chxa(i,j,k)、配列変数chxb(i,j,k)、配列変数chya(i,j,k)、配列変数chyb(i,j,k)、配列変数chza(i,j,k)、および配列変数chzb(i,j,k)を宣言する。
配列変数cexa(i,j,k)、配列変数cexb(i,j,k)、配列変数cexc(i,j,k)、配列変数ceya(i,j,k)、配列変数ceyb(i,j,k)、配列変数ceyc(i,j,k)、配列変数ceza(i,j,k)、配列変数cezb(i,j,k)、および配列変数cezc(i,j,k)は、電界を計算するための係数を表わす。
配列変数chxa(i,j,k)、配列変数chxb(i,j,k)、配列変数chya(i,j,k)、配列変数chyb(i,j,k)、配列変数chza(i,j,k)、および配列変数chzb(i,j,k)は、磁界を計算するための係数を表わす変数である。
これらの配列変数の最大値を図5に示す。
ステップS828にて、計算部102として動作するCPU622は、ステップS826において宣言した配列変数に値を代入する。この処理は、後述するステップS880〜ステップS1010の処理に相当する。
ステップS828にて、計算部102として動作するCPU622は、ステップS826において宣言した配列変数に値を代入する。この処理は、後述するステップS880〜ステップS1010の処理に相当する。
ステップS830にて、計算部102として動作するCPU622は、ステップS820において読取られた電界や磁界の大きさの初期値を、ステップS824にて宣言した配列変数に代入する。
ステップS832にて、計算部102として動作するCPU622は、吸収境界層などにおけるパラメータを境界条件に基づいて設定する。このステップにおけるパラメータの設定とは、物性値データを表わす配列変数に吸収境界層などにおける設定値を代入することを意味する。本実施の形態の場合、吸収境界層としてPMLを用いることとする。
ステップS834にて、計算部102として動作するCPU622は、波源情報を基に、接続位置に対応する電界変数と電圧源とを関連付ける。「接続位置に対応する電界変数と電圧源とを関連付ける」とは、計算部102として動作するメモリ624が、電圧源がある格子の位置を記憶することを意味する。
ステップS836にて、計算部102として動作するCPU622は、時間の変化幅すなわちタイムステップΔtを決定する。タイムステップΔtが決定されると、計算部102は、時刻変数iを「1」に初期化する。時刻変数iは、時刻の経過をΔt単位で表わす変数である。本実施の形態では、時刻変数iが「1」である時点の解析領域の状態を「初期状態」と称する。
ステップS836にて、補正部106として動作するCPU622は、上限値Emaxの初期値を式(1)によって計算する。上限値Emaxは、解析領域におけるエネルギの総和の上限値である。上限値Emaxの初期値が計算されると、記憶部104として動作するメモリ624は、エネルギの上限値Emaxを記憶する。
図6を参照して、電磁界解析装置100で実行されるプログラムは、エネルギの流入量の算出に関し、以下のような制御を実行する。
ステップS840にて、計算部102として動作するCPU622は、電圧源の周囲における磁界の大きさを基に、電圧源に流れる電流Iを計算する。電圧源の周囲における磁界の大きさは、磁界変数の値としてメモリ624に記憶されている。
ステップS842にて、計算部102として動作するCPU622は、電圧源の位置において想定すべき電圧値Vを式(2)によって算出する。式(2)においては、時刻iΔtにおける電圧源の電圧値をV0とし、電源の内部抵抗をRとする。
ステップS844にて、計算部102として動作するCPU622は、式(2)によって得られた電圧値Vと電圧源の位置での格子間隔Δとにより、電界変数の値Eを算出する。計算部102として動作するCPU622は、電界変数の値Eを算出するために、式(3)を利用する。
ステップS846にて、記憶部104として動作するメモリ624は、計算部102として動作するCPU622が算出した電界変数の値Eを記憶する。
ステップS848にて、計算部102として動作するCPU622は、電圧源から解析領域内に流入したエネルギVIΔtを補正部106に通知する。本実施の形態の場合、計算部102から補正部106への通知は、CPU622の内部のバッファがエネルギVIΔtの値を記憶することにより実現される。
ステップS850にて、補正部106として動作するCPU622は、エネルギVIΔtをエネルギの上限値Emaxに加える。
図7を参照して、電磁界解析装置100で実行されるプログラムは、エネルギの流出量の算出に関し、以下のような制御を実行する。
ステップS860にて、補正部106として動作するCPU622は、ポインティングベクトルPを計算する。ポインティングベクトルPは、解析領域と吸収境界層との境界部にある格子の各頂点について計算される。
ステップS862にて、補正部106として動作するCPU622は、流出エネルギEoutを算出する。本実施の形態の場合、ポインティングベクトルPが解析領域の内側に向いていると、そのポインティングベクトルの起点における流出エネルギEoutの値は「0」とみなされる。ポインティングベクトルPが解析領域の外側に向いていると、そのポインティングベクトルの起点における流出エネルギEoutの値は式(4)により算出される。
式(4)において、解析領域境界面の法線とポインティングベクトルのなす角はθと表わされる。解析領域境界面での各点での格子の作る面積はΔSと表わされる。
ステップS864にて、補正部106として動作するCPU622は、流出エネルギEoutの総和をエネルギの上限値Emaxから減じる。これにより、CPU622は、解析領域におけるエネルギの流入量と解析領域の外に向くポインティングベクトルの大きさに対応するエネルギの流出量と一旦メモリ624が記憶したエネルギの上限値Emaxとに基づいて、電界変数および磁界変数の内容を更新した後の解析領域におけるエネルギの総和を計算することとなる。エネルギの上限値Emaxが減じられると、CPU622は、CPU622が計算した値に記憶部104として動作するメモリ624が記憶したエネルギの上限値Emaxの値を更新する。
図8を参照して、電磁界解析装置100で実行されるプログラムは、電界変数などの補正に関し、以下のような制御を実行する。
ステップS870にて、補正部106として動作するCPU622は、式(5)により、電磁界エネルギEemを計算する。
ステップS872にて、補正部106として動作するCPU622は、αEmax≧Eemが満たされているか否かを判断する。この時、補正部106として動作するCPU622は、物性値データの内容の更新後に補正部106として動作するCPU622自身が計算したエネルギの総和Eemが閾値αEmaxを越えるか否かを判断することとなる。αEmax≧Eemが満たされていると判断した場合には(ステップS872にてYES)、処理は終了する。もしそうでないと(ステップS872にてNO)、処理はステップS874へと移される。
ステップS874にて、補正部106として動作するCPU622は、物性値データの内容を補正する。補正される物性値データは、解析領域内の電界変数および磁界変数、ならびに吸収境界層内部の変数値を表わす。この物性値データは、メモリ624が記憶したデータである。補正部106として動作するCPU622は、残さEem−αEmaxを解析領域内の電界変数と磁界変数とに配分するように、物性値データの内容を補正する。より具体的に説明すると、補正部106として動作するCPU622は、解析領域内の電界変数と磁界変数と吸収境界層内部の変数値とに式(6)で示される値kを乗じる。すなわち、補正部106として動作するCPU622は、CPU622自身が計算したエネルギの総和Eemに対する閾値αEmaxの割合の平方根kと補正前の物性値データが表わす値との積に、物性値データの内容を補正することとなる。
電界変数などが補正された後の修正後のEemの値をE'emとすると、式(7)のように残さが配分されていることが分かる。これにより、補正部106として動作するCPU622は、αEmax<Eemである場合、補正後の解析領域におけるエネルギの総和E'emが閾値αEmaxと等しくなるように、物性値データの内容を補正することとなる。
解析領域内の電界変数および磁界変数、ならびに吸収境界層内部の変数値が補正されると、解析領域と吸収境界層との境界部での不連続性が排除される。
なお、変数αは、ユーザが補正部106として動作するキーボード650に入力し、キーボード650が受付けた値である。
図9〜図14を参照して、電磁界解析装置100で実行されるプログラムは、値の代入に関し、以下のような制御を実行する。
ステップS880にて、計算部102として動作するCPU622は、変数kに「0」を代入する。ステップS882にて、計算部102として動作するCPU622は、変数jに「0」を代入する。ステップS884にて、計算部102として動作するCPU622は、変数iに「0」を代入する。
ステップS886にて、計算部102として動作するCPU622は、変数epsに変数epsilonx(i,j,k)の値を代入する。併せて、CPU622は、変数sigに変数sigmax(i,j,k)の値を代入する。
ステップS888にて、計算部102として動作するCPU622は、電界変数の値Ex(i,j,k)を算出するための変数である、配列変数cexa(i,j,k)、配列変数cexb(i,j,k)、および配列変数cexc(i,j,k)に、それぞれ次の式によって値を代入する。
cexa(i,j,k)=(2×eps-sig×Δt)/(2×eps+sig×Δt)
cexb(i,j,k)=(2×Δt)/{(2×eps+sig×Δt)×Δy}
cexc(i,j,k)=(2×Δt)/{(2×eps+sig×Δt)×Δz}
ステップS890にて、計算部102として動作するCPU622は、変数iの値が変数(sx-1)の値を超えているか否かを判断する。変数iの値が変数(sx-1)の値を超えていると判断した場合には(ステップS890にてYES)、処理はステップS892へと移される。もしそうでないと(ステップS890にてNO)、処理はステップS894へと移される。
cexb(i,j,k)=(2×Δt)/{(2×eps+sig×Δt)×Δy}
cexc(i,j,k)=(2×Δt)/{(2×eps+sig×Δt)×Δz}
ステップS890にて、計算部102として動作するCPU622は、変数iの値が変数(sx-1)の値を超えているか否かを判断する。変数iの値が変数(sx-1)の値を超えていると判断した場合には(ステップS890にてYES)、処理はステップS892へと移される。もしそうでないと(ステップS890にてNO)、処理はステップS894へと移される。
ステップS892にて、計算部102として動作するCPU622は、変数jの値が変数syの値を超えているか否かを判断する。変数jの値が変数syの値を超えていると判断した場合には(ステップS892にてYES)、処理はステップS896へと移される。もしそうでないと(ステップS892にてNO)、処理はステップS898へと移される。
ステップS894にて、計算部102として動作するCPU622は、変数iの値を「1」増加させる。
ステップS896にて、計算部102として動作するCPU622は、変数kの値が変数szの値を超えているか否かを判断する。変数kの値が変数szの値を超えていると判断した場合には(ステップS896にてYES)、処理はステップS900へと移される。もしそうでないと(ステップS896にてNO)、処理はステップS902へと移される。
ステップS898にて、計算部102として動作するCPU622は、変数jの値を「1」増加させる。
ステップS900にて、計算部102として動作するCPU622は、変数kに「0」を代入する。
ステップS902にて、計算部102として動作するCPU622は、変数kの値を「1」増加させる。
ステップS904にて、計算部102として動作するCPU622は、変数jに「0」を代入する。ステップS906にて、計算部102として動作するCPU622は、変数iに「0」を代入する。
ステップS908にて、計算部102として動作するCPU622は、変数epsに変数epsilony(i,j,k)の値を代入する。併せて、CPU622は、変数sigに変数sigmay(i,j,k)の値を代入する。
ステップS910にて、計算部102として動作するCPU622は、電界変数の値Ey(i,j,k)を算出するための変数である、配列変数ceya(i,j,k)、配列変数ceyb(i,j,k)、および配列変数ceyc(i,j,k)に、それぞれ次の式によって値を代入する。
ceya(i,j,k)=(2×eps-sig×Δt)/(2×eps+sig×Δt)
ceyb(i,j,k)=(2×Δt)/{(2×eps+sig×Δt)×Δz}
ceyc(i,j,k)=(2×Δt)/{(2×eps+sig×Δt)×Δx}
ステップS912にて、計算部102として動作するCPU622は、変数iの値が変数sxの値を超えているか否かを判断する。変数iの値が変数sxの値を超えていると判断した場合には(ステップS912にてYES)、処理はステップS914へと移される。もしそうでないと(ステップS912にてNO)、処理はステップS916へと移される。
ceyb(i,j,k)=(2×Δt)/{(2×eps+sig×Δt)×Δz}
ceyc(i,j,k)=(2×Δt)/{(2×eps+sig×Δt)×Δx}
ステップS912にて、計算部102として動作するCPU622は、変数iの値が変数sxの値を超えているか否かを判断する。変数iの値が変数sxの値を超えていると判断した場合には(ステップS912にてYES)、処理はステップS914へと移される。もしそうでないと(ステップS912にてNO)、処理はステップS916へと移される。
ステップS914にて、計算部102として動作するCPU622は、変数jの値が変数(sy-1)の値を超えているか否かを判断する。変数jの値が変数(sy-1)の値を超えていると判断した場合には(ステップS914にてYES)、処理はステップS918へと移される。もしそうでないと(ステップS914にてNO)、処理はステップS920へと移される。
ステップS916にて、計算部102として動作するCPU622は、変数iの値を「1」増加させる。
ステップS918にて、計算部102として動作するCPU622は、変数kの値が変数szの値を超えているか否かを判断する。変数kの値が変数szの値を超えていると判断した場合には(ステップS918にてYES)、処理はステップS922へと移される。もしそうでないと(ステップS918にてNO)、処理はステップS924へと移される。
ステップS920にて、計算部102として動作するCPU622は、変数jの値を「1」増加させる。
ステップS922にて、計算部102として動作するCPU622は、変数kに「0」を代入する。
ステップS924にて、計算部102として動作するCPU622は、変数kの値を「1」増加させる。
ステップS926にて、計算部102として動作するCPU622は、変数jに「0」を代入する。ステップS928にて、計算部102として動作するCPU622は、変数iに「0」を代入する。
ステップS930にて、計算部102として動作するCPU622は、変数epsに変数epsilonz(i,j,k)の値を代入する。併せて、CPU622は、変数sigに変数sigmaz(i,j,k)の値を代入する。
ステップS932にて、計算部102として動作するCPU622は、電界変数の値Ez(i,j,k)を算出するための変数である、配列変数ceza(i,j,k)、配列変数cezb(i,j,k)、および配列変数cezc(i,j,k)に、それぞれ次の式によって値を代入する。
ceza(i,j,k)=(2×eps-sig×Δt)/(2×eps+sig×Δt)
cezb(i,j,k)=(2×Δt)/{(2×eps+sig×Δt)×Δx}
cezc(i,j,k)=(2×Δt)/{(2×eps+sig×Δt)×Δy}
ステップS934にて、計算部102として動作するCPU622は、変数iの値が変数sxの値を超えているか否かを判断する。変数iの値が変数sxの値を超えていると判断した場合には(ステップS934にてYES)、処理はステップS936へと移される。もしそうでないと(ステップS934にてNO)、処理はステップS938へと移される。
cezb(i,j,k)=(2×Δt)/{(2×eps+sig×Δt)×Δx}
cezc(i,j,k)=(2×Δt)/{(2×eps+sig×Δt)×Δy}
ステップS934にて、計算部102として動作するCPU622は、変数iの値が変数sxの値を超えているか否かを判断する。変数iの値が変数sxの値を超えていると判断した場合には(ステップS934にてYES)、処理はステップS936へと移される。もしそうでないと(ステップS934にてNO)、処理はステップS938へと移される。
ステップS936にて、計算部102として動作するCPU622は、変数jの値が変数syの値を超えているか否かを判断する。変数jの値が変数syの値を超えていると判断した場合には(ステップS936にてYES)、処理はステップS940へと移される。もしそうでないと(ステップS936にてNO)、処理はステップS942へと移される。
ステップS938にて、計算部102として動作するCPU622は、変数iの値を「1」増加させる。
ステップS940にて、計算部102として動作するCPU622は、変数kの値が変数(sz-1)の値を超えているか否かを判断する。変数kの値が変数(sz-1)の値を超えていると判断した場合には(ステップS940にてYES)、処理はステップS944へと移される。もしそうでないと(ステップS940にてNO)、処理はステップS946へと移される。
ステップS942にて、計算部102として動作するCPU622は、変数jの値を「1」増加させる。
ステップS944にて、計算部102として動作するCPU622は、変数kに「0」を代入する。
ステップS946にて、計算部102として動作するCPU622は、変数kの値を「1」増加させる。
ステップS948にて、計算部102として動作するCPU622は、変数jに「0」を代入する。ステップS950にて、計算部102として動作するCPU622は、変数iに「0」を代入する。
ステップS952にて、計算部102として動作するCPU622は、変数muに変数mux(i,j,k)の値を代入する。
ステップS954にて、計算部102として動作するCPU622は、Ex(i,j,k)に基づいてHy(i,j,k)およびHz(i,j,k)を算出するための変数である配列変数chxa(i,j,k)および配列変数chxb(i,j,k)に、それぞれ次の式によって値を代入する。
chxa(i,j,k)=Δt/(mu×Δx)
chxb(i,j,k)=Δt/(mu×Δy)
ステップS956にて、計算部102として動作するCPU622は、変数iの値が変数sxの値を超えているか否かを判断する。変数iの値が変数sxの値を超えていると判断した場合には(ステップS956にてYES)、処理はステップS958へと移される。もしそうでないと(ステップS956にてNO)、処理はステップS960へと移される。
chxb(i,j,k)=Δt/(mu×Δy)
ステップS956にて、計算部102として動作するCPU622は、変数iの値が変数sxの値を超えているか否かを判断する。変数iの値が変数sxの値を超えていると判断した場合には(ステップS956にてYES)、処理はステップS958へと移される。もしそうでないと(ステップS956にてNO)、処理はステップS960へと移される。
ステップS958にて、計算部102として動作するCPU622は、変数jの値が変数(sy-1)の値を超えているか否かを判断する。変数jの値が変数(sy-1)の値を超えていると判断した場合には(ステップS958にてYES)、処理はステップS962へと移される。もしそうでないと(ステップS958にてNO)、処理はステップS964へと移される。
ステップS960にて、計算部102として動作するCPU622は、変数iの値を「1」増加させる。
ステップS962にて、計算部102として動作するCPU622は、変数kの値が変数(sz-1)の値を超えているか否かを判断する。変数kの値が変数(sz-1)の値を超えていると判断した場合には(ステップS962にてYES)、処理はステップS966へと移される。もしそうでないと(ステップS962にてNO)、処理はステップS968へと移される。
ステップS964にて、計算部102として動作するCPU622は、変数jの値を「1」増加させる。
ステップS966にて、計算部102として動作するCPU622は、変数kに「0」を代入する。
ステップS968にて、計算部102として動作するCPU622は、変数kの値を「1」増加させる。
ステップS970にて、計算部102として動作するCPU622は、変数jに「0」を代入する。ステップS972にて、計算部102として動作するCPU622は、変数iに「0」を代入する。
ステップS974にて、計算部102として動作するCPU622は、変数muに変数muy(i,j,k)の値を代入する。
ステップS976にて、計算部102として動作するCPU622は、Ey(i,j,k)に基づいてHz(i,j,k)およびHx(i,j,k)を算出するための変数である配列変数chya(i,j,k)および配列変数chyb(i,j,k)に、それぞれ次の式によって値を代入する。
chya(i,j,k)=Δt/(mu×Δz)
chyb(i,j,k)=Δt/(mu×Δx)
ステップS978にて、計算部102として動作するCPU622は、変数iの値が変数(sx-1)の値を超えているか否かを判断する。変数iの値が変数(sx-1)の値を超えていると判断した場合には(ステップS978にてYES)、処理はステップS980へと移される。もしそうでないと(ステップS978にてNO)、処理はステップS982へと移される。
chyb(i,j,k)=Δt/(mu×Δx)
ステップS978にて、計算部102として動作するCPU622は、変数iの値が変数(sx-1)の値を超えているか否かを判断する。変数iの値が変数(sx-1)の値を超えていると判断した場合には(ステップS978にてYES)、処理はステップS980へと移される。もしそうでないと(ステップS978にてNO)、処理はステップS982へと移される。
ステップS980にて、計算部102として動作するCPU622は、変数jの値が変数syの値を超えているか否かを判断する。変数jの値が変数syの値を超えていると判断した場合には(ステップS980にてYES)、処理はステップS984へと移される。もしそうでないと(ステップS980にてNO)、処理はステップS986へと移される。
ステップS982にて、計算部102として動作するCPU622は、変数iの値を「1」増加させる。
ステップS984にて、計算部102として動作するCPU622は、変数kの値が変数(sz-1)の値を超えているか否かを判断する。変数kの値が変数(sz-1)の値を超えていると判断した場合には(ステップS984にてYES)、処理はステップS988へと移される。もしそうでないと(ステップS984にてNO)、処理はステップS990へと移される。
ステップS986にて、計算部102として動作するCPU622は、変数jの値を「1」増加させる。
ステップS988にて、計算部102として動作するCPU622は、変数kに「0」を代入する。
ステップS990にて、計算部102として動作するCPU622は、変数kの値を「1」増加させる。
ステップS992にて、計算部102として動作するCPU622は、変数jに「0」を代入する。ステップS994にて、計算部102として動作するCPU622は、変数iに「0」を代入する。
ステップS996にて、計算部102として動作するCPU622は、変数muに変数muz(i,j,k)の値を代入する。
ステップS998にて、計算部102として動作するCPU622は、Ez(i,j,k)に基づいてHx(i,j,k)およびHy(i,j,k)を算出するための変数である配列変数chza(i,j,k)および配列変数chzb(i,j,k)に、それぞれ次の式によって値を代入する。
chza(i,j,k)=Δt/(mu×Δy)
chzb(i,j,k)=Δt/(mu×Δz)
ステップS1000にて、計算部102として動作するCPU622は、変数iの値が変数(sx-1)の値を超えているか否かを判断する。変数iの値が変数(sx-1)の値を超えていると判断した場合には(ステップS1000にてYES)、処理はステップS1002へと移される。もしそうでないと(ステップS1000にてNO)、処理はステップS1004へと移される。
chzb(i,j,k)=Δt/(mu×Δz)
ステップS1000にて、計算部102として動作するCPU622は、変数iの値が変数(sx-1)の値を超えているか否かを判断する。変数iの値が変数(sx-1)の値を超えていると判断した場合には(ステップS1000にてYES)、処理はステップS1002へと移される。もしそうでないと(ステップS1000にてNO)、処理はステップS1004へと移される。
ステップS1002にて、計算部102として動作するCPU622は、変数jの値が変数(sy-1)の値を超えているか否かを判断する。変数jの値が変数(sy-1)の値を超えていると判断した場合には(ステップS1002にてYES)、処理はステップS1006へと移される。もしそうでないと(ステップS1002にてNO)、処理はステップS1008へと移される。
ステップS1004にて、計算部102として動作するCPU622は、変数iの値を「1」増加させる。
ステップS1006にて、計算部102として動作するCPU622は、変数kの値が変数szの値を超えているか否かを判断する。変数kの値が変数szの値を超えていると判断した場合には(ステップS1006にてYES)、処理は終了する。もしそうでないと(ステップS1006にてNO)、処理はステップS1010へと移される。
ステップS1008にて、計算部102として動作するCPU622は、変数jの値を「1」増加させる。
ステップS1010にて、計算部102として動作するCPU622は、変数kの値を「1」増加させる。
以上のような構造およびフローチャートに基づく、電磁界解析装置100の動作について説明する。
計算部102として動作するFD駆動装置630は、解析条件を表わす情報をFD632から読取る。解析条件を表わす情報が読取られると、計算部102または補正部106として動作するCPU622は、読取られた解析条件をもとに初期化処理を行なう(ステップS800)。
初期化処理が行なわれると、計算部102として動作するCPU622は、電界変数の値を計算する。電界変数の値が計算されると、計算部102として動作するCPU622は、記憶部104に記憶された電界変数の値を自らが計算した値に更新する(ステップS802)。
電界変数の値が更新されると、計算部102として動作するCPU622などはすべての電圧源について、解析領域内に流入したエネルギを算出する(ステップS804)。
エネルギが算出されると、計算部102として動作するCPU622は、磁界変数の値を算出する(ステップS806)。磁界変数の値が算出されると、補正部106として動作するCPU622は、解析領域と吸収境界層との境界部から吸収境界層へ流出するエネルギを計算する(ステップS808)。
エネルギが算出されると、計算部102として動作するCPU622は、時刻変数iが変数Nの倍数か否かを判断する(ステップS810)。この場合、時刻変数iが変数Nの倍数とすると(ステップS810にてYES)、補正部106として動作するCPU622は、必要に応じて電界変数などを補正する(ステップS812)。
電界変数などが補正されると、計算部102として動作するディスプレイ610は、メモリ624が記憶した、電界変数の値と磁界変数の値とを出力する(ステップS814)。
値が出力されると、計算部102として動作するCPU622は、時刻変数iに「1」を加える(ステップS816)。
計算部102として動作するCPU622は、解析を終了する条件に基づき、解析を終了するか否かを判断する(ステップS818)。この場合、解析を終了しないとすると(ステップS818にてNO)、ステップS802〜ステップS818の処理が繰返される。
以上のようにして、本実施の形態に係る電磁界解析装置は、エネルギ保存則に則って電界変数と磁界変数との値を補正するので、誤差の蓄積による解析結果の発散を防止できる。その結果、FDTD法などの数値解析法により長時間に亘り物性値の挙動を求めることができる。
なお、本実施の形態の第1の変形例にかかる電磁界解析装置は、電流源などの別の波源を用いてもよい。電圧源以外の波源が用いられた場合、本実施の形態の変形例にかかる電磁界解析装置は、解析領域に流入したエネルギを算出し、それをエネルギの上限値Emaxに加えることとなる。
また、本実施の形態の第2の変形例にかかる電磁界解析装置は、物性値データに代え、各格子の物性を表わす値の情報を受付けてもよい。この場合、電磁界解析装置は、各格子の物性を表わす値から、補間によって物性値データの内容を決定することとなる。
また、本実施の形態の第3の変形例にかかる電磁界解析装置は、ステップS888にて、配列変数cexa(i,j,k)、配列変数cexb(i,j,k)、および配列変数cexc(i,j,k)に値を代入することに代えて、次の手順の処理を行ってもよい。その第1の手順は、配列変数cexa(i,j,k)、配列変数cexb(i,j,k)、および配列変数cexc(i,j,k)に代入すべき値を算出する手順である。第2の手順は、第1の手順で算出した値のグループに対応付けられた番号を配列変数cexi(i,j,k)に代入する手順である。配列変数cexi(i,j,k)は、予め宣言されている。第1の手順で算出した値と同じ組合せのグループが既にメモリ624に記憶されている場合、この手順において代入される値は、そのグループに対応付けてメモリ624に記憶されている値である。第1の手順で算出した値と同じ組合せのグループがメモリ624に記憶されていない場合、この手順において代入される値は、第1の手順で算出した値を1つのグループとし、そのグループをメモリ624に記憶させる際、そのグループに対応付けてメモリ624に記憶される値である。第1の手順で算出した値と同じ組合せのグループがメモリ624に記憶されていない場合、そのグループは、第1の手順の直後にメモリ624に記憶される。この手順において代入される値は、メモリ624に記憶される値のグループと1対1で対応する。これらの手順を実施する場合、ステップS802にて、電界変数の値を算出するに先立ち、配列変数cexi(i,j,k)の値に基づき、CPU622は、配列変数cexa(i,j,k)、配列変数cexb(i,j,k)、および配列変数cexc(i,j,k)に相当する値をメモリ624から読出すこととなる。これにより、メモリ624に記憶される情報量を少なくすることができる。この効果は、次の2つの場合にメモリ624に記憶されるデータの量を比較すれば明らかである。その第1の場合とは、配列変数cexa(i,j,1)の値を「0.00000000001」、配列変数cexb(i,j,1)の値を「0.00000000002」、配列変数cexc(i,j,1)の値を「0.00000000003」、配列変数cexa(i,j,2)の値を「0.00000000001」、配列変数cexb(i,j,2)の値を「0.00000000002」、配列変数cexc(i,j,2)の値を「0.00000000003」とし、かつこれらの値をメモリ624に記憶させた場合である。その第2の場合とは、cexi(i,j,1)の値を「1」、cexi(i,j,2)の値を「1」とし、「0.00000000001」、「0.00000000002」、および「0.00000000003」という値を「1」という値に対応付けて記憶した場合である。
また、本実施の形態の第4の変形例にかかる電磁界解析装置は、ステップS910にて、配列変数ceya(i,j,k)、配列変数ceyb(i,j,k)、および配列変数ceyc(i,j,k)に値を代入することに代えて、次の手順の処理を行ってもよい。その第1の手順は、配列変数ceya(i,j,k)、配列変数ceyb(i,j,k)、および配列変数ceyc(i,j,k)に代入すべき値を算出する手順である。第2の手順は、第1の手順で算出した値のグループに対応付けられた番号を配列変数ceyi(i,j,k)に代入する手順である。配列変数ceyi(i,j,k)は、予め宣言されている。第1の手順で算出した値と同じ組合せのグループが既にメモリ624に記憶されている場合、この手順において代入される値は、そのグループに対応付けてメモリ624に記憶されている値である。第1の手順で算出した値と同じ組合せのグループがメモリ624に記憶されていない場合、この手順において代入される値は、第1の手順で算出した値を1つのグループとし、そのグループをメモリ624に記憶させる際、そのグループに対応付けてメモリ624に記憶される値である。第1の手順で算出した値と同じ組合せのグループがメモリ624に記憶されていない場合、そのグループは、第1の手順の直後にメモリ624に記憶される。この手順において代入される値は、メモリ624に記憶される値のグループと1対1で対応する。これらの手順を実施する場合、ステップS806にて、磁界変数の値を算出するに先立ち、配列変数ceyi(i,j,k)の値に基づき、CPU622は、配列変数ceya(i,j,k)、配列変数ceyb(i,j,k)、および配列変数ceyc(i,j,k)に相当する値をメモリ624から読出すこととなる。これにより、上述した第3の変形例の場合と同様に、メモリ624に記憶される情報量を少なくすることができる。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
100 電磁界解析装置、102 計算部、104 記憶部、106 補正部、610 ディスプレイ、622 CPU、624 メモリ、626 固定ディスク、630 FD駆動装置、632 FD、640 CD−ROM駆動装置、642 CD−ROM、650 キーボード。
Claims (9)
- 解析領域の周囲にあって前記解析領域に対する反射波を抑制する領域である吸収境界層と前記解析領域とを含む領域を分割した各ブロックについて、物性を表わすデータである物性値データを記憶するための第1の記憶手段と、
互いに隣接する複数の前記ブロックについての前記物性値データに基づいて、前記複数のブロックそれぞれについての前記物性値を計算するための第1の計算手段と、
前記物性値データの内容を前記第1の計算手段が計算した物性値に更新するための更新手段と、
前記物性値データに基づいて、前記解析領域におけるエネルギの総和を計算するための第2の計算手段と、
前記物性値データの内容の更新後に前記第2の計算手段が計算した前記エネルギの総和が閾値を越えるか否かを判断するための判断手段と、
前記第2の計算手段が計算した前記エネルギの総和が前記閾値を越える場合、前記物性値データの内容を補正するための補正手段と、
前記第1の記憶手段が記憶したデータを出力するための出力手段とを含む、解析装置。 - 前記補正手段は、前記第2の計算手段が計算した前記エネルギの総和が前記閾値を越える場合、補正後の前記解析領域におけるエネルギの総和が前記閾値と等しくなるように、前記物性値データの内容を補正するための手段を含む、請求項1に記載の解析装置。
- 前記物性値データの内容を補正するための手段は、前記第2の計算手段が計算した前記エネルギの総和に対する前記閾値の割合の平方根と補正前の前記物性値データが表わす値との積に、前記物性値データの内容を補正するための手段を含む、請求項2に記載の解析装置。
- 前記第1の記憶手段は、前記各ブロックについて、ブロックを構成する辺における電界のデータである電界データと前記ブロックの面における磁界のデータである磁界データとを記憶するための手段を含み、
前記第1の計算手段は、
前記磁界データに基づいて、任意の時点である第1の時点の前記各ブロックの頂点における電界の大きさを計算するための手段と、
前記電界の大きさを計算するための手段が計算した電界の大きさに基づいて、前記第1の時点より後の時点である第2の時点の前記各ブロックの面における磁界の大きさを計算するための手段とを含み、
前記更新手段は、
前記電界の大きさを計算するための手段が計算した値に前記電界データの内容を更新するための手段と、
前記磁界の大きさを計算するための手段が計算した値に前記磁界データの内容を更新するための手段とを含み、
前記第2の計算手段は、内容を更新した前記電界データおよび内容を更新した磁界データに基づいて、前記解析領域におけるエネルギの総和を計算するための手段を含む、請求項1に記載の解析装置。 - 前記解析領域におけるエネルギの総和を計算するための手段は、
前記解析領域におけるエネルギの総和を表わす値を記憶するための第2の記憶手段と、
前記解析領域におけるエネルギの流入量と前記解析領域の外に向くポインティングベクトルの大きさに対応するエネルギの流出量と前記第2の記憶手段が記憶した値とに基づいて、前記電界データおよび前記磁界データの内容を更新した後の前記解析領域におけるエネルギの総和を計算するための手段と、
前記計算するための手段が計算した値に前記第2の記憶手段が記憶した値を更新するための手段とを含む、請求項4に記載の解析装置。 - 前記第2の計算手段は、
前記解析領域におけるエネルギの総和を表わす値を記憶するための第2の記憶手段と、
前記物性値データの更新により生じた前記解析領域におけるエネルギの変化量と前記第2の記憶手段が記憶した値との和を計算するための手段と、
前記計算するための手段が計算した値に前記第2の記憶手段が記憶した値を更新するための手段とを含む、請求項1に記載の解析装置。 - 解析装置が、解析領域の周囲にあって前記解析領域に対する反射波を抑制する領域である吸収境界層と前記解析領域とを含む領域を分割した各ブロックについて、物性値のデータである物性値データを記憶する第1の記憶ステップと、
前記解析装置が、互いに隣接する複数の前記ブロックについての前記物性値データに基づいて、前記複数のブロックそれぞれについての、任意の時点の前記物性値を計算する第1の計算ステップと、
前記解析装置が、前記物性値データの内容を前記第1の計算ステップにおいて計算した物性値に更新する更新ステップと、
前記解析装置が、前記更新ステップにおいて前記物性値データの内容を更新すると、前記物性値データに基づいて、前記解析領域におけるエネルギの総和を計算する第2の計算ステップと、
前記解析装置が、前記第2の計算ステップにおいて計算した前記解析領域におけるエネルギの総和が閾値を越えるか否かを判断する判断ステップと、
前記解析装置が、前記解析領域におけるエネルギの総和が前記閾値を越える場合、前記物性値データの内容を補正する補正ステップと、
前記解析装置が、前記第1の記憶ステップにおいて記憶したデータを出力する出力ステップとを含む、解析方法。 - コンピュータが、解析領域の周囲にあって前記解析領域に対する反射波を抑制する領域である吸収境界層と前記解析領域とを含む領域を分割した各ブロックについて、物性値のデータである物性値データを記憶する第1の記憶ステップと、
前記コンピュータが、互いに隣接する複数の前記ブロックについての前記物性値データに基づいて、前記複数のブロックそれぞれについての、任意の時点の前記物性値を計算する第1の計算ステップと、
前記コンピュータが、前記物性値データの内容を前記第1の計算ステップにおいて計算した物性値に更新する更新ステップと、
前記コンピュータが、前記更新ステップにおいて前記物性値データの内容を更新すると、前記物性値データに基づいて、前記解析領域におけるエネルギの総和を計算する第2の計算ステップと、
前記コンピュータが、前記第2の計算ステップにおいて計算した前記解析領域におけるエネルギの総和が閾値を越えるか否かを判断する判断ステップと、
前記コンピュータが、前記解析領域におけるエネルギの総和が前記閾値を越える場合、前記物性値データの内容を補正する補正ステップと、
前記コンピュータが、前記第1の記憶ステップにおいて記憶したデータを出力する出力ステップとを含む各ステップをコンピュータに実行させるための解析プログラム。 - コンピュータが、解析領域の周囲にあって前記解析領域に対する反射波を抑制する領域である吸収境界層と前記解析領域とを含む領域を分割した各ブロックについて、物性値のデータである物性値データを記憶する第1の記憶ステップと、
前記コンピュータが、互いに隣接する複数の前記ブロックについての前記物性値データに基づいて、前記複数のブロックそれぞれについての、任意の時点の前記物性値を計算する第1の計算ステップと、
前記コンピュータが、前記物性値データの内容を前記第1の計算ステップにおいて計算した物性値に更新する更新ステップと、
前記コンピュータが、前記更新ステップにおいて前記物性値データの内容を更新すると、前記物性値データに基づいて、前記解析領域におけるエネルギの総和を計算する第2の計算ステップと、
前記コンピュータが、前記第2の計算ステップにおいて計算した前記解析領域におけるエネルギの総和が閾値を越えるか否かを判断する判断ステップと、
前記コンピュータが、前記解析領域におけるエネルギの総和が前記閾値を越える場合、前記物性値データの内容を補正する補正ステップと、
前記コンピュータが、前記第1の記憶ステップにおいて記憶したデータを出力する出力ステップとを含む各ステップをコンピュータに実行させるための解析プログラムを記録したコンピュータ読取り可能な記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006052747A JP2007232487A (ja) | 2006-02-28 | 2006-02-28 | 解析装置、解析方法、解析プログラム、および解析プログラムを記録したコンピュータ読取り可能な記録媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006052747A JP2007232487A (ja) | 2006-02-28 | 2006-02-28 | 解析装置、解析方法、解析プログラム、および解析プログラムを記録したコンピュータ読取り可能な記録媒体 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007232487A true JP2007232487A (ja) | 2007-09-13 |
Family
ID=38553217
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006052747A Withdrawn JP2007232487A (ja) | 2006-02-28 | 2006-02-28 | 解析装置、解析方法、解析プログラム、および解析プログラムを記録したコンピュータ読取り可能な記録媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2007232487A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010262338A (ja) * | 2009-04-30 | 2010-11-18 | Fujitsu Ltd | 電磁流分布処理装置、電磁流分布処理方法、及び電磁流分布処理プログラム |
-
2006
- 2006-02-28 JP JP2006052747A patent/JP2007232487A/ja not_active Withdrawn
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010262338A (ja) * | 2009-04-30 | 2010-11-18 | Fujitsu Ltd | 電磁流分布処理装置、電磁流分布処理方法、及び電磁流分布処理プログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6427672B2 (ja) | ビームフォーミングフィルタのためのfirフィルタ係数の算出 | |
KR101930671B1 (ko) | 음성 처리 장치 및 방법, 그리고 기록 매체 | |
KR101616854B1 (ko) | 전류센서, 센서소자 및 제어장치 | |
EP2606371B1 (en) | Apparatus and method for resolving ambiguity from a direction of arrival estimate | |
RU2015153551A (ru) | Аудиоустройство и способ для него | |
KR20240068780A (ko) | 사운드 필드를 위해 고차 앰비소닉스 표현을 압축 및 압축 해제하기 위한 방법 및 장치 | |
Weißer | Residual error estimate for BEM-based FEM on polygonal meshes | |
Ono | Fast stereo independent vector analysis and its implementation on mobile phone | |
JPWO2015012122A1 (ja) | 情報処理装置および方法、並びにプログラム | |
JP2014174393A (ja) | 音声信号処理装置及び方法 | |
JPWO2012070670A1 (ja) | 信号処理装置、信号処理方法、及び信号処理プログラム | |
JP2015040721A (ja) | 推定方法およびそれを利用した推定装置 | |
JP2007232487A (ja) | 解析装置、解析方法、解析プログラム、および解析プログラムを記録したコンピュータ読取り可能な記録媒体 | |
JP3302300B2 (ja) | 信号処理装置および信号処理方法 | |
JP6380072B2 (ja) | 磁気特性測定方法、磁気特性測定システム、およびプログラム | |
JP2019086637A (ja) | デジタル音声処理装置、デジタル音声処理方法、及びデジタル音声処理プログラム | |
JP2011013031A (ja) | 到来方向推定装置 | |
US9936293B2 (en) | Sound reproduction apparatus, a non-transitory computer readable medium, and a sound reproduction-correction method | |
KR20090098552A (ko) | 위상정보를 이용한 자동 이득 조절 장치 및 방법 | |
JP6520276B2 (ja) | 雑音抑圧装置、雑音抑圧方法、及び、プログラム | |
JP5856888B2 (ja) | 対応点探索方法、対応点探索装置および対応点探索プログラム | |
JP2017187346A (ja) | Bh曲線作成装置、電磁場解析装置、bh曲線作成方法、及びコンピュータプログラム | |
JP2008134298A (ja) | 信号処理装置、信号処理方法およびプログラム | |
KR101086761B1 (ko) | 저변형 용접 순서 도출을 위한 해석방법 | |
JP4510795B2 (ja) | 伝達系推定装置、方法、プログラム、記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20090512 |