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