NCEPLIBS-w3emc  2.9.2
w3ft206.f
Go to the documentation of this file.
1 C> @file
2 C
3 C> SUBROUTINE: W3FT206 CONVERT (361,91) GRID TO (51,41) LAMBERT GRID
4 C> AUTHOR: JONES,R.E. ORG: W342 DATE: 94-05-18
5 C>
6 C> ABSTRACT: CONVERT A NORTHERN HEMISPHERE 1.0 DEGREE LAT.,LON. 361 BY
7 C> 91 GRID TO A LAMBERT CONFORMAL 51 BY 41 AWIPS GRIB 206.
8 C>
9 C> PROGRAM HISTORY LOG:
10 C> 94-05-18 R.E.JONES
11 C>
12 C> USAGE: CALL W3FT206(ALOLA,ALAMB,INTERP)
13 C>
14 C> INPUT ARGUMENTS: ALOLA - 361*91 GRID 1.0 DEG. LAT,LON GRID N. HEMI.
15 C> 32851 POINT GRID. 360 * 181 ONE DEGREE
16 C> GRIB GRID 3 WAS FLIPPED, GREENWISH ADDED
17 C> TO RIGHT SIDE AND CUT TO 361 * 91.
18 C> INTERP - 1 LINEAR INTERPOLATION , NE.1 BIQUADRATIC
19 C>
20 C> INPUT FILES: NONE
21 C>
22 C> OUTPUT ARGUMENTS: ALAMB - 51*41 REGIONAL - CENTRAL US MARD
23 C> (LAMBERT CONFORMAL). 2091 POINT GRID
24 C> IS AWIPS GRID TYPE 206
25 C>
26 C> OUTPUT FILES: ERROR MESSAGE TO FORTRAN OUTPUT FILE
27 C>
28 C> WARNINGS:
29 C>
30 C> 1. W1 AND W2 ARE USED TO STORE SETS OF CONSTANTS WHICH ARE
31 C> REUSABLE FOR REPEATED CALLS TO THE SUBROUTINE. 11 OTHER ARRAY
32 C> ARE SAVED AND REUSED ON THE NEXT CALL.
33 C>
34 C> 2. WIND COMPONENTS ARE NOT ROTATED TO THE 51*41 GRID ORIENTATION
35 C> AFTER INTERPOLATION. YOU MAY USE W3FC08 TO DO THIS.
36 C>
37 C> RETURN CONDITIONS: NORMAL SUBROUTINE EXIT
38 C>
39 C> SUBPROGRAMS CALLED:
40 C> UNIQUE : NONE
41 C>
42 C> LIBRARY: W3FB12
43 C>
44 C> ATTRIBUTES:
45 C> LANGUAGE: CRAY CFT77 FORTRAN
46 C> MACHINE: CRAY C916-128, CRAY Y-MP8/864, CRAY Y-MP EL2/256
47 C>
48  SUBROUTINE w3ft206(ALOLA,ALAMB,INTERP)
49 C
50  parameter(npts=2091,ii=51,jj=41)
51  parameter(alatan=25.000)
52  parameter(pi=3.1416)
53  parameter(dx=81270.500)
54  parameter(alat1=22.289)
55  parameter(elon1=242.00962)
56  parameter(elonv=265.000)
57  parameter(iii=361,jjj=91)
58 C
59  REAL ALOLA(III,JJJ)
60  REAL ALAMB(NPTS)
61  REAL W1(NPTS), W2(NPTS), ERAS(NPTS,4)
62  REAL XDELI(NPTS), XDELJ(NPTS)
63  REAL XI2TM(NPTS), XJ2TM(NPTS)
64 C
65  INTEGER IV(NPTS), JV(NPTS), JY(NPTS,4)
66  INTEGER IM1(NPTS), IP1(NPTS), IP2(NPTS)
67 C
68  LOGICAL LIN
69 C
70  SAVE
71 C
72  DATA iswt /0/
73  DATA intrpo/99/
74 C
75  lin = .false.
76  IF (interp.EQ.1) lin = .true.
77 C
78  IF (iswt.EQ.1) GO TO 900
79 c print *,'iswt = ',iswt
80  n = 0
81  DO j = 1,jj
82  DO i = 1,ii
83  xj = j
84  xi = i
85  CALL w3fb12(xi,xj,alat1,elon1,dx,elonv,alatan,alat,
86  & elon,ierr)
87  n = n + 1
88  w1(n) = elon + 1.0
89  w2(n) = alat + 1.0
90  END DO
91  END DO
92 C
93  iswt = 1
94  intrpo = interp
95  GO TO 1000
96 C
97 C AFTER THE 1ST CALL TO W3FT206 TEST INTERP, IF IT HAS
98 C CHANGED RECOMPUTE SOME CONSTANTS
99 C
100  900 CONTINUE
101  IF (interp.EQ.intrpo) GO TO 2100
102  intrpo = interp
103 C
104  1000 CONTINUE
105  DO 1100 k = 1,npts
106  iv(k) = w1(k)
107  jv(k) = w2(k)
108  xdeli(k) = w1(k) - iv(k)
109  xdelj(k) = w2(k) - jv(k)
110  ip1(k) = iv(k) + 1
111  jy(k,3) = jv(k) + 1
112  jy(k,2) = jv(k)
113  1100 CONTINUE
114 C
115  IF (lin) GO TO 2100
116 C
117  DO 1200 k = 1,npts
118  ip2(k) = iv(k) + 2
119  im1(k) = iv(k) - 1
120  jy(k,1) = jv(k) - 1
121  jy(k,4) = jv(k) + 2
122  xi2tm(k) = xdeli(k) * (xdeli(k) - 1.0) * .25
123  xj2tm(k) = xdelj(k) * (xdelj(k) - 1.0) * .25
124  1200 CONTINUE
125 C
126  2100 CONTINUE
127  IF (lin) THEN
128 C
129 C LINEAR INTERPOLATION
130 C
131  DO 2200 kk = 1,npts
132  eras(kk,2) = (alola(ip1(kk),jy(kk,2))-alola(iv(kk),jy(kk,2)))
133  & * xdeli(kk) + alola(iv(kk),jy(kk,2))
134  eras(kk,3) = (alola(ip1(kk),jy(kk,3))-alola(iv(kk),jy(kk,3)))
135  & * xdeli(kk) + alola(iv(kk),jy(kk,3))
136  2200 CONTINUE
137 C
138  DO 2300 kk = 1,npts
139  alamb(kk) = eras(kk,2) + (eras(kk,3) - eras(kk,2))
140  & * xdelj(kk)
141  2300 CONTINUE
142 C
143  ELSE
144 C
145 C QUADRATIC INTERPOLATION
146 C
147  DO 2400 kk = 1,npts
148  eras(kk,1)=(alola(ip1(kk),jy(kk,1))-alola(iv(kk),jy(kk,1)))
149  & * xdeli(kk) + alola(iv(kk),jy(kk,1)) +
150  & ( alola(im1(kk),jy(kk,1)) - alola(iv(kk),jy(kk,1))
151  & - alola(ip1(kk),jy(kk,1))+alola(ip2(kk),jy(kk,1)))
152  & * xi2tm(kk)
153  eras(kk,2)=(alola(ip1(kk),jy(kk,2))-alola(iv(kk),jy(kk,2)))
154  & * xdeli(kk) + alola(iv(kk),jy(kk,2)) +
155  & ( alola(im1(kk),jy(kk,2)) - alola(iv(kk),jy(kk,2))
156  & - alola(ip1(kk),jy(kk,2))+alola(ip2(kk),jy(kk,2)))
157  & * xi2tm(kk)
158  eras(kk,3)=(alola(ip1(kk),jy(kk,3))-alola(iv(kk),jy(kk,3)))
159  & * xdeli(kk) + alola(iv(kk),jy(kk,3)) +
160  & ( alola(im1(kk),jy(kk,3)) - alola(iv(kk),jy(kk,3))
161  & - alola(ip1(kk),jy(kk,3))+alola(ip2(kk),jy(kk,3)))
162  & * xi2tm(kk)
163  eras(kk,4)=(alola(ip1(kk),jy(kk,4))-alola(iv(kk),jy(kk,4)))
164  & * xdeli(kk) + alola(iv(kk),jy(kk,4)) +
165  & ( alola(im1(kk),jy(kk,4)) - alola(iv(kk),jy(kk,4))
166  & - alola(ip1(kk),jy(kk,4))+alola(ip2(kk),jy(kk,4)))
167  & * xi2tm(kk)
168  2400 CONTINUE
169 C
170  DO 2500 kk = 1,npts
171  alamb(kk) = eras(kk,2) + (eras(kk,3) - eras(kk,2))
172  & * xdelj(kk) + (eras(kk,1) - eras(kk,2)
173  & - eras(kk,3) + eras(kk,4)) * xj2tm(kk)
174  2500 CONTINUE
175 C
176  ENDIF
177 C
178  RETURN
179  END
w3ft206
subroutine w3ft206(ALOLA, ALAMB, INTERP)
SUBROUTINE: W3FT206 CONVERT (361,91) GRID TO (51,41) LAMBERT GRID AUTHOR: JONES,R....
Definition: w3ft206.f:49
w3fb12
subroutine w3fb12(XI, XJ, ALAT1, ELON1, DX, ELONV, ALATAN, ALAT, ELON, IERR)
Converts the coordinates of a location on Earth given in a grid coordinate system overlaid on a lambe...
Definition: w3fb12.f:53