00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #ifndef __deal2__polynomials_nedelec_h
00014 #define __deal2__polynomials_nedelec_h
00015
00016
00017 #include <deal.II/base/config.h>
00018 #include <deal.II/base/exceptions.h>
00019 #include <deal.II/base/tensor.h>
00020 #include <deal.II/base/point.h>
00021 #include <deal.II/base/polynomial.h>
00022 #include <deal.II/base/polynomial_space.h>
00023 #include <deal.II/base/tensor_product_polynomials.h>
00024 #include <deal.II/base/table.h>
00025
00026 #include <vector>
00027
00028 DEAL_II_NAMESPACE_OPEN
00029
00047 template <int dim>
00048 class PolynomialsNedelec
00049 {
00050 public:
00062 PolynomialsNedelec (const unsigned int k);
00063
00088 void compute (const Point<dim> &unit_point, std::vector<Tensor<1, dim> > &values, std::vector<Tensor<2, dim> > &grads, std::vector<Tensor<3, dim> > &grad_grads) const;
00089
00094 unsigned int n () const;
00095
00101 unsigned int degree () const;
00102
00107 std::string name () const;
00108
00118 static unsigned int compute_n_pols (unsigned int degree);
00119
00120 private:
00125 const unsigned int my_degree;
00126
00134 const AnisotropicPolynomials<dim> polynomial_space;
00135
00139 const unsigned int n_pols;
00140
00148 static std::vector<std::vector< Polynomials::Polynomial< double > > > create_polynomials (const unsigned int k);
00149 };
00150
00151
00152 template <int dim>
00153 inline unsigned int PolynomialsNedelec<dim>::n () const
00154 {
00155 return n_pols;
00156 }
00157
00158
00159 template <int dim>
00160 inline unsigned int PolynomialsNedelec<dim>::degree () const
00161 {
00162 return my_degree;
00163 }
00164
00165
00166 template <int dim>
00167 inline std::string
00168 PolynomialsNedelec<dim>::name() const
00169 {
00170 return "Nedelec";
00171 }
00172
00173
00174 DEAL_II_NAMESPACE_CLOSE
00175
00176 #endif
00177