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,317 @@
1
+ # = NumRu::GAnalysis::Met : Meteorological analysis
2
+
3
+ require "numru/gphys"
4
+ require 'numru/ganalysis/planet'
5
+
6
+ module NumRu
7
+
8
+ module GAnalysis
9
+
10
+ # Meteorological analysis
11
+ #
12
+ # USEFUL METHODS
13
+ # * temp2theta
14
+ # * pv_on_theta
15
+ # * interpolate_onto_theta
16
+ module Met
17
+
18
+ #< Themodynamic constants for the Earth's atmosphere >
19
+
20
+ R = UNumeric[287.04,"J.kg-1.K-1"] # Gas constant of dry air
21
+ Rv = UNumeric[461.50,"J.kg-1.K-1"] # Gas constant of water vapor
22
+ Cp = UNumeric[1004.6,"J.kg-1.K-1"] # heat capacity at constant pressure for dry air
23
+ Cpv = UNumeric[1870.0,"J.kg-1.K-1"] # heat capacity at constant pressure for water vapor
24
+ Kappa = (R/Cp).to_f # = 2.0/7.0
25
+ T0 = UNumeric[273.15,"K"] # K - Celcius
26
+ Lat0 = UNumeric[2.500780e6,"J.kg-1"] # Latent heat of vaporization at 0 degC
27
+
28
+ #< Earth's parameters >
29
+ @@g = UNumeric[9.8,"m.s-2"] # adjustable: e.g., 9.7 m.s-2 for stratosphere
30
+ P00 = UNumeric[1e5,"Pa"]
31
+
32
+ module_function
33
+
34
+ #< module parameters >
35
+
36
+ # Sets gravity acceleration in the module (default: 9.8 ms-1).
37
+ #
38
+ # ARGUMENT
39
+ # * g [UNumeric]
40
+ # EXAMPLE
41
+ # Met::set_g( UNumeric[9.7,"m.s-2"] )
42
+ # RETURN VALUE
43
+ # * The argument g
44
+ def set_g(g)
45
+ @@g = g # e.g., un[9.8,"m.s-2"]
46
+ end
47
+
48
+
49
+ # Returns gravity acceleration in the module (default: 9.8 ms-1).
50
+ def g
51
+ @@g.dup
52
+ end
53
+
54
+ #< potential temperature >
55
+
56
+ # Convert temperature into potential temperature
57
+ #
58
+ # ARGUMENTS
59
+ # * temp [UNumeric or GPhys or VArray, which supports method "units"] :
60
+ # temperature
61
+ # * prs [UNumeric or GPhys or VArray, which supports method "units"] :
62
+ # pressure
63
+ # RETURN VALUE
64
+ # * potential temperature [UNumeric or GPhys or VArray,...] in Kelvin
65
+ #
66
+ def temp2theta(temp, prs=nil)
67
+ prs = get_prs(temp) if !prs
68
+ prs = convert_units2Pa(prs)
69
+ if ( !(temp.units === Units["K"]) )
70
+ temp = convert_units(temp,"K")
71
+ end
72
+ theta = temp * (prs/P00)**(-Kappa)
73
+ if theta.respond_to?(:long_name) # VArray or GPhys
74
+ theta.name = "theta"
75
+ theta.long_name = "potential temperature"
76
+ end
77
+ theta
78
+ end
79
+
80
+ #< for isentropic coordinate >
81
+
82
+ # Inverse of the "sigma" density in the theta coordinate:
83
+ #
84
+ # ARGUMENTS
85
+ # * theta [GPhys or VArray] potential temperature
86
+ # * dim [Integer] : the pressure dimension. If theta is a GPhys,
87
+ # this argument can be omitted, in which case a pressure dimension
88
+ # is searched internally by find_prs_d.
89
+ # * prs [GPhys or VArray] : the pressure values. Internally searched
90
+ # if omitted.
91
+ # RETURN VALUE
92
+ # * 1 / sigma = -g d\theta/dp [GPhys]
93
+ #
94
+ def sigma_inv(theta, dim=nil, prs=nil)
95
+ dim = find_prs_d(theta) if !dim
96
+ prs = get_prs(theta) if !prs
97
+ prs = convert_units2Pa(prs)
98
+ dtheta_dp = df_dx(theta, prs, dim)
99
+ sig_inv = dtheta_dp * (-@@g)
100
+ if sig_inv.respond_to?(:long_name) # VArray or GPhys
101
+ sig_inv.name = "sig_inv"
102
+ sig_inv.long_name = "1/sigma"
103
+ end
104
+ sig_inv
105
+ end
106
+
107
+ # Interpolate onto the potential temperature coordinate
108
+ #
109
+ # ARGUMENTS
110
+ # * gphys [GPhys] a gphys object that have a pressure dimension
111
+ # * theta [GPhys] potential temperature defined on the same grid
112
+ # as gphys
113
+ # * theta_vals : 1D NArray or Array
114
+ def interpolate_onto_theta(gphys, theta, theta_levs)
115
+ theta_levs = NArray[*theta_levs].to_f if Array === theta_levs
116
+ th_crd = VArray.new( theta_levs,
117
+ {"units"=>"K", "long_name"=>"potential temperature"}, "theta" )
118
+ gphys.set_assoc_coords([theta])
119
+ pdnm = gphys.coord(find_prs_d(gphys)).name
120
+ gphys.interpolate(pdnm=>th_crd)
121
+ end
122
+
123
+ # Derive Ertel's potential vorticity on the theta (isentropic)
124
+ # coordinate
125
+ #
126
+ # ARGUMENTS
127
+ # * u [GPhys] : zonal wind on pressure coordinate
128
+ # (u, v, and theta must share same coordinates)
129
+ # * v [GPhys] : meridional wind on pressure coordinate
130
+ # * theta [GPhys] : potential temperature on pressure coordinate
131
+ # * theta_levs [NArray or Array] : one dimensional array of
132
+ # potential temperature values (Kelvin) on which PV is derived.
133
+ #
134
+ # RETURN VALUE
135
+ # * potential temperature [GPhys] on a theta coordinate, where
136
+ # levels are set to theta_levs
137
+ def pv_on_theta(u, v, theta, theta_levs)
138
+ sigi = GAnalysis::Met.sigma_inv(theta)
139
+ uth = GAnalysis::Met.interpolate_onto_theta(u, theta, theta_levs)
140
+ vth = GAnalysis::Met.interpolate_onto_theta(v, theta, theta_levs)
141
+ sigith = GAnalysis::Met.interpolate_onto_theta(sigi, theta, theta_levs)
142
+ avorth = GAnalysis::Planet.absvor_s(uth,vth)
143
+ pv = avorth*sigith
144
+ pv.long_name = "potential vorticity"
145
+ pv.name = "PV"
146
+ pv
147
+ end
148
+
149
+ # Find a pressure coordinate in a GPhys object
150
+ #
151
+ # ARGUMENT
152
+ # * gphys [GPhys]
153
+ # * error [nil/false or true] change the behavior if a
154
+ # pressure coordinate is not found. Default: returns nil;
155
+ # if error is true, an exception is raised.
156
+ # RETURN VALUE
157
+ # * Integer to indicate the dimension of the pressure coordinate,
158
+ # or nil if not found by default (see above)
159
+ def find_prs_d(gphys, error=nil)
160
+ pa = Units.new("Pa")
161
+ (gphys.rank-1).downto(0) do |d|
162
+ un = gphys.axis(d).pos.units
163
+ if ( un =~ pa or un.to_s=="millibar" )
164
+ return(d)
165
+ end
166
+ end
167
+ if error
168
+ raise("Could not find a pressure coordinate.")
169
+ else
170
+ nil
171
+ end
172
+ end
173
+
174
+ # Find and return a pressure coordinate in a GPhys object
175
+ #
176
+ # ARGUMENT
177
+ # * gphys [GPhys]
178
+ #
179
+ # RETURN VALUE
180
+ # * pressure in a 1D GPhys object created from the pressure
181
+ # axis in the GPhys object or a UNumeric object if the pressure
182
+ # coordinated has been deleted by subsetting.
183
+ def get_prs(gphys)
184
+ begin
185
+ prs = gphys.axis( find_prs_d(gphys, true) ).to_gphys
186
+ rescue
187
+ regexp = /([\d\.]+) *(millibar|hPa)/
188
+ cand = gphys.lost_axes.grep(regexp)
189
+ if (str=cand[0]) # substitution, not ==
190
+ regexp =~ str
191
+ hpa = $1.to_f
192
+ prs = UNumeric[hpa*100,"Pa"]
193
+ else
194
+ raise "No pressure axis was found"
195
+ end
196
+ end
197
+ prs
198
+ end
199
+
200
+ # Convert units into Pa. To deal with old versions of NumRu::Units
201
+ # that do not support "millibar".
202
+ #
203
+ # ARGUMENT
204
+ # * prs [GPhys and UNumeric]
205
+ def convert_units2Pa(prs)
206
+ pa = Units["Pa"]
207
+ un = prs.units
208
+ if ((un =~ pa) and !(un === pa))
209
+ prs = convert_units(prs, pa)
210
+ elsif un.to_s=="millibar"
211
+ if UNumeric === prs
212
+ ret = UNumeric[prs.val*100, "Pa"]
213
+ else
214
+ ret = prs*100
215
+ ret.units = "Pa"
216
+ end
217
+ ret
218
+ else
219
+ prs
220
+ end
221
+ end
222
+
223
+ #< misc >
224
+
225
+ # Unit conversion good to both GPhys and UNumeric
226
+ def convert_units(obj, un)
227
+ begin
228
+ obj.convert_units(un) # for GPhys etc
229
+ rescue
230
+ obj.convert2(un) # for UNumeric etc
231
+ end
232
+ end
233
+ private :convert_units # this method should be defined somewhere else
234
+
235
+ # numerical derivative good to both GPhys and UNumeric
236
+ def df_dx(f, x, dim)
237
+ if GPhys === f
238
+ mdl = NumRu::GPhys::Derivative
239
+ mdl.threepoint_O2nd_deriv(f, dim, mdl::LINEAR_EXT, x)
240
+ else
241
+ mdl = NumRu::Derivative
242
+ mdl.threepoint_O2nd_deriv(f, x, dim, mdl::LINEAR_EXT)
243
+ end
244
+ end
245
+ private :df_dx # this method should be defined somewhere else
246
+
247
+ end
248
+ end
249
+ end
250
+
251
+ ################################################
252
+ ##### test part ######
253
+ if $0 == __FILE__
254
+ require "numru/ggraph"
255
+ include NumRu
256
+
257
+ #< data >
258
+
259
+ temp = GPhys::IO.open("../../../testdata/T.jan.nc","T")
260
+ u = GPhys::IO.open("../../../testdata/UV.jan.nc","U")
261
+ v = GPhys::IO.open("../../../testdata/UV.jan.nc","V")
262
+
263
+ #< theta >
264
+
265
+ print "***** test theta *****\n\n"
266
+
267
+ theta = GAnalysis::Met.temp2theta(temp)
268
+ p theta
269
+ DCL.swpset('iwidth',800)
270
+ DCL.swpset('iheight',800)
271
+ DCL.sgscmn(10) # set colomap
272
+ DCL.gropn(1)
273
+ DCL.sgpset('isub', 96) # control character of subscription: '_' --> '`'
274
+ DCL.glpset('lmiss',true)
275
+ DCL.sldiv("y",2,2)
276
+ GGraph::set_fig "itr"=>2
277
+ #GGraph::tone_and_contour temp.mean(0)
278
+ GGraph::tone_and_contour theta.mean(0)
279
+
280
+ p temp.coord(2).val[3]
281
+ t = temp[0..1,0,3]
282
+ p t.val
283
+ p GAnalysis::Met.temp2theta(t).val
284
+ p GAnalysis::Met.temp2theta(t,UNumeric[4e4,"Pa"]).val
285
+ p GAnalysis::Met.temp2theta(UNumeric[20,"degC"],UNumeric[850,"hPa"]).val
286
+
287
+ #< isentropic coordinate >
288
+
289
+ print "\n***** test isentropic coordinate *****\n\n"
290
+ sig_inv = GAnalysis::Met.sigma_inv(theta)
291
+ GGraph::tone_and_contour 1/sig_inv.mean(0),true,"log"=>true,"title"=>"sigma"
292
+ p( (sig_inv.units**(-1)).reduce5.to_s )
293
+
294
+ theta_rg = theta.regrid(u)
295
+
296
+ theta_levs = [320.0, 350.0, 400.0, 600.0, 800.0]
297
+ u_th = GAnalysis::Met.interpolate_onto_theta(u, theta_rg, theta_levs)
298
+ p u_th
299
+
300
+ # DCL.grfrm
301
+ GGraph::tone u.mean(0)
302
+ GGraph::contour theta_rg.mean(0), false, "levels"=>theta_levs,"index"=>[3]
303
+ GGraph::color_bar
304
+ GGraph::set_fig "itr"=>1
305
+ GGraph::tone_and_contour u_th.mean(0),true,"keep"=>true
306
+ GGraph::color_bar
307
+
308
+ #< isentropic potential vorticity >
309
+ pv = GAnalysis::Met.pv_on_theta(u, v, theta_rg, theta_levs)
310
+ p pv.units
311
+ GGraph::tone_and_contour pv.mean(0),true
312
+ GGraph::tone pv.cut("theta"=>320),true,"nlev"=>20,"color_bar"=>true
313
+ GGraph::tone pv.cut("theta"=>600),true,"nlev"=>20,"color_bar"=>true
314
+
315
+ #< finish >
316
+ DCL.grcls
317
+ end
@@ -0,0 +1,182 @@
1
+ # = NumRu::GAnalysis::Planet : Library for spherical planets (default: Earth)
2
+ #
3
+ # ASSUMPTIONS
4
+ # * longitude is assumed to increase in the eastward direction.
5
+ # * latitude is assumed to increase in the northward direction,
6
+ # and it is zero at the equator.
7
+
8
+ require "numru/gphys"
9
+ require 'numru/gphys/derivative'
10
+
11
+ module NumRu
12
+ module GAnalysis
13
+
14
+ module Planet
15
+ module_function
16
+
17
+ #< Pre-defined planets >
18
+
19
+ Earth = "Earth"
20
+ def init(planet)
21
+ case planet
22
+ when Earth
23
+ @@R = UNumeric[6.37e6, "m"]
24
+ @@Ome = UNumeric[2*Math::PI/8.64e4,"s-1"]
25
+ else
26
+ raise "Unsupported predefined planet: #{planet}."
27
+ end
28
+ end
29
+
30
+ init(Earth) ###### default setting as the Earth ######
31
+
32
+ #< Adjustable planetary settings >
33
+
34
+ def radius=(r); @@R = r; end
35
+ def omega=(o); @@Ome = o; end
36
+ def radius; @@R; end
37
+ def omega; @@Ome; end
38
+
39
+ #< Class variables regarding lon & lat >
40
+
41
+ @@lonbc = GPhys::Derivative::CYCLIC_OR_LINEAR # this should be always fine
42
+ @@latbc = GPhys::Derivative::LINEAR_EXT # this should be always fine
43
+
44
+ @@lam = nil # lambda (lon in radian) obtaiend lately (see get_lonlat)
45
+ @@phi = nil # phi (lat in radian) obtaiend lately (see get_lonlat)
46
+
47
+ #< Differentian at the planets's near surface. With suffix "_s" >
48
+
49
+ def rot_s(u,v)
50
+ lond, latd, lam, phi = get_lonlat(u)
51
+ cos_phi = phi.cos
52
+ dv_dlam = v.cderiv(lond,@@lonbc,lam)
53
+ duc_dphi = (u*cos_phi).cderiv(latd,@@latbc,phi)
54
+ rot = (dv_dlam - duc_dphi) / (@@R*cos_phi)
55
+ rot.long_name = "rot(#{u.name},#{v.name})"
56
+ rot.name = "rot"
57
+ rot
58
+ end
59
+
60
+ def div_s(u,v)
61
+ lond, latd, lam, phi = get_lonlat(u)
62
+ cos_phi = phi.cos
63
+ du_dlam = u.cderiv(lond,@@lonbc,lam)
64
+ dvc_dphi = (v*cos_phi).cderiv(latd,@@latbc,phi)
65
+ rot = (du_dlam + dvc_dphi) / (@@R*cos_phi)
66
+ rot.long_name = "div(#{u.name},#{v.name})"
67
+ rot.name = "div"
68
+ rot
69
+ end
70
+
71
+ def vor_s(u,v)
72
+ vor = rot_s(u,v)
73
+ vor.long_name = "Relative Vorticity"
74
+ vor.name = "vor"
75
+ vor
76
+ end
77
+
78
+ def absvor_s(u,v)
79
+ avor = vor_s(u,v) + @@phi.sin * (2*@@Ome)
80
+ avor.long_name = "Absolute Vorticity"
81
+ avor.name = "avor"
82
+ avor
83
+ end
84
+
85
+ def grad_s(s)
86
+ lond, latd, lam, phi = get_lonlat(s)
87
+ cos_phi = phi.cos
88
+ xs = s.cderiv(lond,@@lonbc,lam) / (@@R*cos_phi)
89
+ ys = s.cderiv(latd,@@latbc,phi) / @@R
90
+ xs.long_name = "xgrad(#{s.name})"
91
+ xs.name = "xgrad"
92
+ ys.long_name = "ygrad(#{s.name})"
93
+ ys.name = "ygrad"
94
+ [xs,ys]
95
+ end
96
+
97
+ #< helper methods >
98
+
99
+ def get_lonlat(gp)
100
+ lond, latd = find_lon_lat_dims(gp, true)
101
+ lam = gp.axis(lond).to_gphys.convert_units("rad") # lambda (lon in rad)
102
+ lam.units = "" # treat as non-dim
103
+ phi = gp.axis(latd).to_gphys.convert_units("rad") # phi (lat in rad)
104
+ phi.units = "" # treat as non-dim
105
+ @@lam = lam
106
+ @@phi = phi
107
+ [lond, latd, lam, phi]
108
+ end
109
+
110
+ def find_lon_lat_dims(gp, err_raise=false)
111
+ lond = nil
112
+ latd = nil
113
+ (0...gp.rank).each do |dim|
114
+ if /^degrees?_east$/i =~ gp.coord(dim).get_att("units")
115
+ lond = dim
116
+ break
117
+ elsif /^longitude$/i =~ gp.coord(dim).long_name
118
+ lond = dim
119
+ break
120
+ end
121
+ end
122
+ (0...gp.rank).each do |dim|
123
+ if /^degrees?_north$/i =~ gp.coord(dim).get_att("units")
124
+ latd = dim
125
+ break
126
+ elsif /^latitude$/i =~ gp.coord(dim).long_name
127
+ latd = dim
128
+ break
129
+ end
130
+ end
131
+ if err_raise
132
+ raise("Longitude dimension was not found") if !lond
133
+ raise("Latitude dimension was not found") if !latd
134
+ end
135
+ [lond,latd]
136
+ end
137
+ end
138
+
139
+
140
+
141
+ end
142
+ end
143
+
144
+ ################################################
145
+ ##### test part ######
146
+ if $0 == __FILE__
147
+ require "numru/ggraph"
148
+ include NumRu
149
+ u = GPhys::IO.open("../../../testdata/UV.jan.nc","U")
150
+ v = GPhys::IO.open("../../../testdata/UV.jan.nc","V")
151
+ ##i = 3
152
+ ##u = GPhys::IO.open("/mnt/disk2/horinout/ncep/daily/pressure/uwnd.2008.nc","uwnd")[{0..-1=>i},{1..-2=>i},true,0]
153
+ ##v = GPhys::IO.open("/mnt/disk2/horinout/ncep/daily/pressure/vwnd.2008.nc","vwnd")[{0..-1=>i},{1..-2=>i},true,0]
154
+ rot = GAnalysis::Planet.rot_s(u,v)
155
+ avor = GAnalysis::Planet.absvor_s(u,v)
156
+ div = GAnalysis::Planet.div_s(u,v)
157
+ print "*** test ***\n"
158
+ p rot
159
+ p rot.units
160
+ p rot.max,rot.min
161
+
162
+ DCL.swpset('iwidth',700)
163
+ DCL.swpset('iheight',700)
164
+ DCL.sgscmn(10) # set colomap
165
+ DCL.gropn(1)
166
+ DCL.sgpset('isub', 96) # control character of subscription: '_' --> '`'
167
+ DCL.glpset('lmiss',true)
168
+ DCL.sldiv("y",1,2)
169
+ DCL.sgpset("lfull",true)
170
+ GGraph::set_fig "itr"=>10,"viewport"=>[0.1, 0.8, 0.05, 0.4]
171
+ GGraph::set_map "coast_world"=>true
172
+ iz = 4
173
+ GGraph::vector u[false,iz], v[false,iz],true #,"fact"=>2
174
+ #GGraph::tone u[false,iz],true,"color_bar"=>true
175
+ GGraph::tone rot[false,iz],true,"max"=>2e-5,"min"=>-2e-5,"int"=>2e-6
176
+ ##GGraph::tone rot[false,iz],true,"max"=>1e-4,"min"=>-1e-4,"int"=>1e-5
177
+ GGraph::tone avor[false,iz],true,"max"=>2e-4,"min"=>-2e-4,"int"=>2e-5
178
+ GGraph::color_bar
179
+ GGraph::tone div[false,iz],true,"max"=>0.5e-5,"min"=>-0.5e-5,"int"=>0.5e-6
180
+ GGraph::color_bar
181
+ DCL.grcls
182
+ end
@@ -0,0 +1,7 @@
1
+ require "numru/gphys"
2
+
3
+ require "numru/ganalysis/covariance"
4
+ require "numru/ganalysis/eof"
5
+ require "numru/ganalysis/histogram"
6
+ require "numru/ganalysis/planet"
7
+ require "numru/ganalysis/met"