Public Member Functions | |
QGaussLobatto (const unsigned int n) | |
template<> | |
QGaussLobatto (const unsigned int n) | |
template<> | |
std::vector< long double > | compute_quadrature_points (const unsigned int, const int, const int) const |
template<> | |
std::vector< long double > | compute_quadrature_weights (const std::vector< long double > &, const int, const int) const |
template<> | |
long double | JacobiP (const long double, const int, const int, const unsigned int) const |
template<> | |
unsigned int | gamma (const unsigned int n) const |
Protected Member Functions | |
std::vector< long double > | compute_quadrature_points (const unsigned int q, const int alpha, const int beta) const |
std::vector< long double > | compute_quadrature_weights (const std::vector< long double > &x, const int alpha, const int beta) const |
long double | JacobiP (const long double x, const int alpha, const int beta, const unsigned int n) const |
unsigned int | gamma (const unsigned int n) const |
This modification of the Gauss quadrature uses the two interval end points as well. Being exact for polynomials of degree 2n-3, this formula is suboptimal by two degrees.
The quadrature points are interval end points plus the roots of the derivative of the Legendre polynomial Pn-1 of degree n-1. The quadrature weights are 2/(n(n-1)(Pn-1(xi)2).
Note: This implementation has not yet been optimized concerning numerical stability and efficiency. It can be easily adapted to the general case of Gauss-Lobatto-Jacobi-Bouzitat quadrature with arbitrary parameters alpha, beta, of which the Gauss-Lobatto-Legendre quadrature (alpha = beta = 0) is a special case.
Karniadakis, G.E. and Sherwin, S.J.: Spectral/hp element methods for computational fluid dynamics. Oxford: Oxford University Press, 2005
QGaussLobatto< dim >::QGaussLobatto | ( | const unsigned int | n | ) |
Generate a formula with n
quadrature points (in each space direction).
QGaussLobatto< 1 >::QGaussLobatto | ( | const unsigned int | n | ) | [inline] |
std::vector<long double> QGaussLobatto< dim >::compute_quadrature_points | ( | const unsigned int | q, | |
const int | alpha, | |||
const int | beta | |||
) | const [protected] |
Compute Legendre-Gauss-Lobatto quadrature points in the interval . They are equal to the roots of the corresponding Jacobi polynomial (specified by
alpha
, beta
). q
is number of points.
std::vector<long double> QGaussLobatto< dim >::compute_quadrature_weights | ( | const std::vector< long double > & | x, | |
const int | alpha, | |||
const int | beta | |||
) | const [protected] |
Compute Legendre-Gauss-Lobatto quadrature weights. The quadrature points and weights are related to Jacobi polynomial specified by alpha
, beta
. x
denotes the quadrature points.
long double QGaussLobatto< dim >::JacobiP | ( | const long double | x, | |
const int | alpha, | |||
const int | beta, | |||
const unsigned int | n | |||
) | const [protected] |
Evaluate a Jacobi polynomial specified by the parameters
alpha
, beta
, n
. Note: The Jacobi polynomials are not orthonormal and defined on the interval .
x
is the point of evaluation.
unsigned int QGaussLobatto< dim >::gamma | ( | const unsigned int | n | ) | const [protected] |
Evaluate the Gamma function .
n | point of evaluation (integer). |
std::vector< long double > QGaussLobatto< 1 >::compute_quadrature_points | ( | const unsigned | int, | |
const | int, | |||
const | int | |||
) | const [inline] |
std::vector< long double > QGaussLobatto< 1 >::compute_quadrature_weights | ( | const std::vector< long double > & | , | |
const | int, | |||
const | int | |||
) | const [inline] |
long double QGaussLobatto< 1 >::JacobiP | ( | const long | double, | |
const | int, | |||
const | int, | |||
const unsigned | int | |||
) | const [inline] |
unsigned int QGaussLobatto< 1 >::gamma | ( | const unsigned int | n | ) | const [inline] |