NCEPLIBS-w3emc  2.11.0
w3ft11.f
Go to the documentation of this file.
1 C> @file
2 C> @brief Computes 2.5x2.5 s. hemi. grid vector.
3 C> @author Joe Sela @date 1980-11-20
4 
5 C> Computes 2.5 x 2.5 s. hemi. grid of 145 x 37 points
6 C> from spectral coefficients in a rhomboidal 30 resolution
7 C> representing a vector field.
8 C>
9 C> ### Program History Log:
10 C> Date | Programmer | Comment
11 C> -----|------------|--------
12 C> 1980-11-20 | Joe Sela | Initial.
13 C> 1984-06-15 | Ralph Jones | Change to ibm vs fortran.
14 C> 1989-01-25 | Ralph Jones | Change to microsoft fortran 4.10.
15 C> 1990-06-12 | Ralph Jones | Change to sun fortran 1.3.
16 C> 1991-03-30 | Ralph Jones | Convert to silicongraphics fortran.
17 C> 1993-03-29 | Ralph Jones | Add save statement.
18 C> 1993-07-22 | Ralph Jones | Change double precision to real for cray.
19 C>
20 C> @param[in] VLN 992 complex coeff.
21 C> @param[in] PLN 992 real space for legendre polynomials.
22 C> @param[in] EPS 992 real space for coeffs. used in computing pln.
23 C> @param[in] FL 31 complex space for fourier coeff.
24 C> @param[in] WORK 144 real work space for subr. w3ft12()
25 C> @param[in] TRIGS 216 precomputed trig funcs. used in w3ft12(), computed by w3fa13()
26 C> @param[in] RCOS 37 reciprocal cosine latitudes of 2.5 x 2.5 grid must be
27 C> computed before first call to w3ft11 using subr. w3fa13()
28 C> @param[out] GN (145,37) grid values. 5365 point grid is type 30 or 1e hex o.n. 84
29 C>
30 C> @note This subroutine was optimized to run in a small amount of
31 C> memory, it is not optimized for speed, 70 percent of the time is
32 C> used by subroutine w3fa12() computing the legendre polynomials. Since
33 C> the legendre polynomials are constant they need to be computed
34 C> only once in a program. by moving w3fa12() to the main program and
35 C> computing pln as a (32,31,37) array and changing this subroutine
36 C> to use pln as a three dimension array you can cut the running time
37 C> 70 percent.
38 C>
39 C> @author Joe Sela @date 1980-11-20
40  SUBROUTINE w3ft11(VLN,GN,PLN,EPS,FL,WORK,TRIGS,RCOS)
41 C
42  COMPLEX FL( 31 )
43  COMPLEX VLN( 32 , 31 )
44 C
45  REAL COLRA
46  REAL EPS( 992 )
47  REAL GN(145,37)
48  REAL PLN( 32 , 31 )
49  REAL RCOS(37)
50  REAL TRIGS(216)
51  REAL WORK(144)
52 C
53  SAVE
54 C
55  DATA pi /3.14159265/
56 C
57  drad = 2.5 * pi / 180.0
58 C
59  DO 400 lat = 2,37
60  colra = (lat-1) * drad
61  CALL w3fa12(pln,colra, 30 ,eps)
62 C
63  DO 100 l = 1, 31
64  fl(l) = (0.,0.)
65  100 CONTINUE
66 C
67  DO 300 l = 1, 31
68 C
69  DO 200 i = 1, 31 ,2
70  fl(l) = fl(l)+cmplx(pln(i,l) * real(vln(i,l)) ,
71  & pln(i,l) * aimag(vln(i,l)) )
72  fl(l) = fl(l)-cmplx(pln(i+1,l) * real(vln(i+1,l)),
73  & pln(i+1,l) * aimag(vln(i+1,l)))
74  200 CONTINUE
75 C
76  fl(l) = cmplx(real(fl(l))*rcos(lat),aimag(fl(l))*rcos(lat))
77 C
78  300 CONTINUE
79 C
80  CALL w3ft12(fl,work,gn(1,lat ),trigs)
81 C
82  400 CONTINUE
83 C
84 C*** POLE ROW = CLOSEST LATITUDE ROW
85 C
86  DO 500 i = 1,145
87  gn(i,1) = gn(i,2)
88  500 CONTINUE
89  RETURN
90  END
subroutine w3ft11(VLN, GN, PLN, EPS, FL, WORK, TRIGS, RCOS)
Computes 2.5 x 2.5 s.
Definition: w3ft11.f:41
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