---
name: "basis"
section: "7rheolef"
platform: "linux"
package: "librheolef-dev"
version: "6.7-1+b4"
release: "Debian 9 (Stretch)"
platforms: ["linux"]
url: "https://new.carta.tech/basis/7rheolef"
---

# basis(7rheolef)

polynomial basis

## NAME

**basis** - polynomial basis

## SYNOPSYS

The **basis** class defines functions that evaluates a polynomial basis and its derivatives on a point. The polynomial basis is designated by a string, e.g. "P0", "P1", "P2", "bubble",... indicating the basis. The basis depends also of the reference element: triangle, square, tetrahedron (see reference\_element(2)). For instance, on a square, the "P1" string designates the common Q1 four-nodes basis on the reference square.

The nodes associated to the Lagrange polynomial basis are also available by its associated accessor.

## IMPLEMENTATION NOTE

The **basis** class is a see smart\_pointer(2)) class on a **basis\_rep** class that is a pure virtual base class for effective bases, e.g. basis\_P1, basis\_P1, etc.

## IMPLEMENTATION

```
template<class T>
class basis_basic : public smart_pointer<basis_rep<T> > {
public:
// typedefs:
    typedef basis_rep<T>                           rep;
    typedef smart_pointer<rep>                     base;
    typedef typename basis_rep<T>::size_type       size_type;
// allocators:
    basis_basic (std::string name = "");
// accessors:
    std::string name() const;
    size_type   degree() const;
    size_type   size (reference_element hat_K) const;
    void hat_node(
        reference_element              hat_K,
        std::vector<point_basic<T> >&  hat_node) const;
    void hat_node(
        reference_element                               hat_K,
        typename std::vector<point_basic<T> >::iterator hat_node) const;
    void eval(
        reference_element     hat_K,
        const point_basic<T>& hat_x,
        std::vector<T>&       values) const;
    void eval(
        reference_element                 hat_K,
        const point_basic<T>&             hat_x,
        typename std::vector<T>::iterator values) const;
    void grad_eval(
        reference_element    hat_K,
        const point_basic<T>&         hat_x,
        std::vector<point_basic<T> >&  values) const;
    void grad_eval(
        reference_element                               hat_K,
        const point_basic<T>&                           hat_x,
        typename std::vector<point_basic<T> >::iterator values) const;
};
typedef basis_basic<Float> basis;

```

## SEE ALSO

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