Rheolef  7.1
an efficient C++ finite element environment
basis_fem_empty.h
Go to the documentation of this file.
1 #ifndef _RHEOLEF_BASIS_FEM_EMPTY_H
2 #define _RHEOLEF_BASIS_FEM_EMPTY_H
3 /*Class:sherwin
24 NAME: @code{empty} - the empty finite element
25 @cindex polynomial basis
26 @clindex space
27 @clindex basis
28 @clindex reference_element
29 SYNOPSIS:
30  space Zh (omega,"empty");
31 DESCRIPTION:
32  @noindent
33  This polynomial @code{basis} is used when an empty
34  finite element set should be declared.
35  This could be useful when product of space
36  are considered and a special empty set is required, e.g.:
37  @example
38  string approx = (k > 0) ? "P"+itos(k-1)+"d" : "empty";
39  space Xh (omega, approx);
40  @end example
41  In this example, it represents the "P_{-1}" polynomial
42  space that is empty by convention.
43 AUTHOR: Pierre.Saramito@imag.fr
44 DATE: 2 january 2019
45 End:
46 */
47 #include "rheolef/basis.h"
48 namespace rheolef {
49 
50 template<class T>
51 class basis_fem_empty: public basis_rep<T> {
52 public:
53  typedef basis_rep<T> base;
54  typedef typename base::size_type size_type;
57  std::string name() const { return family_name(); }
58  bool have_index_parameter() const { return false; }
59  std::string family_name() const { return "empty"; }
60  size_type degree () const { return 0; }
61  bool have_compact_support_inside_element() const { return true; }
62  bool is_nodal() const { return true; }
63  void evaluate (
64  reference_element hat_K,
65  const point_basic<T>& hat_x,
66  Eigen::Matrix<T,Eigen::Dynamic,1>& values) const;
67  void grad_evaluate (
68  reference_element hat_K,
69  const point_basic<T>& hat_x,
70  Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>& values) const;
71  void _compute_dofs (
72  reference_element hat_K,
73  const Eigen::Matrix<T,Eigen::Dynamic,1>& f_xnod,
74  Eigen::Matrix<T,Eigen::Dynamic,1>& dof) const;
75  void _initialize_cstor_sizes() const;
76  void _initialize_data (reference_element hat_K) const;
77  const Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>& hat_node(reference_element hat_K) const {
79  return _dummy_hat_node;
80  }
81 protected:
82  static const Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1> _dummy_hat_node;
83 };
84 
85 } // namespace rheolef
86 #endif // _RHEOLEF_BASIS_FEM_EMPTY_H
rheolef::basis_fem_empty::family_name
std::string family_name() const
Definition: basis_fem_empty.h:59
rheolef::basis_fem_empty::degree
size_type degree() const
Definition: basis_fem_empty.h:60
rheolef::basis_rep::_initialize_data_guard
void _initialize_data_guard(reference_element hat_K) const
Definition: basis_rep.cc:126
rheolef::basis_fem_empty::_compute_dofs
void _compute_dofs(reference_element hat_K, const Eigen::Matrix< T, Eigen::Dynamic, 1 > &f_xnod, Eigen::Matrix< T, Eigen::Dynamic, 1 > &dof) const
Definition: basis_fem_empty.cc:63
rheolef::point_basic
Definition: point.h:87
rheolef::basis_fem_empty::_dummy_hat_node
static const Eigen::Matrix< point_basic< T >, Eigen::Dynamic, 1 > _dummy_hat_node
Definition: basis_fem_empty.h:82
rheolef::basis_fem_empty::_initialize_cstor_sizes
void _initialize_cstor_sizes() const
Definition: basis_fem_empty.cc:72
rheolef::basis_rep::size_type
reference_element::size_type size_type
Definition: basis.h:214
rheolef::basis_fem_empty::have_index_parameter
bool have_index_parameter() const
Definition: basis_fem_empty.h:58
rheolef::reference_element
see the reference_element page for the full documentation
Definition: reference_element.h:66
rheolef::basis_fem_empty::grad_evaluate
void grad_evaluate(reference_element hat_K, const point_basic< T > &hat_x, Eigen::Matrix< point_basic< T >, Eigen::Dynamic, 1 > &values) const
Definition: basis_fem_empty.cc:54
rheolef::basis_fem_empty::base
basis_rep< T > base
Definition: basis_fem_empty.h:53
rheolef::basis_fem_empty::name
std::string name() const
Definition: basis_fem_empty.h:57
rheolef::basis_fem_empty
Definition: basis_fem_empty.h:51
rheolef
This file is part of Rheolef.
Definition: compiler_eigen.h:37
rheolef::basis_fem_empty::size_type
base::size_type size_type
Definition: basis_fem_empty.h:54
rheolef::basis_fem_empty::basis_fem_empty
basis_fem_empty()
Definition: basis_fem_empty.cc:31
rheolef::basis_fem_empty::is_nodal
bool is_nodal() const
Definition: basis_fem_empty.h:62
rheolef::basis_fem_empty::have_compact_support_inside_element
bool have_compact_support_inside_element() const
Definition: basis_fem_empty.h:61
rheolef::basis_fem_empty::hat_node
const Eigen::Matrix< point_basic< T >, Eigen::Dynamic, 1 > & hat_node(reference_element hat_K) const
Definition: basis_fem_empty.h:77
rheolef::basis_fem_empty::_initialize_data
void _initialize_data(reference_element hat_K) const
Definition: basis_fem_empty.cc:84
rheolef::basis_fem_empty::~basis_fem_empty
~basis_fem_empty()
Definition: basis_fem_empty.cc:40
rheolef::basis_fem_empty::evaluate
void evaluate(reference_element hat_K, const point_basic< T > &hat_x, Eigen::Matrix< T, Eigen::Dynamic, 1 > &values) const
Definition: basis_fem_empty.cc:45
rheolef::basis_rep
Definition: basis.h:209