00001 #ifndef _baerbel_adinipoly_h_
00002 #define _baerbel_adinipoly_h_
00003
00004 #include <base/point.h>
00005 #include <base/tensor.h>
00006 #include <base/table.h>
00007
00008 using namespace dealii;
00009
00018 class AdiniPoly
00019 {
00020 public:
00026 AdiniPoly ();
00053 void compute (const Point<2> &unit_point,
00054 std::vector<double> &values,
00055 std::vector<Tensor<1,2> > &grads,
00056 std::vector< Tensor<2,2> > &grad_grads) const;
00057
00066 double compute_value (const unsigned int i,
00067 const Point<2> &p) const;
00068
00077 Tensor<1,2> compute_grad (const unsigned int i,
00078 const Point<2> &p) const;
00088 Tensor<2,2> compute_grad_grad (const unsigned int i, const Point<2> &p) const;
00089 Tensor<2,2> compute_grad_grad_2 (const unsigned int i, const Point<2> &p) const;
00090
00091 private:
00097 Table<2, double> coef;
00098 Table<2, double> dx;
00099 Table<2, double> dy;
00100 Table<2, double> dxx;
00101 Table<2, double> dyy;
00102 Table<2, double> dxy;
00103
00104 };
00105
00106 #endif // _baerbel_adinipoly_h_