Python GetFEM インターフェイス¶
はじめに¶
GetFEM は,スクリプト言語 Python へのインターフェイスを提供します. Python はクロスプラットフォームでフリーな言語です.numpyパッケージの追加により,pythonはMatlab機能のサブセット(すなわち密配列)を提供します.VTK ツールキットはpythonインタフェース(または MayaVi )を介して視覚化ツールを提供し, OpenDX のデータファイルをエクスポートすることができます.ただし,このガイドでは,結果を視覚化するために,Gmsh ポスト処理フォーマットにエクスポートします.疎行列ルーチンはgetfemインタフェースによって提供されます.
pythonインタフェースはpythonモジュールgetfem.pyを介して使用できます.インターフェースを使用するには,次のようにロードする必要があります.
import getfem
m = getfem.Mesh('cartesian', range(0, 3), range(0,3))
または
from getfem import *
m = Mesh('cartesian', range(0, 3), range(0,3))
getfem.py (と内部の _getfem.so) モジュールが標準の場所にインストールされていないと,環境変数 PYTHONPATH
をその場所に設定する必要があります.次に例を示します.
import sys
sys.path.append('.../getfem/getfem++/interface/src/python/')
並列版¶
現時点では,mpiベースのGetfem並列版をインターフェースしているのはPythonインターフェースだけです. GetFEM のMPI並列化 を参照してください.
メモリ管理¶
Matlabインターフェースの優れた利点は,使用されなくなったオブジェクトを明示的に削除する必要がなく,自動的に削除されることです.しかし,getfemワークスペースの内容は, getfem.memstats()
関数で調べることができます.
文書化¶
getfem モジュールについては多くの文書があります.このドキュメントは APIリファレンス に展開されています.getfem-matlabのユーザーガイドも使用できますが,これは,このガイドの内容の95%がPythonに直接変換されているためです(ただし,matlabに固有の描画関数は例外です).
Python GetFEM 構成¶
python-interfaceの一般的な構成は次のとおりです.
matlabインターフェースの各クラスは,Pythonインターフェースに対応するクラスを持っています.PythonのMeshクラスでは, gfSlice が getfem.Slice などになります.
matlabインターフェースの各getおよびsetメソッドは,Pythonインターフェースの対応するクラスのメソッドに変換されています.次に例を示します.
gf_mesh_get(m, 'outer faces'); gf_mesh_get(m, 'pts');次のようになります.
m.outer_faces(); m.pts();曖昧さがあったときに名前が変更されたメソッドもあります.例えば
gf_mesh_set(m, 'pts', P)
はm.set_pts(P)
です.もう1つのgetfem-matlab関数には,対応するPython関数への非常に単純なマッピングがあります.
gf_compute(mf,U,'foo',...)
getfem.compute_foo(mf,U) または getfem.compute('foo',...)
gf_asm('foobar',...)
getfem.asm_foobar(...) または getfem.asm('foobar',...)
gf_linsolve('gmres',...)
getfem.linsolve_gmres(...) または getfem.linsolve('gmres',...)

python-getfem インタフェースメインオブジェクトの階層.¶
- class CvStruct(self, *args)¶
凸構造オブジェクトの記述子は凸構造の形式情報(凸の構造である点の数,面の数)を格納します.
- class GeoTrans(self, *args)¶
幾何変換オブジェクト(凸の形状/位置を定義する)記述子.
- class Mesh(self, *args)¶
メッシュ構造(節点,凸,各凸の幾何変換)記述子.
- class Fem(self, fem_name)¶
FEM(有限要素法)オブジェクトの記述子(1つの凸ごとに PK, QK, HERMITE, などがあります).
- class Integ(self, *args)¶
積分法オブジェクトの記述子(正確な求積公式 ldots ).GeoTransに直接リンクされているわけではありませんが,通常,積分法は特定の凸構造に固有です.
- class MeshFem(self, *args)¶
メッシュにリンクされたオブジェクトの記述子です.メッシュの各凸にはFEMが割り当てられています.
- class MeshIm(self, *args)¶
メッシュにリンクされたオブジェクトの記述子です.各凸には積分法が割り当てられています.
- class Model(self, *args)¶
model オブジェクトの記述子で,モデルのグローバルデータ,変数,および記述子を保持します. GetFEM のバージョン4.0では model state および model brick オブジェクトが進化しました.