|
NCEPLIBS-ip
5.0.0
|
Compute Legendre polynomials. More...
Go to the source code of this file.
Functions/Subroutines | |
| subroutine | splegend (I, M, SLAT, CLAT, EPS, EPSTOP, PLN, PLNTOP) |
| Evaluates the orthonormal associated Legendre polynomials in the spectral domain at a given latitude. More... | |
| subroutine splegend | ( | I, | |
| M, | |||
| SLAT, | |||
| CLAT, | |||
| real, dimension((m+1)*((i+1)*m+2)/2) | EPS, | ||
| real, dimension(m+1) | EPSTOP, | ||
| real, dimension((m+1)*((i+1)*m+2)/2) | PLN, | ||
| real, dimension(m+1) | PLNTOP | ||
| ) |
Evaluates the orthonormal associated Legendre polynomials in the spectral domain at a given latitude.
Subprogram splegend should be called already. If l is the zonal wavenumber, N is the total wavenumber, and EPS(L,N)=SQRT((N**2-L**2)/(4*N**2-1)) then the following bootstrapping formulas are used:
PLN(0,0)=SQRT(0.5) PLN(L,L)=PLN(L-1,L-1)*CLAT*SQRT(FLOAT(2*L+1)/FLOAT(2*L)) PLN(L,N)=(SLAT*PLN(L,N-1)-EPS(L,N-1)*PLN(L,N-2))/EPS(L,N)
Synthesis at the pole needs only two zonal wavenumbers. Scalar fields are synthesized with zonal wavenumber 0 while vector fields are synthesized with zonal wavenumber 1. (Thus polar vector fields are implicitly divided by clat.) The following bootstrapping formulas are used at the pole:
PLN(0,0)=SQRT(0.5) PLN(1,1)=SQRT(0.75) PLN(L,N)=(PLN(L,N-1)-EPS(L,N-1)*PLN(L,N-2))/EPS(L,N)
PROGRAM HISTORY LOG:
| I | - INTEGER SPECTRAL DOMAIN SHAPE (0 FOR TRIANGULAR, 1 FOR RHOMBOIDAL) | |
| M | - INTEGER SPECTRAL TRUNCATION | |
| SLAT | - REAL SINE OF LATITUDE | |
| CLAT | - REAL COSINE OF LATITUDE | |
| EPS | - REAL ((M+1)*((I+1)*M+2)/2) SQRT((N**2-L**2)/(4*N**2-1)) | |
| EPSTOP | - REAL (M+1) SQRT((N**2-L**2)/(4*N**2-1)) OVER TOP | |
| [out] | PLN | - REAL ((M+1)*((I+1)*M+2)/2) LEGENDRE POLYNOMIAL |
| [out] | PLNTOP | - REAL (M+1) LEGENDRE POLYNOMIAL OVER TOP |
Definition at line 44 of file splegend.f.
Referenced by sptgpm(), sptgpmv(), sptgps(), sptgpsv(), sptgpt(), sptgptsd(), sptgptv(), sptgptvd(), and sptranf0().