**Synopsis**

```
F = gf_fem('interpolated_fem', mesh_fem mf_source, mesh_im mim_target, [ivec blocked_dofs[, bool caching]])
F = gf_fem('projected_fem', mesh_fem mf_source, mesh_im mim_target, int rg_source, int rg_target[, ivec blocked_dofs[, bool caching]])
F = gf_fem(string fem_name)
```

**Description :**

General constructor for fem objects.

This object represents a finite element method on a reference element.

**Command list :**

F = gf_fem('interpolated_fem', mesh_fem mf_source, mesh_im mim_target, [ivec blocked_dofs[, bool caching]])Build a special fem which is interpolated from another mesh_fem.

Using this special finite element, it is possible to interpolate a given mesh_fem mf_source on another mesh, given the integration method mim_target that will be used on this mesh.

Note that this finite element may be quite slow or consume much memory depending if caching is used or not. By default caching is True

F = gf_fem('projected_fem', mesh_fem mf_source, mesh_im mim_target, int rg_source, int rg_target[, ivec blocked_dofs[, bool caching]])Build a special fem which is interpolated from another mesh_fem.

Using this special finite element, it is possible to interpolate a given mesh_fem mf_source on another mesh, given the integration method mim_target that will be used on this mesh.

Note that this finite element may be quite slow or consume much memory depending if caching is used or not. By default caching is True

F = gf_fem(string fem_name)The fem_name should contain a description of the finite element method. Please refer to the getfem++ manual (especially the description of finite element and integration methods) for a complete reference. Here is a list of some of them:

- FEM_PK(n,k) : classical Lagrange element Pk on a simplex of dimension n.
- FEM_PK_DISCONTINUOUS(n,k[,alpha]) : discontinuous Lagrange element Pk on a simplex of dimension n.
- FEM_QK(n,k) : classical Lagrange element Qk on quadrangles, hexahedrons etc.
- FEM_QK_DISCONTINUOUS(n,k[,alpha]) : discontinuous Lagrange element Qk on quadrangles, hexahedrons etc.
- FEM_Q2_INCOMPLETE(n) : incomplete Q2 elements with 8 and 20 dof (serendipity Quad 8 and Hexa 20 elements).
- FEM_PK_PRISM(n,k) : classical Lagrange element Pk on a prism of dimension n.
- FEM_PK_PRISM_DISCONTINUOUS(n,k[,alpha]) : classical discontinuous Lagrange element Pk on a prism.
- FEM_PK_WITH_CUBIC_BUBBLE(n,k) : classical Lagrange element Pk on a simplex with an additional volumic bubble function.
- FEM_P1_NONCONFORMING : non-conforming P1 method on a triangle.
- FEM_P1_BUBBLE_FACE(n) : P1 method on a simplex with an additional bubble function on face 0.
- FEM_P1_BUBBLE_FACE_LAG : P1 method on a simplex with an additional lagrange dof on face 0.
- FEM_PK_HIERARCHICAL(n,k) : PK element with a hierarchical basis.
- FEM_QK_HIERARCHICAL(n,k) : QK element with a hierarchical basis
- FEM_PK_PRISM_HIERARCHICAL(n,k) : PK element on a prism with a hierarchical basis.
- FEM_STRUCTURED_COMPOSITE(fem f,k) : Composite fem f on a grid with k divisions.
- FEM_PK_HIERARCHICAL_COMPOSITE(n,k,s) : Pk composite element on a grid with s subdivisions and with a hierarchical basis.
- FEM_PK_FULL_HIERARCHICAL_COMPOSITE(n,k,s) : Pk composite element with s subdivisions and a hierarchical basis on both degree and subdivision.
- FEM_PRODUCT(A,B) : tensorial product of two polynomial elements.
- FEM_HERMITE(n) : Hermite element P3 on a simplex of dimension n = 1, 2, 3.
- FEM_ARGYRIS : Argyris element P5 on the triangle.
- FEM_HCT_TRIANGLE : Hsieh-Clough-Tocher element on the triangle (composite P3 element which is C1), should be used with IM_HCT_COMPOSITE() integration method.
- FEM_QUADC1_COMPOSITE : Quadrilateral element, composite P3 element and C1 (16 dof).
- FEM_REDUCED_QUADC1_COMPOSITE : Quadrilateral element, composite P3 element and C1 (12 dof).
- FEM_RT0(n) : Raviart-Thomas element of order 0 on a simplex of dimension n.
- FEM_NEDELEC(n) : Nedelec edge element of order 0 on a simplex of dimension n.
Of course, you have to ensure that the selected fem is compatible with the geometric transformation: a Pk fem has no meaning on a quadrangle.