gphys 1.1.1a

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
@@ -0,0 +1,34 @@
1
+ require "narray"
2
+
3
+ class NArray
4
+
5
+ @@dump_size_limit = -1 # max len to allow dump / no limit if negative
6
+ def self.dump_size_limit=(lmt)
7
+ @@dump_size_limit = lmt
8
+ end
9
+ def self.dump_size_limit
10
+ @@dump_size_limit
11
+ end
12
+
13
+ def self.endian
14
+ NArray[1].to_s[1] == 1 ? :little : :big
15
+ end
16
+
17
+ def _dump(limit)
18
+ if (@@dump_size_limit <= 0) || (size <= @@dump_size_limit)
19
+ Marshal.dump([typecode, shape, NArray.endian, to_s])
20
+ else
21
+ raise "size of the NArray (#{size}) is too large to dump "+
22
+ "(limit: #{DUMP_SIZE_LIMIT})"
23
+ end
24
+ end
25
+
26
+ def self._load(str)
27
+ ary = Marshal.load(str)
28
+ typecode, shape, endian, str = ary
29
+ na = NArray.to_na(str, typecode, *shape)
30
+ na = na.swap_byte unless endian == NArray.endian
31
+ return na
32
+ end
33
+
34
+ end
@@ -0,0 +1,406 @@
1
+ require "numru/netcdf"
2
+ require "numru/netcdf_miss"
3
+ require "numru/gphys/varray" # for constants of VArray
4
+
5
+ =begin
6
+
7
+ ==INDEX
8
+ * ((<module NumRu::NetCDF_Conventions>))
9
+ * ((<module NumRu::NetCDF_Convention_Users_Guide>))
10
+ * ((<module NumRu::NetCDF_Convention_Users_Guide::Attribute_Mixin>))
11
+ * ((<module NumRu::NetCDF_Convention_Users_Guide::VArray_Mixin>))
12
+ * ((<module NumRu::NetCDF_Convention_Wind_Profiler>))
13
+
14
+ =module NumRu::NetCDF_Conventions
15
+
16
+ NetCDF_Conventions is the general handler of NetCDF conventions for the
17
+ GPhys library.
18
+
19
+ ==Module Functions
20
+
21
+ ---find( netcdf )
22
+
23
+ Figures out what NetCDF convention a netcdf file is following.
24
+
25
+ ARGUMENTS
26
+ * ((|netcdf|)) (NetCDF): the file
27
+
28
+ RETURN VALUE
29
+ * a Module (NumRu::NetCDF_Convention_Users_Guide etc.)
30
+
31
+ REMARK
32
+ * The convention is figured out from the 'Conventions' global attribute.
33
+ You can instead fix the convention by using ((<fix_to>)).
34
+
35
+ ---fix_to( convention )
36
+
37
+ Fix the convention to be returned by ((<find>)) regardless the value
38
+ of the 'Conventions' attribute.
39
+
40
+ ARGUMENTS
41
+ * ((|convention|)) (Module): NumRu::NetCDF_Convention_Users_Guide etc.
42
+
43
+ RETURN VALUE
44
+ * convention
45
+
46
+ ---add_history(netcdf, str=nil)
47
+
48
+ Adds a line to the 'history' global convention of ((|netcdf|)).
49
+ The line consists of date, time, user name, and ((|str|))
50
+ if present (e.g., '2004-03-02 17:52:25 JST horinout> '+str).
51
+
52
+ ARGUMENTS
53
+ * ((|netcdf|)) (NetCDF): the file in which the history is updated
54
+ * ((|str|)) (nil or String): if present, added to the end of the line.
55
+
56
+ =module NumRu::NetCDF_Convention_Users_Guide
57
+
58
+ The NetCDF Users Guide Convention
59
+ (http://www.unidata.ucar.edu/packages/netcdf/docs.html).
60
+
61
+ ==Constants
62
+
63
+ ---Attribute_Mixin
64
+
65
+ See below: ((<module NumRu::NetCDF_Convention_Users_Guide::Attribute_Mixin>)).
66
+
67
+ ---VArray_Mixin
68
+
69
+ See below: ((<module NumRu::NetCDF_Convention_Users_Guide::VArray_Mixin>)).
70
+
71
+
72
+ ==Module Functions
73
+
74
+ ---to_s
75
+ Returns a string to be used as representing the convention.
76
+ The Users Guide Convention does not have one, so a string
77
+ was tentatively assigned by Horinouchi.
78
+
79
+ ---coord_var_names(ncvar)
80
+ Returns the names of coordinate variables for all the dimensions
81
+ of ((|ncvar|)).
82
+
83
+ ARGUMENTS
84
+ * ((|ncvar|)) (NetCDFVar)
85
+
86
+ RETURN VALUE
87
+ * Array of strings, whose length is the rank of ((|ncvar|)).
88
+
89
+ ---cell_bounds?(coord_var)
90
+ Document to be written. (returns false&nil in this convention.)
91
+ Might be reorganized in future when the gtool4 convention is supported.
92
+
93
+ ---cell_center?(coord_var)
94
+ Document to be written. (returns false&nil in this convention.)
95
+ Might be reorganized in future when the gtool4 convention is supported.
96
+
97
+ --------------------------------------------------
98
+ ==module NumRu::NetCDF_Convention_Users_Guide::Attribute_Mixin
99
+
100
+ The module to be mixed in NumRu::AttributeNetCDF.
101
+
102
+ ===Instance Methods
103
+
104
+ Methods below will become sigular methods of NumRu::AttributeNetCDF.
105
+
106
+ ---copy(to=nil)
107
+ Same as (('super')) (the one overridden by this method),
108
+ but edits some standard attributes if (('to')) is nil (copy onto memory)):
109
+ * scale_factor, add_offset: removed, since data copying includes
110
+ "unpaking" by interpreting them
111
+ * valid_*, missing_value: unpacked if packed.
112
+ * _FillValue, FORTRAN_format, C_format: eliminated
113
+
114
+ ---------------------------------------------------
115
+ ==module NumRu::NetCDF_Convention_Users_Guide::VArray_Mixin
116
+
117
+ The module to be mixed in NumRu::VArrayNetCDF.
118
+
119
+ ===Instance Methods
120
+
121
+ Currently none, meaning is that no modification is made
122
+ in VArrayNetCDF.
123
+
124
+ ---------------------------------------------------------------------
125
+ =module NumRu::NetCDF_Convention_Wind_Profiler
126
+
127
+ The Wind Profiler convention
128
+ (http://www.kurasc.kyoto-u.ac.jp/radar-group/wind_profiler_conventions/).
129
+
130
+ Inherits NetCDF_Convention_Users_Guide and makes appropriate redefinitions.
131
+ See ((<module NumRu::NetCDF_Convention_Users_Guide>)) for the description
132
+ of constants and module functions.
133
+
134
+ =end
135
+
136
+ module NumRu
137
+
138
+ ## /// COMMON -->
139
+
140
+ class NetCDFVar
141
+ alias get get_with_miss_and_scaling
142
+ alias put put_with_miss_and_scaling
143
+ end
144
+
145
+ # Other implicit convention
146
+ #
147
+ # * to use the "units" attribute to indicate the physical units
148
+ # (which is assumed in VArray, the super class of VArrayNetCDF).
149
+
150
+ module NetCDF_Conventions
151
+ module_function
152
+
153
+ @@fixed = nil
154
+ def fix_to( convention )
155
+ @@fixed == convention
156
+ end
157
+
158
+ def find( netcdf )
159
+ # netcdf is assumed to be a NetCDF
160
+ if @@fixed
161
+ @@fixed
162
+ else
163
+ convention = (att=netcdf.att('Conventions')) && att.get
164
+ case convention
165
+ #when /gtool/
166
+ # raise "Sorry, the gtool convention is yet to be supported"
167
+ when /^Wind Profiler/
168
+ NetCDF_Convention_Wind_Profiler
169
+ else
170
+ #NetCDF_Convention_Users_Guide
171
+ NetCDF_Convention_CF
172
+ end
173
+ end
174
+ end
175
+
176
+ def add_history(netcdf, str=nil)
177
+ hstatt = netcdf.att('history')
178
+ if hstatt
179
+ history = hstatt.get.chomp + "\n"
180
+ else
181
+ history = ''
182
+ end
183
+ time = Time.now
184
+ history += ( time.respond_to?(:strftime) ?
185
+ time.strftime('%Y-%m-%d %H:%M:%S %Z ') : time.to_s ) +
186
+ ( ENV['USER'] || '' ) + '>'
187
+ history += (' '+str) if str
188
+ netcdf.put_att('history', history)
189
+ end
190
+
191
+ end
192
+
193
+ ## <-- COMMON ///
194
+
195
+ ######################################################
196
+ ## Indivisual Conventions --- Can be figured out by
197
+ ## NetCDF_Conventions.find( netcdf )
198
+ ######################################################
199
+
200
+
201
+ module NetCDF_Convention_Users_Guide
202
+ # NetCDF Convention of the NetCDF User's Guide
203
+ # To be used by (not to be included in) NetCDF_IO.
204
+
205
+ module Attribute_Mixin
206
+
207
+ def _unpack_missing_specification(attr)
208
+ # -- private method --
209
+ # unpack missing data specification
210
+ # if the missing data type is in the external data type)
211
+
212
+ ao = attr['add_offset'] # must be narray or nil
213
+ sf = attr['scale_factor'] # must be narray or nil
214
+ if ao || sf
215
+ raise "add_offset is not a numeric" if ao.is_a?(String)
216
+ raise "scale_factor is not a numeric" if sf.is_a?(String)
217
+ satyp = ( ao || sf ).typecode
218
+ extyp = @nv.typecode
219
+ sf = 1 if !sf
220
+ ao = 0 if !ao
221
+ if (x=attr['valid_range']) && (x.typecode==extyp ||x.typecode!=satyp)
222
+ attr['valid_range'] = x * sf + ao
223
+ end
224
+ if (x=attr['valid_min']) && (x.typecode==extyp || x.typecode!=satyp)
225
+ attr['valid_min'] = x * sf + ao
226
+ end
227
+ if (x=attr['valid_max']) && (x.typecode==extyp || x.typecode!=satyp)
228
+ attr['valid_max'] = x * sf + ao
229
+ end
230
+ if (x=attr['missing_value']) && (x.typecode==extyp || x.typecode!=satyp)
231
+ attr['missing_value'] = x * sf + ao
232
+ end
233
+ attr
234
+ end
235
+ end
236
+ private :_unpack_missing_specification
237
+
238
+ def _op_attr_edit( attr )
239
+ # -- private method --
240
+
241
+ attr.delete('C_format')
242
+ attr.delete('FORTRAN_format')
243
+
244
+ _unpack_missing_specification(attr)
245
+ attr.delete('add_offset')
246
+ attr.delete('scale_factor')
247
+ attr.delete('_FillValue')
248
+ ##attr.delete('long_name')
249
+
250
+ attr
251
+ end
252
+ private :_op_attr_edit
253
+
254
+ def copy(to=nil)
255
+ newattr = super
256
+ newattr = _op_attr_edit(newattr) if !to
257
+ newattr
258
+ end
259
+
260
+ end # module Attribute_Mixin
261
+
262
+ module VArray_Mixin
263
+ # currently none
264
+ end # module VArray_Mixin
265
+
266
+ ####################
267
+ module_function
268
+
269
+ def to_s
270
+ "NetCDF User's Guide"
271
+ end
272
+
273
+ def coord_var_names(ncvar)
274
+ # name of the coordinate variables (to be the "pos" object in Axis)
275
+ ncvar.dim_names
276
+ end
277
+
278
+ def cell_bounds?(coord_var)
279
+ # whether the coordinate variale represent grid cell bounds.
280
+ # coordvar (VArray)
281
+ # return value:
282
+ result = false # Always false, because User's guide does not define it
283
+ cell_center_name = nil
284
+ [result, cell_center_name]
285
+ end
286
+
287
+ def cell_center?(coord_var)
288
+ # whether the coordinate variale represent grid cell centers.
289
+ # coordvar (VArray)
290
+ # return value:
291
+ # false if not
292
+ # true if true and the corresponding cell bounds are not identified.
293
+ # a VArray if true and the bounds are found (returns it)
294
+ result = false # Always false, because User's guide does not define it
295
+ cell_bounds_name = nil
296
+ [result, cell_bounds_name]
297
+ end
298
+
299
+ def aux_var_names(coord_var)
300
+ nil # no rule for that
301
+ end
302
+
303
+ def assoc_coord_names(data)
304
+ nil # no rule for that
305
+ end
306
+
307
+ end
308
+
309
+ module NetCDF_Convention_CF
310
+ # http://cf-pcmdi.llnl.gov/
311
+
312
+ # < inherit the Users guide convention >
313
+
314
+ module Attribute_Mixin
315
+ include NetCDF_Convention_Users_Guide::Attribute_Mixin
316
+ end # module Attribute_Mixin
317
+ module VArray_Mixin
318
+ include NetCDF_Convention_Users_Guide::VArray_Mixin
319
+ end # module VArray_Mixin
320
+ module_function
321
+ extend NetCDF_Convention_Users_Guide
322
+ public_class_method :aux_var_names, :coord_var_names, :cell_bounds?, :cell_center?
323
+
324
+ ########### original part starts here #################
325
+
326
+ def assoc_coord_names(data)
327
+ if s = data.get_att("coordinates")
328
+ nms = s.split(/ +/)
329
+ case data.file
330
+ when NArray
331
+ nms.delete_if{|nm| !data.file[0].var(nm)}
332
+ else
333
+ nms.delete_if{|nm| !data.file.var(nm)}
334
+ end
335
+ nms
336
+ else
337
+ nil
338
+ end
339
+ end
340
+
341
+ end
342
+
343
+
344
+ module NetCDF_Convention_Wind_Profiler
345
+ # Wind Profiler Convention
346
+ # http://www.kurasc.kyoto-u.ac.jp/radar-group/wind_profiler_conventions/
347
+
348
+ module Attribute_Mixin
349
+ include NetCDF_Convention_Users_Guide::Attribute_Mixin
350
+ end # module Attribute_Mixin
351
+
352
+ module VArray_Mixin
353
+ include NetCDF_Convention_Users_Guide::VArray_Mixin
354
+ end # module VArray_Mixin
355
+
356
+ ########################
357
+ module_function
358
+ extend NetCDF_Convention_Users_Guide
359
+ public_class_method :cell_bounds?, :cell_center?, :assoc_coord_names
360
+
361
+ def to_s
362
+ "Wind Profiler (http://www.kurasc.kyoto-u.ac.jp/radar-group/wind_profiler_conventions/)"
363
+ end
364
+
365
+ def coord_var_names(ncvar)
366
+ if (c=ncvar.att('coordinates'))
367
+ coordinates = c.get.split(/ +/)
368
+ elsif (ct=ncvar.att('t_coordinates')) || (cz=ncvar.att('z_coordinates'))
369
+ coordinates = Array.new
370
+ coordinates.push(ct.get) if ct
371
+ coordinates.push(cz.get) if cz
372
+ else
373
+ coordinates = nil
374
+ end
375
+ dimnames = ncvar.dim_names
376
+ if coordinates
377
+ cdvnames = []
378
+ coordinates.each{ |varname|
379
+ var = ncvar.file.var(varname)
380
+ raise "#{var.inspect} is not 1D" unless var.rank==1
381
+ dimnm = var.dim(0).name
382
+ idx = dimnames.index(dimnm)
383
+ if idx
384
+ cdvnames[idx] = varname
385
+ else
386
+ raise "#{varname} cannot be a coordinate variable -- "+
387
+ "#{ncvar.file.path} not comply with the Wind Profiler convention"
388
+ end
389
+ }
390
+ for i in 0...dimnames.length
391
+ cdvnames[i] = dimnames[i] if !cdvnames[i] #if not found, use dimname
392
+ end
393
+ cdvnames
394
+ else
395
+ # follow the users guide convention
396
+ dimnames
397
+ end
398
+ end
399
+
400
+ def aux_var_names(coord_var)
401
+ Hash['coordinate', coord_var.dim_names[0] ]
402
+ end
403
+
404
+ end
405
+
406
+ end # module NumRu