NCEPLIBS-w3emc  2.9.2
w3ft40.f
Go to the documentation of this file.
1 C> @file
2 C
3 C> SUBPROGRAM: W3FT40 COMPUTES 2.5 X 2.5 S. HEMI. GRID-SCALER
4 C> AUTHOR: JONES,R.E. ORG: W323 DATE: 93-07-23
5 C>
6 C> ABSTRACT: COMPUTES 2.5 X 2.5 S. HEMI. GRID OF 145 X 37 POINTS
7 C> FROM SPECTRAL COEFFICIENTS IN A RHOMBOIDAL 30 RESOLUTION
8 C> REPRESENTING A SCALER FIELD.
9 C>
10 C> PROGRAM HISTORY LOG:
11 C> 93-07-23 R.E.JONES NEW VERSION OF W3FT10, TAKES OUT W3FA12
12 C> MAKES PLN 3 DIMENSIONS, PLN IS COMPUTED
13 C> ONE TIME IN MAIN PROGRAM, TRADES MEMORY
14 C> FOR MORE SPEED. W3FA12 USED 70% OF CPU TIME.
15 C>
16 C> USAGE: CALL W3FT40(FLN,GN,PLN,FL,WORK,TRIGS)
17 C>
18 C> INPUT VARIABLES:
19 C> NAMES INTERFACE DESCRIPTION OF VARIABLES AND TYPES
20 C> ------ --------- -----------------------------------------------
21 C> FLN ARG LIST 961 COMPLEX COEFF.
22 C> PLN ARG LIST (32,31,37) REAL SPACE WITH LEGENDRE POLYNOMIALS
23 C> COMPUTED BY W3FA12.
24 C> FL ARG LIST 31 COMPLEX SPACE FOR FOURIER COEFF.
25 C> WORK ARG LIST 144 REAL WORK SPACE FOR SUBR. W3FT12
26 C> TRIGS ARG LIST 216 PRECOMPUTED TRIG FUNCS. USED
27 C> IN W3FT12, COMPUTED BY W3FA13
28 C>
29 C> OUTPUT VARIABLES:
30 C> NAMES INTERFACE DESCRIPTION OF VARIABLES AND TYPES
31 C> ------ --------- -----------------------------------------------
32 C> GN ARG LIST (145,37) GRID VALUES.
33 C> 5365 POINT GRID IS TYPE 30 OR 1E O.N. 84
34 C>
35 C> SUBPROGRAMS CALLED:
36 C> NAMES LIBRARY
37 C> ------------------------------------------------------- --------
38 C> AIMAG CMPLX REAL SYSTEM
39 C> W3FT12 W3LIB
40 C>
41 C> WARNING: W3FT10 WAS OPTIMIZED TO RUN IN A SMALL AMOUNT OF
42 C> MEMORY, IT WAS NOT OPTIMIZED FOR SPEED, 70 PERCENT OF THE TIME WAS
43 C> USED BY SUBROUTINE W3FA12 COMPUTING THE LEGENDRE POLYNOMIALS. SINCE
44 C> THE LEGENDRE POLYNOMIALS ARE CONSTANT THEY NEED TO BE COMPUTED
45 C> ONLY ONCE IN A PROGRAM. BY MOVING W3FA12 TO THE MAIN PROGRAM AND
46 C> COMPUTING PLN AS A (32,31,37) ARRAY AND CHANGING THIS SUBROUTINE
47 C> TO USE PLN AS A THREE DIMENSION ARRAY THE RUNNING TIME WAS CUT
48 C> 70 PERCENT. ADD FOLLOWING CODE TO MAIN PROGRAM TO COMPUTE EPS, PLN,
49 C> TRIGS, AND RCOS ONE TIME IN PROGRAM.
50 C>
51 C> DOUBLE PRECISION EPS(992) [CHANGE TO REAL ON CRAY]
52 C> DOUBLE PRECISION COLRA [CHANGE TO REAL ON CRAY]
53 C>
54 C> REAL PLN( 32, 31, 37 )
55 C> REAL RCOS(37)
56 C> REAL TRIGS(216)
57 C>
58 C> DATA PI /3.14159265/
59 C>
60 C> DRAD = 2.5 * PI / 180.0
61 C> CALL W3FA11(EPS,30)
62 C> CALL W3FA13(TRIGS,RCOS)
63 C> DO LAT = 1,37
64 C> COLRA = (LAT - 1) * DRAD
65 C> CALL W3FA12 (PLN(1,1,LAT), COLRA, 30, EPS)
66 C> END DOC
67 C>
68 C> ATTRIBUTES:
69 C> LANGUAGE: CRAY CFT77 FORTRAN
70 C> MACHINE: CRAY Y-MP8/864, CRAY Y-MP EL2/128
71 C>
72  SUBROUTINE w3ft40(FLN,GN,PLN,FL,WORK,TRIGS)
73 C
74  COMPLEX FL( 31 )
75  COMPLEX FLN( 31 , 31 )
76 C
77  REAL GN(145,37)
78  REAL PLN( 32, 31, 37 )
79  REAL TRIGS(216)
80  REAL WORK(144)
81 C
82  SAVE
83 C
84  DO 400 lat = 1,37
85 C
86  DO 100 l = 1, 31
87  fl(l) = (0.,0.)
88  100 CONTINUE
89 C
90  DO 300 l = 1, 31
91  i = 1
92  fl(l) = fl(l)+cmplx(pln(i,l,lat) * real(fln(i,l)) ,
93  & pln(i,l,lat) * aimag(fln(i,l)) )
94 C
95  DO 200 i = 2, 30 ,2
96  fl(l) = fl(l)-cmplx(pln(i,l,lat) * real(fln(i,l)) ,
97  & pln(i,l,lat) * aimag(fln(i,l)) )
98  fl(l) = fl(l)+cmplx(pln(i+1,l,lat) * real(fln(i+1,l)),
99  & pln(i+1,l,lat) * aimag(fln(i+1,l)))
100  200 CONTINUE
101 C
102  300 CONTINUE
103 C
104  CALL w3ft12(fl,work,gn(1,lat ),trigs)
105  400 CONTINUE
106 C
107  RETURN
108  END
w3ft12
subroutine w3ft12(COEF, WORK, GRID, TRIGS)
Fast fourier to compute 145 grid values at desired latitude from 31 complex fourier coefficients.
Definition: w3ft12.f:25
w3ft40
subroutine w3ft40(FLN, GN, PLN, FL, WORK, TRIGS)
SUBPROGRAM: W3FT40 COMPUTES 2.5 X 2.5 S.
Definition: w3ft40.f:73