Created a tag for the 2012 HWRF baseline tests.
[WPS-merge.git] / hwrf-baseline-20120103-1354 / ungrib / src / g1print.F
blobdd12826b6d6d88d4cdef7bba2a66c5d9121ab5a5
2 ! Print information about a grib1 file.
3 !  Usage: "g1print [-v] [-V] filename"
5 !  Originally from gribscan.
6
7 program g1print
8   use module_grib
9   interface
10      subroutine parse_args(err, a1, h1, i1, l1, a2, h2, i2, l2,&
11           a3, h3, i3, l3, hlast)
12        integer :: err
13        character(len=*) , optional :: a1, a2, a3
14        character(len=*), optional :: h1, h2, h3
15        integer , optional :: i1, i2, i3
16        logical, optional :: l1, l2, l3
17        character(len=*), optional :: hlast
18      end subroutine parse_args
19   end interface
21   character(len=120) :: flnm
22   character(len=30) :: hopt
23   real, allocatable, dimension(:) :: datarray
24   integer :: ierr, igherr
25   integer :: cc
26   character(len=100) :: fmt = '(I4,1X, &
27        & I3,1x, A5,1x, &
28        & I4, &
29        & 2(1x,I4),2x,I4.4,2("-",I2.2),"_",I2.2,":",&
30        & I2.2, 1x, "+", i2.2)'
31   logical :: ivb = .FALSE.
32   logical :: idb = .FALSE.
33   integer :: year
34   character(len=5) :: field
36   flnm = ' '
37   call parse_args(ierr, a1='v', l1=ivb, a2='V', l2=idb, hlast=flnm)
38   if (ierr.ne.0) then
39      call getarg(0, hopt)
40      write(*,'(//,"Usage: ", A, " [-v] [-V] file",/)') trim(hopt)
41      write(*,'("     -v   : Print more information about the GRIB records")')
42      write(*,'("     -V   : Print way too much information about the GRIB&
43           & records")')
44      write(*,'("     file : GRIB file to read"//)')
45       stop
46 !    stop
47   endif
49   if (idb) ivb = .TRUE.
51   call c_open(idum, munit, flnm, 1, ierr, 1)
53   if (.not. ivb) then
54      write(*,'(52("-"))')
55      write(*,'(" rec GRIB GRIB  Lvl  Lvl  Lvl         Time      Fcst")')
56      write(*,'(" Num Code name  Code one  two                   hour")')
57      write(*,'(52("-"))')
58   endif 
60   irec = 0
61   call gribget(munit, ierr)
62   do while (ierr.eq.0) 
63      irec = irec + 1
64      call gribheader(0,igherr)
65      if (igherr /= 0) then
66         call deallogrib
67         call gribget(munit, ierr)
68         cycle
69      endif
71      call fieldname(sec1(2), sec1(3), sec1(4), sec1(7), sec1(24), field)
73      if (ivb) then
74         call gribprint(0)
75         call gribprint(1)
76         call gribprint(2)
77         call gribprint(3)
78         call gribprint(4)
79            if (sec2(4).eq.50) then
80               ndat = (infogrid(1)+1)*(infogrid(2)+1)
81            else
82               ndat = (infogrid(1)*infogrid(2))
83            endif
84            allocate(datarray(ndat))
85            call gribdata(datarray, ndat)
86            fldmax = datarray(1)
87            fldmin = datarray(1)
88            do j = 1, ndat
89              if (datarray(j).gt.fldmax) fldmax=datarray(j)
90              if (datarray(j).lt.fldmin) fldmin=datarray(j)
91            enddo
92         write(*,*) "  "
93         write(*,*) "  ",field," : "
94         write(*,'(5x,"Minimum Data Value ",t45,":",g14.5)') fldmin
95         write(*,'(5x,"Maximum Data Value ",t45,":",g14.5)') fldmax
96         write(*,'(//,70("*"))')
97         if (idb) then
98            print*, 'Datarray = ', Datarray
99         endif
100            deallocate(datarray)
101      else
102         CC = sec1(22)
103         year = (cc-1)*100 + sec1(11)
104         write(*,FMT) irec, sec1(7), field, sec1(8:10), year,sec1(12:15),sec1(17)
105      endif
107      call deallogrib
109      call gribget(munit, ierr)
110   enddo
111   if (ierr.eq.1) write(*,'(/,"***** End-Of-File on C unit ", I3,/)') munit
112   call c_close( munit, 0, ierr)
114 end program g1print
116 subroutine parse_args(err, a1, h1, i1, l1, a2, h2, i2, l2, a3, h3, i3, l3, &
117      hlast)
118   integer :: err
119   character(len=*) , optional :: a1, a2, a3
120   character(len=*), optional :: h1, h2, h3
121   integer , optional :: i1, i2, i3
122   logical, optional :: l1, l2, l3
123   character(len=*), optional :: hlast
125   character(len=100) :: hold
126   integer :: ioff = 0
128   if (present(hlast)) then
129      ioff = -1
130   endif
132   err = 0
134   narg = iargc()
135   numarg = narg + ioff
137   i = 1
138   LOOP : do while ( i <= numarg)
140      ierr = 1
141      if (present(i1)) then
142         call checkiarg(i, a1, i1, ierr)
143      elseif (present(h1)) then
144         call checkharg(i, a1, h1, ierr)
145      elseif (present(l1)) then
146         call checklarg(i, a1, l1, ierr)
147      endif
148      if (ierr.eq.0) cycle LOOP
150      if (present(i2)) then
151         call checkiarg(i, a2, i2, ierr)
152      elseif (present(h2)) then
153         call checkharg(i, a2, h2, ierr)
154      elseif (present(l2)) then
155         call checklarg(i, a2, l2, ierr)
156      endif
157      if (ierr.eq.0) cycle LOOP
159      if (present(i3)) then
160         call checkiarg(i, a3, i3, ierr)
161      elseif (present(h3)) then
162         call checkharg(i, a3, h3, ierr)
163      elseif (present(l3)) then
164         call checklarg(i, a3, l3, ierr)
165      endif
166      if (ierr.eq.0) cycle LOOP
168      err = 1
169      call getarg(1, hold)
170      write(*, '("arg = ", A)') trim(hold)
172      exit LOOP
174   enddo LOOP
176   if (present(hlast)) then
177      if (narg.eq.0) then
178         err = 1
179      else
180         call getarg(narg, hlast)
181      endif
182   endif
184 contains
185   subroutine checkiarg(c, a, i, ierr)
186     integer :: c
187     character(len=*) :: a
188     integer :: i
190     character(len=100) :: hold
191     ierr = 1
193     call getarg(c, hold)
195     if ('-'//a.eq.trim(hold)) then
196        c = c + 1
197        call getarg(c, hold)
198        read(hold, *) i
199        c = c + 1
200        ierr = 0
201     elseif ('-'//a .eq. hold(1:len_trim(a)+1)) then
202        hold = hold(len_trim(a)+2: len(hold))
203        read(hold, *) i
204        c = c + 1
205        ierr = 0
206     endif
207         
208   end subroutine checkiarg
209   subroutine checkharg(c, a, h, ierr)
210     integer :: c
211     character(len=*) :: a
212     character(len=*) :: h
214     character(len=100) :: hold
215     ierr = 1
217     call getarg(c, hold)
219     if ('-'//a.eq.trim(hold)) then
220        c = c + 1
221        call getarg(c, hold)
222        h = trim(hold)
223        c = c + 1
224        ierr = 0
225     elseif ('-'//a .eq. hold(1:len_trim(a)+1)) then
226        hold = hold(len_trim(a)+2: len(hold))
227        h = trim(hold)
228        c = c + 1
229        ierr = 0
230     endif
231         
232   end subroutine checkharg
234   subroutine checklarg(c, a, l, ierr)
235     integer :: c
236     character(len=*) :: a
237     logical :: l
239     character(len=100) :: hold
240     ierr = 1
242     call getarg(c, hold)
243     if ('-'//a.eq.trim(hold)) then
244        l = .TRUE.
245        c = c + 1
246        ierr = 0
247     endif
248         
249   end subroutine checklarg
251 end subroutine parse_args
253   subroutine fieldname(ptv, centerid, procid, param, subc, field)
255 ! This routine contains the tables for the various grib parameters
256 ! Each individual parameter contains the info to identify itself.
257 ! We don't have the complete tables here, just enough for normal wrf use.
258 ! wgrib has more complete NCEP tables. (look in WRFV3/external/io_grib1/WGRIB)
260 !  ptv - parameter table version
261 !  centerid - id number ofthe originating center
262 !  procid - process id
263 !  param - parameter number
264 !  subc - sub center
265 !  field - 5-character field name (returned)
267     integer, intent(in) :: ptv, centerid, procid, param, subc
268     logical :: first=.true.
269     character (len=5), intent(out) :: field
270     character(len=5) :: table2(255), table129(255), afwa(255), ecmwf(255), &
271       table130(255), table131(255), table132(255)
272     common /paramids/ table2, table129, table130, table131, table132, afwa, ecmwf
274      field = '     '
275      if (first) call init_tables
276      first = .false.
277      if ( centerid .eq. 7 .and. ptv .eq. 2 ) then
278        field = table2(param)
279      else if ( centerid .eq. 7 .and. ptv .eq. 129 ) then
280        field = table129(param)
281      else if ( centerid .eq. 7 .and. ptv .eq. 130 ) then
282        field = table130(param)
283      else if ( centerid .eq. 7 .and. ptv .eq. 131 ) then
284        field = table131(param)
285      else if ( centerid .eq. 7 .and. ptv .eq. 132 ) then
286        field = table132(param)
287      else if ( centerid .eq. 57 ) then
288        field = afwa(param)
289      else if ( centerid .eq. 58 .and. ptv .eq. 2 ) then    ! navysst
290        field = table2(param)
291      else if ( centerid .eq. 59 .and. ptv .eq. 2 ) then    ! GSD
292        field = table2(param)
293      else if ( centerid .eq. 59 .and. ptv .eq. 129 ) then
294        field = table129(param)
295      else if ( centerid .eq. 98 .and. ptv .eq. 128 ) then  ! ECMWF
296        field = ecmwf(param)
297      else if ( ptv .eq. 2 ) then  ! previous default behavior - assume table 2 is ncep table 2
298        field = table2(param)
299      else
300        field = '     '
301      endif
302      return
303 end subroutine fieldname 
305      subroutine init_tables
306     character(len=5) :: table2(255), table129(255), afwa(255), ecmwf(255), &
307       table130(255), table131(255),  table132(255)
308     common /paramids/ table2, table129, table130, table131, table132, afwa, ecmwf
310        ! afwa
311        do i = 1, 127
312          afwa(i) = table2(i)
313        enddo
314        do i = 128, 254
315          afwa(i) = '     '
316        enddo
317        afwa(144) = 'DNWLR'
318        afwa(145) = 'INSWR'
319        afwa(155) = 'GDHFX'
320        afwa(157) = 'XTRAJ'
321        afwa(158) = 'YTRAJ'
322        afwa(159) = 'PTRAJ'
323        afwa(160) = 'TERID'
324        afwa(161) = 'MDLTN'
325        afwa(174) = 'SNOWD'
326        afwa(175) = 'SNOAG'
327        afwa(176) = 'SNOCL'
328        afwa(177) = 'VSBLY'
329        afwa(178) = 'CURWX'
330        afwa(179) = 'CLAMT'
331        afwa(180) = 'CLBAS'
332        afwa(181) = 'CLTOP'
333        afwa(182) = 'CLTYP'
334        afwa(183) = 'UTIME'
335        afwa(184) = 'SRCDT'
336        afwa(196) = 'EPCDF'
337        afwa(197) = 'EPALL'
338        afwa(198) = 'EPGEO'
339        afwa(199) = 'EPVAL'
340        afwa(200) = 'SOILR'
341        afwa(201) = 'SOILW'
342        afwa(205) = 'TYPSL'
343        afwa(206) = 'VLASH'
344        afwa(207) = 'CANWT'
345        afwa(208) = 'PEVAP'
346        afwa(209) = 'WNDRN'
347        afwa(210) = 'RHTMN'
348        afwa(211) = 'SOILL'
349        afwa(212) = 'VEGTP'
350        afwa(213) = 'GREEN'
351        afwa(234) = 'BGRUN'
352        afwa(235) = 'SSRUN'
354      ! ECMWF
355 ! from http://www.ecmwf.int/services/archive/d/parameters/order=grib_parameter/table=128/
356        do i = 1, 254
357          ecmwf(i) = '     '
358        enddo
359          ecmwf(1) = 'STRF '
360          ecmwf(2) = 'VPOT '
361          ecmwf(3) = 'PT   '
362          ecmwf(4) = 'EQPT '
363          ecmwf(5) = 'SEPT '
364          ecmwf(8) = 'SRO  '
365          ecmwf(9) = 'SSRO '
366          ecmwf(10) = 'WS   '
367          ecmwf(26) = 'CL   '
368          ecmwf(27) = 'CVL  '
369          ecmwf(28) = 'CVH  '
370          ecmwf(29) = 'TVL  '
371          ecmwf(30) = 'TVH  '
372          ecmwf(31) = 'CI   '
373          ecmwf(32) = 'ASN  '
374          ecmwf(33) = 'RSN  '
375          ecmwf(34) = 'SSTK '
376          ecmwf(35) = 'ISTL1'
377          ecmwf(36) = 'ISTL2'
378          ecmwf(37) = 'ISTL3'
379          ecmwf(38) = 'ISTL4'
380          ecmwf(39) = 'SWVL1'
381          ecmwf(40) = 'SWVL2'
382          ecmwf(41) = 'SWVL3'
383          ecmwf(42) = 'SWVL4'
384          ecmwf(43) = 'SLT  '
385          ecmwf(44) = 'ES   '
386          ecmwf(45) = 'SMLT '
387          ecmwf(60) = 'PV   '
388          ecmwf(74) = 'SDFOR'
389          ecmwf(75) = 'CRWC '
390          ecmwf(76) = 'CSWC '
391          ecmwf(77) = 'ETADT'
392          ecmwf(78) = 'TCLW '
393          ecmwf(79) = 'TCIW '
394          ecmwf(121) = 'MX2T6'
395          ecmwf(122) = 'MN2T6'
396          ecmwf(123) = '10FG6'
397          ecmwf(124) = 'EMIS '
398          ecmwf(127) = 'AT   '
399          ecmwf(128) = 'BV   '
400          ecmwf(129) = 'Z    '
401          ecmwf(130) = 'T    '
402          ecmwf(131) = 'U    '
403          ecmwf(132) = 'V    '
404          ecmwf(133) = 'Q    '
405          ecmwf(134) = 'SP   '
406          ecmwf(135) = 'W    '
407          ecmwf(136) = 'TCW  '
408          ecmwf(137) = 'TCWV '
409          ecmwf(138) = 'VO   '
410          ecmwf(139) = 'STL1 '
411          ecmwf(140) = 'SWL1 '
412          ecmwf(141) = 'SD   '
413          ecmwf(142) = 'LSP  '
414          ecmwf(143) = 'CP   '
415          ecmwf(144) = 'SF   '
416          ecmwf(145) = 'BLD  '
417          ecmwf(146) = 'SSHF '
418          ecmwf(147) = 'SLHF '
419          ecmwf(148) = 'CHNK '
420          ecmwf(149) = 'SNR  '
421          ecmwf(150) = 'TNR  '
422          ecmwf(151) = 'MSL  '
423          ecmwf(152) = 'LNSP '
424          ecmwf(153) = 'SWHR '
425          ecmwf(154) = 'LWHR '
426          ecmwf(155) = 'D    '
427          ecmwf(156) = 'GH   '
428          ecmwf(157) = 'R    '
429          ecmwf(159) = 'BLH  '
430          ecmwf(160) = 'SDOR '
431          ecmwf(161) = 'ISOR '
432          ecmwf(162) = 'ANOR '
433          ecmwf(163) = 'SLOR '
434          ecmwf(164) = 'TCC  '
435          ecmwf(165) = '10U  '
436          ecmwf(166) = '10V  '
437          ecmwf(167) = '2T   '
438          ecmwf(168) = '2D   '
439          ecmwf(169) = 'SSRD '
440          ecmwf(170) = 'STL2 '
441          ecmwf(171) = 'SWL2 '
442          ecmwf(172) = 'LSM  '
443          ecmwf(173) = 'SR   '
444          ecmwf(174) = 'AL   '
445          ecmwf(175) = 'STRD '
446          ecmwf(176) = 'SSR  '
447          ecmwf(177) = 'STR  '
448          ecmwf(178) = 'TSR  '
449          ecmwf(179) = 'TTR  '
450          ecmwf(180) = 'EWSS '
451          ecmwf(181) = 'NSSS '
452          ecmwf(182) = 'E    '
453          ecmwf(183) = 'STL3 '
454          ecmwf(184) = 'SWL3 '
455          ecmwf(185) = 'CCC  '
456          ecmwf(186) = 'LCC  '
457          ecmwf(187) = 'MCC  '
458          ecmwf(188) = 'HCC  '
459          ecmwf(189) = 'SUND '
460          ecmwf(194) = 'BTMP '
461          ecmwf(195) = 'LGWS '
462          ecmwf(196) = 'MGWS '
463          ecmwf(197) = 'GWD  '
464          ecmwf(198) = 'SRC  '
465          ecmwf(199) = 'VEG  '
466          ecmwf(200) = 'VSO  '
467          ecmwf(201) = 'MX2T '
468          ecmwf(202) = 'MN2T '
469          ecmwf(203) = 'O3   '
470          ecmwf(204) = 'PAW  '
471          ecmwf(205) = 'RO   '
472          ecmwf(206) = 'TCO3 '
473          ecmwf(207) = '10SI '
474          ecmwf(208) = 'TSRC '
475          ecmwf(209) = 'TTRC '
476          ecmwf(210) = 'SSRC '
477          ecmwf(211) = 'STRC '
478          ecmwf(212) = 'TISR '
479          ecmwf(213) = 'VIMD '
480          ecmwf(214) = 'DHR  '
481          ecmwf(227) = 'CRNH '
482          ecmwf(229) = 'IEWS '
483          ecmwf(230) = 'INSS '
484          ecmwf(231) = 'ISHF '
485          ecmwf(232) = 'IE   '
486          ecmwf(233) = 'ASQ  '
487          ecmwf(234) = 'LSRH '
488          ecmwf(235) = 'SKT  '
489          ecmwf(236) = 'STL4 '
490          ecmwf(237) = 'SWL4 '
491          ecmwf(238) = 'TSN  '
492          ecmwf(239) = 'CSF  '
493          ecmwf(240) = 'LSF  '
494          ecmwf(248) = 'CC   '
495 end subroutine init_tables
497     block data  ptables
498     character(len=5) :: table2(255), table129(255), afwa(255), ecmwf(255), &
499       table130(255), table131(255), table132(255)
500     common /paramids/ table2, table129, table130, table131, table132, afwa, ecmwf
502   data table2 /'PRES','PRMSL','PTEND','PVORT','ICAHT','GP','HGT','DIST',&
503        'HSTDV','TOZNE','TMP','VTMP','POT','EPOT','T MAX','T MIN','DPT',&
504        'DEPR','LAPR','VIS','RDSP1','RDSP2','RDSP3','PLI','TMP A','PRESA',&
505        'GP A','WVSP1','WVSP2','WVSP3','WDIR','WIND','U GRD','V GRD','STRM',&
506        'V POT','MNTSF','SGCVV','V VEL','DZDT','ABS V','ABD D','REL V','REL D',&
507        'VUCSH','VVCSG','DIR C','SP C','UOGRD','VOGRD','SPF H','R H','MIXR',&
508        'P WAT','VAPP','SAT D','EVP','C ICE','PRATE','TSTM','A PCP','NCPCP',&
509        'ACPCP','SRWEQ','WEASD','SNO D','MIXHT','TTHDP','MTHD','MTH A','T CDC',&
510        'CDCON','L CDC','M CDC','H CDC','C WAT','BLI','SNO C','SNO L','WTMP',&
511        'LAND','DSL M','SFC R','ALBDO','TSOIL','SOILM','VEG','SALTY','DEN',&
512        'WATR','ICE C','ICETK','DICED','SICED','U ICE','V ICE','ICE G','ICE D',&
513        'SNO M','HTSGW','WVDIR','WVHGT','WVPER','SWDIR','SWELL','SWPER','DIRPW',&
514        'PERPW','DIRSW','PERSW','NSWRS','NLWRS','NSWRT','NLWRT','LWAVR','SWAVR',&
515        'GRAD','BRTMP','LWRAD','SWRAD','LHTFL','SHTFL','BLYDP','U FLX','V FLX',&
516        'WMIXE','IMG D',&
517 ! 128-254 for use by originating center. NWS/NCEP Table 2 is coded here.
518        'MSLSA','MSLMA','MSLET','LFT X','4LFTX','K X','S X','MCONV','VW SH',&
519        'TSLSA','BVF 2','PV MW','CRAIN','CFRZR','CICEP','CSNOW','SOILW',&
520        'PEVPR','CWORK','U-GWD','V-GWD','PV','COVMZ','COVTZ','COVTM','CLWMR',&
521        'O3MR','GFLUX','CIN','CAPE','TKE','CONDP','CSUSF','CSDSF','CSULF',&
522        'CSDLF','CFNSF','CFNLF','VBDSF','VDDSF','NBDSF','NDDSF','RWMR',&
523        'SNMR','M FLX','LMH','LMV','MLYNO','NLAT','ELON','ICMR','GRMR','GUST',&
524        'LPS X','LPS Y','HGT X','HGT Y','TPFI','TIPD','LTNG','RDRIP','VPTMP','HLCY',&
525        'PROB','PROBN','POP','CPOFP','CPOZP','USTM','VSTM','NCIP','EVBS','EVCW',&
526        'ICWAT','CWDI','VAFTD','DSWRF','DLWRF','UVI','MSTAV','SFEXC','MIXLY','TRANS',&
527        'USWRF','ULWRF','CDLYR','CPRAT','TTDIA','TTRAD','TTPHY','PREIX','TSD1D',&
528        'NLGSP','HPBL','5WAVH','CNWAT','SOTYP','VGTYP','BMIXL','AMIXL','PEVAP',&
529        'SNOHF','5WAVA','MFLUX','DTRF','UTRF','BGRUN','SSRUN','SIPD','O3TOT',&
530        'SNOWC','SNOT','COVTW','LRGHR','CNVHR','CNVMR','SHAHR','SHAMR','VDFHR',&
531        'VDFUA','VDFVA','VDFMR','SWHR','LWHR','CD','FRICV','RI','  '/
532   data table129 /'PRES','PRMSL','PTEND','PVORT','ICAHT','GP','HGT','DIST',&
533        'HSTDV','TOZNE','TMP','VTMP','POT','EPOT','T MAX','T MIN','DPT',&
534        'DEPR','LAPR','VIS','RDSP1','RDSP2','RDSP3','PLI','TMP A','PRESA',&
535        'GP A','WVSP1','WVSP2','WVSP3','WDIR','WIND','U GRD','V GRD','STRM',&
536        'V POT','MNTSF','SGCVV','V VEL','DZDT','ABS V','ABD D','REL V','REL D',&
537        'VUCSH','VVCSG','DIR C','SP C','UOGRD','VOGRD','SPF H','R H','MIXR',&
538        'P WAT','VAPP','SAT D','EVP','C ICE','PRATE','TSTM','A PCP','NCPCP',&
539        'ACPCP','SRWEQ','WEASD','SNO D','MIXHT','TTHDP','MTHD','MTH A','T CDC',&
540        'CDCON','L CDC','M CDC','H CDC','C WAT','BLI','SNO C','SNO L','WTMP',&
541        'LAND','DSL M','SFC R','ALBDO','TSOIL','SOILM','VEG','SALTY','DEN',&
542        'WATR','ICE C','ICETK','DICED','SICED','U ICE','V ICE','ICE G','ICE D',&
543        'SNO M','HTSGW','WVDIR','WVHGT','WVPER','SWDIR','SWELL','SWPER','DIRPW',&
544        'PERPW','DIRSW','PERSW','NSWRS','NLWRS','NSWRT','NLWRT','LWAVR','SWAVR',&
545        'GRAD','BRTMP','LWRAD','SWRAD','LHTFL','SHTFL','BLYDP','U FLX','V FLX',&
546        'WMIXE','IMG D',&
547 ! All NCEP tables use the Table 2 values for the first 127 entries
548 ! 128-254 for Table129
549        'PAOT','PAOP','CWR','FRAIN','FICE','FRIME','CUEFI','TCOND','TCOLW',&
550        'TCOLI','TCOLR','TCOLS','TCOLC','PLPL','HLPL','CEMS','COPD',&
551        'PSIZ','TCWAT','TCICE','WDIF','WSTP','PTAN','PTNN','PTBN','PPAN',&
552        'PPNN','PPBN','PMTC','PMTF','AETMP','AEDPT','AESPH','AEUWD','AEVWD',&
553        'LPMTF','LIPMF','REFZR','REFZI','REFZC','TCLSW','TCOLM','ELRDI',&
554        'TSEC','TSECA','NUM','AEPRS','ICSEV','ICPRB','LAVNI','HAVNI','FLGHT','OZCON',&
555        'OZCAT','VEDH','SIGV','EWGT','CICEL','CIVIS','CIFLT','LAVV','LOVV','USCT',&
556        'VSCT','LAUV','LOUV','TCHP','DBSS','ODHA','OHC','SSHG','SLTFL','DUVB',&
557        'CDUVB','THFLX','UVAR','VVAR','UVVCC','MCLS','LAPP','LOPP','     ','REFO',&
558        'REFD','REFC','SBT22','SBT23','SBT24','SBT25','MINRH','MAXRH','CEIL',&
559        'PBLRE','SBC23','SBC24','RPRAT','SPRAT','FPRAT','IPRAT','UPHL','SURGE',&
560        'ETSRG','RHPW','OZMAX1','OZMAX8','PDMAX1','PDMAX24','MAXREF','MXUPHL','MAXUVV',&
561        'MAXDVV','MAXVIG','RETOP','VRATE','TCSRG20','TCSRG30','TCSRG40','TCSRG50','TCSRG60',&
562        'TCSRG70','TCSRG80','TCSRG90','HINDX','DIFTEN','PSPCP','MAXUW','MAXVW','255'/
563   data table130 /'PRES','PRMSL','PTEND','PVORT','ICAHT','GP','HGT','DIST',&
564        'HSTDV','TOZNE','TMP','VTMP','POT','EPOT','T MAX','T MIN','DPT',&
565        'DEPR','LAPR','VIS','RDSP1','RDSP2','RDSP3','PLI','TMP A','PRESA',&
566        'GP A','WVSP1','WVSP2','WVSP3','WDIR','WIND','U GRD','V GRD','STRM',&
567        'V POT','MNTSF','SGCVV','V VEL','DZDT','ABS V','ABD D','REL V','REL D',&
568        'VUCSH','VVCSG','DIR C','SP C','UOGRD','VOGRD','SPF H','R H','MIXR',&
569        'P WAT','VAPP','SAT D','EVP','C ICE','PRATE','TSTM','A PCP','NCPCP',&
570        'ACPCP','SRWEQ','WEASD','SNO D','MIXHT','TTHDP','MTHD','MTH A','T CDC',&
571        'CDCON','L CDC','M CDC','H CDC','C WAT','BLI','SNO C','SNO L','WTMP',&
572        'LAND','DSL M','SFC R','ALBDO','TSOIL','SOILM','VEG','SALTY','DEN',&
573        'WATR','ICE C','ICETK','DICED','SICED','U ICE','V ICE','ICE G','ICE D',&
574        'SNO M','HTSGW','WVDIR','WVHGT','WVPER','SWDIR','SWELL','SWPER','DIRPW',&
575        'PERPW','DIRSW','PERSW','NSWRS','NLWRS','NSWRT','NLWRT','LWAVR','SWAVR',&
576        'GRAD','BRTMP','LWRAD','SWRAD','LHTFL','SHTFL','BLYDP','U FLX','V FLX',&
577        'WMIXE','IMG D',&
578 ! Table 130    LSM 
579 ! 128-143 not yet assigned
580        '     ','     ','     ','     ','     ','   ','   ','     ','     ',&
581        '     ','     ','     ','     ','     ','     ','     ','SOILW',&
582        'PEVPR','VEGT ','BARET','AVSFT','RADT','SSTOR','LSOIL','EWATR','     ',&
583        'LSPA ','GFLUX','CIN','CAPE','TKE','MXSAL','SOILL','ASNOW','ARAIN',&
584        'GWREC','QREC ','SNOWT','VBDSF','VDDSF','NBDSF','NDDSF','SNFALB',&
585        'RLYRS','M FLX','   ','   ','     ','NLAT','ELON','FLDCAP','ACOND','SNOAG',&
586        'CCOND','LAI','SFCRH','SALBD','    ','    ','NDVI','DRIP','VBSALB','VWSALB',&
587        'NBSALB','NWSALB','FRZR','FROZR','TSNOW','MTERH','   ','SBSNO','EVBS','EVCW',&
588        'VTCIN','VTCAPE','RSMIN','DSWRF','DLWRF','   ','MSTAV','SFEXC','     ','TRANS',&
589        'USWRF','ULWRF','     ','     ','     ','     ','     ','     ','WILT',&
590        'FLDCP','HPBL','SLTYP','CNWAT','SOTYP','VGTYP','BMIXL','AMIXL','PEVAP',&
591        'SNOHF','SMREF','SMDRY','    ','    ','BGRUN','SSRUN','    ','     ',&
592        'SNOWC','SNOT','POROS','SBT112','SBT113','SBT114','SBT115','     ','RCS',&
593        'RCT','RCQ','RCSOL','    ','    ','CD','FRICV','RI','  '/
594   data table131 /'PRES','PRMSL','PTEND','PVORT','ICAHT','GP','HGT','DIST',&
595        'HSTDV','TOZNE','TMP','VTMP','POT','EPOT','T MAX','T MIN','DPT',&
596        'DEPR','LAPR','VIS','RDSP1','RDSP2','RDSP3','PLI','TMP A','PRESA',&
597        'GP A','WVSP1','WVSP2','WVSP3','WDIR','WIND','U GRD','V GRD','STRM',&
598        'V POT','MNTSF','SGCVV','V VEL','DZDT','ABS V','ABD D','REL V','REL D',&
599        'VUCSH','VVCSG','DIR C','SP C','UOGRD','VOGRD','SPF H','R H','MIXR',&
600        'P WAT','VAPP','SAT D','EVP','C ICE','PRATE','TSTM','A PCP','NCPCP',&
601        'ACPCP','SRWEQ','WEASD','SNO D','MIXHT','TTHDP','MTHD','MTH A','T CDC',&
602        'CDCON','L CDC','M CDC','H CDC','C WAT','BLI','SNO C','SNO L','WTMP',&
603        'LAND','DSL M','SFC R','ALBDO','TSOIL','SOILM','VEG','SALTY','DEN',&
604        'WATR','ICE C','ICETK','DICED','SICED','U ICE','V ICE','ICE G','ICE D',&
605        'SNO M','HTSGW','WVDIR','WVHGT','WVPER','SWDIR','SWELL','SWPER','DIRPW',&
606        'PERPW','DIRSW','PERSW','NSWRS','NLWRS','NSWRT','NLWRT','LWAVR','SWAVR',&
607        'GRAD','BRTMP','LWRAD','SWRAD','LHTFL','SHTFL','BLYDP','U FLX','V FLX',&
608        'WMIXE','IMG D',&
609 ! Table 131    NARR
610        'MSLSA','     ','MSLET','LFT X','4LFTX','     ','PRESN','MCONV','VW SH',&
611        '     ','     ','PVMWW','CRAIN','CFRZR','CICEP','CSNOW','SOILW',&
612        'PEVPR','VEGT ','BARET','AVSFT','RADT','SSTOR','LSOIL','EWATR','CLWMR',&
613        '    ','GFLUX','CIN','CAPE','TKE','MXSAL','SOILL','ASNOW','ARAIN',&
614        'GWREC','QREC ','SNOWT','VBDSF','VDDSF','NBDSF','NDDSF','SNFAL',&
615        'RLYRS','M FLX','LMH','LMV','MLYNO','NLAT','ELON','ICMR','ACOND','SNOAG',&
616        'CCOND','LAI  ','SFCRH','SALBD','    ','    ','NDVI','DRIP','LANDN','HLCY',&
617        'NLATN','ELONN','   ','CPOFP','     ','USTM','VSTM','SBSNO','EVBS','EVCW',&
618        '     ','APCPN','RSMIN','DSWRF','DLWRF','ACPCP','MSTAV','SFEXC','     ','TRANS',&
619        'USWRF','ULWRF','CDLYR','CPRAT','     ','TTRAD','     ','HGTN ','WILT ',&
620        'FLDCP','HPBL','SLTYP','CNWAT','SOTYP','VGTYP','BMIXL','AMIXL','PEVAP',&
621        'SNOHF','SMREF','SMDRY','WVINC','WCINC','BGRUN','SSRUN','    ','WVCON',&
622        'SNOWC','SNOT','POROS','WCCON','WVUFL','WVVFL','WCUFL','WCVFL','RCS  ',&
623        'RCT','RCQ','RCSOL','SWHR','LWHR','CD','FRICV','RI','  '/
624   data table132 /'PRES','PRMSL','PTEND','PVORT','ICAHT','GP','HGT','DIST',&
625        'HSTDV','TOZNE','TMP','VTMP','POT','EPOT','T MAX','T MIN','DPT',&
626        'DEPR','LAPR','VIS','RDSP1','RDSP2','RDSP3','PLI','TMP A','PRESA',&
627        'GP A','WVSP1','WVSP2','WVSP3','WDIR','WIND','U GRD','V GRD','STRM',&
628        'V POT','MNTSF','SGCVV','V VEL','DZDT','ABS V','ABD D','REL V','REL D',&
629        'VUCSH','VVCSG','DIR C','SP C','UOGRD','VOGRD','SPF H','R H','MIXR',&
630        'P WAT','VAPP','SAT D','EVP','C ICE','PRATE','TSTM','A PCP','NCPCP',&
631        'ACPCP','SRWEQ','WEASD','SNO D','MIXHT','TTHDP','MTHD','MTH A','T CDC',&
632        'CDCON','L CDC','M CDC','H CDC','C WAT','BLI','SNO C','SNO L','WTMP',&
633        'LAND','DSL M','SFC R','ALBDO','TSOIL','SOILM','VEG','SALTY','DEN',&
634        'WATR','ICE C','ICETK','DICED','SICED','U ICE','V ICE','ICE G','ICE D',&
635        'SNO M','HTSGW','WVDIR','WVHGT','WVPER','SWDIR','SWELL','SWPER','DIRPW',&
636        'PERPW','DIRSW','PERSW','NSWRS','NLWRS','NSWRT','NLWRT','LWAVR','SWAVR',&
637        'GRAD','BRTMP','LWRAD','SWRAD','LHTFL','SHTFL','BLYDP','U FLX','V FLX',&
638        'WMIXE','IMG D',&
639 ! Table 132    NCEP2  originally the same as table 2, but they diverged.
640        'MSLSA','MSLMA','MSLET','LFT X','4LFTX','K X','S X','MCONV','VW SH',&
641        'TSLSA','BVF 2','PV MW','CRAIN','CFRZR','CICEP','CSNOW','SOILW',&
642        'PEVPR','CWORK','U-GWD','V-GWD','PV','     ','     ','     ','MFXDV',&
643        '    ','GFLUX','CIN','CAPE','TKE','CONDP','CSUSF','CSDSF','CSULF',&
644        'CSDLF','CFNSF','CFNLF','VBDSF','VDDSF','NBDSF','NDDSF','USTR',&
645        'VSTR','M FLX','LMH','LMV','SGLYR','NLAT','ELON','UMAS','VMAS','XPRATE',&
646        'LPS X','LPS Y','HGT X','HGT Y','STDZ','STDU','STDV','STDQ','STDTP','CBUW',&
647        'CBVW','CBUQN','CBVQ','CBTW ','CBQW ','CBMZW','CBTZW','CBTMW','STDRH','SDTZ',&
648        'ICWAT','SDTU','SDTV','DSWRF','DLWRF','SDTQ','MSTAV','SFEXC','MIXLY','SDTT',&
649        'USWRF','ULWRF','CDLYR','CPRAT','TTDIA','TTRAD','TTPHY','PREIX','TSD1D',&
650        'NLGSP','SDTRH','5WAVH','CNWAT','PLTRS','RHCLD','BMIXL','AMIXL','PEVAP',&
651        'SNOHF','SNOEV','MFLUX','DTRF','UTRF','BGRUN','SSRUN','    ','O3TOT',&
652        'SNOWC','SNOT','GLCR ','LRGHR','CNVHR','CNVMR','SHAHR','SHAMR','VDFHR',&
653        'VDFUA','VDFVA','VDFMR','SWHR','LWHR','CD','FRICV','RI','  '/
655     end