NCEPLIBS-w3emc  2.9.2
w3ft211.f
Go to the documentation of this file.
1 C> @file
2 C
3 C> SUBROUTINE: W3FT211 CONVERT (361,91) GRID TO (93,65) 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 93 BY 65 AWIPS GRIB 211.
8 C>
9 C> PROGRAM HISTORY LOG:
10 C> 94-05-18 R.E.JONES
11 C>
12 C> USAGE: CALL W3FT211(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 - 93*65 REGIONAL - CONUS
23 C> (LAMBERT CONFORMAL). 6045 POINT GRID
24 C> IS AWIPS GRID TYPE 211
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 93*65 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 w3ft211(ALOLA,ALAMB,INTERP)
49 C
50 C
51  parameter(npts=6045,ii=93,jj=65)
52  parameter(alatan=25.000)
53  parameter(pi=3.1416)
54  parameter(dx=81270.500)
55  parameter(alat1=12.190)
56  parameter(elon1=226.541)
57  parameter(elonv=265.000)
58  parameter(iii=361,jjj=91)
59 C
60  REAL ALOLA(III,JJJ)
61  REAL ALAMB(NPTS)
62  REAL W1(NPTS), W2(NPTS), ERAS(NPTS,4)
63  REAL XDELI(NPTS), XDELJ(NPTS)
64  REAL XI2TM(NPTS), XJ2TM(NPTS)
65 C
66  INTEGER IV(NPTS), JV(NPTS), JY(NPTS,4)
67  INTEGER IM1(NPTS), IP1(NPTS), IP2(NPTS)
68 C
69  LOGICAL LIN
70 C
71  SAVE
72 C
73  DATA iswt /0/
74  DATA intrpo/99/
75 C
76  lin = .false.
77  IF (interp.EQ.1) lin = .true.
78 C
79  IF (iswt.EQ.1) GO TO 900
80 c print *,'iswt = ',iswt
81  n = 0
82  DO j = 1,jj
83  DO i = 1,ii
84  xj = j
85  xi = i
86  CALL w3fb12(xi,xj,alat1,elon1,dx,elonv,alatan,alat,
87  & elon,ierr)
88  n = n + 1
89  w1(n) = elon + 1.0
90  w2(n) = alat + 1.0
91  END DO
92  END DO
93 C
94  iswt = 1
95  intrpo = interp
96  GO TO 1000
97 C
98 C AFTER THE 1ST CALL TO W3FT211 TEST INTERP, IF IT HAS
99 C CHANGED RECOMPUTE SOME CONSTANTS
100 C
101  900 CONTINUE
102  IF (interp.EQ.intrpo) GO TO 2100
103  intrpo = interp
104 C
105  1000 CONTINUE
106  DO 1100 k = 1,npts
107  iv(k) = w1(k)
108  jv(k) = w2(k)
109  xdeli(k) = w1(k) - iv(k)
110  xdelj(k) = w2(k) - jv(k)
111  ip1(k) = iv(k) + 1
112  jy(k,3) = jv(k) + 1
113  jy(k,2) = jv(k)
114  1100 CONTINUE
115 C
116  IF (lin) GO TO 2100
117 C
118  DO 1200 k = 1,npts
119  ip2(k) = iv(k) + 2
120  im1(k) = iv(k) - 1
121  jy(k,1) = jv(k) - 1
122  jy(k,4) = jv(k) + 2
123  xi2tm(k) = xdeli(k) * (xdeli(k) - 1.0) * .25
124  xj2tm(k) = xdelj(k) * (xdelj(k) - 1.0) * .25
125  1200 CONTINUE
126 C
127  2100 CONTINUE
128  IF (lin) THEN
129 C
130 C LINEAR INTERPOLATION
131 C
132  DO 2200 kk = 1,npts
133  eras(kk,2) = (alola(ip1(kk),jy(kk,2))-alola(iv(kk),jy(kk,2)))
134  & * xdeli(kk) + alola(iv(kk),jy(kk,2))
135  eras(kk,3) = (alola(ip1(kk),jy(kk,3))-alola(iv(kk),jy(kk,3)))
136  & * xdeli(kk) + alola(iv(kk),jy(kk,3))
137  2200 CONTINUE
138 C
139  DO 2300 kk = 1,npts
140  alamb(kk) = eras(kk,2) + (eras(kk,3) - eras(kk,2))
141  & * xdelj(kk)
142  2300 CONTINUE
143 C
144  ELSE
145 C
146 C QUADRATIC INTERPOLATION
147 C
148  DO 2400 kk = 1,npts
149  eras(kk,1)=(alola(ip1(kk),jy(kk,1))-alola(iv(kk),jy(kk,1)))
150  & * xdeli(kk) + alola(iv(kk),jy(kk,1)) +
151  & ( alola(im1(kk),jy(kk,1)) - alola(iv(kk),jy(kk,1))
152  & - alola(ip1(kk),jy(kk,1))+alola(ip2(kk),jy(kk,1)))
153  & * xi2tm(kk)
154  eras(kk,2)=(alola(ip1(kk),jy(kk,2))-alola(iv(kk),jy(kk,2)))
155  & * xdeli(kk) + alola(iv(kk),jy(kk,2)) +
156  & ( alola(im1(kk),jy(kk,2)) - alola(iv(kk),jy(kk,2))
157  & - alola(ip1(kk),jy(kk,2))+alola(ip2(kk),jy(kk,2)))
158  & * xi2tm(kk)
159  eras(kk,3)=(alola(ip1(kk),jy(kk,3))-alola(iv(kk),jy(kk,3)))
160  & * xdeli(kk) + alola(iv(kk),jy(kk,3)) +
161  & ( alola(im1(kk),jy(kk,3)) - alola(iv(kk),jy(kk,3))
162  & - alola(ip1(kk),jy(kk,3))+alola(ip2(kk),jy(kk,3)))
163  & * xi2tm(kk)
164  eras(kk,4)=(alola(ip1(kk),jy(kk,4))-alola(iv(kk),jy(kk,4)))
165  & * xdeli(kk) + alola(iv(kk),jy(kk,4)) +
166  & ( alola(im1(kk),jy(kk,4)) - alola(iv(kk),jy(kk,4))
167  & - alola(ip1(kk),jy(kk,4))+alola(ip2(kk),jy(kk,4)))
168  & * xi2tm(kk)
169  2400 CONTINUE
170 C
171  DO 2500 kk = 1,npts
172  alamb(kk) = eras(kk,2) + (eras(kk,3) - eras(kk,2))
173  & * xdelj(kk) + (eras(kk,1) - eras(kk,2)
174  & - eras(kk,3) + eras(kk,4)) * xj2tm(kk)
175  2500 CONTINUE
176 C
177  ENDIF
178 C
179  RETURN
180  END
w3ft211
subroutine w3ft211(ALOLA, ALAMB, INTERP)
SUBROUTINE: W3FT211 CONVERT (361,91) GRID TO (93,65) LAMBERT GRID AUTHOR: JONES,R....
Definition: w3ft211.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