PageRenderTime 43ms CodeModel.GetById 11ms RepoModel.GetById 0ms app.codeStats 0ms

/WPS/ungrib/src/g1print.F

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