NCEPLIBS-sp 2.4.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().