NCEPLIBS-w3emc  2.11.0
w3ft206.f
Go to the documentation of this file.
1 C> @file
2 C> @brief Convert (361,91) grid to (51,41) lambert grid
3 C> @author Ralph Jones @date 1994-05-18
4 
5 C> Convert a northern hemisphere 1.0 degree lat.,lon. 361 by
6 C> 91 grid to a lambert conformal 51 by 41 awips grib 206.
7 C>
8 C> ### Program History Log:
9 C> Date | Programmer | Comment
10 C> -----|------------|--------
11 C> 1994-05-18 | Ralph Jones | Initial.
12 C>
13 C> @param[in] ALOLA 361*91 grid 1.0 deg. lat,lon grid n. hemi.
14 C> 32851 point grid. 360 * 181 one degree grib grid 3 was flipped, greenwish added
15 C> to right side and cut to 361 * 91.
16 C> @param[in] INTERP 1 linear interpolation , ne.1 biquadratic
17 C> @param[out] ALAMB 51*41 regional - central us mard
18 C> (lambert conformal). 2091 point grid is awips grid type 206
19 C>
20 C> @note
21 C> - 1. W1 and w2 are used to store sets of constants which are
22 C> reusable for repeated calls to the subroutine. 11 other array
23 C> are saved and reused on the next call.
24 C> - 2. Wind components are not rotated to the 51*41 grid orientation
25 C> after interpolation. You may use w3fc08() to do this.
26 C>
27 C> @author Ralph Jones @date 1994-05-18
28  SUBROUTINE w3ft206(ALOLA,ALAMB,INTERP)
29 C
30  parameter(npts=2091,ii=51,jj=41)
31  parameter(alatan=25.000)
32  parameter(pi=3.1416)
33  parameter(dx=81270.500)
34  parameter(alat1=22.289)
35  parameter(elon1=242.00962)
36  parameter(elonv=265.000)
37  parameter(iii=361,jjj=91)
38 C
39  REAL ALOLA(III,JJJ)
40  REAL ALAMB(NPTS)
41  REAL W1(NPTS), W2(NPTS), ERAS(NPTS,4)
42  REAL XDELI(NPTS), XDELJ(NPTS)
43  REAL XI2TM(NPTS), XJ2TM(NPTS)
44 C
45  INTEGER IV(NPTS), JV(NPTS), JY(NPTS,4)
46  INTEGER IM1(NPTS), IP1(NPTS), IP2(NPTS)
47 C
48  LOGICAL LIN
49 C
50  SAVE
51 C
52  DATA iswt /0/
53  DATA intrpo/99/
54 C
55  lin = .false.
56  IF (interp.EQ.1) lin = .true.
57 C
58  IF (iswt.EQ.1) GO TO 900
59 c print *,'iswt = ',iswt
60  n = 0
61  DO j = 1,jj
62  DO i = 1,ii
63  xj = j
64  xi = i
65  CALL w3fb12(xi,xj,alat1,elon1,dx,elonv,alatan,alat,
66  & elon,ierr)
67  n = n + 1
68  w1(n) = elon + 1.0
69  w2(n) = alat + 1.0
70  END DO
71  END DO
72 C
73  iswt = 1
74  intrpo = interp
75  GO TO 1000
76 C
77 C AFTER THE 1ST CALL TO W3FT206 TEST INTERP, IF IT HAS
78 C CHANGED RECOMPUTE SOME CONSTANTS
79 C
80  900 CONTINUE
81  IF (interp.EQ.intrpo) GO TO 2100
82  intrpo = interp
83 C
84  1000 CONTINUE
85  DO 1100 k = 1,npts
86  iv(k) = w1(k)
87  jv(k) = w2(k)
88  xdeli(k) = w1(k) - iv(k)
89  xdelj(k) = w2(k) - jv(k)
90  ip1(k) = iv(k) + 1
91  jy(k,3) = jv(k) + 1
92  jy(k,2) = jv(k)
93  1100 CONTINUE
94 C
95  IF (lin) GO TO 2100
96 C
97  DO 1200 k = 1,npts
98  ip2(k) = iv(k) + 2
99  im1(k) = iv(k) - 1
100  jy(k,1) = jv(k) - 1
101  jy(k,4) = jv(k) + 2
102  xi2tm(k) = xdeli(k) * (xdeli(k) - 1.0) * .25
103  xj2tm(k) = xdelj(k) * (xdelj(k) - 1.0) * .25
104  1200 CONTINUE
105 C
106  2100 CONTINUE
107  IF (lin) THEN
108 C
109 C LINEAR INTERPOLATION
110 C
111  DO 2200 kk = 1,npts
112  eras(kk,2) = (alola(ip1(kk),jy(kk,2))-alola(iv(kk),jy(kk,2)))
113  & * xdeli(kk) + alola(iv(kk),jy(kk,2))
114  eras(kk,3) = (alola(ip1(kk),jy(kk,3))-alola(iv(kk),jy(kk,3)))
115  & * xdeli(kk) + alola(iv(kk),jy(kk,3))
116  2200 CONTINUE
117 C
118  DO 2300 kk = 1,npts
119  alamb(kk) = eras(kk,2) + (eras(kk,3) - eras(kk,2))
120  & * xdelj(kk)
121  2300 CONTINUE
122 C
123  ELSE
124 C
125 C QUADRATIC INTERPOLATION
126 C
127  DO 2400 kk = 1,npts
128  eras(kk,1)=(alola(ip1(kk),jy(kk,1))-alola(iv(kk),jy(kk,1)))
129  & * xdeli(kk) + alola(iv(kk),jy(kk,1)) +
130  & ( alola(im1(kk),jy(kk,1)) - alola(iv(kk),jy(kk,1))
131  & - alola(ip1(kk),jy(kk,1))+alola(ip2(kk),jy(kk,1)))
132  & * xi2tm(kk)
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  & ( alola(im1(kk),jy(kk,2)) - alola(iv(kk),jy(kk,2))
136  & - alola(ip1(kk),jy(kk,2))+alola(ip2(kk),jy(kk,2)))
137  & * xi2tm(kk)
138  eras(kk,3)=(alola(ip1(kk),jy(kk,3))-alola(iv(kk),jy(kk,3)))
139  & * xdeli(kk) + alola(iv(kk),jy(kk,3)) +
140  & ( alola(im1(kk),jy(kk,3)) - alola(iv(kk),jy(kk,3))
141  & - alola(ip1(kk),jy(kk,3))+alola(ip2(kk),jy(kk,3)))
142  & * xi2tm(kk)
143  eras(kk,4)=(alola(ip1(kk),jy(kk,4))-alola(iv(kk),jy(kk,4)))
144  & * xdeli(kk) + alola(iv(kk),jy(kk,4)) +
145  & ( alola(im1(kk),jy(kk,4)) - alola(iv(kk),jy(kk,4))
146  & - alola(ip1(kk),jy(kk,4))+alola(ip2(kk),jy(kk,4)))
147  & * xi2tm(kk)
148  2400 CONTINUE
149 C
150  DO 2500 kk = 1,npts
151  alamb(kk) = eras(kk,2) + (eras(kk,3) - eras(kk,2))
152  & * xdelj(kk) + (eras(kk,1) - eras(kk,2)
153  & - eras(kk,3) + eras(kk,4)) * xj2tm(kk)
154  2500 CONTINUE
155 C
156  ENDIF
157 C
158  RETURN
159  END
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
subroutine w3ft206(ALOLA, ALAMB, INTERP)
Convert a northern hemisphere 1.0 degree lat.,lon.
Definition: w3ft206.f:29