-/**
- * @deprecated Use QGauss for arbitrary order Gauss formulae instead!
- *
- * 2-Point-Gauss quadrature formula, exact for polynomials of degree 3.
- *
- * Reference: Ward Cheney, David Kincaid: "Numerical Mathematics and Computing".
- * For a comprehensive list of Gaussian quadrature formulae, see also:
- * A. H. Strout, D. Secrest: "Gaussian Quadrature Formulas"
- */
-template <int dim>
-class QGauss2 : public Quadrature<dim>
-{
- public:
- QGauss2 ();
-};
-
-
-/**
- * @deprecated Use QGauss for arbitrary order Gauss formulae instead!
- *
- * 3-Point-Gauss quadrature formula, exact for polynomials of degree 5.
- *
- * Reference: Ward Cheney, David Kincaid: "Numerical Mathematics and Computing".
- * For a comprehensive list of Gaussian quadrature formulae, see also:
- * A. H. Strout, D. Secrest: "Gaussian Quadrature Formulas"
- */
-template <int dim>
-class QGauss3 : public Quadrature<dim>
-{
- public:
- QGauss3 ();
-};
-
-
-/**
- * @deprecated Use QGauss for arbitrary order Gauss formulae instead!
- *
- * 4-Point-Gauss quadrature formula, exact for polynomials of degree 7.
- *
- * Reference: Ward Cheney, David Kincaid: "Numerical Mathematics and Computing".
- * For a comprehensive list of Gaussian quadrature formulae, see also:
- * A. H. Strout, D. Secrest: "Gaussian Quadrature Formulas"
- */
-template <int dim>
-class QGauss4 : public Quadrature<dim>
-{
- public:
- QGauss4 ();
-};
-
-
-/**
- * @deprecated Use QGauss for arbitrary order Gauss formulae instead!
- *
- * 5-Point-Gauss quadrature formula, exact for polynomials of degree 9.
- *
- * Reference: Ward Cheney, David Kincaid: "Numerical Mathematics and Computing".
- * For a comprehensive list of Gaussian quadrature formulae, see also:
- * A. H. Strout, D. Secrest: "Gaussian Quadrature Formulas"
- */
-template <int dim>
-class QGauss5 : public Quadrature<dim>
-{
- public:
- QGauss5 ();
-};
-
-
-/**
- * @deprecated Use QGauss for arbitrary order Gauss formulae instead!
- *
- * 6-Point-Gauss quadrature formula, exact for polynomials of degree 11.
- * We have not found explicit
- * representations of the zeros of the Legendre functions of sixth
- * and higher degree. If anyone finds them, please replace the existing
- * numbers by these expressions.
- *
- * Reference: J. E. Akin: "Application and Implementation of Finite
- * Element Methods"
- * For a comprehensive list of Gaussian quadrature formulae, see also:
- * A. H. Strout, D. Secrest: "Gaussian Quadrature Formulas"
- */
-template <int dim>
-class QGauss6 : public Quadrature<dim>
-{
- public:
- QGauss6 ();
-};
-
-
-/**
- * @deprecated Use QGauss for arbitrary order Gauss formulae instead!
- *
- * 7-Point-Gauss quadrature formula, exact for polynomials of degree 13.
- * We have not found explicit
- * representations of the zeros of the Legendre functions of sixth
- * and higher degree. If anyone finds them, please replace the existing
- * numbers by these expressions.
- *
- * Reference: J. E. Akin: "Application and Implementation of Finite
- * Element Methods"
- * For a comprehensive list of Gaussian quadrature formulae, see also:
- * A. H. Strout, D. Secrest: "Gaussian Quadrature Formulas"
- */
-template <int dim>
-class QGauss7 : public Quadrature<dim>
-{
- public:
- QGauss7 ();
-};
-
-
/**
* Midpoint quadrature rule, exact for linear polynomials.
*/
template <> std::vector<double> QGaussLog<1>::set_quadrature_points(const unsigned int) const;
template <> std::vector<double> QGaussLog<1>::set_quadrature_weights(const unsigned int) const;
-template <> QGauss2<1>::QGauss2 ();
-template <> QGauss3<1>::QGauss3 ();
-template <> QGauss4<1>::QGauss4 ();
-template <> QGauss5<1>::QGauss5 ();
-template <> QGauss6<1>::QGauss6 ();
-template <> QGauss7<1>::QGauss7 ();
template <> QMidpoint<1>::QMidpoint ();
template <> QTrapez<1>::QTrapez ();
template <> QSimpson<1>::QSimpson ();
-template <>
-QGauss2<1>::QGauss2 ()
- :
- Quadrature<1> (2)
-{
- // points on [-1,1]
- static const double xpts_normal[] = { -std::sqrt(1./3.), std::sqrt(1./3.) };
- // weights on [-1,1]
- static const double wts_normal[] = { 1., 1. };
-
- // points and weights on [0,1]
- static const double xpts[] = { (xpts_normal[0]+1)/2.,
- (xpts_normal[1]+1)/2. };
- static const double wts[] = { wts_normal[0]/2.,
- wts_normal[1]/2. };
-
- for (unsigned int i=0; i<this->size(); ++i)
- {
- this->quadrature_points[i] = Point<1>(xpts[i]);
- this->weights[i] = wts[i];
- };
-}
-
-
-
-template <>
-QGauss3<1>::QGauss3 ()
- :
- Quadrature<1> (3)
-{
- // points on [-1,1]
- static const double xpts_normal[] = { -std::sqrt(3./5.),
- 0.,
- std::sqrt(3./5.) };
- // weights on [-1,1]
- static const double wts_normal[] = { 5./9.,
- 8./9.,
- 5./9. };
-
- // points and weights on [0,1]
- static const double xpts[] = { (xpts_normal[0]+1)/2.,
- (xpts_normal[1]+1)/2.,
- (xpts_normal[2]+1)/2. };
- static const double wts[] = { wts_normal[0]/2.,
- wts_normal[1]/2.,
- wts_normal[2]/2. };
-
- for (unsigned int i=0; i<this->size(); ++i)
- {
- this->quadrature_points[i] = Point<1>(xpts[i]);
- this->weights[i] = wts[i];
- };
-}
-
-
-
-template <>
-QGauss4<1>::QGauss4 ()
- :
- Quadrature<1> (4)
-{
- // points on [-1,1]
- static const double xpts_normal[] = { -std::sqrt(1./7.*(3+4*std::sqrt(0.3))),
- -std::sqrt(1./7.*(3-4*std::sqrt(0.3))),
- +std::sqrt(1./7.*(3-4*std::sqrt(0.3))),
- +std::sqrt(1./7.*(3+4*std::sqrt(0.3))) };
- // weights on [-1,1]
- static const double wts_normal[] = { 1./2. - 1./12.*std::sqrt(10./3.),
- 1./2. + 1./12.*std::sqrt(10./3.),
- 1./2. + 1./12.*std::sqrt(10./3.),
- 1./2. - 1./12.*std::sqrt(10./3.) };
-
- // points and weights on [0,1]
- static const double xpts[] = { (xpts_normal[0]+1)/2.,
- (xpts_normal[1]+1)/2.,
- (xpts_normal[2]+1)/2.,
- (xpts_normal[3]+1)/2. };
- static const double wts[] = { wts_normal[0]/2.,
- wts_normal[1]/2.,
- wts_normal[2]/2.,
- wts_normal[3]/2. };
-
- for (unsigned int i=0; i<this->size(); ++i)
- {
- this->quadrature_points[i] = Point<1>(xpts[i]);
- this->weights[i] = wts[i];
- };
-}
-
-
-template <>
-QGauss5<1>::QGauss5 ()
- :
- Quadrature<1> (5)
-{
- // points on [-1,1]
- static const double xpts_normal[] = { -std::sqrt(1./9.*(5.+2*std::sqrt(10./7.))),
- -std::sqrt(1./9.*(5.-2*std::sqrt(10./7.))),
- 0,
- +std::sqrt(1./9.*(5.-2*std::sqrt(10./7.))),
- +std::sqrt(1./9.*(5.+2*std::sqrt(10./7.))) };
- // weights on [-1,1]
- static const double wts_normal[] = { 0.3*(+0.7+5.*std::sqrt(0.7))/(+2.+5.*std::sqrt(0.7)),
- 0.3*(-0.7+5.*std::sqrt(0.7))/(-2.+5.*std::sqrt(0.7)),
- 128./225.,
- 0.3*(-0.7+5.*std::sqrt(0.7))/(-2.+5.*std::sqrt(0.7)),
- 0.3*(+0.7+5.*std::sqrt(0.7))/(+2.+5.*std::sqrt(0.7)) };
-
- // points and weights on [0,1]
- static const double xpts[] = { (xpts_normal[0]+1)/2.,
- (xpts_normal[1]+1)/2.,
- (xpts_normal[2]+1)/2.,
- (xpts_normal[3]+1)/2.,
- (xpts_normal[4]+1)/2. };
- static const double wts[] = { wts_normal[0]/2.,
- wts_normal[1]/2.,
- wts_normal[2]/2.,
- wts_normal[3]/2.,
- wts_normal[4]/2. };
-
- for (unsigned int i=0; i<this->size(); ++i)
- {
- this->quadrature_points[i] = Point<1>(xpts[i]);
- this->weights[i] = wts[i];
- };
-}
-
-
-
-template <>
-QGauss6<1>::QGauss6 ()
- :
- Quadrature<1> (6)
-{
- // points on [-1,1]
- static const double xpts_normal[] = { -0.932469514203152,
- -0.661209386466265,
- -0.238619186083197,
- +0.238619186083197,
- +0.661209386466265,
- +0.932469514203152 };
- // weights on [-1,1]
- static const double wts_normal[] = { 0.171324492379170,
- 0.360761573048139,
- 0.467913934572691,
- 0.467913934572691,
- 0.360761573048139,
- 0.171324492379170 };
-
- // points and weights on [0,1]
- static const double xpts[] = { (xpts_normal[0]+1)/2.,
- (xpts_normal[1]+1)/2.,
- (xpts_normal[2]+1)/2.,
- (xpts_normal[3]+1)/2.,
- (xpts_normal[4]+1)/2.,
- (xpts_normal[5]+1)/2. };
- static const double wts[] = { wts_normal[0]/2.,
- wts_normal[1]/2.,
- wts_normal[2]/2.,
- wts_normal[3]/2.,
- wts_normal[4]/2.,
- wts_normal[5]/2. };
-
- for (unsigned int i=0; i<this->size(); ++i)
- {
- this->quadrature_points[i] = Point<1>(xpts[i]);
- this->weights[i] = wts[i];
- };
-}
-
-
-
-template <>
-QGauss7<1>::QGauss7 ()
- :
- Quadrature<1> (7)
-{
- // points on [-1,1]
- static const double xpts_normal[] = { -0.949107912342759,
- -0.741531185599394,
- -0.405845151377397,
- 0,
- +0.405845151377397,
- +0.741531185599394,
- +0.949107912342759 };
- // weights on [-1,1]
- static const double wts_normal[] = { 0.129484966168870,
- 0.279705391489277,
- 0.381830050505119,
- 0.417959183673469,
- 0.381830050505119,
- 0.279705391489277,
- 0.129484966168870 };
-
- // points and weights on [0,1]
- static const double xpts[] = { (xpts_normal[0]+1)/2.,
- (xpts_normal[1]+1)/2.,
- (xpts_normal[2]+1)/2.,
- (xpts_normal[3]+1)/2.,
- (xpts_normal[4]+1)/2.,
- (xpts_normal[5]+1)/2.,
- (xpts_normal[6]+1)/2. };
- static const double wts[] = { wts_normal[0]/2.,
- wts_normal[1]/2.,
- wts_normal[2]/2.,
- wts_normal[3]/2.,
- wts_normal[4]/2.,
- wts_normal[5]/2.,
- wts_normal[6]/2. };
-
- for (unsigned int i=0; i<this->size(); ++i)
- {
- this->quadrature_points[i] = Point<1>(xpts[i]);
- this->weights[i] = wts[i];
- };
-}
-
-
-
template <>
QMidpoint<1>::QMidpoint ()
:
-template <int dim>
-QGauss2<dim>::QGauss2 ()
- :
- Quadrature<dim> (QGauss2<dim-1>(), QGauss2<1>())
-{}
-
-
-
-template <int dim>
-QGauss3<dim>::QGauss3 ()
- :
- Quadrature<dim> (QGauss3<dim-1>(), QGauss3<1>())
-{}
-
-
-
-template <int dim>
-QGauss4<dim>::QGauss4 ()
- :
- Quadrature<dim> (QGauss4<dim-1>(), QGauss4<1>())
-{}
-
-
-
-template <int dim>
-QGauss5<dim>::QGauss5 ()
- :
- Quadrature<dim> (QGauss5<dim-1>(), QGauss5<1>())
-{}
-
-
-
-template <int dim>
-QGauss6<dim>::QGauss6 ()
- :
- Quadrature<dim> (QGauss6<dim-1>(), QGauss6<1>())
-{}
-
-
-
-template <int dim>
-QGauss7<dim>::QGauss7 ()
- :
- Quadrature<dim> (QGauss7<dim-1>(), QGauss7<1>())
-{}
-
-
-
template <int dim>
QMidpoint<dim>::QMidpoint ()
:
// 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>;
-template class QGauss5<2>;
-template class QGauss6<2>;
-template class QGauss7<2>;
template class QMidpoint<2>;
template class QTrapez<2>;
template class QSimpson<2>;
template class QGauss<3>;
template class QGaussLobatto<3>;
-template class QGauss2<3>;
-template class QGauss3<3>;
-template class QGauss4<3>;
-template class QGauss5<3>;
-template class QGauss6<3>;
-template class QGauss7<3>;
template class QMidpoint<3>;
template class QTrapez<3>;
template class QSimpson<3>;