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)