1#ifndef _RHEO_QUADRATURE_H
2#define _RHEO_QUADRATURE_H
23#include "rheolef/smart_pointer.h"
24#include "rheolef/persistent_table.h"
25#include "rheolef/reference_element.h"
26#include "rheolef/point.h"
27#include "rheolef/integrate_option.h"
28#include "rheolef/reference_element_face_transformation.h"
29#include "rheolef/compiler_eigen.h"
87 typedef std::vector<weighted_point<T> >
base;
155 std::string
name()
const;
223 {
return base::data().get_nodes(hat_K,node); }
230 return os << q.
data();
248 if (r == 0)
return 1;
249 size_type n = (r % 2 == 0) ? r/2+1 : (r+1)/2;
250 return std::max(
size_t(1), n);
257 return _options.get_order();
264 return _options.get_family();
271 return _options.get_family_name();
286 if (get_order() != r) {
289 std::fill (_initialized.begin(), _initialized.end(),
false);
297 if (get_family() != ft) {
299 _options.set_family(ft);
300 std::fill (_initialized.begin(), _initialized.end(),
false);
field::size_type size_type
short int orientation_type
see the integrate_option page for the full documentation
see the persistent_table page for the full documentation
void init_tetrahedron(quadrature_option opt)
void initialize(reference_element hat_K, quadrature_option opt)
friend std::ostream & operator<<(std::ostream &, const quadrature_on_geo< U > &)
void init_prism(quadrature_option opt)
void init_point(quadrature_option opt)
base::size_type size_type
static size_type n_node_gauss(size_type r)
void get_nodes(Eigen::Matrix< point_basic< T >, Eigen::Dynamic, 1 > &node) const
quadrature_on_geo & operator=(const quadrature_on_geo &q)
void init_hexahedron(quadrature_option opt)
void init_square(quadrature_option opt)
void init_edge(quadrature_option opt)
quadrature_on_geo(const quadrature_on_geo &q)
void init_triangle(quadrature_option opt)
std::vector< weighted_point< T > > base
void wx(const point_basic< T > &x, const T &w)
friend std::ostream & operator<<(std::ostream &, const quadrature_rep< U > &)
geo_element_indirect::orientation_type orientation_type
std::vector< weighted_point< T > >::const_iterator const_iterator
const quadrature_rep & operator=(const quadrature_rep< T > &q)
const_iterator begin(reference_element hat_K) const
quadrature_on_geo< T >::size_type size_type
std::array< quadrature_on_geo< T >, reference_element::max_variant > _quad
const_iterator end(reference_element hat_K) const
void get_nodes(reference_element hat_K, Eigen::Matrix< point_basic< T >, Eigen::Dynamic, 1 > &node) const
void set_family(family_type ft)
quadrature_option::family_type family_type
void set_order(size_type order)
std::string get_family_name() const
size_type get_order() const
std::vector< bool > _initialized
size_type size(reference_element hat_K) const
const weighted_point< T > & operator()(reference_element hat_K, size_type q) const
quadrature_option _options
void _initialize(reference_element hat_K) const
static quadrature_rep * make_ptr(const std::string &name)
const quadrature_option & get_options() const
family_type get_family() const
rep::const_iterator const_iterator
family_type get_family() const
const_iterator end(reference_element hat_K) const
void reset(const std::string &name)
void get_nodes(reference_element hat_K, Eigen::Matrix< point_basic< T >, Eigen::Dynamic, 1 > &node) const
void set_family(family_type ft)
rep::orientation_type orientation_type
void set_order(size_type order)
rep::family_type family_type
std::string get_family_name() const
smart_pointer< rep > base
const weighted_point< T > & operator()(reference_element hat_K, size_type q) const
size_type size(reference_element hat_K) const
size_type get_order() const
const quadrature_option & get_options() const
const_iterator begin(reference_element hat_K) const
see the reference_element page for the full documentation
static const variant_type max_variant
see the smart_pointer page for the full documentation
This file is part of Rheolef.
std::ostream & operator<<(std::ostream &os, const catchmark &m)
weighted_point(const point_basic< T > &x1, const T &w1)