|
Intrepid
|
Providing orthogonal polynomial calculus and interpolation, created by Spencer Sherwin, Aeronautics, Imperial College London, modified and redistributed by D. Ridzal. More...
#include <Intrepid_Polylib.hpp>
Static Public Member Functions | |
| template<class Scalar > | |
| static void | zwgj (Scalar *z, Scalar *w, const int np, const Scalar alpha, const Scalar beta) |
| Gauss-Jacobi zeros and weights. | |
| template<class Scalar > | |
| static void | zwgrjm (Scalar *z, Scalar *w, const int np, const Scalar alpha, const Scalar beta) |
| Gauss-Radau-Jacobi zeros and weights with end point at z=-1. | |
| template<class Scalar > | |
| static void | zwgrjp (Scalar *z, Scalar *w, const int np, const Scalar alpha, const Scalar beta) |
| Gauss-Radau-Jacobi zeros and weights with end point at z=1. | |
| template<class Scalar > | |
| static void | zwglj (Scalar *z, Scalar *w, const int np, const Scalar alpha, const Scalar beta) |
| Gauss-Lobatto-Jacobi zeros and weights with end point at z=-1,1. | |
| template<class Scalar > | |
| static void | Dgj (Scalar *D, const Scalar *z, const int np, const Scalar alpha, const Scalar beta) |
| Compute the Derivative Matrix and its transpose associated with the Gauss-Jacobi zeros. | |
| template<class Scalar > | |
| static void | Dgrjm (Scalar *D, const Scalar *z, const int np, const Scalar alpha, const Scalar beta) |
| Compute the Derivative Matrix and its transpose associated with the Gauss-Radau-Jacobi zeros with a zero at z=-1. | |
| template<class Scalar > | |
| static void | Dgrjp (Scalar *D, const Scalar *z, const int np, const Scalar alpha, const Scalar beta) |
| Compute the Derivative Matrix associated with the Gauss-Radau-Jacobi zeros with a zero at z=1. | |
| template<class Scalar > | |
| static void | Dglj (Scalar *D, const Scalar *z, const int np, const Scalar alpha, const Scalar beta) |
| Compute the Derivative Matrix associated with the Gauss-Lobatto-Jacobi zeros. | |
| template<class Scalar > | |
| static Scalar | hgj (const int i, const Scalar z, const Scalar *zgj, const int np, const Scalar alpha, const Scalar beta) |
| Compute the value of the i th Lagrangian interpolant through the np Gauss-Jacobi points zgj at the arbitrary location z. | |
| template<class Scalar > | |
| static Scalar | hgrjm (const int i, const Scalar z, const Scalar *zgrj, const int np, const Scalar alpha, const Scalar beta) |
| Compute the value of the i th Lagrangian interpolant through the np Gauss-Radau-Jacobi points zgrj at the arbitrary location z. This routine assumes zgrj includes the point -1. | |
| template<class Scalar > | |
| static Scalar | hgrjp (const int i, const Scalar z, const Scalar *zgrj, const int np, const Scalar alpha, const Scalar beta) |
| Compute the value of the i th Lagrangian interpolant through the np Gauss-Radau-Jacobi points zgrj at the arbitrary location z. This routine assumes zgrj includes the point +1. | |
| template<class Scalar > | |
| static Scalar | hglj (const int i, const Scalar z, const Scalar *zglj, const int np, const Scalar alpha, const Scalar beta) |
| Compute the value of the i th Lagrangian interpolant through the np Gauss-Lobatto-Jacobi points zglj at the arbitrary location z. | |
| template<class Scalar > | |
| static void | Imgj (Scalar *im, const Scalar *zgj, const Scalar *zm, const int nz, const int mz, const Scalar alpha, const Scalar beta) |
| Interpolation Operator from Gauss-Jacobi points to an arbitrary distribution at points zm. | |
| template<class Scalar > | |
| static void | Imgrjm (Scalar *im, const Scalar *zgrj, const Scalar *zm, const int nz, const int mz, const Scalar alpha, const Scalar beta) |
| Interpolation Operator from Gauss-Radau-Jacobi points (including z=-1) to an arbitrary distrubtion at points zm. | |
| template<class Scalar > | |
| static void | Imgrjp (Scalar *im, const Scalar *zgrj, const Scalar *zm, const int nz, const int mz, const Scalar alpha, const Scalar beta) |
| Interpolation Operator from Gauss-Radau-Jacobi points (including z=1) to an arbitrary distrubtion at points zm. | |
| template<class Scalar > | |
| static void | Imglj (Scalar *im, const Scalar *zglj, const Scalar *zm, const int nz, const int mz, const Scalar alpha, const Scalar beta) |
| Interpolation Operator from Gauss-Lobatto-Jacobi points to an arbitrary distrubtion at points zm. | |
| template<class Scalar > | |
| static void | jacobfd (const int np, const Scalar *z, Scalar *poly_in, Scalar *polyd, const int n, const Scalar alpha, const Scalar beta) |
Routine to calculate Jacobi polynomials, ![]() ![]() | |
| template<class Scalar > | |
| static void | jacobd (const int np, const Scalar *z, Scalar *polyd, const int n, const Scalar alpha, const Scalar beta) |
| Calculate the derivative of Jacobi polynomials. | |
| template<class Scalar > | |
| static void | Jacobz (const int n, Scalar *z, const Scalar alpha, const Scalar beta) |
Calculate the n zeros, z, of the Jacobi polynomial, i.e. ![]() | |
| template<class Scalar > | |
| static void | JacZeros (const int n, Scalar *a, const Scalar alpha, const Scalar beta) |
| Zero determination through the eigenvalues of a tridiagonal matrix from the three term recursion relationship. | |
| template<class Scalar > | |
| static void | TriQL (const int n, Scalar *d, Scalar *e) |
| QL algorithm for symmetric tridiagonal matrix. | |
| template<class Scalar > | |
| static Scalar | gammaF (const Scalar x) |
Calculate the Gamma function , ![]() | |
Providing orthogonal polynomial calculus and interpolation, created by Spencer Sherwin, Aeronautics, Imperial College London, modified and redistributed by D. Ridzal.
|
static |
Compute the Derivative Matrix and its transpose associated with the Gauss-Jacobi zeros.
![$ \frac{du}{dz}(z[i]) = \sum_{j=0}^{np-1} D[i*np+j] u(z[j]) $](form_130.png)
Definition at line 210 of file Intrepid_PolylibDef.hpp.
References jacobd().
|
static |
Compute the Derivative Matrix associated with the Gauss-Lobatto-Jacobi zeros.
![$
\frac{du}{dz}(z[i]) = \sum_{j=0}^{np-1} D[i*np+j] u(z[j]) $](form_132.png)
Definition at line 324 of file Intrepid_PolylibDef.hpp.
|
static |
Compute the Derivative Matrix and its transpose associated with the Gauss-Radau-Jacobi zeros with a zero at z=-1.
![$ \frac{du}{dz}(z[i]) =
\sum_{j=0}^{np-1} D[i*np+j] u(z[j]) $](form_131.png)
Definition at line 243 of file Intrepid_PolylibDef.hpp.
|
static |
Compute the Derivative Matrix associated with the Gauss-Radau-Jacobi zeros with a zero at z=1.
![$ \frac{du}{dz}(z[i]) =
\sum_{j=0}^{np-1} D[i*np+j] u(z[j]) $](form_131.png)
Definition at line 283 of file Intrepid_PolylibDef.hpp.
|
static |
Calculate the Gamma function , 
Determine the value of 

where 
Definition at line 810 of file Intrepid_PolylibDef.hpp.
Referenced by Dglj(), Dgrjm(), Dgrjp(), JacZeros(), zwgj(), zwglj(), zwgrjm(), and zwgrjp().
|
static |
Compute the value of the i th Lagrangian interpolant through the np Gauss-Jacobi points zgj at the arbitrary location z.

![$
\begin{array}{rcl}
h_j(z) = \left\{ \begin{array}{ll}
\displaystyle \frac{P_{np}^{\alpha,\beta}(z)}
{[P_{np}^{\alpha,\beta}(z_j)]^\prime
(z-z_j)} & \mbox{if $z \ne z_j$}\\
& \\
1 & \mbox{if $z=z_j$}
\end{array}
\right.
\end{array}
$](form_134.png)
Definition at line 367 of file Intrepid_PolylibDef.hpp.
References jacobd(), and jacobfd().
Referenced by Imgj().
|
static |
Compute the value of the i th Lagrangian interpolant through the np Gauss-Lobatto-Jacobi points zglj at the arbitrary location z.

![$ \begin{array}{rcl}
h_j(z) = \left\{ \begin{array}{ll}
\displaystyle \frac{(1-z^2) P_{np-2}^{\alpha+1,\beta+1}(z)}
{((1-z^2_j) [P_{np-2}^{\alpha+1,\beta+1}(z_j)]^\prime -
2 z_j P_{np-2}^{\alpha+1,\beta+1}(z_j) ) (z-z_j)}&\mbox{if $z \ne z_j$}\\
& \\
1 & \mbox{if $z=z_j$}
\end{array}
\right.
\end{array} $](form_137.png)
Definition at line 430 of file Intrepid_PolylibDef.hpp.
References jacobd(), and jacobfd().
Referenced by Imglj().
|
static |
Compute the value of the i th Lagrangian interpolant through the np Gauss-Radau-Jacobi points zgrj at the arbitrary location z. This routine assumes zgrj includes the point -1.

![$ \begin{array}{rcl}
h_j(z) = \left\{ \begin{array}{ll}
\displaystyle \frac{(1+z) P_{np-1}^{\alpha,\beta+1}(z)}
{((1+z_j) [P_{np-1}^{\alpha,\beta+1}(z_j)]^\prime +
P_{np-1}^{\alpha,\beta+1}(z_j) ) (z-z_j)} & \mbox{if $z \ne z_j$}\\
& \\
1 & \mbox{if $z=z_j$}
\end{array}
\right.
\end{array} $](form_135.png)
Definition at line 386 of file Intrepid_PolylibDef.hpp.
References jacobd(), and jacobfd().
Referenced by Imgrjm().
|
static |
Compute the value of the i th Lagrangian interpolant through the np Gauss-Radau-Jacobi points zgrj at the arbitrary location z. This routine assumes zgrj includes the point +1.

![$ \begin{array}{rcl}
h_j(z) = \left\{ \begin{array}{ll}
\displaystyle \frac{(1-z) P_{np-1}^{\alpha+1,\beta}(z)}
{((1-z_j) [P_{np-1}^{\alpha+1,\beta}(z_j)]^\prime -
P_{np-1}^{\alpha+1,\beta}(z_j) ) (z-z_j)} & \mbox{if $z \ne z_j$}\\
& \\
1 & \mbox{if $z=z_j$}
\end{array}
\right.
\end{array} $](form_136.png)
Definition at line 408 of file Intrepid_PolylibDef.hpp.
References jacobd(), and jacobfd().
Referenced by Imgrjp().
|
static |
Interpolation Operator from Gauss-Jacobi points to an arbitrary distribution at points zm.
![$
u(zm[i]) = \sum_{j=0}^{nz-1} im[i*nz+j] \ u(zgj[j])
$](form_138.png)
Definition at line 452 of file Intrepid_PolylibDef.hpp.
References hgj().
|
static |
Interpolation Operator from Gauss-Lobatto-Jacobi points to an arbitrary distrubtion at points zm.
![$ u(zm[i]) = \sum_{j=0}^{nz-1} im[i*nz+j] \ u(zglj[j]) $](form_140.png)
Definition at line 536 of file Intrepid_PolylibDef.hpp.
References hglj().
|
static |
Interpolation Operator from Gauss-Radau-Jacobi points (including z=-1) to an arbitrary distrubtion at points zm.
![$ u(zm[i]) = \sum_{j=0}^{nz-1} im[i*nz+j] \ u(zgrj[j]) $](form_139.png)
Definition at line 480 of file Intrepid_PolylibDef.hpp.
References hgrjm().
|
static |
Interpolation Operator from Gauss-Radau-Jacobi points (including z=1) to an arbitrary distrubtion at points zm.
![$ u(zm[i]) = \sum_{j=0}^{nz-1} im[i*nz+j] \ u(zgrj[j]) $](form_139.png)
Definition at line 508 of file Intrepid_PolylibDef.hpp.
References hgrjp().
|
static |
Calculate the derivative of Jacobi polynomials.



Definition at line 657 of file Intrepid_PolylibDef.hpp.
References jacobfd().
Referenced by Dgj(), Dglj(), Dgrjm(), Dgrjp(), Intrepid::Basis_HGRAD_LINE_Cn_FEM_JACOBI< Scalar, ArrayScalar >::getValues(), hgj(), hglj(), hgrjm(), hgrjp(), and zwgj().
|
static |
Routine to calculate Jacobi polynomials, 


![$ \begin{array}{rcl}
P^{\alpha,\beta}_0(z) &=& 1 \\
P^{\alpha,\beta}_1(z) &=& \frac{1}{2} [ \alpha-\beta+(\alpha+\beta+2)z] \\
a^1_n P^{\alpha,\beta}_{n+1}(z) &=& (a^2_n + a^3_n z)
P^{\alpha,\beta}_n(z) - a^4_n P^{\alpha,\beta}_{n-1}(z) \\
a^1_n &=& 2(n+1)(n+\alpha + \beta + 1)(2n + \alpha + \beta) \\
a^2_n &=& (2n + \alpha + \beta + 1)(\alpha^2 - \beta^2) \\
a^3_n &=& (2n + \alpha + \beta)(2n + \alpha + \beta + 1)
(2n + \alpha + \beta + 2) \\
a^4_n &=& 2(n+\alpha)(n+\beta)(2n + \alpha + \beta + 2)
\end{array} $](form_144.png)
![$ \begin{array}{rcl}
b^1_n(z)\frac{d}{dz} P^{\alpha,\beta}_n(z)&=&b^2_n(z)P^{\alpha,\beta}_n(z)
+ b^3_n(z) P^{\alpha,\beta}_{n-1}(z) \hspace{2.2cm} \\
b^1_n(z) &=& (2n+\alpha + \beta)(1-z^2) \\
b^2_n(z) &=& n[\alpha - \beta - (2n+\alpha + \beta)z]\\
b^3_n(z) &=& 2(n+\alpha)(n+\beta)
\end{array} $](form_145.png)
Definition at line 565 of file Intrepid_PolylibDef.hpp.
Referenced by Intrepid::Basis_HGRAD_LINE_Cn_FEM_JACOBI< Scalar, ArrayScalar >::getValues(), hgj(), hglj(), hgrjm(), hgrjp(), jacobd(), Jacobz(), zwglj(), zwgrjm(), and zwgrjp().
|
static |
Calculate the n zeros, z, of the Jacobi polynomial, i.e. 
This routine is only valid for 
Definition at line 674 of file Intrepid_PolylibDef.hpp.
References INTREPID_POLYLIB_STOP, and jacobfd().
|
static |
Zero determination through the eigenvalues of a tridiagonal matrix from the three term recursion relationship.
Set up a symmetric tridiagonal matrix
![$ \left [ \begin{array}{ccccc}
a[0] & b[0] & & & \\
b[0] & a[1] & b[1] & & \\
0 & \ddots & \ddots & \ddots & \\
& & \ddots & \ddots & b[n-2] \\
& & & b[n-2] & a[n-1] \end{array} \right ] $](form_150.png)
Where the coefficients a[n], b[n] come from the recurrence relation

where 


Definition at line 705 of file Intrepid_PolylibDef.hpp.
|
static |
QL algorithm for symmetric tridiagonal matrix.
This subroutine is a translation of an algol procedure, num. math. 12, 377-383(1968) by martin and wilkinson, as modified in num. math. 15, 450(1970) by dubrulle. Handbook for auto. comp., vol.ii-linear algebra, 241-248(1971). This is a modified version from numerical recipes.
This subroutine finds the eigenvalues and first components of the eigenvectors of a symmetric tridiagonal matrix by the implicit QL method.
on input:
on output:
Definition at line 744 of file Intrepid_PolylibDef.hpp.
Referenced by JacZeros().
|
static |
Gauss-Jacobi zeros and weights.

Definition at line 113 of file Intrepid_PolylibDef.hpp.
References gammaF(), and jacobd().
Referenced by Intrepid::CubaturePolylib< Scalar, ArrayPoint, ArrayWeight >::getCubature(), and Intrepid::PointTools::getGaussPoints().
|
static |
Gauss-Lobatto-Jacobi zeros and weights with end point at z=-1,1.

Definition at line 182 of file Intrepid_PolylibDef.hpp.
References gammaF(), and jacobfd().
Referenced by Intrepid::CubaturePolylib< Scalar, ArrayPoint, ArrayWeight >::getCubature(), and Intrepid::PointTools::getWarpBlendLatticeLine().
|
static |
Gauss-Radau-Jacobi zeros and weights with end point at z=-1.

Definition at line 130 of file Intrepid_PolylibDef.hpp.
References gammaF(), and jacobfd().
Referenced by Intrepid::CubaturePolylib< Scalar, ArrayPoint, ArrayWeight >::getCubature().
|
static |
Gauss-Radau-Jacobi zeros and weights with end point at z=1.

Definition at line 156 of file Intrepid_PolylibDef.hpp.
References gammaF(), and jacobfd().
Referenced by Intrepid::CubaturePolylib< Scalar, ArrayPoint, ArrayWeight >::getCubature().