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
@@ -0,0 +1,522 @@
1
+ require "numru/units"
2
+ require "rational" # for UNumeric#sqrt
3
+ require "date" # for DateTime
4
+
5
+ ## require "numru/gphys/gphys" # --> in the test program
6
+
7
+ =begin
8
+ =class NumRu::UNumeric
9
+
10
+ Class of Numeric with Units.
11
+
12
+ Dependent on
13
+ ((<NumRu::Units|URL:http://ruby.gfd-dennou.org/products/numru=units>))
14
+ and Rational, a standard library.
15
+
16
+ ==Class Methods
17
+
18
+ ---new(val, uni)
19
+
20
+ Constractor.
21
+
22
+ ARGUMENTS
23
+ * ((|val|)) (Numeric)
24
+ * ((|units|)) (NumRu::Units or String): if string, internally converted to
25
+ a NumRu::Units
26
+
27
+ ---[val, uni]
28
+
29
+ Same as new
30
+
31
+ ---from_date(date, units)
32
+
33
+ Convert a DateTime (or Date) to a UNUmeric
34
+
35
+ ARGUMENTS
36
+ * date (Date or DateTime)
37
+ * units (Units or String) : units of the UNumeric to be created
38
+
39
+ ==Methods
40
+
41
+ ---val
42
+
43
+ RETURN VALUE
44
+ * the value (Numeric)
45
+
46
+ ---units
47
+
48
+ RETURN VALUE
49
+ * the units (NumRu::Units)
50
+
51
+ ---inspect
52
+
53
+ RETURN VALUE
54
+ * a String (e.g., '1 m')
55
+
56
+ ---to_s
57
+
58
+ aliasesed to ((<inspect>)).
59
+
60
+ ---to_f
61
+ RETURN VALUE
62
+ * val.to_f
63
+
64
+ ---to_i
65
+ RETURN VALUE
66
+ * val.to_i
67
+
68
+ ---convert(to_units)
69
+
70
+ Convert to ((|to_units|)).
71
+
72
+ RETURN VALUE
73
+ * a UNumeric
74
+
75
+ EXCEPTION
76
+ * when the current units is incompatible with to_units.
77
+
78
+ ---convert2
79
+
80
+ Same as ((<convert>)), but returns ((|self|)) if the units are
81
+ incompatible (Warned).
82
+
83
+ EXCEPTION
84
+ * none
85
+
86
+ WARING MADE
87
+
88
+ Warning is made to $stderr if the following
89
+ condition is satisfied.
90
+
91
+ * the units of ((|self|)) and ((|to_units|)) are incompatible.
92
+
93
+ ---coerce(other)
94
+
95
+ As you know. Can handle Numeric, Array, NArray.
96
+ NOTE: VArray and GPhys know UNumeric.
97
+
98
+ --- *(other)
99
+
100
+ Multiplication. Knows Numeric, UNumeric, VArray, and GPhys.
101
+ The units are multipled too. (if other is Numeric, it is assumed
102
+ to be non-dimension)
103
+
104
+ RETURN VALUE
105
+ * a UNumeric, VArray, or GPhys
106
+
107
+ --- /(other)
108
+
109
+ Division. See ((<*>)).
110
+
111
+ --- +(other)
112
+
113
+ Addition. Knows Numeric, UNumeric, VArray, and GPhys.
114
+ The return value will have the units of ((|self|)).
115
+
116
+ SPECIAL REMARK!
117
+
118
+ If ((|other|)) has units within a factor and/or offset
119
+ of difference, It is CONVERTED before addition (by using ((<convert2>)))!
120
+
121
+ RETURN VALUE
122
+ * a UNumeric, VArray, or GPhys
123
+
124
+ WARING MADE
125
+
126
+ Warning is made to $stderr if the following
127
+ condition is satisfied.
128
+
129
+ * the units of ((|self|)) and ((|to_units|)) are incompatible.
130
+ * ((|other|)) is Numeric.
131
+
132
+ --- -(other)
133
+
134
+ Subtraction. See ((<+>)).
135
+
136
+ --- **(num)
137
+
138
+ Power.
139
+
140
+ --- abs
141
+
142
+ Absolute value. Other math functions are also avialable as instance
143
+ methods.
144
+
145
+ ---to_datetime(eps_sec=0.0)
146
+
147
+ Convert a time UNumeric into a DateTime
148
+
149
+ ARGUMENTS
150
+ * eps_sec (Float) : Magic epsilon to prevent the round-off of
151
+ DateTime [seconds]. Recommended value is 0.1.
152
+
153
+ RETURN VALUE
154
+ * a DateTime
155
+
156
+ EXCEPTION
157
+ * raised if self does not have a time unit with a since field
158
+
159
+ ---strftime(fmt)
160
+
161
+ Text expression of the date and time of a time UNumeric.
162
+ Implemented as
163
+ self.to_datetime(0.1).strftime(fmt)
164
+
165
+ ARGUMENTS
166
+ * fmt (Sting) : the format. Try
167
+ % man 3 strftime
168
+ to find how to write it.
169
+
170
+ RETURN VALUE
171
+ * a String
172
+
173
+ =end
174
+
175
+ module NumRu
176
+
177
+ class UNumeric
178
+
179
+ def initialize(val, uni)
180
+ raise TypeError unless Numeric === val
181
+ uni = Units.new(uni) if String === uni
182
+ raise TypeError unless Units === uni
183
+ @val, @uni = val, uni
184
+ end
185
+
186
+ def self::[](val, uni)
187
+ new(val, uni)
188
+ end
189
+
190
+ @@supported_calendars = [nil,"gregorian", "standard","noleap","365_day",
191
+ "360_day"]
192
+
193
+ def self::supported_calendar?(cal)
194
+ @@supported_calendars.include?(cal)
195
+ end
196
+
197
+ def self::supported_calendars
198
+ @@supported_calendars.dup
199
+ end
200
+
201
+ # * date (Date or DateTime)
202
+ # * units (Units or String) : units of the UNumeric to be created
203
+ def self::from_date(date, units, calendar=nil)
204
+ sunits = units.to_s
205
+ /(.*) *since *(.*)/ =~ sunits
206
+ if (!$1 or !$2)
207
+ raise("Units mismatch. Requires time units that includes 'since'")
208
+ end
209
+ tun = Units[$1]
210
+ since = DateTime.parse(UNumeric::before_date_parse($2))
211
+ if( tun =~ Units['months since 0001-01-01'] )
212
+ year0,mon0 = since.year,since.mon
213
+ year,mon = date.year,date.mon
214
+ time = Units['months'].convert((year*12+mon)-(year0*12+mon0), tun)
215
+ elsif( tun =~ Units['days since 0001-01-01'] )
216
+ case calendar
217
+ when nil, "gregorian", "standard"
218
+ time = Units['days'].convert( date-since, tun )
219
+ when "noleap", "365_day"
220
+ since_yday = since - DateTime.new(since.year,1,1) # day number of year (0..364)
221
+ since_yday = since_yday - 1 if( since.leap? && since.mon > 2 )
222
+ date_yday = date - DateTime.new(date.year,1,1)
223
+ if( date.leap? )
224
+ if date_yday >= 60.0 # after Mar1
225
+ date_yday = date_yday - 1
226
+ elsif date_yday >= 59.0 # Feb29
227
+ raise "Feb.29 is specified, but calendar is #{calendar}."
228
+ end
229
+ end
230
+ days = (date.year - since.year)*365 + (date_yday - since_yday)
231
+ time = Units['days'].convert( days, tun )
232
+ when "360_day" # does not work perfectly
233
+ days = (date.year - since.year)*360 + (date.mon - since.mon)*30 + (date.day - since.day)
234
+ time = Units['days'].convert( days, tun )
235
+ else
236
+ #raise("Unrecognized calendar: #{calendar}")
237
+ return nil
238
+ end
239
+ else
240
+ #raise("Unrecognized time units #{tun.to_s}")
241
+ return nil
242
+ end
243
+ time = time.to_f
244
+ UNumeric[time, units]
245
+ end
246
+
247
+
248
+ # Always interpret y \d\d as 00\d\d and y \d as 000\d
249
+ # (Date in Ruby 1.9 interprets them as 20\d\d etc.)
250
+ def self::before_date_parse(str)
251
+ if /^\d\d-\d/ =~ str
252
+ str = "00"+str
253
+ elsif /^\d-\d/ =~ str
254
+ str = "00"+str
255
+ end
256
+ str
257
+ end
258
+
259
+ def val; @val; end
260
+
261
+ def units; @uni; end
262
+
263
+ def inspect
264
+ val.to_s + ' ' +units.to_s
265
+ end
266
+
267
+ alias to_s inspect
268
+
269
+ def to_f; @val.to_f; end
270
+ def to_i; @val.to_i; end
271
+
272
+ def convert(to_units)
273
+ if ( units == to_units )
274
+ self
275
+ else
276
+ UNumeric[ units.convert(val, to_units), to_units ]
277
+ end
278
+ end
279
+
280
+ def convert2(to_units)
281
+ # returns self if the units are incompatible
282
+ begin
283
+ convert(to_units)
284
+ rescue
285
+ #if $VERBOSE
286
+ $stderr.print(
287
+ "WARNING: incompatible units: #{units.to_s} - #{to_units.to_s}\n")
288
+ #end # warn in Ruby 1.8
289
+ self
290
+ end
291
+ end
292
+
293
+ def strftime(fmt)
294
+ self.to_datetime(0.1).strftime(fmt)
295
+ end
296
+
297
+ # * eps_sec : Magic epsilon to prevent the round-off of DateTime [seconds].
298
+ # Recommended value is 0.1.
299
+ def to_datetime(eps_sec=0.0,calendar=nil)
300
+ time = self.val
301
+ sunits = self.units.to_s
302
+ /(.*) *since *(.*)/ =~ sunits
303
+ if (!$1 or !$2)
304
+ raise("Units mismatch. Requires time units that includes 'since'")
305
+ end
306
+ tun = Units[$1]
307
+ sincestr = $2.sub(/(^\d{1,2}-\d+-\d)/,'00\1')
308
+ #^ correction for Ruby 1.9 to prevent 1- or 2-digit years
309
+ # (e.g. 1, 02) to be interpreted as in 2000's (e.g., 2001, 2002)
310
+ since = DateTime.parse(UNumeric::before_date_parse(sincestr))
311
+ if( tun =~ Units['months since 0001-01-01'] )
312
+ datetime = since >> tun.convert( time, Units['months'] )
313
+ elsif( tun =~ Units['days since 0001-01-01'] )
314
+ case calendar
315
+ when nil, "gregorian", "standard"
316
+ datetime = since + tun.convert( time, Units['days'] )
317
+ when "noleap", "365_day"
318
+ since_yday = since - DateTime.new(since.year,1,1) # day number of year (0..364)
319
+ since_yday = since_yday - 1 if( since.leap? && since.mon > 2 )
320
+ days = since_yday + tun.convert( time, Units['days'] )
321
+ year = since.year + (days/365).to_i
322
+ date_yday = days%365 # day number of year (0..364)
323
+ datetime = DateTime.new(year,1,1) + date_yday
324
+ datetime = datetime + 1 if( datetime.leap? && date_yday >= 59 )
325
+ when "360_day" # does not work perfectly
326
+ since_day = since - DateTime.new(since.year,since.mon,1)
327
+ days = (since.mon-1)*30 + since_day + tun.convert( time, Units['days'] )
328
+ year = since.year + (days/360).to_i
329
+ mon = ((days%360)/30).to_i + 1
330
+ datetime = DateTime.new(year,mon,1) + days%30
331
+ else
332
+ #raise("Unrecognized calendar: #{calendar}")
333
+ return nil
334
+ end
335
+ else
336
+ #raise("Unrecognized time units #{tun.to_s}")
337
+ return nil
338
+ end
339
+ if eps_sec != 0.0
340
+ datetime = datetime + eps_sec/8.64e4
341
+ end
342
+ datetime
343
+ end
344
+
345
+ def coerce(other)
346
+ case
347
+ when Numeric
348
+ c_other = UNumeric.new( other, Units.new("1") )
349
+ when Array
350
+ c_other = VArray.new( NArray.to_na(other) )
351
+ when NArray
352
+ c_other = VArray.new( other )
353
+ else
354
+ raise "#{self.class}: cannot coerce #{other.class}"
355
+ end
356
+ [ c_other, self ]
357
+ end
358
+
359
+ def *(other)
360
+ case other
361
+ when UNumeric
362
+ UNumeric.new( val * other.val , units * other.units )
363
+ when Numeric
364
+ # assumed to be non-dimensional
365
+ UNumeric.new( val * other, units )
366
+ when VArray, GPhys
367
+ result = other * val
368
+ result.units = units * other.units
369
+ result
370
+ else
371
+ s, o = other.coerce( self )
372
+ s * o
373
+ end
374
+ end
375
+
376
+ def +(other)
377
+ case other
378
+ when UNumeric
379
+ v = val + other.convert2( units ).val
380
+ UNumeric.new( v , units )
381
+ when Numeric
382
+ v = val + other
383
+ $stderr.print("WARNING: raw Numeric added to #{inspect}\n") #if $VERBOSE
384
+ UNumeric.new( v, units )
385
+ when VArray, GPhys
386
+ ans = other.units.convert2(other, units) + val
387
+ ans.units = units # units are taken from the lhs
388
+ ans
389
+ else
390
+ s, o = other.coerce( self )
391
+ s + o
392
+ end
393
+ end
394
+
395
+ def **(other)
396
+ UNumeric.new( val**other, units**other )
397
+ end
398
+
399
+ def abs
400
+ UNumeric.new( val.abs, units )
401
+ end
402
+
403
+ def -@
404
+ UNumeric.new( -val, units )
405
+ end
406
+
407
+ def +@
408
+ self
409
+ end
410
+
411
+ def -(other)
412
+ self + (-other) # not efficient --> Rewrite later!
413
+ end
414
+
415
+ def /(other)
416
+ self * (other**(-1)) # not efficient --> Rewrite later!
417
+ end
418
+
419
+ LogicalOps = [">",">=","<","<=","==","==="]
420
+ LogicalOps.each { |op|
421
+ eval <<-EOS, nil, __FILE__, __LINE__+1
422
+ def #{op}(other)
423
+ case other
424
+ when UNumeric
425
+ val #{op} other.convert2( units ).val
426
+ when Numeric
427
+ $stderr.print("WARNING: raw Numeric added to #{inspect}\n") #\
428
+ # if $VERBOSE # warn in Ruby 1.8
429
+ val #{op} other
430
+ when VArray, GPhys
431
+ val #{op} other.units.convert2(other, units)
432
+ else
433
+ s, o = other.coerce( self )
434
+ s #{op} o
435
+ end
436
+ end
437
+ EOS
438
+ }
439
+
440
+ Math_funcs_nondim = ["exp","log","log10","log2","sin","cos","tan",
441
+ "sinh","cosh","tanh","asinh","acosh",
442
+ "atanh","csc","sec","cot","csch","sech","coth",
443
+ "acsch","asech","acoth"]
444
+ Math_funcs_nondim.each{ |f|
445
+ eval <<-EOS, nil, __FILE__, __LINE__+1
446
+ def #{f}
447
+ UNumeric.new( Math.#{f}(val), Units.new('1') )
448
+ end
449
+ EOS
450
+ }
451
+ Math_funcs_radian = ["asin","acos","atan","acsc","asec","acot"]
452
+ Math_funcs_radian.each{ |f|
453
+ eval <<-EOS, nil, __FILE__, __LINE__+1
454
+ def #{f}
455
+ UNumeric.new( Math.#{f}(val), Units.new('rad') )
456
+ end
457
+ EOS
458
+ }
459
+
460
+ def atan2(other)
461
+ case other
462
+ when Numeric
463
+ UNumeric.new( Math.atan2(val, other), Units.new('rad') )
464
+ when UNumeric
465
+ UNumeric.new( Math.atan2(val, other.val), Units.new('rad') )
466
+ else
467
+ c_me, c_other = other.coerce(self)
468
+ c_me.atan2(c_other)
469
+ end
470
+ end
471
+
472
+ def sqrt
473
+ UNumeric.new( Math.sqrt(val), units**Rational(1,2) )
474
+ end
475
+
476
+ end # class UNumeric
477
+ end # module NumRu
478
+
479
+ ######################################
480
+ if $0 == __FILE__
481
+
482
+ require "narray"
483
+
484
+ include NumRu
485
+ a = UNumeric[ 10.0, Units['m/s'] ]
486
+ b = UNumeric[ 2.0, Units['m/s'] ]
487
+ c = UNumeric[ 5.0, Units['m'] ]
488
+
489
+ print "\n** Section 1 **\n"
490
+ p a
491
+ p a*b
492
+ p a+b
493
+ p a+c
494
+ p a+7
495
+ p a*7
496
+ p -a
497
+ p a-b, a-1000, a/100
498
+ p a.log, a.sin
499
+ p UNumeric[1.0,Units['1']].atan2( UNumeric[1.0,Units['1']] )
500
+
501
+ print "\n** Section 2 **\n"
502
+ p a > 1
503
+ p 1 > a
504
+
505
+ print "\n** Section 3 **\n"
506
+
507
+ require "numru/gphys/varray"
508
+
509
+ na = NArray.float(4).indgen
510
+ va = VArray.new( na )
511
+ vb = a + va
512
+ p vb, vb.units, vb.att_names
513
+
514
+ a = UNumeric[ 3721.0, Units['seconds since 2008-01-01'] ]
515
+ p a.to_datetime.to_s, a.strftime('%Y-%m-%d %H:%M:%S')
516
+ b = UNumeric[ 3.0, Units['months since 2008-01-01'] ]
517
+ p b.strftime('%Y-%m-%d %H:%M:%S')
518
+ p (UNumeric::from_date(DateTime.parse('2008-01-01 00:00-0200'),
519
+ 'seconds since 2008-01-01')).to_s
520
+ p (UNumeric::from_date(DateTime.parse('2008-6-01'),
521
+ 'months since 2008-01-01')).to_s
522
+ end