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