SUBROUTINE W3FT21(FLN,GN,PLN,EPS,FL,WORK,TRIGS,L1,L2,I2) C$$$ SUBPROGRAM DOCUMENTATION BLOCK C C SUBPROGRAM: W3FT21 COMPUTES 2.5 X 2.5 N. HEMI. GRID-SCALER C AUTHOR: JONES,R.E. ORG: W342 DATE: 81-11-19 C C ABSTRACT: COMPUTES 2.5 X 2.5 N. HEMI. GRID OF 145 X 37 POINTS C FROM SPECTRAL COEFFICIENTS IN A RHOMBOIDAL 30 RESOLUTION C REPRESENTING A SCALAR FIELD. SPECIAL VERSION OF W3FT08 WHICH C GIVES PROGRAMMER MORE CONTROL OF HOW MANY WAVES ARE SUMMED C AND HOW MANY POINTS IN EACH WAVE. A PROGRAMMER CAN SIMULATE C 24-MODE, 12-MODE, ETC. C C PROGRAM HISTORY LOG: C 81-11-19 R.E.JONES C 84-06-01 R.E.JONES CHANGE TO IBM VS FORTRAN C C USAGE: CALL W3FT21(FLN,GN,PLN,EPS,FL,WORK,TRIGS,L1,L2,I2) C C INPUT VARIABLES: C NAMES INTERFACE DESCRIPTION OF VARIABLES AND TYPES C ------ --------- ----------------------------------------------- C FLN ARG LIST 961 COMPLEX COEFF. C PLN ARG LIST 992 REAL SPACE FOR LEGENDRE POLYNOMIALS C EPS ARG LIST 992 REAL SPACE FOR C COEFFS. USED IN COMPUTING PLN. C FL ARG LIST 31 COMPLEX SPACE FOR FOURIER COEFF. C WORK ARG LIST 144 REAL WORK SPACE FOR SUBR. W3FT12 C TRIGS ARG LIST 216 PRECOMPUTED TRIG FUNCS, USED C IN W3FT12, COMPUTED BY W3FA13 C L1 ARG LIST STARTING WAVE NUMBER C L2 ARG LIST ENDING WAVE NUMBER C I2 ARG LIST MODE OF SPECTRAL COEFFICIENTS C C OUTPUT VARIABLES: C NAMES INTERFACE DESCRIPTION OF VARIABLES AND TYPES C ------ --------- ----------------------------------------------- C GN ARG LIST (145,37) GRID VALUES. C 5365 POINT GRID IS TYPE 29 OR 1D HEX O.N. 84 C C SUBPROGRAMS CALLED: C NAMES LIBRARY C ------------------------------------------------------- -------- C AIMAG CMPLX REAL SYSLIB C W3FA12 W3FT12 W3LIB C C WARNING: THIS SUBROUTINE WAS OPTIMIZED TO RUN IN A SMALL AMOUNT OF C MEMORY, IT IS NOT OPTIMIZED FOR SPEED, 70 PERCENT OF THE TIME IS C USED BY SUBROUTINE W3FA12 COMPUTING THE LEGENDRE POLYNOMIALS. SINCE C THE LEGENDRE POLYNOMIALS ARE CONSTANT THEY NEED TO BE COMPUTED C ONLY ONCE IN A PROGRAM. BY MOVING W3FA12 TO THE MAIN PROGRAM AND C COMPUTING PLN AS A (32,31,37) ARRAY AND CHANGING THIS SUBROUTINE C TO USE PLN AS A THREE DIMENSION ARRAY YOU CAN CUT THE RUNNING TIME C 70 PERCENT. C C ATTRIBUTES: C LANGUAGE: CRAY CFT77 FORTRAN C MACHINE: CRAY C916, Y-MP8/64, Y-MP EL92/256 C C$$$ C COMPLEX FL (31) COMPLEX FLN (31,31) C REAL COLRA REAL EPS (992) C REAL GN (145,37) REAL PLN (32,31) REAL TRIGS (216) REAL WORK (144) C SAVE C DATA PI /3.14159265/ C DRAD = 2.5 * PI / 180.0 C K1 = L1 + 1 K2 = L2 + 1 M2 = I2 + 1 C DO 400 LAT = 1,37 LATN = 38 - LAT COLRA = (LAT-1) * DRAD CALL W3FA12 (PLN, COLRA, 30 ,EPS) C DO 100 L = 1, 31 FL(L) = (0.,0.) 100 CONTINUE C DO 300 L = K1 , K2 DO 200 I = 1 , M2 FL(L) = FL(L) + CMPLX(PLN(I,L) * REAL(FLN(I,L)) , & PLN(I,L) * AIMAG(FLN(I,L)) ) 200 CONTINUE C 300 CONTINUE C CALL W3FT12(FL,WORK,GN(1,LATN),TRIGS) C 400 CONTINUE C RETURN END