(57)【要約】【課題】汎用的な場の物理量のシミュレーション方法を確立することにより、１つのシミュレーションプログラムで、様々な系のシミュレーションを可能にする。また、場の物理量のシミュレーションの効率を上げる。【解決手段】数式計算を用いることにより、任意の支配方程式を取り扱えるようにする。また、基底関数を自由に設定できるようにすることにより、場の物理量を最適に近似できるようにする。【選択図】      図４
2004302859.tif 000002
【特許請求の範囲】
【請求項１】
場の物理量のコンピュータによるシミュレーションにおいて、そのプログラムが、字句構文解析、コンソール、テキストエディタ、グラフィックエディタ、計算エンジン、データベース、数式計算ライブラリ、数値計算ライブラリで構成されており、その動作が、コマンドやスクリプトを解釈による、シミュレーション条件の設定、シミュレーションの実行、シミュレーション条件やシミュレーション結果のファイルへの読み書き、テキストエディタやグラフィックエディタによる、スクリプトや変数の編集であることを特徴とするシミュレーション方法。
【請求項２】
場の物理量のコンピュータによるシミュレーションにおいて、まず、数式計算を用いて、支配方程式と基底関数の集合から、基底関数の係数に対する連立方程式を導出し、次に、数値計算を用いて、その連立方程式を解き、最後に、基底関数の集合と連立方程式の解から、支配方程式の解である場の物理量を合成することを特徴とするシミュレーション方法。
【請求項３】
場の物理量のコンピュータによるシミュレーションにおいて、基底関数の係数に対する連立方程式の導出に対して、まず、数式計算を用いて、基底関数の集合に係数をつけた式を支配方程式の評価汎関数に代入して、基底関数の係数を未知数とした評価関数を導出し、次に、数式計算を用いて、その評価関数の中の微分積分を実行し、最後に、数式計算を用いて、評価関数を係数により偏微分をして、係数に関する連立方程式を導出することを特徴とするシミュレーション方法。
【請求項４】
場の物理量のコンピュータによるシミュレーションにおいて、基底関数に対して、関数が有効となる領域を設定して、その領域の内側では、関数の値をとり、その外側では、０となることを特徴とするシミュレーション方法。
【請求項５】
場の物理量のコンピュータによるシミュレーションにおいて、支配方程式の情報を、場の変数、微分演算子などを表す記号により規定し、場の物理量の情報を、場の変数名、それを展開する有限個の基底関数、基底関数の係数などにより規定することを特徴とするシミュレーション方法。
【請求項６】
場の物理量のコンピュータによるシミュレーションにおいて、まず、低い精度でシミュレーションを行い、その中で利用者が興味のある部分を指定し、その指定された部分を高い精度で再計算することを特徴とするシミュレーション方法。
【請求項７】
場の物理量のコンピュータによるシミュレーションにおいて、シミュレーション領域を有限個の領域に分割して、その分割された領域ごとに多項式を基底関数とすることにより、有限要素法を実現することを特徴とするシミュレーション方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、場の物理量のコンピュータによるシミュレーション方法に関する。請求項１は、シミュレーションプログラムの構成に関する。請求項２・３・４は、シミュレーションの方法に関する。請求項５・６は、シミュレーションのインターフェイスに関する。請求項７は、請求項２・３・４の方法で、有限要素法を実現する方法に関する。
【０００２】
【従来の技術】
従来からある場の物理量のコンピュータによるシミュレーション方法として、有限差分法、有限要素法、有限境界法、分子軌道法、密度汎関数法などがある。有限差分法、有限要素法、有限境界法、構造力学解析、流体解析、電磁解析などに用いられており、分子軌道法、密度汎関数法は、量子化学、量子物理などの電子状態の計算に用いられている。
【０００３】
有限要素法は、場の物理量を有限個の領域に分割して、それぞれ領域において場の物理量を有限次元の多項式で近似し、その領域内において多項式の係数の満たすべき連立方程式を作り、その連立方程式の解と多項式から微分方程式の解を合成する手法である。
【０００４】
本発明に関連する参考文献として、次をあげる。
（１）シミュレーション科学への招待、日経サイエンス社
（２）神谷紀生、北栄輔、偏微分方程式の数値解法、共立出版
（３）Ｍａｔｈｅｍａｔｉｃａによる電磁界シミュレーション入門
【０００５】
【発明が解決しようとする課題】
従来の場の物理量のシミュレーションでは、求める物理量やその支配方程式が変わるたびに、シミュレーションプログラムを書くことが必要であった。そのため、プログラムの開発に膨大な時間が掛かっていた。また、適切でないプログラムを用いてシミュレーションを用いると、シミュレーションの計算に膨大な時間が掛かっていた。
【０００６】
本発明が解決しようとする課題は、汎用的な場の物理量のシミュレーション方法を確立することにより、１つのシミュレーションプログラムで、様々なシミュレーションを可能にすることであり、また、場の物理量のシミュレーションの効率を上げることである。
【０００７】
【課題を解決するための手段】
上記目的を達成するために、本発明のシミュレーションにおいては、数式計算と数値計算を組み合わせてシミュレーションを行う。シミュレーションの対象と近似精度は、支配方程式と基底関数により規定される。本発明では、支配方程式、基底関数をスクリプトを用いて簡単に記述できるようにする。
【０００８】
シミュレータの構成は、字句構文解析から各種ルーチンを呼び出すことにより実現する。ルーチンとしては、コンソール、テキストエディタ、グラフィックエディタ、計算エンジン、データベース、数式計算ライブラリ、数値計算ライブラリの８つを持つ。
【０００９】
支配方程式は、場の変数、及び、それらの微分により表される。場の物理量は、基底関数を用いて展開する。基底関数は、多項式、初等関数、特殊関数、直交関数、固有関数、相互作用を無視した場合の厳密解などを用いる。
【００１０】
シミュレーションの計算方法は、以下の通りである。まず、数式計算を用いて、支配方程式と基底関数の集合から、基底関数の係数に対する連立方程式を導出し、次に、数値計算を用いて、その連立方程式を解き、最後に、基底関数の集合と連立方程式の解から、支配方程式の解である場の物理量を合成する。
【００１１】
シミュレーションのデータの記述は、スクリプトを用いて行う。スクリプトでは、支配方程式の評価汎関数の設定、基底関数の設定、既知関数や未知関数の設定などを記述する。
【００１２】
短時間で高精度なシミュレーションを可能にするために、まず、全体を荒い精度で計算して、その後、利用者が詳しく知りたい部分を指定し、その部分を細かい精度でシミュレーションする。
【００１３】
【発明の実施の形態】
本発明の実施の形態を、実施例にもとづき図面を参照して説明する。
【００１４】
図１に、シミュレータの構成例を示す。シミュレータは、字句構文解析２１、コンソール２２、テキストエディタ２３、グラフィックエディタ２４、計算エンジン２５、データベース２６、数式計算ライブラリ２７、数値計算ライブラリ２８の８つの部分からなる。
【００１５】
図２に、シミュレータの各部分の詳細を示す。字句構文解析１１は、利用者が入力したコマンドやスクリプトを解釈して、各種ルーチンの呼び出しや、データベースへの書き込みを行う。テキストエディタ１３は、データベースやファイルの内容をテキストベースで編集する。グラフィックエディタ１４は、データベースやファイルの内容をグラフィックベースで編集する。計算エンジン１５は、データベースの内容を読み出し、シミュレーションを行い、その結果をデータベースに書き込む。データベース１６は、識別子、型、アドレスなどの情報を保持し、識別子からアドレスへの変換、および、データ領域の確保や開放を行う。
【００１６】
図３に、シミュレーションで用いるコマンドの例を示す。ｌｅｔ命令２１は、シミュレーションの条件設定をデータベースに書き込む。ｌｉｓｔ命令２２は、データベースに記述してある内容をコンソールに表示する。ｅｄｉｔ命令２３は、データベースやファイルの内容をテキストベースで編集できるテキストエディタを起動する。ｐｌｏｔ命令２４は、データベースやファイルの内容をグラフィックベースで編集できるグラフィックエディタを起動する。ｓｏｌｖｅ命令２５は、計算エンジンを呼び出し、シミュレーションの計算を行う。ｒｅａｄ命令２６、ファイルの内容をデータベースに読み込む。ｗｒｉｔｅ命令２７は、データベースの内容をファイルに書き込む。
【００１７】
図４に、シミュレーション全体の流れを示す。物理量の振る舞いは、支配方程式により規定される。シミュレーションの手順は、まず、その物理量に適した基底関数を生成する。次に、支配方程式と生成された基底関数の集合を用いて、基底係数の計算を行う。最後に、基底関数の集合と基底係数の集合を用いて、支配方程式の解を表示する。基底係数の計算の構成を示す。基底係数の計算では、まず、支配方程式と基底関数から、基底関数の連立方程式を生成する。そして、その連立方程式を解くことにより、基底係数の集合を得る。連立方程式の解法としては、ガウスの消去法や反復法を用いる。
まず、数式計算を用いて、支配方程式と基底関数の集合から、基底関数の係数に対する連立方程式を導出し、次に、数値計算を用いて、その連立方程式を解き、最後に、基底関数の集合と連立方程式の解から、支配方程式の解である場の物理量を合成する。
【００１８】
図５に、連立方程式の導出の部分の詳細な流れを示す。連立方程式の生成では、まず、基底関数の集合から、その微分を計算する。次に、基底関数の集合の積分、および、基底関数の微分の積分を計算する。最後に、それらを支配方程式に代入することにより、基底係数の連立方程式を得る。
【００１９】
図６に、シミュレーションのスクリプトの例を示す。支配方程式の設定５１では、支配方程式としてヘルムホルツ方程式ＥＱ１を設定している。基底関数の設定５２では、１次元１次多項式の有限要素法の基底関数を設定している。既知関数の設定５３では、既知関数としてＦ（ｘ）を設定している。未知関数の計算５４では、支配方程式ＥＱ１（ｘ）＝０を満たす未知関数Ｕ（ｘ）を求めている。
【００２０】
図７に、部分的な再計算の例を示す。図７の例では、左側が、低い精度でのシミュレーション結果であり、右側が、一部分を高い精度で再計算した結果である。左図の太枠の部分６１を、利用者が興味がある部分であるとして、右図の再計算の結果６２では、その部分が詳細になっている。
【００２１】
図８に、１次元１次多項式の有限要素法の基底関数の例を示す。有限要素法の場合は、基底関数として、サンプリング点を頂点とした山型の関数を用いる。
【００２２】
図９に、１次元１次多項式の有限要素法の基底関数を用いた、関数の展開の例を示す。
【００２３】
【発明の効果】
本発明を利用することにより、有限要素法、分子軌道法、密度汎関数法などのシミュレーション方法の違いを、基底関数の違いに吸収させることができて、プログラムの開発期間を短縮することができる。また、シミュレーション効率を上げることができて、短時間で高精度なシミュレーションをすることができる。
【図面の簡単な説明】
【図１】シミュレータの構成例を示す図である。
【図２】シミュレータの各部分の役割を示す図である。
【図３】シミュレータにおけるコマンドを示す図である。
【図４】シミュレーションの流れを示す図である。
【図５】連立方程式の導出の部分の流れを示す図である。
【図６】シミュレーションのスクリプトの例を示す図である。
【図７】部分的な再計算の例を示す図である。
【図８】１次元１次要素による有限要素法の基底関数の例を示す図である。
【図９】１次元１次要素による有限要素法の基底関数を用いた関数展開の例を示す図である。
有限要素法のスクリプトを示す図である。
【符号の説明】
１１  字句構文解析
１２  コンソール
１３  テキストエディタ
１４  グラフィックエディタ
１５  計算エンジン
１６  データベース
１７  数式計算ライブラリ
１８  数値計算ライブラリ
２１  ｌｅｔ命令
２２  ｌｉｓｔ命令
２３  ｅｄｉｔ命令
２４  ｐｌｏｔ命令
２５  ｓｏｌｖｅ命令
２６  ｒｅａｄ命令
２７  ｗｒｉｔｅ命令
３１  支配方程式の評価汎関数
３２  領域の形状
３３  基底関数の集合
３４  基底係数の連立方程式
３５  基底係数の集合
３６  支配方程式の解
４１  基底関数の生成
４２  連立方程式の導出
４３  基底関数を支配方程式に代入
４４  基底関数の微分の計算
４５  基底関数の積分の計算
４６  連立方程式の計算
４７  支配方程式の解の合成
５１  評価汎関数の設定
５２  基底関数の設定
５３  既知関数の設定
５４  未知関数の計算
６１  再計算の領域指定
６２  再計算の結果
【図１】
2004302859.tif 000003
【図２】
2004302859.tif 000004
【図３】
2004302859.tif 000005
【図４】
2004302859.tif 000006
【図５】
2004302859.tif 000007
【図６】
2004302859.tif 000008
【図７】
2004302859.tif 000009
【図８】
2004302859.tif 000010
【図９】
2004302859.tif 000011