SUBROUTINE W3FA12(PLN,COLRAD,JCAP,EPS) C$$$ SUBPROGRAM DOCUMENTATION BLOCK C C SUBPROGRAM: W3FA12 COMPUTES LEGENDRE POLYNOMIALS C AUTHOR: SELA,JOE ORG: W323 DATE: 80-10-28 C C ABSTRACT: SUBROUTINE COMPUTES LEGENDRE POLYNOMIALS AT A C GIVEN LATITUDE. C C PROGRAM HISTORY LOG: C 80-10-20 JOE SELA C 84-06-01 R.E.JONES CHANGE TO IBM VS FORTRAN C 93-04-12 R.E.JONES CHANGES FOR CRAY, DOUBLE PRECISION TO REAL C C USAGE: CALL W3FA12 (PLN,COLRAD,JCAP,EPS) C C INPUT VARIABLES: C NAMES INTERFACE DESCRIPTION OF VARIABLES AND TYPES C ------ --------- ----------------------------------------------- C COLRAD ARG LIST COLATITUDE IN RADIANS OF DESIRED POINT. C JCAP ARG LIST FOR RHOMBOIADAL TRUNCATION OF ZONAL WAVE C EPS ARG LIST COEFF. USED IN RECURSION EQUATION. C DIMENSION OF EPS IS (JCAP+2)*(JCAP+1) C C OUTPUT VARIABLES: C NAMES INTERFACE DESCRIPTION OF VARIABLES AND TYPES C ------ --------- ----------------------------------------------- C PLN ARG LIST REAL LOCATIONS CONTAIN LEGENDRE C POLNOMIALS , SIZE IS (JCAP+2)*(JCAP+1) C C SUBPROGRAMS CALLED: C NAMES LIBRARY C ------------------------------------------------------- -------- C COS SIN SNGL SYSTEM C C ATTRIBUTES: C LANGUAGE: CRAY CFT77 FORTRAN C MACHINE: CRAY Y-MP8/864 C C*** C REAL A REAL B REAL COLRAD REAL COS2 REAL EPS(*) REAL FL REAL PROD REAL P1 REAL P2 REAL P3 REAL SINLAT REAL PLN(*) C SAVE C SINLAT = COS(COLRAD) COS2 = 1.0 - SINLAT * SINLAT PROD = 1.0 A = 1.0 B = 0.0 JCAP1 = JCAP+1 JCAP2 = JCAP+2 C DO 300 LL = 1,JCAP1 L = LL - 1 FL = L JLE = L * JCAP2 IF (L.EQ.0) GO TO 100 A = A + 2.0 B = B + 2.0 PROD = PROD * COS2 * A / B 100 CONTINUE P1 = SQRT (0.5 * PROD) PLN(JLE+1) = P1 P2 = SQRT(2.0 * FL + 3.0) * SINLAT * P1 PLN(JLE+2) = P2 C DO 200 N = 3,JCAP2 LINDEX = JLE + N P3 = (SINLAT*P2 - EPS(LINDEX-1)*P1)/EPS(LINDEX) PLN(LINDEX) = P3 P1 = P2 P2 = P3 200 CONTINUE 300 CONTINUE RETURN C END