NCEPLIBS-sp 2.4.0
splegend.f File Reference

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...
 

Detailed Description

Compute Legendre polynomials.

Author
IREDELL
Date
92-10-31

Definition in file splegend.f.

Function/Subroutine Documentation

◆ splegend()

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:

  • 91-10-31 MARK IREDELL
  • 98-06-10 MARK IREDELL GENERALIZE PRECISION
Parameters
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().