From 889b68103c73b519bb9f56526df319609d7d98ac Mon Sep 17 00:00:00 2001 From: guido Date: Mon, 23 May 2005 22:15:29 +0000 Subject: [PATCH] Gauss-Lobatto points; weights are missing git-svn-id: https://svn.dealii.org/trunk@10704 0785d39b-7218-0410-832d-ea1e28bc413d --- deal.II/base/include/base/quadrature_lib.h | 41 ++++++++++++++++------ deal.II/base/source/quadrature_lib.cc | 13 +++++++ 2 files changed, 44 insertions(+), 10 deletions(-) diff --git a/deal.II/base/include/base/quadrature_lib.h b/deal.II/base/include/base/quadrature_lib.h index 0ec7cb6ea4..f869dc7bb3 100644 --- a/deal.II/base/include/base/quadrature_lib.h +++ b/deal.II/base/include/base/quadrature_lib.h @@ -18,15 +18,14 @@ #include +/*!@addtogroup Quadrature */ +/*@{*/ + /** * Gauss-Legendre quadrature of arbitrary order. * * The coefficients of these quadrature rules are computed by the - * function found in Numerical Recipies. For lower order - * quadrature rules, the use of this class is thus equivalent to the - * use of the QGauss1 through QGauss7 classes, for which - * the coefficients are hardcoded, but this class can provide higher - * order formulae as well. + * function found in Numerical Recipies. * * @author Guido Kanschat, 2001 */ @@ -35,15 +34,36 @@ class QGauss : public Quadrature { public: /** - * Generate a formula with p - * quadrature points, exact for - * polynomials of degree 2p-1. + * Generate a formula with + * n quadrature points (in + * each space direction), exact for + * polynomials of degree + * 2n-1. */ - QGauss (const unsigned int p); + QGauss (const unsigned int n); }; +/** + * Gauss quadrature rule using the Gauss-Lobatto points. + * + * @note The quadrature weights are not implemented yet. + * + * @author Guido Kanschat, 2005 + */ +template +class QGaussLobatto : public Quadrature +{ + public: + /** + * Generate a formula with + * n quadrature points + * (in each space direction). + */ + QGaussLobatto(const unsigned int n); +}; + /** * @deprecated Use QGauss for arbitrary order Gauss formulae instead! @@ -212,11 +232,12 @@ class QWeddle : public Quadrature QWeddle (); }; - +/*@}*/ /* -------------- declaration of explicit specializations ------------- */ template <> QGauss<1>::QGauss (const unsigned int n); +template <> QGaussLobatto<1>::QGaussLobatto (const unsigned int n); template <> QGauss2<1>::QGauss2 (); template <> QGauss3<1>::QGauss3 (); template <> QGauss4<1>::QGauss4 (); diff --git a/deal.II/base/source/quadrature_lib.cc b/deal.II/base/source/quadrature_lib.cc index cdaff06ecd..5975496da3 100644 --- a/deal.II/base/source/quadrature_lib.cc +++ b/deal.II/base/source/quadrature_lib.cc @@ -100,6 +100,17 @@ QGauss<1>::QGauss (const unsigned int n) } +template <> +QGaussLobatto<1>::QGaussLobatto (unsigned int n) + : + Quadrature<1> (n) +{ + for (unsigned int k=0;kquadrature_points[k] = Point<1>(std::sin(2.*M_PI*k/(n-1))); + } +} + template <> QGauss2<1>::QGauss2 () @@ -500,6 +511,7 @@ QWeddle::QWeddle () // explicit specialization // note that 1d formulae are specialized by implementation above template class QGauss<2>; +template class QGaussLobatto<2>; template class QGauss2<2>; template class QGauss3<2>; template class QGauss4<2>; @@ -513,6 +525,7 @@ template class QMilne<2>; template class QWeddle<2>; template class QGauss<3>; +template class QGaussLobatto<3>; template class QGauss2<3>; template class QGauss3<3>; template class QGauss4<3>; -- 2.39.5