1#ifndef _RHEO_BASIS_SYMBOLIC_H
2#define _RHEO_BASIS_SYMBOLIC_H
24#include <ginac/ginac.h>
25#include "rheolef/point.h"
26#include "rheolef/reference_element.h"
37 GiNaC::symbol
x,
y,
z;
96 const std::vector<polynom_type>&
p,
size_type d = 3)
const;
112 std::vector<point_basic<GiNaC::ex> >
_node;
118 :
public basis_symbols,
public std::vector<basis_symbolic_nodal_on_geo> {
138 GiNaC::Digits = 2*std::numeric_limits<Float>::digits10;
144 operator[](i).set_name(nam);
156 return operator[] (t);
160 return operator[] (t);
165 return operator[] (hat_K.
variant()); }
182 const GiNaC::ex& x0,
const GiNaC::ex& x1=0,
const GiNaC::ex& x2=0) {
field::size_type size_type
see the Float page for the full documentation
const reference_element & hat_K() const
std::vector< polynom_type > _poly
point_basic< GiNaC::ex > & node(size_type i)
polynom_type indexed_symbol(const polynom_type &expr0) const
const polynom_type & polynom(size_type i) const
const point_basic< GiNaC::ex > & node(size_type i) const
std::vector< point_basic< polynom_type > > _grad_basis
basis_symbolic_nodal_on_geo & operator<<(const polynom_type &p)
std::vector< point_basic< GiNaC::ex > > _node
basis_symbolic_nodal_on_geo()
std::vector< polynom_type > _basis
void set_name(std::string str)
void add_node(const Float &x0, const Float &x1=0, const Float &x2=0)
size_type dimension() const
void add_node(const point_basic< GiNaC::ex > &x)
value_type eval(const polynom_type &p, const point_basic< polynom_type > &x, size_type d=3) const
void set_hat_K(reference_element::variant_type t)
void put_cxx_body(std::ostream &out) const
polynom_type & polynom(size_type i)
void add_polynom(const polynom_type &p)
std::vector< int >::size_type size_type
void put_cxx_header(std::ostream &out) const
GiNaC::matrix vandermonde_matrix(const std::vector< polynom_type > &p, size_type d=3) const
static point_basic< GiNaC::ex > node(const GiNaC::ex &x0, const GiNaC::ex &x1=0, const GiNaC::ex &x2=0)
void put_cxx_main(int argc, char **argv) const
basis_symbolic_nodal_on_geo & on(reference_element::variant_type t)
bool have_continuous_feature() const
void set_name(std::string str)
bool _have_index_parameter
basis_symbolic_nodal_on_geo::size_type size_type
basis_symbolic_nodal_on_geo::polynom_type polynom_type
void set_continuous_feature(bool cf=true)
basis_symbolic_nodal(std::string nam, size_type deg)
basis_symbolic_nodal_on_geo::end_type end_type
static polynom_type poly(const polynom_type &p)
void put_cxx_body(std::ostream &out) const
void set_degree_parameter(bool dp=true)
const basis_symbolic_nodal_on_geo & on(reference_element::variant_type t) const
std::string family_name() const
void put_cxx_header(std::ostream &out) const
bool _have_continuous_feature
bool have_index_parameter() const
basis_symbolic_nodal_on_geo & on(char t)
static point_basic< GiNaC::ex > node(const point_basic< GiNaC::ex > &x)
see the reference_element page for the full documentation
void set_variant(variant_type x)
static const variant_type max_variant
size_type dimension() const
variant_type variant() const
This file is part of Rheolef.