NCEPLIBS-w3emc  2.9.2
w3ft33.f
Go to the documentation of this file.
1 C> @file
2 C . . . .
3 C> SUBPROGRAM: W3FT33 THICKEN THINNED WAFS GRIB GRID 37-44
4 C> PRGMMR: RALPH PETTERSON ORG: W/NMCXX DATE: 94-11-13
5 C>
6 C> ABSTRACT: SUBROUTINE THICKENS ONE THINNED WAFS GRIB GRID TO A
7 C> REAL ARRAY OF 5329 NUMBERS (73,73) 1.25 DEGREE GRID.
8 C>
9 C> PROGRAM HISTORY LOG:
10 C> 94-??-?? RALPH PETERSON
11 C> 94-11-07 R.E.JONES ADD DOC BLOCK, CHANGE CALL TO 3
12 C> PARAMETERS. REPLACE COS WITH TABLE
13 C> LOOKUP.
14 C> 95-06-02 RALPH PETERSON CHANGES TO CORRECT MISS-POSITION
15 C> BETWEEN + OR - 8.75 N/S.
16 C> 95-06-03 R.E.JONES CHANGES SO 8 ROWS WITH 73 VALUES
17 C> ARE NOT THICKENED, 10% FASTER.
18 C>
19 C> USAGE: CALL W3FT33(AIN, OUT, NSFLAG)
20 C> INPUT ARGUMENT LIST:
21 C> AIN - REAL 3447 WORD ARRAY WITH UNPACKED THINNED WAFS
22 C> GRIB TYPE 37-44.
23 C> NSFLAG - INTEGER = 1 AIN IS WAFS GRIB GRID 37-40 N. HEMI.
24 C> = -1 AIN IS WAFS GRIB GRID 41-44 S. HEMI.
25 C>
26 C> OUTPUT ARGUMENT LIST:
27 C> OUT - REAL (73,73) WORD ARRAY WITH THICKENED WAFS GRIB
28 C> GRID 37-44.
29 C>
30 C> REMARKS: THE POLE POINT FOR U AND V WIND COMPONENTS WILL HAVE ONLY
31 C> ONE POINT. IF YOU NEED THE POLE ROW CORRECTED SEE PAGE 9 SECTION
32 C> 1 IN OFFICE NOTE 388. YOU NEED BOTH U AND V TO MAKE THE
33 C> CORRECTION.
34 C>
35 C> ATTRIBUTES:
36 C> LANGUAGE: SiliconGraphics 5.2 FORTRAN 77
37 C> MACHINE: SiliconGraphics IRIS-4D/25, 35, INDIGO, Indy
38 C>
39  SUBROUTINE w3ft33(AIN,OUT,NSFLAG)
40 C
41  parameter(nx=73,ny=73)
42  parameter(nin=3447)
43 C
44  REAL AIN(*)
45  REAL OUT(NX,NY)
46 C
47  INTEGER IPOINT(NX)
48 C
49  SAVE
50 C
51  DATA ipoint/
52  & 73, 73, 73, 73, 73, 73, 73, 73, 72, 72, 72, 71, 71, 71, 70,
53  & 70, 69, 69, 68, 67, 67, 66, 65, 65, 64, 63, 62, 61, 60, 60,
54  & 59, 58, 57, 56, 55, 54, 52, 51, 50, 49, 48, 47, 45, 44, 43,
55  & 42, 40, 39, 38, 36, 35, 33, 32, 30, 29, 28, 26, 25, 23, 22,
56  & 20, 19, 17, 16, 14, 12, 11, 9, 8, 6, 5, 3, 2/
57 C
58  nxm = nx - 1
59  fnxm = float(nxm)
60 C
61 C TEST FOR GRIDS (37-40)
62 C
63  IF (nsflag.GT.0) THEN
64 C
65 C DO NOT THICKEN 8 ROWS WITH 73 VALUES, MOVE DATA
66 C TO OUT ARRAY. GRIDS (37-40) N.
67 C
68  is = 0
69  DO j = 1,8
70  DO i = 1,nx
71  is = is + 1
72  out(i,j) = ain(is)
73  END DO
74  END DO
75 C
76  ie = nx * 8
77  DO j = 9,ny
78  npoint = ipoint(j)
79  is = ie + 1
80  ie = is + npoint - 1
81  dpts = (float(npoint)-1.) / fnxm
82  pw = 1.0
83  pe = pw + dpts
84  out(1,j) = ain(is)
85  valw = ain(is)
86  vale = ain(is+1)
87  dval = (vale-valw)
88  DO i = 2,nxm
89  wght = pe -float(ifix(pe))
90  out(i,j) = valw + wght * dval
91  pw = pe
92  pe = pe + dpts
93  IF (ifix(pw).NE.ifix(pe)) THEN
94  is = is + 1
95  valw = vale
96  vale = ain(is+1)
97  dval = (vale - valw)
98  END IF
99  END DO
100  out(nx,j) = ain(ie)
101  END DO
102 C
103  ELSE
104 C
105 C DO NOT THICKEN 8 ROWS WITH 73 VALUES, MOVE DATA
106 C TO OUT ARRAY. GRIDS (41-44) S.
107 C
108  is = nin - (8 * nx)
109  DO j = 66,ny
110  DO i = 1,nx
111  is = is + 1
112  out(i,j) = ain(is)
113  END DO
114  END DO
115 C
116  ie = 0
117  DO j = 1,65
118  npoint = ipoint(74-j)
119  is = ie + 1
120  ie = is + npoint - 1
121  dpts = (float(npoint)-1.) / fnxm
122  pw = 1.0
123  pe = pw + dpts
124  out(1,j) = ain(is)
125  valw = ain(is)
126  vale = ain(is+1)
127  dval = (vale-valw)
128  DO i = 2,nxm
129  wght = pe -float(ifix(pe))
130  out(i,j) = valw + wght * dval
131  pw = pe
132  pe = pe + dpts
133  IF (ifix(pw).NE.ifix(pe)) THEN
134  is = is + 1
135  valw = vale
136  vale = ain(is+1)
137  dval = (vale - valw)
138  END IF
139  END DO
140  out(nx,j) = ain(ie)
141  END DO
142  END IF
143 C
144  RETURN
145  END
w3ft33
subroutine w3ft33(AIN, OUT, NSFLAG)
SUBPROGRAM: W3FT33 THICKEN THINNED WAFS GRIB GRID 37-44 PRGMMR: RALPH PETTERSON ORG: W/NMCXX DATE: 94...
Definition: w3ft33.f:40