Rheolef  7.2
an efficient C++ finite element environment
 
Loading...
Searching...
No Matches
fekete.icc
Go to the documentation of this file.
1#ifndef _RHEOLEF_FEKETE_ICC
2#define _RHEOLEF_FEKETE_ICC
23//
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
32namespace rheolef {
33
34template<class T>
35void set_simplex_leb_gll (size_t degree, Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>& pts);
36
37// ---------------------------------------------------------------------------
38// all cases
39// ---------------------------------------------------------------------------
40template<class T>
41void
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
see the reference_element page for the full documentation
static const variant_type H
static const variant_type q
static const variant_type e
static const variant_type p
variant_type variant() const
static size_type n_node(variant_type variant, size_type order)
static const variant_type T
static const variant_type P
static const variant_type t
#define error_macro(message)
Definition dis_macros.h:49
Expr1::float_type T
Definition field_expr.h:230
This file is part of Rheolef.
void warburton_T(size_t degree, Eigen::Matrix< point_basic< T >, Eigen::Dynamic, 1 > &x, bool map_on_reference_element=true)
void reference_element_barycenter(reference_element hat_K, point_basic< T > &c)
void set_simplex_leb_gll(size_t degree, Eigen::Matrix< point_basic< T >, Eigen::Dynamic, 1 > &pts)
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
void warburton_H(size_t degree, Eigen::Matrix< point_basic< T >, Eigen::Dynamic, 1 > &x, bool dummy=true)
Definition warburton.icc:91
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
void warburton_P(size_t degree, Eigen::Matrix< point_basic< T >, Eigen::Dynamic, 1 > &x, bool map_on_reference_element=true)
void warburton_q(size_t degree, Eigen::Matrix< point_basic< T >, Eigen::Dynamic, 1 > &x, bool dummy=true)
Definition warburton.icc:73