NCEPLIBS-w3emc  2.11.0
w3ft33.f
Go to the documentation of this file.
1 C> @file
2 C> @brief Thicken thinned wafs grib grid 37-44
3 C> @author Ralph Peterson @date 1994
4 
5 C> Subroutine thickens one thinned wafs grib grid to a
6 C> real array of 5329 numbers (73,73) 1.25 degree grid.
7 C>
8 C> ### Program History Log:
9 C> Date | Programmer | Comment
10 C> -----|------------|--------
11 C> 1994-??-?? | Ralph Peterson
12 C> 1994-11-07 | Ralph Jones | Add doc block, change call to 3 parameters.
13 C> Replace cos with table lookup.
14 C> 1995-06-02 | Ralph Peterson | Changes to correct miss-position
15 C> between + or - 8.75 n/s.
16 C> 1995-06-03 | Ralph Jones | Changes so 8 rows with 73 values
17 C> are not thickened, 10% faster.
18 C>
19 C> @param[in] AIN Real 3447 word array with unpacked thinned wafs
20 C> grib type 37-44.
21 C> @param[in] NSFLAG Integer = 1 AIN is wafs grib grid 37-40 n. hemi.
22 C> = -1 AIN is wafs grib grid 41-44 s. hemi.
23 C> @param[out] OUT Real (73,73) word array with thickened wafs grib grid 37-44.
24 C>
25 C> @remark The pole point for u and v wind components will have only
26 C> one point. If you need the pole row corrected see page 9 section
27 C> 1 in office note 388. You need both u and v to make the
28 C> correction.
29 C>
30 C> @author Ralph Peterson @date 1994
31  SUBROUTINE w3ft33(AIN,OUT,NSFLAG)
32 C
33  parameter(nx=73,ny=73)
34  parameter(nin=3447)
35 C
36  REAL AIN(*)
37  REAL OUT(NX,NY)
38 C
39  INTEGER IPOINT(NX)
40 C
41  SAVE
42 C
43  DATA ipoint/
44  & 73, 73, 73, 73, 73, 73, 73, 73, 72, 72, 72, 71, 71, 71, 70,
45  & 70, 69, 69, 68, 67, 67, 66, 65, 65, 64, 63, 62, 61, 60, 60,
46  & 59, 58, 57, 56, 55, 54, 52, 51, 50, 49, 48, 47, 45, 44, 43,
47  & 42, 40, 39, 38, 36, 35, 33, 32, 30, 29, 28, 26, 25, 23, 22,
48  & 20, 19, 17, 16, 14, 12, 11, 9, 8, 6, 5, 3, 2/
49 C
50  nxm = nx - 1
51  fnxm = float(nxm)
52 C
53 C TEST FOR GRIDS (37-40)
54 C
55  IF (nsflag.GT.0) THEN
56 C
57 C DO NOT THICKEN 8 ROWS WITH 73 VALUES, MOVE DATA
58 C TO OUT ARRAY. GRIDS (37-40) N.
59 C
60  is = 0
61  DO j = 1,8
62  DO i = 1,nx
63  is = is + 1
64  out(i,j) = ain(is)
65  END DO
66  END DO
67 C
68  ie = nx * 8
69  DO j = 9,ny
70  npoint = ipoint(j)
71  is = ie + 1
72  ie = is + npoint - 1
73  dpts = (float(npoint)-1.) / fnxm
74  pw = 1.0
75  pe = pw + dpts
76  out(1,j) = ain(is)
77  valw = ain(is)
78  vale = ain(is+1)
79  dval = (vale-valw)
80  DO i = 2,nxm
81  wght = pe -float(ifix(pe))
82  out(i,j) = valw + wght * dval
83  pw = pe
84  pe = pe + dpts
85  IF (ifix(pw).NE.ifix(pe)) THEN
86  is = is + 1
87  valw = vale
88  vale = ain(is+1)
89  dval = (vale - valw)
90  END IF
91  END DO
92  out(nx,j) = ain(ie)
93  END DO
94 C
95  ELSE
96 C
97 C DO NOT THICKEN 8 ROWS WITH 73 VALUES, MOVE DATA
98 C TO OUT ARRAY. GRIDS (41-44) S.
99 C
100  is = nin - (8 * nx)
101  DO j = 66,ny
102  DO i = 1,nx
103  is = is + 1
104  out(i,j) = ain(is)
105  END DO
106  END DO
107 C
108  ie = 0
109  DO j = 1,65
110  npoint = ipoint(74-j)
111  is = ie + 1
112  ie = is + npoint - 1
113  dpts = (float(npoint)-1.) / fnxm
114  pw = 1.0
115  pe = pw + dpts
116  out(1,j) = ain(is)
117  valw = ain(is)
118  vale = ain(is+1)
119  dval = (vale-valw)
120  DO i = 2,nxm
121  wght = pe -float(ifix(pe))
122  out(i,j) = valw + wght * dval
123  pw = pe
124  pe = pe + dpts
125  IF (ifix(pw).NE.ifix(pe)) THEN
126  is = is + 1
127  valw = vale
128  vale = ain(is+1)
129  dval = (vale - valw)
130  END IF
131  END DO
132  out(nx,j) = ain(ie)
133  END DO
134  END IF
135 C
136  RETURN
137  END
subroutine w3ft33(AIN, OUT, NSFLAG)
Subroutine thickens one thinned wafs grib grid to a real array of 5329 numbers (73,...
Definition: w3ft33.f:32