00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef __deal2__function_bessel_h
00013 #define __deal2__function_bessel_h
00014
00015
00016 #include <deal.II/base/config.h>
00017 #include <deal.II/base/function.h>
00018 #include <deal.II/base/point.h>
00019
00020 DEAL_II_NAMESPACE_OPEN
00021
00022 namespace Functions
00023 {
00030 template <int dim>
00031 class Bessel1 : public Function<dim>
00032 {
00033 public:
00034 Bessel1(const unsigned int order,
00035 const double wave_number,
00036 const Point<dim> center = Point<dim>());
00037 virtual double value (const Point<dim>& points, const unsigned int component) const;
00038 virtual void value_list (const std::vector<Point<dim> > &points,
00039 std::vector<double> &values,
00040 const unsigned int component = 0) const;
00041 virtual Tensor<1,dim> gradient (const Point<dim> &p,
00042 const unsigned int component = 0) const;
00043 virtual void gradient_list (const std::vector<Point<dim> > &points,
00044 std::vector<Tensor<1,dim> > &gradients,
00045 const unsigned int component = 0) const;
00046 private:
00047 unsigned int order;
00048 double wave_number;
00049 Point<dim> center;
00050 };
00051 }
00052
00053 DEAL_II_NAMESPACE_CLOSE
00054
00055 #endif
00056
00057