include/deal.II/base/quadrature_lib.h

00001 //---------------------------------------------------------------------------
00002 //    @f$Id: quadrature_lib.h 25345 2012-03-31 08:37:04Z bangerth @f$
00003 //
00004 //    Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010, 2012 by the deal.II authors
00005 //
00006 //    This file is subject to QPL and may not be  distributed
00007 //    without copyright and license information. Please refer
00008 //    to the file deal.II/doc/license.html for the  text  and
00009 //    further information on this license.
00010 //
00011 //---------------------------------------------------------------------------
00012 #ifndef __deal2__quadrature_lib_h
00013 #define __deal2__quadrature_lib_h
00014 
00015 
00016 #include <deal.II/base/config.h>
00017 #include <deal.II/base/quadrature.h>
00018 
00019 DEAL_II_NAMESPACE_OPEN
00020 
00023 
00032 template <int dim>
00033 class QGauss : public Quadrature<dim>
00034 {
00035   public:
00043     QGauss (const unsigned int n);
00044 };
00045 
00046 
00073 template<int dim>
00074 class QGaussLobatto : public Quadrature<dim>
00075 {
00076   public:
00082     QGaussLobatto(const unsigned int n);
00083 
00084   protected:
00097     std::vector<long double>
00098     compute_quadrature_points (const unsigned int q,
00099                                const int alpha,
00100                                const int beta) const;
00101 
00111     std::vector<long double>
00112     compute_quadrature_weights (const std::vector<long double> &x,
00113                                 const int alpha,
00114                                 const int beta) const;
00115 
00126     long double JacobiP(const long double x,
00127                         const int alpha,
00128                         const int beta,
00129                         const unsigned int n) const;
00130 
00136     long double gamma(const unsigned int n) const;
00137 };
00138 
00139 
00140 
00144 template <int dim>
00145 class QMidpoint : public Quadrature<dim>
00146 {
00147   public:
00148     QMidpoint ();
00149 };
00150 
00151 
00155 template <int dim>
00156 class QSimpson : public Quadrature<dim>
00157 {
00158   public:
00159     QSimpson ();
00160 };
00161 
00162 
00166 template <int dim>
00167 class QTrapez : public Quadrature<dim>
00168 {
00169   public:
00170     QTrapez ();
00171 };
00172 
00177 template <int dim>
00178 class QMilne : public Quadrature<dim>
00179 {
00180   public:
00181     QMilne ();
00182 };
00183 
00184 
00189 template <int dim>
00190 class QWeddle : public Quadrature<dim>
00191 {
00192   public:
00193     QWeddle ();
00194 };
00195 
00196 
00197 
00213 template <int dim>
00214 class QGaussLog : public Quadrature<dim>
00215 {
00216   public:
00221   QGaussLog(const unsigned int n,
00222             const bool revert=false);
00223 
00224   protected:
00229   std::vector<double>
00230   set_quadrature_points(const unsigned int n) const;
00231 
00236   std::vector<double>
00237   set_quadrature_weights(const unsigned int n) const;
00238 
00239 };
00240 
00241 
00242 
00243 
00287 template<int dim>
00288 class QGaussLogR : public Quadrature<dim>
00289 {
00290   public:
00303     QGaussLogR(const unsigned int n,
00304                const Point<dim> x0 = Point<dim>(),
00305                const double alpha = 1,
00306                const bool factor_out_singular_weight=false);
00307 
00308   protected:
00314     const double fraction;
00315 };
00316 
00317 
00342 template<int dim>
00343 class QGaussOneOverR : public Quadrature<dim>
00344 {
00345   public:
00380     QGaussOneOverR(const unsigned int n,
00381                    const Point<dim> singularity,
00382                    const bool factor_out_singular_weight=false);
00419     QGaussOneOverR(const unsigned int n,
00420                    const unsigned int vertex_index,
00421                    const bool factor_out_singular_weight=false);
00422   private:
00427     static unsigned int quad_size(const Point<dim> singularity,
00428                                   const unsigned int n);
00429 };
00430 
00431 
00432 
00435 /* -------------- declaration of explicit specializations ------------- */
00436 
00437 template <> QGauss<1>::QGauss (const unsigned int n);
00438 template <> QGaussLobatto<1>::QGaussLobatto (const unsigned int n);
00439 template <>
00440 std::vector<long double> QGaussLobatto<1>::
00441 compute_quadrature_points(const unsigned int, const int, const int) const;
00442 template <>
00443 std::vector<long double> QGaussLobatto<1>::
00444 compute_quadrature_weights(const std::vector<long double>&, const int, const int) const;
00445 template <>
00446 long double QGaussLobatto<1>::
00447 JacobiP(const long double, const int, const int, const unsigned int) const;
00448 template <>
00449 long double
00450 QGaussLobatto<1>::gamma(const unsigned int n) const;
00451 
00452 template <> std::vector<double> QGaussLog<1>::set_quadrature_points(const unsigned int) const;
00453 template <> std::vector<double> QGaussLog<1>::set_quadrature_weights(const unsigned int) const;
00454 
00455 template <> QMidpoint<1>::QMidpoint ();
00456 template <> QTrapez<1>::QTrapez ();
00457 template <> QSimpson<1>::QSimpson ();
00458 template <> QMilne<1>::QMilne ();
00459 template <> QWeddle<1>::QWeddle ();
00460 template <> QGaussLog<1>::QGaussLog (const unsigned int n, const bool revert);
00461 template <> QGaussLogR<1>::QGaussLogR (const unsigned int n, const Point<1> x0, const double alpha, const bool flag);
00462 template <> QGaussOneOverR<2>::QGaussOneOverR (const unsigned int n, const unsigned int index, const bool flag);
00463 
00464 
00465 
00466 
00467 DEAL_II_NAMESPACE_CLOSE
00468 
00469 #endif
00470 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

deal.II documentation generated on Wed May 23 2012 06:07:31 by doxygen 1.7.3