JP2003030252A - 有限要素法ライブラリ、有限要素法プログラムおよび記憶媒体 - Google Patents

有限要素法ライブラリ、有限要素法プログラムおよび記憶媒体

Info

Publication number
JP2003030252A
JP2003030252A JP2001211187A JP2001211187A JP2003030252A JP 2003030252 A JP2003030252 A JP 2003030252A JP 2001211187 A JP2001211187 A JP 2001211187A JP 2001211187 A JP2001211187 A JP 2001211187A JP 2003030252 A JP2003030252 A JP 2003030252A
Authority
JP
Japan
Prior art keywords
finite element
element method
vector
library
dual
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
Application number
JP2001211187A
Other languages
English (en)
Inventor
Shigeki Matsutani
茂樹 松谷
Akira Asai
朗 浅井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2001211187A priority Critical patent/JP2003030252A/ja
Priority to US10/192,159 priority patent/US7197440B2/en
Publication of JP2003030252A publication Critical patent/JP2003030252A/ja
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • G06F30/23Design optimisation, verification or simulation using finite element methods [FEM] or finite difference methods [FDM]

Abstract

(57)【要約】 【課題】 有限要素法をライブラリとして利用したプロ
グラムの信頼性を向上し、プログラム作成ミスによる計
算誤差や収束時間の悪化を回避する有限要素法ライブラ
リを提供する。 【解決手段】 有限要素法によるプログラム処理を記述
したライブラリであって、有限要素法の基底関数の張る
ベクトル空間のベクトルと、該基底関数の2乗積分から
決まる内積より誘導される計量によって定まる双対ベク
トル空間の双対ベクトルとを異なる抽象データ型として
定義することを特徴とする。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は有限要素法の基礎的
なシミュレータライブラリの構成に関する。
【0002】
【従来の技術】岩波の数学辞典第三版によると、有限要
素法の発見をCourantの1943年の論文(Bull. Amer. Mat
h. Soc., 49)としてみる考えと、その後のM. J. Turner
らの論文(J. Aero. Sci. 23 (1956) 805-823)と見る
考えとがあるようである。どちらにしても、その発見か
ら粗半世紀を経て、その工学の分野への寄与は言うまで
もないと思われ、毎年多くの論文が出版され、また多く
の教科書が書かれている。例えば、C.C.ツィエンキ
ーヴィッツ著 吉識雅夫、山田嘉昭監訳 マトリックス
有限要素法、三訂版 (培風館1984年発行)や矢川
元基、吉村忍著「有限要素法」(培風館1991年発
行)がある。
【0003】更には、有限要素法に関連した発明がなさ
れており、初期のものとしては、特許公報昭61-10771が
ある。特にメッシュの生成方法に関しては、様々な提案
がなされている。例えば、特開平6-231216や特開平6-23
1217、特開平9-185729、特開平9-259300などがある。
【0004】有限要素法の基本的な考え方は、境界値問
題として定まった偏微分方程式の解を、微分作用素の定
義域である関数空間Fを実有限次元ヒルベルト空間Hで
近似することで求めるというものであるRitzの方法に立
っている(ここで関数空間Fが複素数値の場合も実行列
表現があるので、一般性を失わず、実の場合のみを述べ
ている)。ヒルベルト空間Hの内積としてはルベーグの
関数空間の2乗積分(L2)ノルム(岩波数学辞典第三
版、岩波、1994年発行p.61)から誘導される自然な
内積を利用する。また、近似の評価を弱い位相で行うと
いうのもRitzの方法と同様である。有限次元ヒルベルト
空間Hは有限次元ベクトル空間Vと内積<>の組(V,<,>)
によって定まるが、この場合VからFへの線形写像が単
射となるように構成されており、Fへの様々な作用(例
えば微分作用)はその自然な制限としてV上の作用とし
て定義できる。
【0005】多くの有限要素法の特徴としては、有限次
元ヒルベルト空間の基底関数として極めて狭い台(非ゼ
ロ集合の閉包)をもつ関数を利用することである。その
ため、有限次元ベクトル空間Vに対する上記ヒルベルト
空間内H (V,<,>)の自然な内積<>から決まる計量 M、即
ち、Vからその双対空間V*への線形写像、
【0006】
【数1】 が一般に疎な行列として定まる。ここでMは、実数Rへ
の双線形写像である内積
【0007】
【数2】 が自然なペアリング(,):V×V* → Rを利用して、
【0008】
【数3】 と一致するように決定している。また、関数空間Fへの
微分作用素も上記の自然な制限により、有限次元ヒルベ
ルト空間H上の有界な(つまり、実数係数有限次元行列
表示をもつ)作用素と見なすことができる。上記の制限
が作用素環としての準同型になるとは限らないので、作
用素環としての自然な包含とはなっていない。しかしな
がら、ベクトル空間Vを実数値ベクトル空間としての関
数空間Fの自然な包含であると考えることは重要であ
り、有限要素法は有限次元作用素環上に定義された数値
計算技法であると考えることも重要である。
【0009】また、上記に述べたように極めて狭い台を
持つ関数をVの基底関数とするために、計量Mや多くの
物理的な微分作用素のHでの行列表現が、通常非常に疎
な行列(非ゼロの要素の数の全自由度に対する比が非常
に小さい行列)となる。そのため数値的な計算が非常に
簡単に行える。
【0010】このように、有限要素法という仕組み自体
には汎用性があり、かかる汎用性を利用して、有限要素
法のプログラムを自動生成する自動生成プログラムの開
発や有限要素法の基本部分をライブラリとして提供する
ための有限要素法ライブラリの開発が行われてきた。
【0011】前者の例としては、たとえば、特公平7-12
0275、特公平7-120276、特許番号2765888号が挙げられ
る。しかし自動生成プログラムは出入力等々を課題に合
わせて変更する等のことが容易ではなく柔軟性に欠ける
という欠点があった。
【0012】一方、後者の例としては、Hans Petter La
ngtangen著Computational PartialDifferential Equati
ons : Numerical Methods and Diffpack Programming
(Lecture Notes in Computational Science and Engine
ering, 2) (Springer 1999年発行)の本の中でDiffpac
kというライブラリが紹介されている。さらに、有限要
素法ライブラリを実のあるものとするための土台として
図3に示すような階層的構造格子上で有限要素法の定式
化が提案されており、例えば、Michael Griebel, Gerha
rd Zumbusch, "Parallel adaptive subspace correctio
n schemes withapplications to elasticity" Compuer
Methods in applied mechanics and engineering 184
p.303-332 (2000)、およびその参考文献に詳しく述べ
られている。
【0013】ここで有限要素法ライブラリとは行列演算
ライブラリや関数ライブラリと同様に、ユーザであるプ
ログラマーが自作のプログラムに組み込んで個々の問題
に応じて変数を定義し、ライブラリの提供する関数等を
組み合わせて、問題に応じた有限要素法プログラムを完
成させるための基礎的な変数宣言及びサブルーチンや関
数の集合をいう。そして有限要素法による処理がライブ
ラリにおいて数学的に定式化されているため、上述の自
動生成プログラムを用いた有限要素プログラムの作成に
比べて、ライブラリを利用する方法は、個別の問題(例
えば、材料力学、連続体力学、電磁気学等)に応じた有
限要素プログラムの作成が容易であるという利点があ
る。
【0014】
【発明が解決しようとする課題】しかし、有限要素法を
ライブラリとして利用する際に、ユーザが(式1)に示
した計量を意識せずに利用するという問題がある。これ
は通常の線形代数の教科書等においては、ベクトル空間
の基底として正規直交基底を基本としているものが多
く、双対空間や計量を意識しないためである。この結
果、ユーザがベクトル空間に、有限要素法の自然な内積
とは異なる内積を導入することとなり、このような扱い
は本来考えている有限要素法がもつヒルベルト空間Hを
歪めて全く異なるヒルベルト空間を考えてしまうことに
なる。ヒルベルト空間の内積はベクトル空間から大小を
比較する量(順序集合)である実数への(双線形)写像
であり、この内積を変更するということは、大小関係を
全く異なるものにすることを意味する。実際、誤差評価
等々は、この実数への写像を利用して行うものが自然で
あると考えられるので、内積を変更することは重大な誤
りを生むこととなる。
【0015】一般に作用素環はヒルベルト空間上の作用
素の環として定義されるが、作用素環論においてヒルベ
ルト空間の内積は非常に重要な役割を果たすことが知ら
れている。無限次元のベクトル空間である関数空間の場
合は内積の入れ方により対象となる現象が大きく様変わ
りしてしまうこともある。有限要素法を有限次元作用素
環と見ることは自然であると述べたが、有限要素法は、
無限次元ベクトル空間である物理的な空間を模したもの
であるので、同様に内積について十分な注意を払う必要
がある。よって、このような視点からも内積の不十分な
取り扱いは数学的な合理性を失うこととなる。
【0016】また、事実、有限要素法では基底関数を、
図4に示すような非構造格子を利用しその胞上あるいは
その胞の近傍上で連結な台(非零値を持つ定義域の閉
包)を定義することが一般的である。個々の胞は胞毎に
体積は異なるものと思ってよい。他方、計量行列の非ゼ
ロの行列要素は個々の有限要素法の胞の体積に強い相関
をもつことが知られており、要素の体積比が大きいこと
は、行列要素の値の分布に開きがあることを意味する。
よって、計量Mを無視した別の内積を定義することは、
収束の遅延や精度の劣化を招くこととなる。このことは
有限要素法ライブラリ自身の精度や信頼性の問題にもな
り、ライブラリを作成するに当たっては重大な課題とな
る。
【0017】このように、有限要素法をライブラリとし
て利用するにあたり、ヒルベルト空間の内積を正しく算
出するためのプログラムを作成することは、計算誤差の
低減や収束時間の向上等、プログラムの信頼性の観点か
ら極めて重要な問題である。本発明は、上記課題を鑑み
てなされたものであり、有限要素法をライブラリとして
利用したプログラムの信頼性を向上し、プログラム作成
ミスによる計算誤差や収束時間の悪化を回避する有限要
素法ライブラリを提供することを目的とする。
【0018】
【課題を解決するための手段】かかる課題を解決するた
め、例えば本発明の有限要素法ライブラリは以下の構成
を備える。すなわち、有限要素法によるプログラム処理
を記述したライブラリであって、有限要素法の基底関数
の張るベクトル空間のベクトルと、該基底関数の2乗積
分から決まる内積より誘導される計量によって定まる双
対ベクトル空間の双対ベクトルとを異なる抽象データ型
として定義することを特徴とする。
【0019】
【発明の実施の形態】以下、必要に応じて添付図面を参
照しながら本発明に係る実施形態を詳細に説明する。
【0020】<装置構成>図1は本発明の一実施の形態
にかかる有限要素法ライブラリを備えた処理装置の一例
を示す図である。プログラム作成者は、該処理装置を用
いて有限要素法プログラムを作成する。
【0021】図1において、101はCRT等の表示装
置、102はキーボードやマウス等の各種入力装置を表
す。ハードディスク103には各種プログラムが記憶さ
れており、かかるプログラムはバス107を介してメモ
リ105に読み込まれ、CPU106において処理され
る。
【0022】ハードディスク103に記憶されている各
種プログラムは有限要素法プログラムを作成するうえで
必要なプログラムであり、103−6はOS、103ー
2はプログラムを記述するためのエディタ、103−4
は各種ライブラリ、103−5はヘッダファイル、10
3−1はコンパイラ、103−3はリンカを表す。
【0023】なお、ハードディスク103に記憶された
これらのプログラムは、フロッピー(登録商標)ディス
ク108に記憶されていてもよく、フロッピーディスク
ドライブ104を介して読み込んでもよい。
【0024】<プログラム作成の流れ>図2は、上記処
理装置を用いて、プログラム作成者が有限要素法プログ
ラムを作成する作成手順を示した図である。
【0025】201はエディタ103−2を用いて作成
した有限要素プログラム(ソース)で、ヘッダ部分20
2と処理内容を記述した部分203とを備える。作成さ
れた有限要素プログラム201はコンパイラ103−2
を用いてコンパイルされ、オブジェクトファイル205
が生成され、さらに、リンカ103−3によりライブラ
リ103−4がオブジェクトファイル205にリンクさ
れ、実行形式のファイル209が生成される。図2にお
いて、206はリンカ103−3によりリンクされる複
数のライブラリ103−4のうち、本実施形態にかかる
有限要素ライブラリを示すもので、具体的にはテキスト
ファイルとして存在するヘッダファイル207と、有限
要素法ライブラリのバイナリファイル208とを備え
る。このうち、リンカ103−3によりリンクされるの
は有限要素法ライブラリのバイナリファイル208の部
分で、ヘッダファイル207はコンパイラ103−2に
よりコンパイルされる際に読み込まれる。
【0026】有限要素法ライブラリ206を使用して、
物理現象を解析するための有限要素法を利用したコンピ
ュータ・シミュレーション・プログラム(有限要素法プ
ログラム201)を開発するユーザが、キーボードある
いはマウス等の入力装置102からの信号により、ハー
ドディスク103から有限要素ライブラリ206をメモ
リ105上にロードして利用される。利用方法に関して
は、本実施形態の有限要素法ライブラリの仕様書を用意
して利用されるが、各クラスの仕様に従って、上述のよ
うにクラスの継承等を使ってエディタ103−2を起動
させることで、アスキーファイルとしてプログラムを書
き、コンパイル時にはヘッダファイル207(ファイル
名:FEM.h)を、実行プログラム作成時のリンクの際に
は有限要素法ライブラリのソース208(ファイル名:
libFEM.a)を同時にメモリ105上に載せることで利用
する。
【0027】このようなプログラム作成の流れにより、
プログラム作成者はコンパイル時またはリンク時のエラ
ーに基づき、プログラムの不具合を修正(デバック)す
る。
【0028】<有限要素法ライブラリ>図2の206に
示した本発明の一実施の形態にかかる有限要素法ライブ
ラリの詳細について以下に説明する。
【0029】本発明の一実施の形態にかかる有限要素法
ライブラリにおいては、ベクトル空間を表わす型とし
て、構造体を利用して、FEMVectorという型をヘッダフ
ァイル207に定義した。また、同様に、FEMCovector
を双対空間のベクトルとして用意した。当然のことであ
るが、個々の型宣言した名称に本発明は依存しないが、
説明の簡潔性のために上記または下記で具体的名称で記
述することとする。
【0030】FEMGeometryを、系を表現する離散幾何学
的な情報をもった構造体とする。例えば、構造体FEMGeo
metryは格子点を表現するための構造体であるFEMNodeの
配列を保持している。
【0031】個別の問題に応じてプログラム作成者によ
り記述される関数f(x)(図2の204)は、それぞれの
格子点Nに張り付いた近接胞内で非零でその他ではゼロ
となる基底e[N](,x)を利用し、該基底に対して実数f
[N]を配分することで、表現される。つまり、該f(x)は
次のような線形和で
【0032】
【数4】 表現されている。これらの基底に配分された実数の集合
{f[N] | Nは全ての格子点 }を本明細書ではベクトル
空間Vの要素f=(f[N])と見なしている。この{f[N] |
Nは全ての格子点 }を配列として含む構造体としてFEM
Vectorを定義する。これより、系の上で定義された関数
fとベクトル空間{f[N] | Nは全ての格子点 }と更に
処理装置上のメモリ105の実態FEMVectorを同一視す
ることができる。記号の混乱はないと思われるので同一
のfと記す。
【0033】他方、基底の間には次のような自然な内積
が定義されており、
【0034】
【数5】 これをベクトル空間Vから双対ベクトル空間V*への線
形写像である計量であるとみることが自然である(N'は
Nとは異なる格子点を指す)。但し、nは系が3次元のと
きは3、2次元のときは2となる次元を表わす量であ
る。ここで、線形空間であるので行列Mは幾何学的情報
と基底e[N]の性質のみによって決定され、個々のベクト
ルfによらない。そこで、ベクトルfの双対ベクトルf*
=(f*[N])を
【0035】
【数6】 と定義する。本実施形態の有限要素法ライブラリ206
においては、このように定義される量を計算機のメモリ
105上に構成するために、FEMCovectorという新たな
構造体を定義部207に定義している。即ち、行列Mは
FEMVectorをFEMCovectorに変換するものとして実現して
いる。即ち、本実施形態の有限要素法ライブラリ206
においては、
【0036】
【数7】 を関数として定義している。一般的にMの逆行列を計算
することは計算コストのかかるものであるので、本実施
形態の有限要素ライブラリ206においては上記の逆操
作は用意していない。しかしながら、そのような関数を
用意しておいてもよいし、また、逆操作を近似的に行う
ような関数を用意しておいてもよい。
【0037】また従来の技術で述べたように関数空間F
に作用した所望の偏微分作用素Lの作用は本実施形態の
有限要素法ライブラリ206の扱うヒルベルト空間Hに
制限され、
【0038】
【数8】 を通して定義される。このことを考慮して、本実施形態
の系の関数fに対する所望の偏微分作用素Lの作用を
【0039】
【数9】 としてプログラム内に実現している。即ちLのfへの作
用に関しても、FEMVectorからFEMCovectorへの変換行列
として定義し、fへのLの作用をFEMCovectorとして、
メモリ105上に格納する。
【0040】これらの自然なベクトル空間とその双対空
間に対するペアリングを本実施形態の有限要素ライブラ
リにおいては、大局的関数Pairing (FEMVector f, FEMC
ovector G)として内包している。つまり、大局的関数Pa
iring(FEMVector f, FEMCovector G)は次の演算によっ
て定義している。
【0041】
【数10】 これはG=g*として、ベクトル空間Vの要素を定めると
(即ち、g=M-1 G)、f、gを系の関数として、関数空
間の2乗積分(L2)ノルム(岩波数学辞典第三版、岩
波、1994年発行p.61)から誘導される自然な内積
【0042】
【数11】 が実現できている。よって、本実施形態の有限要素ライ
ブラリ206においては、ベクトル空間同士の内積や双
対空間の内積の代わりに自然なペアリング Pairingのみ
を提供している。
【0043】このPairingを利用すると、<f,Lg>のよう
な内積も計算できる。ここで、(L)[N,N']もM[N,N']も幾
何学と基底関数が決定されると一意的に決定されるこ
と、また基底関数の台を局所的にしておくことにより、
行列要素は非常に簡単に計算できる。実際、M[N,N']
(L)[N,N']に現れる積分の領域は全領域上ではあるが、
基底関数の台(非零値を持つ定義域の閉抱)の局所性か
ら、U[N]をe[N]の台とすると、(式5)及び(式8)の
積分はそれぞれ、
【0044】
【数12】
【0045】
【数13】 と変更できる。つまり積分は各台の交わりの部分でのみ
行えばよく、一般に簡潔に書きくだすことができる。特
に、構造格子あるいは構造格子の階層的表現における実
現は非常に簡単である。
【0046】また、(式12)及び(式13)に示すよ
うに、(L)[N,N']やM[N,N']はU[N]∩U[N']の体積に関連
していることが判る。特にM[N,N']はe[N]として非負値
関数を利用すると正の相関を持っていることは自明であ
る。そのため、U[N]∩U[N']の体積が一定でない有限要
素法では、計量M[N,N']の各非零な要素の比は一般的に
非常に大きく、これを単位行列で近似することは計算結
果の精度や収束速度等を著しく悪化させるものであるこ
とがわかる。
【実施例1】実施例1では、上述の実施の形態において
述べた有限要素法ライブラリ206のヘッダファイル2
07の具体例について述べる。
【0047】本実施例の有限要素法ライブラリにおいて
は、2000年ISO、ANCIの規格に準拠したC+
+をベースに構成した。当然のことながら、上述の実施
の形態の構成は他の言語を利用しても同様の結果を得
る。
【0048】そのために、ベクトル空間を表わす型とし
て、オブジェクト指向のクラスを利用して、FEMVector
という型を定義した。また、同様に、FEMCovectorを双
対空間のベクトルとして用意した。
【0049】以下に本実施例の有限要素ライブラリのソ
ースにおいて上述の実施の形態に関連する部分を列挙し
た。
【0050】まず、格子点の情報をもつクラスとして、
FEMNodeを以下のように定義した。 また、これらを統括するものとしてFEMGeometryを用意
した。 これらを使って、FEMVectorとして、実数配列を内包す
るクラスを定義した。 class FEMVector{ FEMGeometry* Geomp; double* Vp; public: FEMVector(FEMGeometry& Geom, const int& Nodenumber){ Geomp = &Geom; Vp = new double [Nodenumber]; } double& operator()(FEMNode N){ return Vp[N.geti()]; } ................ }; 発明の実施の形態で述べたようにFEMCovectorを次のよ
うに定義した。 class FEMCovector{ FEMGeometry* Geomp; double* Vp; public: FEMCovector(FEMGeometry& Geom, const int& Nodenumber){ Geomp = &Geom; Vp = new double [Nodenumber]; } double& operator()(FEMNode N){ return Vp[N.geti()]; } ................ }; またグローバル関数として、次の3つを用意した。 FEMCovector DualMap( FEMVector& f ); FEMCovector Laplacian( FEMVector& f); double Pairing(FEMVector& f, FEMCovector& g); それぞれの関数の内容は(式7)、(式9)と(式1
0)で与えられているとおりである。但し、Laplacian
は線形偏微分作用素としてラプラス作用素を利用したも
のである。、更には、これらをグローバル関数として与
えたが、適当なクラスのメンバー関数としてもよいし、
namespace等を利用してカプセル化してもよい。
【0051】このようにして作成された有限要素法ライ
ブラリは、通常のライブラリのように、ヘッダファイル
206は、コンパイル時に、またバイナリ化された部分
(有限要素法ライブラリのソース208)は、リンク時
及び実行時に、リンクされ、各種物理問題を解決するた
めの有限要素法プログラムとして利用される。
【0052】FEMVectorから継承した物理的量、例えば
熱伝導方程式の場合は温度を定義し、物理的な要請に従
って方程式を解くこととなる。例えば、 のように書けばよい。上記の型定義のためにライブラリ
を使用するユーザが誤って、FEMVector同士、あるいはF
EMCovector同士のPairingを取ろうとするとコンパイル
エラーが発生し、ユーザは有限要素法内の計量空間を意
識せざる得なくなり、不用意なプログラミングのための
精度落ちや信頼性の欠如の回避が可能となる。そのため
計算結果自身に対するライブラリの信頼性も向上する。
【実施例2】実施例1では、型としてFEMVector, FEMCo
vectorを捕らえたが、namespaceや真偽量を利用して、
両者の区別を行ってもよい。即ち、 enum SpaceType{ Vector, Covector } を定義して、実施例1のFEMVector, FEMCovectorのクラ
スの代わりに、次のFEMSpaceを定義し、 class FEMSpace{ FEMGeometry* Geomp; double* Vp; SpaceType Dual; public: FEMspace(FEMGeometry& Geom,const int& Nodenumber, SpaceType& D){ Geomp = &Geom; Vp = new double [Nodenumber]; Dual = Dual; } double& operator()(FEMNode N){ return Vp[N.geti()]; } }; これに対応し、グローバル関数として、 FEMSpace DualMap( FEMSpace& f ); FEMSpace Laplacian( FEMSpace& f); double Pairing(FEMSpace& f, FEMSpace& g); を与えた。ここで、DualMap( f )及び Laplacian( f)
は、それぞれ引数であるfのメンバー、SpaceTypeがVec
torでない場合はエラーを発してプログラムを終える等
の条件処理を行い、fがVectorの場合は帰り値としてのF
EMSpaceのSpaceTypeはCovectorであるようにした。また
Pairing(f, g)も、SpaceTypeがVector同士あるいはCov
ector同士の場合には、実行時にプログラムが働かない
ように条件文を入れた。DualMap( f )をfのSpaceTypeが
Covectorの場合にプログラムを終える処置をしたのは一
般に式(1)の計量Mの逆行列を計算するのは難しいた
めであるが、もちろん、DualMapを近似的にあるいは、
厳密に双対空間から空間への写像として定義しておいて
もよい。
【0053】更には、これらをグローバル関数として与
えたが、適当なクラスのメンバー関数としてもよいし、
namespace等を利用してカプセル化してもよい。
【0054】かかる構成により、プログラムの実行時
に、本発明の課題であった計量空間に対するユーザ思い
違い等はエラーとして、ユーザが認識することとなる。
このことにより、有限要素法ライブラリおよびそれを利
用したプログラムの信頼性を向上するものとなる。即
ち、ユーザの思い違いによる計算誤差や収束時間の悪化
等の問題が回避される。
【実施例3】本発明の有限要素法ライブラリの基本的な
原理はプログラムの言語によらずに形成できる。例え
ば、Fortran90においても、C言語においても作成でき
る。その他Pascal等においても同様の効果を得るプログ
ラムを作成できることは自明である。またC++のST
L機能を利用しても同様なものが作成できる。
【実施例4】本発明は物理量が実数値関数で表現される
例について述べたが、物理量が多次元ベクトル値や複素
数値の場合についても同様に構成できる。特にC++等の
高級言語にあるジェネリック・プログラミングに対応し
た言語を利用することにより、より簡潔に実装すること
が可能となる。
【0055】
【発明の効果】以上、説明したごとく本発明によれば、
有限要素法をライブラリとして利用したプログラムの信
頼性を向上し、プログラム作成ミスによる計算誤差や収
束時間の悪化を回避することが可能となる。
【図面の簡単な説明】
【図1】本発明の一実施の形態にかかる有限要素法ライ
ブラリを備えた処理装置の一例を示す図である。
【図2】本発明の一実施の形態にかかる処理装置を用い
て、プログラム作成者が有限要素法プログラムを作成す
る作成手順を示した図である。
【図3】有限要素法を説明するための図である。
【図4】有限要素法を説明するための図である。
【符号の説明】
101 表示装置 102 入力装置 103 ハードディスク 104 フロッピーディスクドライブ 105 メモリ 106 CPU 107 バス 108 フロッピーディスク

Claims (8)

    【特許請求の範囲】
  1. 【請求項1】 有限要素法によるプログラム処理を記述
    したライブラリであって、 有限要素法の基底関数の張るベクトル空間のベクトル
    と、該基底関数の2乗積分から決まる内積より誘導され
    る計量によって定まる双対ベクトル空間の双対ベクトル
    とを異なる抽象データ型として定義することを特徴とす
    る有限要素法ライブラリ。
  2. 【請求項2】 前記有限要素法の基底関数の張るベクト
    ル空間のベクトルを表現するクラスにベクトルであるこ
    とを示す属性データを保持し、前記基底関数の2乗積分
    から決まる内積より誘導される計量によって定まる双対
    ベクトル空間の双対ベクトルを表現するクラスに双対ベ
    クトルであることを示す属性データを保持することを特
    徴とする請求項1に記載の有限要素法ライブラリ。
  3. 【請求項3】 有限要素法によるプログラム処理を記述
    したライブラリであって、 前記ベクトル空間のベクトルまたは前記双対ベクトル空
    間の双対ベクトルを用いた演算結果が所定の属性データ
    を有するか否かをコンパイル時に確認可能であることを
    特徴とする請求項2に記載の有限要素法ライブラリ。
  4. 【請求項4】 所望の線形偏微分作用素の前記ベクトル
    空間および前記双対ベクトル空間への弱形式としての表
    現行列に対して、該ベクトル空間の所望のベクトルへの
    該表現行列の作用を該双対ベクトル空間への写像として
    定義し、該双対ベクトル空間のベクトルデータとして保
    持することを特徴とする請求項1または2に記載の有限
    要素法ライブラリ。
  5. 【請求項5】 請求項1に記載のライブラリを用いた有
    限要素法プログラムであって、 前記有限要素法の基底関数の張るベクトル空間のベクト
    ル同士の内積および前記基底関数の2乗積分から決まる
    内積より誘導される計量によって定まる双対ベクトル空
    間の双対ベクトル同士の内積を、前記抽象データ型に応
    じて禁止する処理を行うことを特徴とする有限要素法プ
    ログラム。
  6. 【請求項6】 請求項2に記載のライブラリを用いた有
    限要素法プログラムであって、 前記有限要素法の基底関数の張るベクトル空間のベクト
    ル同士の内積あるいは前記基底関数の2乗積分から決ま
    る内積より誘導される計量によって定まる双対ベクトル
    空間の双対ベクトル同士の内積を、前記属性データに応
    じて禁止する処理を行うことを特徴とする有限要素法プ
    ログラム。
  7. 【請求項7】 請求項1乃至4のいずれか1つに記載の
    有限要素法ライブラリを格納した記憶媒体。
  8. 【請求項8】 請求項5または6に記載の有限要素法プ
    ログラムを格納した記憶媒体。
JP2001211187A 2001-07-11 2001-07-11 有限要素法ライブラリ、有限要素法プログラムおよび記憶媒体 Withdrawn JP2003030252A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2001211187A JP2003030252A (ja) 2001-07-11 2001-07-11 有限要素法ライブラリ、有限要素法プログラムおよび記憶媒体
US10/192,159 US7197440B2 (en) 2001-07-11 2002-07-11 Finite element method library, finite element method program, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001211187A JP2003030252A (ja) 2001-07-11 2001-07-11 有限要素法ライブラリ、有限要素法プログラムおよび記憶媒体

Publications (1)

Publication Number Publication Date
JP2003030252A true JP2003030252A (ja) 2003-01-31

Family

ID=19046541

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001211187A Withdrawn JP2003030252A (ja) 2001-07-11 2001-07-11 有限要素法ライブラリ、有限要素法プログラムおよび記憶媒体

Country Status (2)

Country Link
US (1) US7197440B2 (ja)
JP (1) JP2003030252A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111462327B (zh) * 2020-03-12 2022-12-13 成都飞机工业(集团)有限责任公司 三维造型软件三维检验模型非结构化数据解析方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS53110896A (en) 1977-03-10 1978-09-27 Tadahiko Kawai Analysis of solid dynamics nonnlinear problem by using rigid bodyyspring model
JPH07120275B2 (ja) 1983-12-28 1995-12-20 株式会社日立製作所 シミューションプログラム生成方法
JPS6110771A (ja) 1984-05-22 1986-01-18 Daicel Chem Ind Ltd 分離剤
JPH07120276B2 (ja) 1986-03-10 1995-12-20 株式会社日立製作所 シミュレーションプログラム生成方法
JP2765888B2 (ja) * 1988-12-02 1998-06-18 株式会社日立製作所 プログラム生成方法および実行方法
US5590345A (en) * 1990-11-13 1996-12-31 International Business Machines Corporation Advanced parallel array processor(APAP)
JPH06231217A (ja) 1993-01-29 1994-08-19 Asahi Glass Co Ltd 有限要素メッシュ生成方法
JP3176745B2 (ja) 1993-01-29 2001-06-18 富士通株式会社 有限要素モデル生成装置
US5911035A (en) * 1995-04-12 1999-06-08 Tsao; Thomas Method and apparatus for determining binocular affine disparity and affine invariant distance between two image patterns
JPH09185729A (ja) 1995-12-28 1997-07-15 Honda Motor Co Ltd 直交差分メッシュの作成方法
JP2874711B2 (ja) 1996-03-25 1999-03-24 日本電気株式会社 離散化格子の生成装置
US5966444A (en) * 1996-12-06 1999-10-12 Yuan; Chuan K. Method and system for establishing a cryptographic key agreement using linear protocols
FR2810136B1 (fr) * 2000-06-09 2002-10-18 Thomson Csf Algorithme de simulation electromagnetique, notamment des performances d'une antenne
US7596474B2 (en) * 2000-08-02 2009-09-29 Comsol Ab Method for assembling the finite element discretization of arbitrary weak equations involving local or non-local multiphysics couplings

Also Published As

Publication number Publication date
US7197440B2 (en) 2007-03-27
US20030065492A1 (en) 2003-04-03

Similar Documents

Publication Publication Date Title
Krais et al. FLEXI: A high order discontinuous Galerkin framework for hyperbolic–parabolic conservation laws
Wongsuphasawat et al. Visualizing dataflow graphs of deep learning models in tensorflow
Bingol et al. NURBS-Python: An open-source object-oriented NURBS modeling framework in Python
Langtangen et al. Solving PDEs in python: the FEniCS tutorial I
Mangano Mathematica Cookbook: Building Blocks for Science, Engineering, Finance, Music, and More
US9645801B2 (en) Compilation of transformation in recalculation user interface
Zhu Data visualization with D3. js cookbook
JP6237278B2 (ja) コンパイルプログラム、コンパイル方法およびコンパイル装置
KR101619192B1 (ko) 전산 기반 모델링의 수정 방법
Mikhailov Programming with MATLAB for scientists: A beginner’s introduction
Fromm et al. Interpolation-based immersed finite element and isogeometric analysis
Otto et al. Solving Polynomial Systems with phcpy.
JP2003030252A (ja) 有限要素法ライブラリ、有限要素法プログラムおよび記憶媒体
Hück et al. A usability case study of algorithmic differentiation tools on the ISSM ice sheet model
Collavizza et al. Searching critical values for floating-point programs
Stocco et al. Acme: A small 3D geometry library
Troják et al. eBCSgen: a software tool for biochemical space language
Fritzson Modelica: Equation-based, object-oriented modelling of physical systems
US9841954B1 (en) Method and system for automatic code generation
Sundnes Solving Ordinary Differential Equations in Python
Morley Applying Math with Python: Over 70 practical recipes for solving real-world computational math problems
Bressan et al. A versatile strategy for the implementation of adaptive splines
San Martin et al. Pytearcat: PYthon TEnsor AlgebRa calCulATor A python package for general relativity and tensor calculus
Campbell et al. Modeling and simulation with compose and activate
Robert et al. Tools for quantum computing based on decision diagrams

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: 20081007