Rheolef  7.1
an efficient C++ finite element environment
fekete.icc
Go to the documentation of this file.
1 #ifndef _RHEOLEF_FEKETE_ICC
2 #define _RHEOLEF_FEKETE_ICC
3 //
24 // compute the Fekete point set (see BriSomVia-2012)
25 //
26 // author: Pierre.Saramito@imag.fr
27 //
28 // date: 2 october 2017
29 //
30 #include "warburton.icc"
31 
32 namespace rheolef {
33 
34 template<class T>
35 void set_simplex_leb_gll (size_t degree, Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>& pts);
36 
37 // ---------------------------------------------------------------------------
38 // all cases
39 // ---------------------------------------------------------------------------
40 template<class T>
41 void
43  reference_element hat_K,
44  size_t degree,
45  Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>& hat_xnod,
46  bool map_on_reference_element = true)
47 {
48  hat_xnod.resize (reference_element::n_node(hat_K.variant(), degree));
49  if (degree == 0) {
50  reference_element_barycenter (hat_K, hat_xnod[0]);
51  return;
52  }
53  switch (hat_K.variant()) {
55  set_simplex_leb_gll (degree, hat_xnod); break;
56  // ------------------------------------------------------------------
57  // others are provided with Warburton or Legendre node tensor product
58  // ------------------------------------------------------------------
60  hat_xnod [0] = point_basic<T> (T(0)); break;
62  warburton_e (degree, hat_xnod, map_on_reference_element); break;
64  warburton_q (degree, hat_xnod, map_on_reference_element); break;
66  warburton_H (degree, hat_xnod, map_on_reference_element); break;
67  case reference_element::P: // TODO: as triangle*Legendre_edge
68  warburton_P (degree, hat_xnod, map_on_reference_element); break;
69  case reference_element::T: // TODO: how to compute nodes ?
70  warburton_T (degree, hat_xnod, map_on_reference_element); break;
71  default: error_macro ("unexpected element type `"<<hat_K.name()<<"'");
72  }
73 }
74 
75 } // namespace rheolef
76 #endif // _RHEOLEF_WARBURTON_ICC
rheolef::warburton_T
void warburton_T(size_t degree, Eigen::Matrix< point_basic< T >, Eigen::Dynamic, 1 > &x, bool map_on_reference_element=true)
Definition: warburton.icc:443
rheolef::reference_element::e
static const variant_type e
Definition: reference_element.h:76
warburton.icc
rheolef::reference_element::H
static const variant_type H
Definition: reference_element.h:81
rheolef::reference_element::n_node
static size_type n_node(variant_type variant, size_type order)
Definition: reference_element.cc:201
rheolef::point_basic
Definition: point.h:87
rheolef::warburton_P
void warburton_P(size_t degree, Eigen::Matrix< point_basic< T >, Eigen::Dynamic, 1 > &x, bool map_on_reference_element=true)
Definition: warburton.icc:276
rheolef::set_simplex_leb_gll
void set_simplex_leb_gll(size_t degree, Eigen::Matrix< point_basic< T >, Eigen::Dynamic, 1 > &pts)
Definition: set_simplex_leb_gll.cc:34
rheolef::reference_element::T
static const variant_type T
Definition: reference_element.h:79
rheolef::reference_element
see the reference_element page for the full documentation
Definition: reference_element.h:66
rheolef::warburton_q
void warburton_q(size_t degree, Eigen::Matrix< point_basic< T >, Eigen::Dynamic, 1 > &x, bool dummy=true)
Definition: warburton.icc:73
rheolef::reference_element::name
char name() const
Definition: reference_element.h:100
rheolef::reference_element::variant
variant_type variant() const
Definition: reference_element.h:99
rheolef::warburton_H
void warburton_H(size_t degree, Eigen::Matrix< point_basic< T >, Eigen::Dynamic, 1 > &x, bool dummy=true)
Definition: warburton.icc:91
rheolef
This file is part of Rheolef.
Definition: compiler_eigen.h:37
error_macro
#define error_macro(message)
Definition: dis_macros.h:49
rheolef::point_basic< T >
point_basic< T >
Definition: piola_fem.h:135
rheolef::reference_element::p
static const variant_type p
Definition: reference_element.h:75
rheolef::reference_element::q
static const variant_type q
Definition: reference_element.h:78
rheolef::reference_element::P
static const variant_type P
Definition: reference_element.h:80
rheolef::warburton_e
void warburton_e(size_t degree, Eigen::Matrix< point_basic< T >, Eigen::Dynamic, 1 > &x, bool map_on_reference_element=true)
Definition: warburton.icc:45
rheolef::reference_element::t
static const variant_type t
Definition: reference_element.h:77
rheolef::reference_element_barycenter
void reference_element_barycenter(reference_element hat_K, point_basic< T > &c)
Definition: reference_element_aux.icc:38
rheolef::pointset_lagrange_fekete
void pointset_lagrange_fekete(reference_element hat_K, size_t degree, Eigen::Matrix< point_basic< T >, Eigen::Dynamic, 1 > &hat_xnod, bool map_on_reference_element=true)
Definition: fekete.icc:42
T
Expr1::float_type T
Definition: field_expr.h:218