<?xml version="1.0" encoding="UTF-8"?>
<refentry version="5.0-subset Scilab" xml:id="gf_fem" xml:lang="en"
          xmlns="http://docbook.org/ns/docbook"
          xmlns:xlink="http://www.w3.org/1999/xlink"
          xmlns:xi="http://www.w3.org/2001/XInclude"
          xmlns:svg="http://www.w3.org/2000/svg"
          xmlns:mml="http://www.w3.org/1998/Math/MathML"
          xmlns:html="http://www.w3.org/1999/xhtml"
          xmlns:db="http://docbook.org/ns/docbook">
  <refnamediv>
    <refname>gf_fem</refname>
    <refpurpose>    This object represents a finite element method on a reference element.
</refpurpose>
  </refnamediv>

  <refsynopsisdiv>
    <title>Calling Sequence</title>

    <synopsis>F = gf_fem('interpolated_fem', mesh_fem mf, mesh_im mim, [ivec blocked_dof])</synopsis>
    <synopsis>F = gf_fem(string fem_name)</synopsis>
  </refsynopsisdiv>

  <refsection>
    <title>Description</title>
    <para>General constructor for fem objects.</para>

    <para>    This object represents a finite element method on a reference element.
</para>
  </refsection>

  <refsection>
    <title>Command list</title>

    <itemizedlist>
    <listitem>
    <para><literal>F = gf_fem('interpolated_fem', mesh_fem mf, mesh_im mim, [ivec blocked_dof])</literal></para>

    <para>       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 <literal>mf</literal> on another mesh, given the integration method <literal>mim</literal> that will
    be used on this mesh.

    Note that this finite element may be quite slow, and eats much
    memory.
    </para>
    </listitem>

    <listitem>
    <para><literal>F = gf_fem(string fem_name)</literal></para>

    <para>         The <literal>fem_name</literal> 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 <literal>n</literal>.
      - FEM_PK_DISCONTINUOUS(n,k[,alpha]) :
        discontinuous Lagrange element Pk on a simplex of dimension <literal>n</literal>.
      - 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 :
        incomplete 2D Q2 element with 8 dof (serendipity Quad 8 element).
      - FEM_PK_PRISM(n,k) :
        classical Lagrange element Pk on a prism of dimension <literal>n</literal>.
      - 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 <literal>f</literal> on a grid with <literal>k</literal> divisions.
      - FEM_PK_HIERARCHICAL_COMPOSITE(n,k,s) :
        Pk composite element on a grid with <literal>s</literal> subdivisions and with a
        hierarchical basis.
      - FEM_PK_FULL_HIERARCHICAL_COMPOSITE(n,k,s) :
        Pk composite element with <literal>s</literal> 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 <literal>n = 1, 2, 3</literal>.
      - 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 <literal>n</literal>.
      - FEM_NEDELEC(n) :
        Nedelec edge element of order 0 on a simplex of dimension <literal>n</literal>.

      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.
      
    </para>
    </listitem>

    </itemizedlist>
  </refsection>

  <refsection>
    <title>See Also</title>
    <simplelist type="inline">
      <member><link linkend="getfem_types">getfem types</link></member>
    </simplelist>
  </refsection>

  <refsection>
    <title>Authors</title>
    <para>Y. Collette</para>
  </refsection>

</refentry>
