---
name: "form_element"
section: "7rheolef"
platform: "linux"
package: "librheolef-dev"
version: "6.1-2.1"
release: "Debian 7 (Wheezy)"
platforms: ["linux"]
url: "https://new.carta.tech/form_element"
---

# form\_element(7rheolef)

bilinear form on a single element

## NAME

**form\_element** - bilinear form on a single element

## SYNOPSYS

The **form\_element** class defines functions that compute a bilinear form defined between two polynomial basis on a single geometrical element. This bilinear form is represented by a matrix.

The bilinear form is designated by a string, e.g. "mass", "grad\_grad", ... indicating the form. The form depends also of the geometrical element: triangle, square, tetrahedron (see geo\_element(2)).

## IMPLEMENTATION NOTE

The **form\_element** class is managed by (see smart\_pointer(2)). This class uses a pointer on a pure virtual class **form\_element\_rep** while the effective code refers to the specific concrete derived classes: mass, grad\_grad, etc.

## IMPLEMENTATION

```
template <class T, class M>
class form_element : public smart_pointer<form_element_rep<T,M> > {
public:
// typedefs:
    typedef form_element_rep<T,M>         rep;
    typedef smart_pointer<rep>            base;
    typedef typename rep::size_type       size_type;
    typedef typename rep::vertex_type     vertex_type;
    typedef typename rep::space_type      space_type;
    typedef typename rep::geo_type        geo_type;
    typedef typename rep::coordinate_type coordinate_type;
// constructors:
    form_element ();
    form_element (
        std::string           name,
        const space_type&     X,
        const space_type&     Y,
        const geo_type&       omega,
        const quadrature_option_type& qopt);
// accessors & modifier:
    void operator() (const geo_element& K, ublas::matrix<T>& m) const;
    virtual bool is_symmetric () const;
// for scalar-weighted forms:
    void set_weight (const field_basic<T,M>& wh) const;
    bool is_weighted() const;
    const field_basic<T,M>& get_weight () const;
// for banded level set method:
    bool is_on_band() const;
    const band_basic<T,M>& get_band() const;
    void set_band (const band_basic<T,M>& bh) const;
};

```

## SEE ALSO

geo\_element(2), smart\_pointer(2)
