gphys 1.1.1a

Sign up to get free protection for your applications and to get access to all the features.
Files changed (428) hide show
  1. data/ChangeLog +1777 -0
  2. data/LICENSE.txt +34 -0
  3. data/README +33 -0
  4. data/Rakefile +57 -0
  5. data/TODO_ep_flux +6 -0
  6. data/bin/gdir_client +27 -0
  7. data/bin/gdir_server +129 -0
  8. data/bin/gpaop +146 -0
  9. data/bin/gpcat +148 -0
  10. data/bin/gpcut +102 -0
  11. data/bin/gpedit +228 -0
  12. data/bin/gplist +68 -0
  13. data/bin/gpmath +120 -0
  14. data/bin/gpmaxmin +128 -0
  15. data/bin/gpprint +60 -0
  16. data/bin/gpvect +706 -0
  17. data/bin/gpview +704 -0
  18. data/bin/grads2nc_with_gphys +61 -0
  19. data/doc/attribute.html +19 -0
  20. data/doc/attributenetcdf.html +15 -0
  21. data/doc/axis.html +376 -0
  22. data/doc/coordmapping.html +111 -0
  23. data/doc/coordtransform.html +36 -0
  24. data/doc/derivative/gphys-derivative.html +80 -0
  25. data/doc/derivative/index.html +21 -0
  26. data/doc/derivative/index.rd +14 -0
  27. data/doc/derivative/math-doc/document/document.css +30 -0
  28. data/doc/derivative/math-doc/document/document.html +57 -0
  29. data/doc/derivative/math-doc/document/images.aux +1 -0
  30. data/doc/derivative/math-doc/document/images.log +385 -0
  31. data/doc/derivative/math-doc/document/images.pl +186 -0
  32. data/doc/derivative/math-doc/document/images.tex +364 -0
  33. data/doc/derivative/math-doc/document/img1.png +0 -0
  34. data/doc/derivative/math-doc/document/img10.png +0 -0
  35. data/doc/derivative/math-doc/document/img11.png +0 -0
  36. data/doc/derivative/math-doc/document/img12.png +0 -0
  37. data/doc/derivative/math-doc/document/img13.png +0 -0
  38. data/doc/derivative/math-doc/document/img14.png +0 -0
  39. data/doc/derivative/math-doc/document/img15.png +0 -0
  40. data/doc/derivative/math-doc/document/img16.png +0 -0
  41. data/doc/derivative/math-doc/document/img17.png +0 -0
  42. data/doc/derivative/math-doc/document/img18.png +0 -0
  43. data/doc/derivative/math-doc/document/img19.png +0 -0
  44. data/doc/derivative/math-doc/document/img2.png +0 -0
  45. data/doc/derivative/math-doc/document/img20.png +0 -0
  46. data/doc/derivative/math-doc/document/img21.png +0 -0
  47. data/doc/derivative/math-doc/document/img22.png +0 -0
  48. data/doc/derivative/math-doc/document/img23.png +0 -0
  49. data/doc/derivative/math-doc/document/img24.png +0 -0
  50. data/doc/derivative/math-doc/document/img25.png +0 -0
  51. data/doc/derivative/math-doc/document/img26.png +0 -0
  52. data/doc/derivative/math-doc/document/img27.png +0 -0
  53. data/doc/derivative/math-doc/document/img28.png +0 -0
  54. data/doc/derivative/math-doc/document/img29.png +0 -0
  55. data/doc/derivative/math-doc/document/img3.png +0 -0
  56. data/doc/derivative/math-doc/document/img30.png +0 -0
  57. data/doc/derivative/math-doc/document/img4.png +0 -0
  58. data/doc/derivative/math-doc/document/img5.png +0 -0
  59. data/doc/derivative/math-doc/document/img6.png +0 -0
  60. data/doc/derivative/math-doc/document/img7.png +0 -0
  61. data/doc/derivative/math-doc/document/img8.png +0 -0
  62. data/doc/derivative/math-doc/document/img9.png +0 -0
  63. data/doc/derivative/math-doc/document/index.html +57 -0
  64. data/doc/derivative/math-doc/document/labels.pl +13 -0
  65. data/doc/derivative/math-doc/document/next.png +0 -0
  66. data/doc/derivative/math-doc/document/next_g.png +0 -0
  67. data/doc/derivative/math-doc/document/node1.html +238 -0
  68. data/doc/derivative/math-doc/document/node2.html +75 -0
  69. data/doc/derivative/math-doc/document/prev.png +0 -0
  70. data/doc/derivative/math-doc/document/prev_g.png +0 -0
  71. data/doc/derivative/math-doc/document/up.png +0 -0
  72. data/doc/derivative/math-doc/document/up_g.png +0 -0
  73. data/doc/derivative/math-doc/document.pdf +0 -0
  74. data/doc/derivative/math-doc/document.tex +158 -0
  75. data/doc/derivative/numru-derivative.html +129 -0
  76. data/doc/ep_flux/ep_flux.html +469 -0
  77. data/doc/ep_flux/ggraph_on_merdional_section.html +71 -0
  78. data/doc/ep_flux/index.html +31 -0
  79. data/doc/ep_flux/index.rd +24 -0
  80. data/doc/ep_flux/math-doc/document/WARNINGS +1 -0
  81. data/doc/ep_flux/math-doc/document/contents.png +0 -0
  82. data/doc/ep_flux/math-doc/document/crossref.png +0 -0
  83. data/doc/ep_flux/math-doc/document/document.css +30 -0
  84. data/doc/ep_flux/math-doc/document/document.html +101 -0
  85. data/doc/ep_flux/math-doc/document/images.aux +1 -0
  86. data/doc/ep_flux/math-doc/document/images.log +1375 -0
  87. data/doc/ep_flux/math-doc/document/images.pl +1328 -0
  88. data/doc/ep_flux/math-doc/document/images.tex +1471 -0
  89. data/doc/ep_flux/math-doc/document/img1.png +0 -0
  90. data/doc/ep_flux/math-doc/document/img10.png +0 -0
  91. data/doc/ep_flux/math-doc/document/img100.png +0 -0
  92. data/doc/ep_flux/math-doc/document/img101.png +0 -0
  93. data/doc/ep_flux/math-doc/document/img102.png +0 -0
  94. data/doc/ep_flux/math-doc/document/img103.png +0 -0
  95. data/doc/ep_flux/math-doc/document/img104.png +0 -0
  96. data/doc/ep_flux/math-doc/document/img105.png +0 -0
  97. data/doc/ep_flux/math-doc/document/img106.png +0 -0
  98. data/doc/ep_flux/math-doc/document/img107.png +0 -0
  99. data/doc/ep_flux/math-doc/document/img108.png +0 -0
  100. data/doc/ep_flux/math-doc/document/img109.png +0 -0
  101. data/doc/ep_flux/math-doc/document/img11.png +0 -0
  102. data/doc/ep_flux/math-doc/document/img110.png +0 -0
  103. data/doc/ep_flux/math-doc/document/img111.png +0 -0
  104. data/doc/ep_flux/math-doc/document/img112.png +0 -0
  105. data/doc/ep_flux/math-doc/document/img113.png +0 -0
  106. data/doc/ep_flux/math-doc/document/img114.png +0 -0
  107. data/doc/ep_flux/math-doc/document/img115.png +0 -0
  108. data/doc/ep_flux/math-doc/document/img116.png +0 -0
  109. data/doc/ep_flux/math-doc/document/img117.png +0 -0
  110. data/doc/ep_flux/math-doc/document/img118.png +0 -0
  111. data/doc/ep_flux/math-doc/document/img119.png +0 -0
  112. data/doc/ep_flux/math-doc/document/img12.png +0 -0
  113. data/doc/ep_flux/math-doc/document/img120.png +0 -0
  114. data/doc/ep_flux/math-doc/document/img121.png +0 -0
  115. data/doc/ep_flux/math-doc/document/img122.png +0 -0
  116. data/doc/ep_flux/math-doc/document/img123.png +0 -0
  117. data/doc/ep_flux/math-doc/document/img124.png +0 -0
  118. data/doc/ep_flux/math-doc/document/img125.png +0 -0
  119. data/doc/ep_flux/math-doc/document/img126.png +0 -0
  120. data/doc/ep_flux/math-doc/document/img127.png +0 -0
  121. data/doc/ep_flux/math-doc/document/img128.png +0 -0
  122. data/doc/ep_flux/math-doc/document/img129.png +0 -0
  123. data/doc/ep_flux/math-doc/document/img13.png +0 -0
  124. data/doc/ep_flux/math-doc/document/img130.png +0 -0
  125. data/doc/ep_flux/math-doc/document/img131.png +0 -0
  126. data/doc/ep_flux/math-doc/document/img132.png +0 -0
  127. data/doc/ep_flux/math-doc/document/img133.png +0 -0
  128. data/doc/ep_flux/math-doc/document/img134.png +0 -0
  129. data/doc/ep_flux/math-doc/document/img135.png +0 -0
  130. data/doc/ep_flux/math-doc/document/img136.png +0 -0
  131. data/doc/ep_flux/math-doc/document/img137.png +0 -0
  132. data/doc/ep_flux/math-doc/document/img138.png +0 -0
  133. data/doc/ep_flux/math-doc/document/img139.png +0 -0
  134. data/doc/ep_flux/math-doc/document/img14.png +0 -0
  135. data/doc/ep_flux/math-doc/document/img140.png +0 -0
  136. data/doc/ep_flux/math-doc/document/img141.png +0 -0
  137. data/doc/ep_flux/math-doc/document/img142.png +0 -0
  138. data/doc/ep_flux/math-doc/document/img143.png +0 -0
  139. data/doc/ep_flux/math-doc/document/img144.png +0 -0
  140. data/doc/ep_flux/math-doc/document/img145.png +0 -0
  141. data/doc/ep_flux/math-doc/document/img146.png +0 -0
  142. data/doc/ep_flux/math-doc/document/img147.png +0 -0
  143. data/doc/ep_flux/math-doc/document/img148.png +0 -0
  144. data/doc/ep_flux/math-doc/document/img149.png +0 -0
  145. data/doc/ep_flux/math-doc/document/img15.png +0 -0
  146. data/doc/ep_flux/math-doc/document/img150.png +0 -0
  147. data/doc/ep_flux/math-doc/document/img151.png +0 -0
  148. data/doc/ep_flux/math-doc/document/img152.png +0 -0
  149. data/doc/ep_flux/math-doc/document/img153.png +0 -0
  150. data/doc/ep_flux/math-doc/document/img154.png +0 -0
  151. data/doc/ep_flux/math-doc/document/img155.png +0 -0
  152. data/doc/ep_flux/math-doc/document/img156.png +0 -0
  153. data/doc/ep_flux/math-doc/document/img157.png +0 -0
  154. data/doc/ep_flux/math-doc/document/img158.png +0 -0
  155. data/doc/ep_flux/math-doc/document/img159.png +0 -0
  156. data/doc/ep_flux/math-doc/document/img16.png +0 -0
  157. data/doc/ep_flux/math-doc/document/img160.png +0 -0
  158. data/doc/ep_flux/math-doc/document/img161.png +0 -0
  159. data/doc/ep_flux/math-doc/document/img162.png +0 -0
  160. data/doc/ep_flux/math-doc/document/img163.png +0 -0
  161. data/doc/ep_flux/math-doc/document/img164.png +0 -0
  162. data/doc/ep_flux/math-doc/document/img165.png +0 -0
  163. data/doc/ep_flux/math-doc/document/img166.png +0 -0
  164. data/doc/ep_flux/math-doc/document/img167.png +0 -0
  165. data/doc/ep_flux/math-doc/document/img168.png +0 -0
  166. data/doc/ep_flux/math-doc/document/img169.png +0 -0
  167. data/doc/ep_flux/math-doc/document/img17.png +0 -0
  168. data/doc/ep_flux/math-doc/document/img170.png +0 -0
  169. data/doc/ep_flux/math-doc/document/img171.png +0 -0
  170. data/doc/ep_flux/math-doc/document/img172.png +0 -0
  171. data/doc/ep_flux/math-doc/document/img173.png +0 -0
  172. data/doc/ep_flux/math-doc/document/img174.png +0 -0
  173. data/doc/ep_flux/math-doc/document/img175.png +0 -0
  174. data/doc/ep_flux/math-doc/document/img176.png +0 -0
  175. data/doc/ep_flux/math-doc/document/img177.png +0 -0
  176. data/doc/ep_flux/math-doc/document/img178.png +0 -0
  177. data/doc/ep_flux/math-doc/document/img179.png +0 -0
  178. data/doc/ep_flux/math-doc/document/img18.png +0 -0
  179. data/doc/ep_flux/math-doc/document/img180.png +0 -0
  180. data/doc/ep_flux/math-doc/document/img181.png +0 -0
  181. data/doc/ep_flux/math-doc/document/img182.png +0 -0
  182. data/doc/ep_flux/math-doc/document/img183.png +0 -0
  183. data/doc/ep_flux/math-doc/document/img184.png +0 -0
  184. data/doc/ep_flux/math-doc/document/img185.png +0 -0
  185. data/doc/ep_flux/math-doc/document/img186.png +0 -0
  186. data/doc/ep_flux/math-doc/document/img187.png +0 -0
  187. data/doc/ep_flux/math-doc/document/img188.png +0 -0
  188. data/doc/ep_flux/math-doc/document/img189.png +0 -0
  189. data/doc/ep_flux/math-doc/document/img19.png +0 -0
  190. data/doc/ep_flux/math-doc/document/img190.png +0 -0
  191. data/doc/ep_flux/math-doc/document/img191.png +0 -0
  192. data/doc/ep_flux/math-doc/document/img192.png +0 -0
  193. data/doc/ep_flux/math-doc/document/img193.png +0 -0
  194. data/doc/ep_flux/math-doc/document/img194.png +0 -0
  195. data/doc/ep_flux/math-doc/document/img195.png +0 -0
  196. data/doc/ep_flux/math-doc/document/img196.png +0 -0
  197. data/doc/ep_flux/math-doc/document/img197.png +0 -0
  198. data/doc/ep_flux/math-doc/document/img198.png +0 -0
  199. data/doc/ep_flux/math-doc/document/img199.png +0 -0
  200. data/doc/ep_flux/math-doc/document/img2.png +0 -0
  201. data/doc/ep_flux/math-doc/document/img20.png +0 -0
  202. data/doc/ep_flux/math-doc/document/img200.png +0 -0
  203. data/doc/ep_flux/math-doc/document/img21.png +0 -0
  204. data/doc/ep_flux/math-doc/document/img22.png +0 -0
  205. data/doc/ep_flux/math-doc/document/img23.png +0 -0
  206. data/doc/ep_flux/math-doc/document/img24.png +0 -0
  207. data/doc/ep_flux/math-doc/document/img25.png +0 -0
  208. data/doc/ep_flux/math-doc/document/img26.png +0 -0
  209. data/doc/ep_flux/math-doc/document/img27.png +0 -0
  210. data/doc/ep_flux/math-doc/document/img28.png +0 -0
  211. data/doc/ep_flux/math-doc/document/img29.png +0 -0
  212. data/doc/ep_flux/math-doc/document/img3.png +0 -0
  213. data/doc/ep_flux/math-doc/document/img30.png +0 -0
  214. data/doc/ep_flux/math-doc/document/img31.png +0 -0
  215. data/doc/ep_flux/math-doc/document/img32.png +0 -0
  216. data/doc/ep_flux/math-doc/document/img33.png +0 -0
  217. data/doc/ep_flux/math-doc/document/img34.png +0 -0
  218. data/doc/ep_flux/math-doc/document/img35.png +0 -0
  219. data/doc/ep_flux/math-doc/document/img36.png +0 -0
  220. data/doc/ep_flux/math-doc/document/img37.png +0 -0
  221. data/doc/ep_flux/math-doc/document/img38.png +0 -0
  222. data/doc/ep_flux/math-doc/document/img39.png +0 -0
  223. data/doc/ep_flux/math-doc/document/img4.png +0 -0
  224. data/doc/ep_flux/math-doc/document/img40.png +0 -0
  225. data/doc/ep_flux/math-doc/document/img41.png +0 -0
  226. data/doc/ep_flux/math-doc/document/img42.png +0 -0
  227. data/doc/ep_flux/math-doc/document/img43.png +0 -0
  228. data/doc/ep_flux/math-doc/document/img44.png +0 -0
  229. data/doc/ep_flux/math-doc/document/img45.png +0 -0
  230. data/doc/ep_flux/math-doc/document/img46.png +0 -0
  231. data/doc/ep_flux/math-doc/document/img47.png +0 -0
  232. data/doc/ep_flux/math-doc/document/img48.png +0 -0
  233. data/doc/ep_flux/math-doc/document/img49.png +0 -0
  234. data/doc/ep_flux/math-doc/document/img5.png +0 -0
  235. data/doc/ep_flux/math-doc/document/img50.png +0 -0
  236. data/doc/ep_flux/math-doc/document/img51.png +0 -0
  237. data/doc/ep_flux/math-doc/document/img52.png +0 -0
  238. data/doc/ep_flux/math-doc/document/img53.png +0 -0
  239. data/doc/ep_flux/math-doc/document/img54.png +0 -0
  240. data/doc/ep_flux/math-doc/document/img55.png +0 -0
  241. data/doc/ep_flux/math-doc/document/img56.png +0 -0
  242. data/doc/ep_flux/math-doc/document/img57.png +0 -0
  243. data/doc/ep_flux/math-doc/document/img58.png +0 -0
  244. data/doc/ep_flux/math-doc/document/img59.png +0 -0
  245. data/doc/ep_flux/math-doc/document/img6.png +0 -0
  246. data/doc/ep_flux/math-doc/document/img60.png +0 -0
  247. data/doc/ep_flux/math-doc/document/img61.png +0 -0
  248. data/doc/ep_flux/math-doc/document/img62.png +0 -0
  249. data/doc/ep_flux/math-doc/document/img63.png +0 -0
  250. data/doc/ep_flux/math-doc/document/img64.png +0 -0
  251. data/doc/ep_flux/math-doc/document/img65.png +0 -0
  252. data/doc/ep_flux/math-doc/document/img66.png +0 -0
  253. data/doc/ep_flux/math-doc/document/img67.png +0 -0
  254. data/doc/ep_flux/math-doc/document/img68.png +0 -0
  255. data/doc/ep_flux/math-doc/document/img69.png +0 -0
  256. data/doc/ep_flux/math-doc/document/img7.png +0 -0
  257. data/doc/ep_flux/math-doc/document/img70.png +0 -0
  258. data/doc/ep_flux/math-doc/document/img71.png +0 -0
  259. data/doc/ep_flux/math-doc/document/img72.png +0 -0
  260. data/doc/ep_flux/math-doc/document/img73.png +0 -0
  261. data/doc/ep_flux/math-doc/document/img74.png +0 -0
  262. data/doc/ep_flux/math-doc/document/img75.png +0 -0
  263. data/doc/ep_flux/math-doc/document/img76.png +0 -0
  264. data/doc/ep_flux/math-doc/document/img77.png +0 -0
  265. data/doc/ep_flux/math-doc/document/img78.png +0 -0
  266. data/doc/ep_flux/math-doc/document/img79.png +0 -0
  267. data/doc/ep_flux/math-doc/document/img8.png +0 -0
  268. data/doc/ep_flux/math-doc/document/img80.png +0 -0
  269. data/doc/ep_flux/math-doc/document/img81.png +0 -0
  270. data/doc/ep_flux/math-doc/document/img82.png +0 -0
  271. data/doc/ep_flux/math-doc/document/img83.png +0 -0
  272. data/doc/ep_flux/math-doc/document/img84.png +0 -0
  273. data/doc/ep_flux/math-doc/document/img85.png +0 -0
  274. data/doc/ep_flux/math-doc/document/img86.png +0 -0
  275. data/doc/ep_flux/math-doc/document/img87.png +0 -0
  276. data/doc/ep_flux/math-doc/document/img88.png +0 -0
  277. data/doc/ep_flux/math-doc/document/img89.png +0 -0
  278. data/doc/ep_flux/math-doc/document/img9.png +0 -0
  279. data/doc/ep_flux/math-doc/document/img90.png +0 -0
  280. data/doc/ep_flux/math-doc/document/img91.png +0 -0
  281. data/doc/ep_flux/math-doc/document/img92.png +0 -0
  282. data/doc/ep_flux/math-doc/document/img93.png +0 -0
  283. data/doc/ep_flux/math-doc/document/img94.png +0 -0
  284. data/doc/ep_flux/math-doc/document/img95.png +0 -0
  285. data/doc/ep_flux/math-doc/document/img96.png +0 -0
  286. data/doc/ep_flux/math-doc/document/img97.png +0 -0
  287. data/doc/ep_flux/math-doc/document/img98.png +0 -0
  288. data/doc/ep_flux/math-doc/document/img99.png +0 -0
  289. data/doc/ep_flux/math-doc/document/index.html +101 -0
  290. data/doc/ep_flux/math-doc/document/internals.pl +258 -0
  291. data/doc/ep_flux/math-doc/document/labels.pl +265 -0
  292. data/doc/ep_flux/math-doc/document/next.png +0 -0
  293. data/doc/ep_flux/math-doc/document/next_g.png +0 -0
  294. data/doc/ep_flux/math-doc/document/node1.html +104 -0
  295. data/doc/ep_flux/math-doc/document/node10.html +164 -0
  296. data/doc/ep_flux/math-doc/document/node11.html +86 -0
  297. data/doc/ep_flux/math-doc/document/node12.html +166 -0
  298. data/doc/ep_flux/math-doc/document/node13.html +897 -0
  299. data/doc/ep_flux/math-doc/document/node14.html +1065 -0
  300. data/doc/ep_flux/math-doc/document/node15.html +72 -0
  301. data/doc/ep_flux/math-doc/document/node16.html +81 -0
  302. data/doc/ep_flux/math-doc/document/node2.html +82 -0
  303. data/doc/ep_flux/math-doc/document/node3.html +91 -0
  304. data/doc/ep_flux/math-doc/document/node4.html +149 -0
  305. data/doc/ep_flux/math-doc/document/node5.html +330 -0
  306. data/doc/ep_flux/math-doc/document/node6.html +99 -0
  307. data/doc/ep_flux/math-doc/document/node7.html +98 -0
  308. data/doc/ep_flux/math-doc/document/node8.html +83 -0
  309. data/doc/ep_flux/math-doc/document/node9.html +140 -0
  310. data/doc/ep_flux/math-doc/document/prev.png +0 -0
  311. data/doc/ep_flux/math-doc/document/prev_g.png +0 -0
  312. data/doc/ep_flux/math-doc/document/up.png +0 -0
  313. data/doc/ep_flux/math-doc/document/up_g.png +0 -0
  314. data/doc/ep_flux/math-doc/document.pdf +0 -0
  315. data/doc/ep_flux/math-doc/document.tex +2018 -0
  316. data/doc/gdir.html +412 -0
  317. data/doc/gdir_client.html +16 -0
  318. data/doc/gdir_connect_ftp-like.html +61 -0
  319. data/doc/gdir_server.html +45 -0
  320. data/doc/ggraph.html +1615 -0
  321. data/doc/gpcat.html +44 -0
  322. data/doc/gpcut.html +41 -0
  323. data/doc/gphys.html +532 -0
  324. data/doc/gphys_fft.html +324 -0
  325. data/doc/gphys_grads_io.html +69 -0
  326. data/doc/gphys_grib_io.html +82 -0
  327. data/doc/gphys_io.html +120 -0
  328. data/doc/gphys_io_common.html +18 -0
  329. data/doc/gphys_netcdf_io.html +283 -0
  330. data/doc/gplist.html +24 -0
  331. data/doc/gpmath.html +51 -0
  332. data/doc/gpmaxmin.html +31 -0
  333. data/doc/gpprint.html +34 -0
  334. data/doc/gpview.html +270 -0
  335. data/doc/grads2nc_with_gphys.html +21 -0
  336. data/doc/grads_gridded.html +307 -0
  337. data/doc/grib.html +144 -0
  338. data/doc/grid.html +212 -0
  339. data/doc/index.html +133 -0
  340. data/doc/index.rd +127 -0
  341. data/doc/netcdf_convention.html +136 -0
  342. data/doc/unumeric.html +176 -0
  343. data/doc/update +64 -0
  344. data/doc/varray.html +299 -0
  345. data/doc/varraycomposite.html +67 -0
  346. data/ext_coord.c +209 -0
  347. data/ext_init.c +7 -0
  348. data/extconf.rb +42 -0
  349. data/install.rb +130 -0
  350. data/interpo.c +497 -0
  351. data/lib/numru/dcl_mouse.rb +71 -0
  352. data/lib/numru/dclext_datetime_ax.rb +220 -0
  353. data/lib/numru/derivative.rb +348 -0
  354. data/lib/numru/ganalysis/covariance.rb +154 -0
  355. data/lib/numru/ganalysis/eof.rb +298 -0
  356. data/lib/numru/ganalysis/histogram.rb +252 -0
  357. data/lib/numru/ganalysis/met.rb +317 -0
  358. data/lib/numru/ganalysis/planet.rb +182 -0
  359. data/lib/numru/ganalysis.rb +7 -0
  360. data/lib/numru/gdir.rb +1038 -0
  361. data/lib/numru/gdir_connect_ftp-like.rb +149 -0
  362. data/lib/numru/ggraph.rb +5838 -0
  363. data/lib/numru/ggraph_on_merdional_section.rb +178 -0
  364. data/lib/numru/gphys/assoccoords.rb +359 -0
  365. data/lib/numru/gphys/attribute.rb +129 -0
  366. data/lib/numru/gphys/attributenetcdf.rb +80 -0
  367. data/lib/numru/gphys/axis.rb +963 -0
  368. data/lib/numru/gphys/coordmapping.rb +286 -0
  369. data/lib/numru/gphys/coordtransform.rb +209 -0
  370. data/lib/numru/gphys/derivative.rb +314 -0
  371. data/lib/numru/gphys/ep_flux.rb +868 -0
  372. data/lib/numru/gphys/gpcommon.rb +52 -0
  373. data/lib/numru/gphys/gphys.rb +1207 -0
  374. data/lib/numru/gphys/gphys_fft.rb +886 -0
  375. data/lib/numru/gphys/gphys_grads_io.rb +212 -0
  376. data/lib/numru/gphys/gphys_grib_io.rb +214 -0
  377. data/lib/numru/gphys/gphys_gtool3_io.rb +162 -0
  378. data/lib/numru/gphys/gphys_hdfeos5_io.rb +672 -0
  379. data/lib/numru/gphys/gphys_io.rb +452 -0
  380. data/lib/numru/gphys/gphys_io_common.rb +126 -0
  381. data/lib/numru/gphys/gphys_netcdf_io.rb +800 -0
  382. data/lib/numru/gphys/gphys_nusdas_io.rb +132 -0
  383. data/lib/numru/gphys/grads_gridded.rb +1638 -0
  384. data/lib/numru/gphys/grib.rb +2049 -0
  385. data/lib/numru/gphys/grib_params.rb +1465 -0
  386. data/lib/numru/gphys/grid.rb +723 -0
  387. data/lib/numru/gphys/gtool3.rb +771 -0
  388. data/lib/numru/gphys/interpolate.rb +854 -0
  389. data/lib/numru/gphys/narray_ext.rb +34 -0
  390. data/lib/numru/gphys/netcdf_convention.rb +406 -0
  391. data/lib/numru/gphys/subsetmapping.rb +332 -0
  392. data/lib/numru/gphys/unumeric.rb +522 -0
  393. data/lib/numru/gphys/varray.rb +1109 -0
  394. data/lib/numru/gphys/varraycomposite.rb +415 -0
  395. data/lib/numru/gphys/varraygrads.rb +225 -0
  396. data/lib/numru/gphys/varraygrib.rb +177 -0
  397. data/lib/numru/gphys/varraygtool3.rb +226 -0
  398. data/lib/numru/gphys/varrayhdfeos5.rb +451 -0
  399. data/lib/numru/gphys/varraynetcdf.rb +350 -0
  400. data/lib/numru/gphys/varraynusdas.rb +59 -0
  401. data/lib/numru/gphys.rb +9 -0
  402. data/lib/numru/htdir.rb +170 -0
  403. data/multibitIO.c +567 -0
  404. data/sample/cira86_to_nc.rb +122 -0
  405. data/sample/druby_cli1.rb +21 -0
  406. data/sample/druby_cli2.rb +34 -0
  407. data/sample/druby_serv1.rb +30 -0
  408. data/sample/druby_serv2.rb +64 -0
  409. data/sample/ep_flux/demo_NCEP_1.rb +48 -0
  410. data/sample/ep_flux/demo_NCEP_2.rb +57 -0
  411. data/sample/ep_flux/demo_NCEP_3.rb +81 -0
  412. data/sample/ggraph_latlon_labelling_dr002690.rb +159 -0
  413. data/sample/ggraph_mapfit-axes_dr002687.rb +131 -0
  414. data/sample/map_projection.rb +121 -0
  415. data/sample/ncep_theta_coord.rb +79 -0
  416. data/test/eof_slp.rb +28 -0
  417. data/test/mltbit.dat +0 -0
  418. data/test/test_ep_flux.rb +533 -0
  419. data/test/test_multibitIO.rb +19 -0
  420. data/testdata/T.jan.ctl +12 -0
  421. data/testdata/T.jan.dat +0 -0
  422. data/testdata/T.jan.grib +0 -0
  423. data/testdata/T.jan.nc +0 -0
  424. data/testdata/T.jan.packed.withmiss.nc +0 -0
  425. data/testdata/UV.jan.nc +0 -0
  426. data/testdata/assoc_crds.nc +0 -0
  427. data/testdata/cira86.dat +1332 -0
  428. metadata +621 -0
data/bin/gpedit ADDED
@@ -0,0 +1,228 @@
1
+ #!/usr/bin/env ruby
2
+ =begin
3
+ = NAME
4
+
5
+ :gpedit:
6
+ Create or overwrite the attributes of a variable specified by
7
+ a gtool4-type URL (Only netCDF files are supported).
8
+
9
+ = USAGE
10
+
11
+ % gpedit [options] path@[varname:var_attr=...][varname|+global_attr]
12
+
13
+ = EXAMPLES
14
+
15
+ * Add
16
+ % gpedit data.nc@temp:units=W/m
17
+ % gpedit -a data.nc@temp:missing_value=-2.0e20
18
+ % gpedit --add data.nc@temp+title=\"surface temperature\"
19
+
20
+ * Delete
21
+ % gpedit -d data.nc@lon:topology
22
+ % gpedit --delete data.nc@lon+Conventions
23
+ "
24
+ = HISTORY
25
+
26
+ 2010/03/10 Y SASAKI (change help block into RD format)
27
+ 2007/07/18 Y. Morikawa 'gpattr' is renamed to 'gpedit'
28
+ 2006/09/29 Y. Morikawa A value looks like numeric is treated as a numerical value
29
+ 2005/01/09 Y. Morikawa
30
+ 2005/01/07 D. Tsukahara
31
+
32
+
33
+ =end
34
+ ##################################################
35
+ #= gpedit
36
+ #== SYNOPSIS
37
+ SYNOPSIS = <<-"SYNOP"
38
+ Create or overwrite the attributes of a variable specified by
39
+ a gtool4-type URL (Only netCDF files are supported).
40
+ SYNOP
41
+
42
+ #== HISTORY
43
+ #
44
+ # 2010/03/10 Y SASAKI (change help block into RD format)
45
+ # 2007/07/18 Y. Morikawa 'gpattr' is renamed to 'gpedit'
46
+ # 2006/09/29 Y. Morikawa A value looks like numeric is treated as a numerical value
47
+ # 2005/01/09 Y. Morikawa
48
+ # 2005/01/07 D. Tsukahara
49
+ #
50
+ #==USAGE
51
+ URLFMT = "path@[varname:var_attr=...][varname|+global_attr]"
52
+ USAGE = "
53
+ % #{File.basename(__FILE__)} [options] url
54
+
55
+ where the format of the url is
56
+
57
+ #{URLFMT}
58
+ "
59
+ #==EXAMPLES
60
+ EXAMPLES = "
61
+ * Add
62
+ % #{File.basename(__FILE__)} data.nc@temp:units=W/m
63
+ % #{File.basename(__FILE__)} -a data.nc@temp:missing_value=-2.0e20
64
+ % #{File.basename(__FILE__)} --add data.nc@temp+title=\"surface temperature\"
65
+
66
+ * Delete
67
+ % #{File.basename(__FILE__)} -d data.nc@lon:topology
68
+ % #{File.basename(__FILE__)} --delete data.nc@lon+Conventions
69
+ "
70
+ #
71
+ ##################################################
72
+ require "optparse"
73
+ require "numru/netcdf"
74
+ include NumRu
75
+
76
+ opt = OptionParser.new
77
+ OPTS = {}
78
+ ARGV.options{|opt|
79
+
80
+ opt.summary_width = 23
81
+ opt.summary_indent = ' '*6
82
+
83
+ opt.on( '-a', '--add',
84
+ "Add attribute (default)."
85
+ ){|v| OPTS[:add] = v}
86
+
87
+ opt.on( '-d', '--delete',
88
+ "Delete attribute."
89
+ ){|v| OPTS[:delete] = v}
90
+
91
+ opt.on_tail('-h', '-H', '--help',
92
+ "Show this help message.\n"
93
+ ){|v| OPTS[:help] = v}
94
+
95
+ opt.parse!
96
+ }
97
+
98
+ ## help
99
+ def help(opt)
100
+ print <<-"EOF"
101
+
102
+ #{File.basename(__FILE__)}:
103
+ #{SYNOPSIS}
104
+ USAGE: #{USAGE}
105
+ OPTION: \n#{opt.to_a[1..-1].join("")}
106
+ EXAMPLES:
107
+ #{EXAMPLES}
108
+ EOF
109
+ end
110
+ private :help
111
+
112
+
113
+ #####################################################
114
+
115
+ def to_appropriate_type(str)
116
+ if str =~ /\.|e/i
117
+ val = str.to_f
118
+ else
119
+ val = str.to_i
120
+ end
121
+ if val.to_i == 0
122
+ unless str =~ /^0+((\.0+)?(e\d+)?)?$/i
123
+ val = str
124
+ end
125
+ end
126
+ return val
127
+ end
128
+
129
+ def url_error(msg)
130
+ $stderr.print <<-"EOF"
131
+
132
+ Error: invalid URL: #{msg}.
133
+ Current URL format is
134
+
135
+ #{URLFMT}
136
+
137
+ EOF
138
+ exit 1
139
+ end
140
+
141
+ def parse_gturl_for_attr(gturl)
142
+ if /(.*)@(.*)/ =~ gturl
143
+ file = $1
144
+ var = $2
145
+ else
146
+ url_error "'@' between path & variable is not found"
147
+ end
148
+ if /(.*):(.*)/ =~ var
149
+ var_name = var.split(":")[0]
150
+ att = var.split(":")[1]
151
+ if /(.*)\=(.*)/ =~ att
152
+ var_att = att.split("=")[0]
153
+ global_att = nil
154
+ att_val = to_appropriate_type(var.split("=")[1])
155
+ elsif OPTS[:delete]
156
+ var_att = att
157
+ global_att = nil
158
+ att_val = nil
159
+ else
160
+ url_error "'=' between atribute name & value is not found"
161
+ end
162
+ elsif /(.*)\+(.*)/ =~ var
163
+ var_name = var.split("+")[0]
164
+ att = var.split("+")[1]
165
+ if /(.*)\=(.*)/ =~ att
166
+ var_att = nil
167
+ global_att = att.split("=")[0]
168
+ att_val = to_appropriate_type(att.split("=")[1])
169
+ elsif OPTS[:delete]
170
+ var_att = nil
171
+ global_att = att
172
+ att_val = nil
173
+ else
174
+ url_error "'=' between atribute name & value is not found"
175
+ end
176
+ else
177
+ url_error "':' or '+' between atribute name & value is not found"
178
+ end
179
+ if !(att_val) && !OPTS[:delete]
180
+ url_error "attribute value is not found. you must point out unless delete attribute"
181
+ end
182
+ [file, var_name, var_att, global_att, att_val]
183
+ end
184
+ #####################################################
185
+
186
+ if OPTS[:help] || ARGV.length != 1 then
187
+ help(opt)
188
+ exit
189
+ end
190
+
191
+ gturl = ARGV[0]
192
+ file, var, var_att, global_att, att_val = parse_gturl_for_attr(gturl)
193
+
194
+ begin
195
+ nc = NetCDF.new(file, "r")
196
+ nc.close
197
+ rescue NetcdfSyserr
198
+ $stderr.print " Error: " + file + ": " + $!.to_s + "\n"
199
+ exit 1
200
+ rescue NetcdfNotnc
201
+ $stderr.print " Error: " + file + ": " + $!.to_s + "\n"
202
+ $stderr.print " \"#{File.basename(__FILE__)}\" supports only netCDF files.\n"
203
+ exit 1
204
+ end
205
+
206
+ nc = NetCDF.new(file, "a+")
207
+ if nc.var(var)
208
+ var = nc.var(var)
209
+ elsif nc.dim(var)
210
+ var = nc.dim(var)
211
+ end
212
+ nc.redef
213
+ if var.class.to_s == "String"
214
+ $stderr.print " Error: #{file}@#{var}: variable is not found.\n"
215
+ exit 1
216
+ end
217
+ if OPTS[:delete]
218
+ begin
219
+ nc.att(global_att).delete if global_att
220
+ var.att(var_att).delete if var_att
221
+ rescue NoMethodError
222
+ print " Warning: " + gturl + " is not exist.\n"
223
+ end
224
+ else
225
+ nc.put_att(global_att, att_val) if global_att
226
+ var.put_att(var_att, att_val) if var_att
227
+ end
228
+ nc.close
data/bin/gplist ADDED
@@ -0,0 +1,68 @@
1
+ #!/usr/bin/env ruby
2
+ =begin
3
+ = NAME
4
+
5
+ gplist - print out info on GPhys-compatible variables in specified files.
6
+
7
+ = Usage
8
+
9
+ % gplist [-h] [ FILES... ]
10
+
11
+ where FILES are plane files (NetCDF, grib, GrADS control..) or directories.
12
+ If omitted, equivalent to specifing the current directory.
13
+
14
+ = HISTORY
15
+
16
+ 2005/05/15 S Takehiro (created)
17
+ 2005/06/21 T Horinouchi (modified to use GDir (non-recursive version))
18
+ 2005/08/10 S Takehiro (utilize internal function for printing help message)
19
+ 2005/08/23 S Takehiro (common methods to gp* command moved to gpcommon.rb)
20
+ 2010/03/10 Y SASAKI (change help block into RD format)
21
+
22
+ =end
23
+
24
+ require "numru/gphys"
25
+ require "numru/gphys/gpcommon"
26
+ include NumRu
27
+
28
+ require "getoptlong"
29
+
30
+ #---------------------- Option Configuration ----------------------
31
+ parser = GetoptLong.new(
32
+ ["--help", "-h", GetoptLong::NO_ARGUMENT ])
33
+
34
+ begin
35
+ parser.each do |opt, arg|
36
+ case opt
37
+ when "--help"
38
+ help
39
+ exit(0)
40
+ end
41
+ end
42
+ rescue
43
+ raise "\n\n"+usage
44
+ end
45
+
46
+ #------------------------ Do the job ------------------------
47
+ GDir.top='/'
48
+
49
+ if ARGV.length==0
50
+ paths = ['.']
51
+ else
52
+ paths = ARGV
53
+ end
54
+
55
+ paths.each do |path|
56
+ print path,":\n"
57
+ gdir = GDir.new(File.expand_path(path))
58
+ # for a plane file:
59
+ gdir.list_data_v.each{|s| print " #{s}\n"}
60
+ # for a directory:
61
+ gdir.list_dirs.each do |sub|
62
+ lsv = gdir.dir(sub).list_data_v
63
+ if lsv.length>0
64
+ print( (ARGV.length!=0 ? "#{path.sub(/\/+$/,'')}/" : ""), sub, ":\n")
65
+ lsv.each{|s| print " #{s}\n"}
66
+ end
67
+ end
68
+ end
data/bin/gpmath ADDED
@@ -0,0 +1,120 @@
1
+ #!/usr/bin/env ruby
2
+ =begin
3
+ = NAME
4
+
5
+ gpmath - operating a mathematical function to a GPhys variable.
6
+
7
+ = USAGE
8
+
9
+ % gpmath [options] path@varname[,dimname=pos1[:pos2[:thinning_intv]][,dimname=...]]
10
+
11
+ = OPTIONS
12
+
13
+ :-h,--help
14
+ print this message.
15
+ :-f func, --function func
16
+ function name to operate (optional).
17
+ Default function name is $0[2..-1].
18
+ :-n name, --name name
19
+ name of the output gphys variable (optional).
20
+ :-l name, --longname name
21
+ long_name attr. of the output gphys variable (optional).
22
+ :-o file, --output file
23
+ output filename (optional). Default output filename is 'gphys.nc'.
24
+
25
+ * Commands which operates mathematical functions to a gphys variable are
26
+ successively installed by linking this sciript as a "gp+[math. func. name]".
27
+
28
+ = HISTORY
29
+
30
+ 2005/06/21 S Takehiro (created)
31
+ 2005/07/15 S Takehiro (open_gturl method is used for opening gphys variable)
32
+ 2005/08/10 S Takehiro (utilize internal function for printing help message)
33
+ 2005/08/21 S Takehiro (global attributes copied to the output file)
34
+ 2005/08/23 S Takehiro (common methods to gp* command moved to gpcommon.rb)
35
+ 2010/03/10 Y SASAKI (change help block into RD format)
36
+
37
+ =end
38
+
39
+ require "numru/gphys"
40
+ require "numru/gphys/gpcommon"
41
+ include NumRu
42
+
43
+ require "getoptlong"
44
+
45
+ #------------------------ Default Settings ------------------------
46
+ Output_default = 'gphys.nc'
47
+ URLfmt = "path@varname[,dimname=pos1[:pos2[:thinning_intv]][,dimname=...]]"
48
+
49
+ #---------------------- Option Configuration ----------------------
50
+ parser = GetoptLong.new(
51
+ ["--output", "-o", GetoptLong::REQUIRED_ARGUMENT],
52
+ ["--function", "-f", GetoptLong::REQUIRED_ARGUMENT],
53
+ ["--name", "-n", GetoptLong::REQUIRED_ARGUMENT],
54
+ ["--longname", "-l", GetoptLong::REQUIRED_ARGUMENT],
55
+ ["--help", "-h", GetoptLong::NO_ARGUMENT ])
56
+ begin
57
+ parser.each{|opt, arg|
58
+ case opt
59
+ when "--output" then eval "$OPT_output='#{arg}'"
60
+ when "--function" then eval "$OPT_function='#{arg}'"
61
+ when "--name" then eval "$OPT_name='#{arg}'"
62
+ when "--longname" then eval "$OPT_longname='#{arg}'"
63
+ when "--help" then eval "$OPT_help=true"
64
+ else
65
+ raise "must not happen"
66
+ end
67
+ }
68
+ rescue GetoptLong::AmbigousOption, GetoptLong::InvalidOption,
69
+ GetoptLong::MissingArgument,
70
+ GetoptLong::NeedlessArgument => err
71
+ help
72
+ $srderr.puts err.message
73
+ exit 1
74
+ end
75
+
76
+ #------------------------ Help message ------------------------
77
+ if $OPT_help then
78
+ help
79
+ exit(0)
80
+ end
81
+
82
+ #------------------------ Option check ------------------------
83
+ $OPT_output = Output_default unless $OPT_output
84
+
85
+ #------------------------ Output file check --------------------------
86
+ raise "#{$OPT_output} already exists." if FileTest.exist?($OPT_output)
87
+ outncfile=NetCDF.create($OPT_output)
88
+
89
+ #------------------------ Open gphys variable ------------------------
90
+ gturl = ARGV[0]
91
+ gphys = GPhys::IO.open_gturl(gturl)
92
+ outncfile.copy_global_att(gphys) # Copy global attributes (only for NetCDF)
93
+
94
+ #--------------------- evaluate math function -----------------------
95
+ $OPT_function = File.basename($0)[2..-1] unless $OPT_function
96
+
97
+ eval <<-EOS
98
+ gphys = gphys.#{$OPT_function}
99
+ EOS
100
+
101
+ #--------------------- rename, set attribute -----------------------
102
+ if $OPT_name
103
+ gphys.rename($OPT_name)
104
+ else
105
+ gphys.rename($OPT_function+"_"+gphys.name)
106
+ end
107
+
108
+ if $OPT_longname
109
+ gphys.set_att('long_name',$OPT_longname)
110
+ else
111
+ longname=gphys.get_att('long_name')
112
+ gphys.set_att('long_name',$OPT_function + " of " + longname) if longname
113
+ end
114
+
115
+ #---------------------- Output GPhys variable ------------------------
116
+ GPhys::IO.write( outncfile, gphys )
117
+ NetCDF_Conventions.add_history(outncfile, File.basename($0)+" "+ARGV[0])
118
+ outncfile.close
119
+
120
+ print File.basename($0) +": "+ARGV[0]+ " is written to #{$OPT_output}.\n"
data/bin/gpmaxmin ADDED
@@ -0,0 +1,128 @@
1
+ #!/usr/bin/env ruby
2
+ =begin
3
+ = NAME
4
+
5
+ gpmaxmin - printing maximum and minimum values of a GPhys variable.
6
+
7
+ = USAGE
8
+
9
+ % gpmaxmin [options] path@varname[,dimname=pos1[:pos2[:thinning_intv]][,dimname=...]]
10
+
11
+ = OPTIONS
12
+
13
+ -h, --help : Print this message.
14
+ -n, --number : Number of displayed points having max and min values.
15
+ -a, --all : All points are displayed.
16
+ -i, --index : Indicies of max and min points are displayed.
17
+
18
+ = HISTORY
19
+
20
+ 2005/05/17 S Takehiro (created)
21
+ 2005/07/15 S Takehiro (open_gturl method is used for opening gphys variable)
22
+ 2005/08/07 S Takehiro (parse_gturl removed)
23
+ 2005/08/10 S Takehiro (locations having max and min values are displayed.
24
+ utilize internal function for printing help message.
25
+ --all, --index, --number options added.)
26
+ 2005/08/23 S Takehiro (common methods to gp* command moved to gpcommon.rb)
27
+ 2006/03/07 M Nakano (USAGE Typo fixed)
28
+ 2010/03/10 Y SASAKI (change help block into RD format)
29
+
30
+ =end
31
+
32
+ require "numru/gphys"
33
+ require "numru/gphys/gpcommon"
34
+ include NumRu
35
+
36
+ require "getoptlong"
37
+
38
+ #------------------------ Default Settings ------------------------
39
+ URLfmt = "path@varname[,dimname=pos1[:pos2[:thinning_intv]][,dimname=...]]"
40
+ print_maxdefault=5
41
+
42
+ #---------------------- Option Configuration ----------------------
43
+ parser = GetoptLong.new(
44
+ ["--help", "-h", GetoptLong::NO_ARGUMENT ],
45
+ ["--all", "-a", GetoptLong::NO_ARGUMENT ],
46
+ ["--index", "-i", GetoptLong::NO_ARGUMENT ],
47
+ ["--number", "-n", GetoptLong::REQUIRED_ARGUMENT])
48
+ begin
49
+ parser.each{|opt, arg|
50
+ case opt
51
+ when "--help" then eval "$OPT_help=true"
52
+ when "--number" then eval "$OPT_number='#{arg}'"
53
+ when "--all" then eval "$OPT_all=true"
54
+ when "--index" then eval "$OPT_index=true"
55
+ else
56
+ raise "must not happen"
57
+ end
58
+ }
59
+ rescue GetoptLong::AmbigousOption, GetoptLong::InvalidOption,
60
+ GetoptLong::MissingArgument,
61
+ GetoptLong::NeedlessArgument => err
62
+ help
63
+ $srderr.puts err.message
64
+ exit 1
65
+ end
66
+
67
+ #------------------------ Help message ------------------------
68
+ if ( $OPT_help )
69
+ help
70
+ exit(0)
71
+ end
72
+
73
+ #------------------------ Option check ------------------------
74
+ gturl = ARGV[0]
75
+ gphys = GPhys::IO.open_gturl(gturl)
76
+ print_maxnumber = ($OPT_number.to_i||print_maxdefault)
77
+
78
+ #-------------------- find max. and min values -----------------------
79
+ maxval = gphys.val.max # naray-miss class method is implicitly expected
80
+ minval = gphys.val.min # naray-miss class method is implicitly expected
81
+
82
+ idx1ds = gphys.val.eq(maxval).where
83
+ idxsmax = Array.new
84
+ idx1ds.each do |idx1d|
85
+ idxsmax.push(idx=Array.new)
86
+ gphys.shape.each_with_index{|len,d| idx1d,idx[d] = idx1d.divmod(len)}
87
+ end
88
+
89
+ idx1ds = gphys.val.eq(minval).where
90
+ idxsmin = Array.new
91
+ idx1ds.each do |idx1d|
92
+ idxsmin.push(idx=Array.new)
93
+ gphys.shape.each_with_index{|len,d| idx1d,idx[d] = idx1d.divmod(len)}
94
+ end
95
+
96
+ #---------------------- Output max and min values ------------------------
97
+ print_maxnumber = idxsmax.length if ( $OPT_all )
98
+
99
+ print gturl+" : max="+maxval.to_s+", at, \n"
100
+ for i in 0..[print_maxnumber,idxsmax.length].min-1
101
+ location = Array.new
102
+ idxsmax[i].each_with_index{|idx,cid|
103
+ if ($OPT_index)
104
+ location.push(gphys.coord(cid).name+"=" + idx.to_s)
105
+ else
106
+ location.push(gphys.coord(cid).name+"=" + gphys.coord(cid).val[idx].to_s)
107
+ end
108
+ }
109
+ print " "+ (i+1).to_s + " : "+ location.join(", ")+"\n"
110
+ end
111
+ print " ...(total "+idxsmax.length.to_s+" points)...\n" if ( print_maxnumber < idxsmax.length )
112
+ print "\n"
113
+
114
+ print_maxnumber = idxsmin.length if ( $OPT_all )
115
+
116
+ print gturl+" : min="+minval.to_s+", at, \n"
117
+ for i in 0..[print_maxnumber,idxsmin.length].min-1
118
+ location = Array.new
119
+ idxsmin[i].each_with_index{|idx,cid|
120
+ if ($OPT_index)
121
+ location.push(gphys.coord(cid).name+"=" + idx.to_s)
122
+ else
123
+ location.push(gphys.coord(cid).name+"=" + gphys.coord(cid).val[idx].to_s)
124
+ end
125
+ }
126
+ print " "+ (i+1).to_s + " : "+ location.join(", ")+"\n"
127
+ end
128
+ print " ...(total "+idxsmin.length.to_s+" points)...\n" if ( print_maxnumber < idxsmin.length )
data/bin/gpprint ADDED
@@ -0,0 +1,60 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ ##################################################
4
+ =begin
5
+ = NAME
6
+
7
+ gpprint - a command to print the values of a variable specified by a gtool4-type URL.
8
+
9
+ = DESCRIPTION
10
+
11
+ ((*gpprint*)) is a command-line tool to print the values of a variable
12
+ specified by a gtool4-type URL. Outputs are comma-separated ascii
13
+ texts with line feeding to avoid long lines and are made to stdout.
14
+
15
+ = USAGE
16
+
17
+ % gpprint url
18
+
19
+ where the format of the url is
20
+
21
+ path@varname[,dimname=pos1[:pos2[:thinning_intv]][,dimname=...]]
22
+
23
+ = EXAMPLES
24
+
25
+ % gpprint data.nc@temp
26
+ % gpprint data.nc@temp,lon=135.0
27
+ % gpprint data.nc@temp,lon=130:150,lat=0
28
+ % gpprint data.nc@temp,lon=130:150,lat=0:90:2
29
+
30
+ = HISTORY
31
+
32
+ 2004/12/14 T Horinouchi (created)
33
+ 2005/01/12 T Horinouchi (document -> in rd)
34
+ 2005/06/15 S Takehiro (set first_dim_length 1 when gp.shape[0] returns nil)
35
+ 2005/08/10 S Takehiro (utilize internal function for printing help message)
36
+ 2005/08/23 S Takehiro (common methods to gp* command moved to gpcommon.rb)
37
+ 2010/03/10 Y SASAKI (change help block into RD format)
38
+
39
+ =end
40
+ ##################################################
41
+
42
+ require "numru/gphys"
43
+ require "numru/gphys/gpcommon"
44
+ include NumRu
45
+
46
+ #------------------------ print help message ------------------------
47
+
48
+ help if ARGV.length != 1 or /^-+h/ =~ ARGV[0]
49
+ gturl = ARGV[0]
50
+ gp = GPhys::IO.open_gturl(gturl)
51
+
52
+ new_line_int = 6
53
+ first_dim_len = (gp.shape[0]||1)
54
+ fmt = " %g,"
55
+ i = 1
56
+ gp.val.each do |v|
57
+ printf(fmt,v)
58
+ print "\n" if (i % new_line_int) == 0 or (i % first_dim_len) == 0
59
+ i += 1
60
+ end