非適合メッシュ上の有限要素法の補間

特殊な有限要素法は, getfem/getfem_interpolated_fem.h で定義されています.これは実際の有限要素法ではありませんが,別のメッシュで定義された有限要素法を補間する擬似有限要素法です.異なるメッシュで定義された有限要素法を使用して行列をアセンブルする必要がある場合は,"interpolated fem" か "projected fem" を使用することができます.

// interpolation within a volume
getfem::new_interpolated_fem(getfem::mesh_fem mf, getfem::mesh_im mim);
// projection on a surface
getfem::new_projected_fem(getfem::mesh_fem mf, getfem::mesh_im mim);

有限要素法の各基底関数は補間されなければならないので,そのような計算は重い手順である可能性があります.デフォルトでは,補間された有限要素法オブジェクトは補間データを格納します.

補間は mim の積分法の各Gauss点で行われるため,アセンブリ手順ではこの積分法しか使用できません.

たとえば,2つの異なるメッシュで定義された2つの異なる有限要素法の間の質量行列を計算する必要がある場合,これは2番目の有限要素法を補間するコードの例です. mf が有限要素法を記述し, mim が選択された積分法であると仮定して,最初の有限要素法メッシュ上で次の関数を実行します.

getfem::mesh_fem mf_interpole(mfu.linked_mesh());
pfem ifem = getfem::new_interpolated_fem(mf, mim);
dal::bit_vector nn = mfu.convex_index();
mf_interpole.set_finite_element(nn, ifem);
getfem::asm_mass_matrix(SM1, mim, mfu, mf_interpole);
del_interpolated_fem(ifem);

ifem が指すオブジェクトには,補間に関するすべての情報が含まれています.それは多くのメモリを使用する可能性があります. pfemはshared_ptrであるため,補間された有限要素法は,最後のポインタが破棄されると自動的に破棄されます.より正確な精度を得るには,その次数を増やすのではなく,積分法を(たとえば, IM_STRUCTURED_COMPOSITE を使って)改良する方が良いでしょう.

異なるメッシュの混合法

前述のツール(挿入され投影されたフェム)を使用する代わりに,GWFL汎用弱形式言語( 補間変換 を参照)の "interpolate transformation" ツールを使用してアセンブリを計算するメッシュ以外のメッシュ上で定義された有限要素変数を使用することもできます.この場合,有限要素変数は各Gauss 点で補間されます.使用されるメッシュの次元に制限はなく,特に,2次元のfem変数を一次元メッシュ上で補間することができます(たとえば,シェル要素とビーム要素の結合を可能にします).極座標からユークリッド座標への変換など,いくつかの変換を使用することもできます.

Mortar法

mortarメソッドは GetFEM でサポートされています.非適合メッシュ間の結合項は特にGWFL( 補間変換 を参照)の補間変換を用いて計算できます.