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