Rheolef  7.1
an efficient C++ finite element environment
pointset.h
Go to the documentation of this file.
1 #ifndef _RHEOLEF_POINTSET_H
2 #define _RHEOLEF_POINTSET_H
23 /*Class:pointset
24 NAME: @code{poinset} - a set of points in the reference element
25 @clindex pointset
26 @cindex reference element
27 @clindex reference_element
28 SYNOPSIS:
29  @noindent
30  The @code{pointset} class defines a set of points in the reference element
31  (see @ref{reference_element iclass}).
32  It could be associated either to a quadrature formulae or to a lattice,
33  e.g. equispaced Lagrange lattice.
34 OPTIONS:
35  The pointset basis recognize some options,
36  transmitted to the constructor of the basis class:
37  see @ref{pointset_option iclass}.
38 AUTHOR: Pierre.Saramito@imag.fr
39 DATE: 7 may 2019
40 End:
41 */
42 #include "rheolef/point.h"
43 #include "rheolef/reference_element.h"
44 #include "rheolef/pointset_option.h"
45 
46 namespace rheolef {
47 
48 template<class T>
49 class pointset_rep {
50 public:
51 
52 // typedefs:
53 
55  typedef T value_type;
56 
57 // allocators:
58 
60  void reset (const pointset_option& popt);
61 
62 // accessors:
63 
64  const pointset_option& option() const { return _sopt; }
65  size_type nnod (const reference_element& hat_K) const;
66  const point_basic<T>& node (const reference_element& hat_K, size_i inod) const
67 
68 protected:
69 // data:
70  const std::array<bool,reference_element::max_variant> _is_initialized;;
71  const std::array<
72  Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>
75 };
76 
77 //<pointset:
78 template<class T>
79 class pointset: public smart_pointer_nocopy<basis_rep<T> > {
80 public:
81 
82 // typedefs:
83 
86  typedef typename rep::size_type size_type;
87  typedef typename rep::value_type value_type;
88 
89 // allocators:
90 
92  void reset (const pointset_option& popt);
93 
94 // accessors:
95 
96  const pointset_option& option() const
97  { return data().option(); }
98  size_type nnod (const reference_element& hat_K) const
99  { return data().nnod(hat_K); }
100  const point_basic<T>& node (const reference_element& hat_K, size_i inod) const
101  { return data().node (hat_K, inod); }
102 };
103 //>verbatim:
104 
105 }// namespace rheolef
106 #endif // _RHEOLEF_POINTSET_H
const std::array< Eigen::Matrix< point_basic< T >, Eigen::Dynamic, 1 >,reference_element::max_variant > _hat_x
Definition: pointset.h:73
pointset_rep(const pointset_option &popt)
void reset(const pointset_option &popt)
pointset_option _sopt
Definition: pointset.h:74
const point_basic< T > & node(const reference_element &hat_K, size_i inod) const protected
Definition: pointset.h:66
reference_element::size_type size_type
Definition: pointset.h:54
size_type nnod(const reference_element &hat_K) const
const pointset_option & option() const
Definition: pointset.h:64
const point_basic< T > & node(const reference_element &hat_K, size_i inod) const
Definition: pointset.h:100
rep::value_type value_type
Definition: pointset.h:87
void reset(const pointset_option &popt)
pointset_rep< T > rep
Definition: pointset.h:84
pointset(const pointset_option &popt=pointset_option())
rep::size_type size_type
Definition: pointset.h:86
smart_pointer_nocopy< rep > base
Definition: pointset.h:85
size_type nnod(const reference_element &hat_K) const
Definition: pointset.h:98
const pointset_option & option() const
Definition: pointset.h:96
see the reference_element page for the full documentation
static const variant_type max_variant
std::vector< int >::size_type size_type
Expr1::float_type T
Definition: field_expr.h:261
This file is part of Rheolef.