00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef __deal2__fe_bdm_h
00013 #define __deal2__fe_bdm_h
00014
00015 #include <deal.II/base/config.h>
00016 #include <deal.II/base/table.h>
00017 #include <deal.II/base/polynomials_bdm.h>
00018 #include <deal.II/base/polynomial.h>
00019 #include <deal.II/base/tensor_product_polynomials.h>
00020 #include <deal.II/base/geometry_info.h>
00021 #include <deal.II/fe/fe.h>
00022 #include <deal.II/fe/fe_poly_tensor.h>
00023
00024 #include <vector>
00025
00026
00027 DEAL_II_NAMESPACE_OPEN
00028
00051 template <int dim>
00052 class FE_BDM
00053 :
00054 public FE_PolyTensor<PolynomialsBDM<dim>, dim>
00055 {
00056 public:
00061 FE_BDM (const unsigned int p);
00062
00072 virtual std::string get_name () const;
00073
00074 virtual FiniteElement<dim>* clone () const;
00075
00076 virtual void interpolate(std::vector<double>& local_dofs,
00077 const std::vector<double>& values) const;
00078 virtual void interpolate(std::vector<double>& local_dofs,
00079 const std::vector<Vector<double> >& values,
00080 unsigned int offset = 0) const;
00081 virtual void interpolate(
00082 std::vector<double>& local_dofs,
00083 const VectorSlice<const std::vector<std::vector<double> > >& values) const;
00084 private:
00095 static std::vector<unsigned int>
00096 get_dpo_vector (const unsigned int degree);
00097
00105 static std::vector<bool>
00106 get_ria_vector (const unsigned int degree);
00114 void initialize_support_points (const unsigned int rt_degree);
00124 std::vector<std::vector<double> > test_values;
00125 };
00126
00127 DEAL_II_NAMESPACE_CLOSE
00128
00129 #endif
00130