gphys 1.1.1 → 1.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (369) hide show
  1. data/.gitignore +17 -0
  2. data/ChangeLog +221 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +18 -30
  5. data/README +23 -26
  6. data/README.md +29 -0
  7. data/Rakefile +1 -56
  8. data/bin/gpaop +2 -1
  9. data/bin/gpcut +3 -2
  10. data/bin/gpedit +6 -2
  11. data/bin/gpmath +3 -2
  12. data/bin/gpmaxmin +3 -2
  13. data/bin/gpprint +2 -1
  14. data/bin/gpvect +28 -5
  15. data/bin/gpview +43 -5
  16. data/extconf.rb +5 -6
  17. data/gphys.gemspec +34 -0
  18. data/interpo.c +63 -24
  19. data/lib/gphys.rb +2 -0
  20. data/lib/numru/dclext.rb +2636 -0
  21. data/lib/numru/derivative.rb +53 -12
  22. data/lib/numru/ganalysis/eof.rb +4 -0
  23. data/lib/numru/ganalysis/histogram.rb +73 -5
  24. data/lib/numru/ganalysis/met.rb +163 -2
  25. data/lib/numru/ganalysis/planet.rb +230 -20
  26. data/lib/numru/ggraph.rb +147 -2247
  27. data/lib/numru/gphys/assoccoords.rb +19 -3
  28. data/lib/numru/gphys/axis.rb +1 -1
  29. data/lib/numru/gphys/coordmapping.rb +2 -2
  30. data/lib/numru/gphys/derivative.rb +56 -13
  31. data/lib/numru/gphys/gphys.rb +17 -1
  32. data/lib/numru/gphys/gphys_grads_io.rb +6 -5
  33. data/lib/numru/gphys/gphys_grib_io.rb +6 -6
  34. data/lib/numru/gphys/gphys_io.rb +25 -6
  35. data/lib/numru/gphys/grads_gridded.rb +31 -29
  36. data/lib/numru/gphys/grib.rb +13 -9
  37. data/lib/numru/gphys/interpolate.rb +153 -29
  38. data/lib/numru/gphys/unumeric.rb +29 -6
  39. data/lib/numru/gphys/varray.rb +9 -0
  40. data/lib/numru/gphys/varraygrib.rb +70 -8
  41. data/lib/version.rb +3 -0
  42. metadata +247 -531
  43. data/doc/attribute.html +0 -19
  44. data/doc/attributenetcdf.html +0 -15
  45. data/doc/axis.html +0 -376
  46. data/doc/coordmapping.html +0 -111
  47. data/doc/coordtransform.html +0 -36
  48. data/doc/derivative/gphys-derivative.html +0 -80
  49. data/doc/derivative/index.html +0 -21
  50. data/doc/derivative/index.rd +0 -14
  51. data/doc/derivative/math-doc/document/document.css +0 -30
  52. data/doc/derivative/math-doc/document/document.html +0 -57
  53. data/doc/derivative/math-doc/document/images.aux +0 -1
  54. data/doc/derivative/math-doc/document/images.log +0 -385
  55. data/doc/derivative/math-doc/document/images.pl +0 -186
  56. data/doc/derivative/math-doc/document/images.tex +0 -364
  57. data/doc/derivative/math-doc/document/img1.png +0 -0
  58. data/doc/derivative/math-doc/document/img10.png +0 -0
  59. data/doc/derivative/math-doc/document/img11.png +0 -0
  60. data/doc/derivative/math-doc/document/img12.png +0 -0
  61. data/doc/derivative/math-doc/document/img13.png +0 -0
  62. data/doc/derivative/math-doc/document/img14.png +0 -0
  63. data/doc/derivative/math-doc/document/img15.png +0 -0
  64. data/doc/derivative/math-doc/document/img16.png +0 -0
  65. data/doc/derivative/math-doc/document/img17.png +0 -0
  66. data/doc/derivative/math-doc/document/img18.png +0 -0
  67. data/doc/derivative/math-doc/document/img19.png +0 -0
  68. data/doc/derivative/math-doc/document/img2.png +0 -0
  69. data/doc/derivative/math-doc/document/img20.png +0 -0
  70. data/doc/derivative/math-doc/document/img21.png +0 -0
  71. data/doc/derivative/math-doc/document/img22.png +0 -0
  72. data/doc/derivative/math-doc/document/img23.png +0 -0
  73. data/doc/derivative/math-doc/document/img24.png +0 -0
  74. data/doc/derivative/math-doc/document/img25.png +0 -0
  75. data/doc/derivative/math-doc/document/img26.png +0 -0
  76. data/doc/derivative/math-doc/document/img27.png +0 -0
  77. data/doc/derivative/math-doc/document/img28.png +0 -0
  78. data/doc/derivative/math-doc/document/img29.png +0 -0
  79. data/doc/derivative/math-doc/document/img3.png +0 -0
  80. data/doc/derivative/math-doc/document/img30.png +0 -0
  81. data/doc/derivative/math-doc/document/img4.png +0 -0
  82. data/doc/derivative/math-doc/document/img5.png +0 -0
  83. data/doc/derivative/math-doc/document/img6.png +0 -0
  84. data/doc/derivative/math-doc/document/img7.png +0 -0
  85. data/doc/derivative/math-doc/document/img8.png +0 -0
  86. data/doc/derivative/math-doc/document/img9.png +0 -0
  87. data/doc/derivative/math-doc/document/index.html +0 -57
  88. data/doc/derivative/math-doc/document/labels.pl +0 -13
  89. data/doc/derivative/math-doc/document/next.png +0 -0
  90. data/doc/derivative/math-doc/document/next_g.png +0 -0
  91. data/doc/derivative/math-doc/document/node1.html +0 -238
  92. data/doc/derivative/math-doc/document/node2.html +0 -75
  93. data/doc/derivative/math-doc/document/prev.png +0 -0
  94. data/doc/derivative/math-doc/document/prev_g.png +0 -0
  95. data/doc/derivative/math-doc/document/up.png +0 -0
  96. data/doc/derivative/math-doc/document/up_g.png +0 -0
  97. data/doc/derivative/math-doc/document.pdf +0 -0
  98. data/doc/derivative/math-doc/document.tex +0 -158
  99. data/doc/derivative/numru-derivative.html +0 -129
  100. data/doc/ep_flux/ep_flux.html +0 -469
  101. data/doc/ep_flux/ggraph_on_merdional_section.html +0 -71
  102. data/doc/ep_flux/index.html +0 -31
  103. data/doc/ep_flux/index.rd +0 -24
  104. data/doc/ep_flux/math-doc/document/WARNINGS +0 -1
  105. data/doc/ep_flux/math-doc/document/contents.png +0 -0
  106. data/doc/ep_flux/math-doc/document/crossref.png +0 -0
  107. data/doc/ep_flux/math-doc/document/document.css +0 -30
  108. data/doc/ep_flux/math-doc/document/document.html +0 -101
  109. data/doc/ep_flux/math-doc/document/images.aux +0 -1
  110. data/doc/ep_flux/math-doc/document/images.log +0 -1375
  111. data/doc/ep_flux/math-doc/document/images.pl +0 -1328
  112. data/doc/ep_flux/math-doc/document/images.tex +0 -1471
  113. data/doc/ep_flux/math-doc/document/img1.png +0 -0
  114. data/doc/ep_flux/math-doc/document/img10.png +0 -0
  115. data/doc/ep_flux/math-doc/document/img100.png +0 -0
  116. data/doc/ep_flux/math-doc/document/img101.png +0 -0
  117. data/doc/ep_flux/math-doc/document/img102.png +0 -0
  118. data/doc/ep_flux/math-doc/document/img103.png +0 -0
  119. data/doc/ep_flux/math-doc/document/img104.png +0 -0
  120. data/doc/ep_flux/math-doc/document/img105.png +0 -0
  121. data/doc/ep_flux/math-doc/document/img106.png +0 -0
  122. data/doc/ep_flux/math-doc/document/img107.png +0 -0
  123. data/doc/ep_flux/math-doc/document/img108.png +0 -0
  124. data/doc/ep_flux/math-doc/document/img109.png +0 -0
  125. data/doc/ep_flux/math-doc/document/img11.png +0 -0
  126. data/doc/ep_flux/math-doc/document/img110.png +0 -0
  127. data/doc/ep_flux/math-doc/document/img111.png +0 -0
  128. data/doc/ep_flux/math-doc/document/img112.png +0 -0
  129. data/doc/ep_flux/math-doc/document/img113.png +0 -0
  130. data/doc/ep_flux/math-doc/document/img114.png +0 -0
  131. data/doc/ep_flux/math-doc/document/img115.png +0 -0
  132. data/doc/ep_flux/math-doc/document/img116.png +0 -0
  133. data/doc/ep_flux/math-doc/document/img117.png +0 -0
  134. data/doc/ep_flux/math-doc/document/img118.png +0 -0
  135. data/doc/ep_flux/math-doc/document/img119.png +0 -0
  136. data/doc/ep_flux/math-doc/document/img12.png +0 -0
  137. data/doc/ep_flux/math-doc/document/img120.png +0 -0
  138. data/doc/ep_flux/math-doc/document/img121.png +0 -0
  139. data/doc/ep_flux/math-doc/document/img122.png +0 -0
  140. data/doc/ep_flux/math-doc/document/img123.png +0 -0
  141. data/doc/ep_flux/math-doc/document/img124.png +0 -0
  142. data/doc/ep_flux/math-doc/document/img125.png +0 -0
  143. data/doc/ep_flux/math-doc/document/img126.png +0 -0
  144. data/doc/ep_flux/math-doc/document/img127.png +0 -0
  145. data/doc/ep_flux/math-doc/document/img128.png +0 -0
  146. data/doc/ep_flux/math-doc/document/img129.png +0 -0
  147. data/doc/ep_flux/math-doc/document/img13.png +0 -0
  148. data/doc/ep_flux/math-doc/document/img130.png +0 -0
  149. data/doc/ep_flux/math-doc/document/img131.png +0 -0
  150. data/doc/ep_flux/math-doc/document/img132.png +0 -0
  151. data/doc/ep_flux/math-doc/document/img133.png +0 -0
  152. data/doc/ep_flux/math-doc/document/img134.png +0 -0
  153. data/doc/ep_flux/math-doc/document/img135.png +0 -0
  154. data/doc/ep_flux/math-doc/document/img136.png +0 -0
  155. data/doc/ep_flux/math-doc/document/img137.png +0 -0
  156. data/doc/ep_flux/math-doc/document/img138.png +0 -0
  157. data/doc/ep_flux/math-doc/document/img139.png +0 -0
  158. data/doc/ep_flux/math-doc/document/img14.png +0 -0
  159. data/doc/ep_flux/math-doc/document/img140.png +0 -0
  160. data/doc/ep_flux/math-doc/document/img141.png +0 -0
  161. data/doc/ep_flux/math-doc/document/img142.png +0 -0
  162. data/doc/ep_flux/math-doc/document/img143.png +0 -0
  163. data/doc/ep_flux/math-doc/document/img144.png +0 -0
  164. data/doc/ep_flux/math-doc/document/img145.png +0 -0
  165. data/doc/ep_flux/math-doc/document/img146.png +0 -0
  166. data/doc/ep_flux/math-doc/document/img147.png +0 -0
  167. data/doc/ep_flux/math-doc/document/img148.png +0 -0
  168. data/doc/ep_flux/math-doc/document/img149.png +0 -0
  169. data/doc/ep_flux/math-doc/document/img15.png +0 -0
  170. data/doc/ep_flux/math-doc/document/img150.png +0 -0
  171. data/doc/ep_flux/math-doc/document/img151.png +0 -0
  172. data/doc/ep_flux/math-doc/document/img152.png +0 -0
  173. data/doc/ep_flux/math-doc/document/img153.png +0 -0
  174. data/doc/ep_flux/math-doc/document/img154.png +0 -0
  175. data/doc/ep_flux/math-doc/document/img155.png +0 -0
  176. data/doc/ep_flux/math-doc/document/img156.png +0 -0
  177. data/doc/ep_flux/math-doc/document/img157.png +0 -0
  178. data/doc/ep_flux/math-doc/document/img158.png +0 -0
  179. data/doc/ep_flux/math-doc/document/img159.png +0 -0
  180. data/doc/ep_flux/math-doc/document/img16.png +0 -0
  181. data/doc/ep_flux/math-doc/document/img160.png +0 -0
  182. data/doc/ep_flux/math-doc/document/img161.png +0 -0
  183. data/doc/ep_flux/math-doc/document/img162.png +0 -0
  184. data/doc/ep_flux/math-doc/document/img163.png +0 -0
  185. data/doc/ep_flux/math-doc/document/img164.png +0 -0
  186. data/doc/ep_flux/math-doc/document/img165.png +0 -0
  187. data/doc/ep_flux/math-doc/document/img166.png +0 -0
  188. data/doc/ep_flux/math-doc/document/img167.png +0 -0
  189. data/doc/ep_flux/math-doc/document/img168.png +0 -0
  190. data/doc/ep_flux/math-doc/document/img169.png +0 -0
  191. data/doc/ep_flux/math-doc/document/img17.png +0 -0
  192. data/doc/ep_flux/math-doc/document/img170.png +0 -0
  193. data/doc/ep_flux/math-doc/document/img171.png +0 -0
  194. data/doc/ep_flux/math-doc/document/img172.png +0 -0
  195. data/doc/ep_flux/math-doc/document/img173.png +0 -0
  196. data/doc/ep_flux/math-doc/document/img174.png +0 -0
  197. data/doc/ep_flux/math-doc/document/img175.png +0 -0
  198. data/doc/ep_flux/math-doc/document/img176.png +0 -0
  199. data/doc/ep_flux/math-doc/document/img177.png +0 -0
  200. data/doc/ep_flux/math-doc/document/img178.png +0 -0
  201. data/doc/ep_flux/math-doc/document/img179.png +0 -0
  202. data/doc/ep_flux/math-doc/document/img18.png +0 -0
  203. data/doc/ep_flux/math-doc/document/img180.png +0 -0
  204. data/doc/ep_flux/math-doc/document/img181.png +0 -0
  205. data/doc/ep_flux/math-doc/document/img182.png +0 -0
  206. data/doc/ep_flux/math-doc/document/img183.png +0 -0
  207. data/doc/ep_flux/math-doc/document/img184.png +0 -0
  208. data/doc/ep_flux/math-doc/document/img185.png +0 -0
  209. data/doc/ep_flux/math-doc/document/img186.png +0 -0
  210. data/doc/ep_flux/math-doc/document/img187.png +0 -0
  211. data/doc/ep_flux/math-doc/document/img188.png +0 -0
  212. data/doc/ep_flux/math-doc/document/img189.png +0 -0
  213. data/doc/ep_flux/math-doc/document/img19.png +0 -0
  214. data/doc/ep_flux/math-doc/document/img190.png +0 -0
  215. data/doc/ep_flux/math-doc/document/img191.png +0 -0
  216. data/doc/ep_flux/math-doc/document/img192.png +0 -0
  217. data/doc/ep_flux/math-doc/document/img193.png +0 -0
  218. data/doc/ep_flux/math-doc/document/img194.png +0 -0
  219. data/doc/ep_flux/math-doc/document/img195.png +0 -0
  220. data/doc/ep_flux/math-doc/document/img196.png +0 -0
  221. data/doc/ep_flux/math-doc/document/img197.png +0 -0
  222. data/doc/ep_flux/math-doc/document/img198.png +0 -0
  223. data/doc/ep_flux/math-doc/document/img199.png +0 -0
  224. data/doc/ep_flux/math-doc/document/img2.png +0 -0
  225. data/doc/ep_flux/math-doc/document/img20.png +0 -0
  226. data/doc/ep_flux/math-doc/document/img200.png +0 -0
  227. data/doc/ep_flux/math-doc/document/img21.png +0 -0
  228. data/doc/ep_flux/math-doc/document/img22.png +0 -0
  229. data/doc/ep_flux/math-doc/document/img23.png +0 -0
  230. data/doc/ep_flux/math-doc/document/img24.png +0 -0
  231. data/doc/ep_flux/math-doc/document/img25.png +0 -0
  232. data/doc/ep_flux/math-doc/document/img26.png +0 -0
  233. data/doc/ep_flux/math-doc/document/img27.png +0 -0
  234. data/doc/ep_flux/math-doc/document/img28.png +0 -0
  235. data/doc/ep_flux/math-doc/document/img29.png +0 -0
  236. data/doc/ep_flux/math-doc/document/img3.png +0 -0
  237. data/doc/ep_flux/math-doc/document/img30.png +0 -0
  238. data/doc/ep_flux/math-doc/document/img31.png +0 -0
  239. data/doc/ep_flux/math-doc/document/img32.png +0 -0
  240. data/doc/ep_flux/math-doc/document/img33.png +0 -0
  241. data/doc/ep_flux/math-doc/document/img34.png +0 -0
  242. data/doc/ep_flux/math-doc/document/img35.png +0 -0
  243. data/doc/ep_flux/math-doc/document/img36.png +0 -0
  244. data/doc/ep_flux/math-doc/document/img37.png +0 -0
  245. data/doc/ep_flux/math-doc/document/img38.png +0 -0
  246. data/doc/ep_flux/math-doc/document/img39.png +0 -0
  247. data/doc/ep_flux/math-doc/document/img4.png +0 -0
  248. data/doc/ep_flux/math-doc/document/img40.png +0 -0
  249. data/doc/ep_flux/math-doc/document/img41.png +0 -0
  250. data/doc/ep_flux/math-doc/document/img42.png +0 -0
  251. data/doc/ep_flux/math-doc/document/img43.png +0 -0
  252. data/doc/ep_flux/math-doc/document/img44.png +0 -0
  253. data/doc/ep_flux/math-doc/document/img45.png +0 -0
  254. data/doc/ep_flux/math-doc/document/img46.png +0 -0
  255. data/doc/ep_flux/math-doc/document/img47.png +0 -0
  256. data/doc/ep_flux/math-doc/document/img48.png +0 -0
  257. data/doc/ep_flux/math-doc/document/img49.png +0 -0
  258. data/doc/ep_flux/math-doc/document/img5.png +0 -0
  259. data/doc/ep_flux/math-doc/document/img50.png +0 -0
  260. data/doc/ep_flux/math-doc/document/img51.png +0 -0
  261. data/doc/ep_flux/math-doc/document/img52.png +0 -0
  262. data/doc/ep_flux/math-doc/document/img53.png +0 -0
  263. data/doc/ep_flux/math-doc/document/img54.png +0 -0
  264. data/doc/ep_flux/math-doc/document/img55.png +0 -0
  265. data/doc/ep_flux/math-doc/document/img56.png +0 -0
  266. data/doc/ep_flux/math-doc/document/img57.png +0 -0
  267. data/doc/ep_flux/math-doc/document/img58.png +0 -0
  268. data/doc/ep_flux/math-doc/document/img59.png +0 -0
  269. data/doc/ep_flux/math-doc/document/img6.png +0 -0
  270. data/doc/ep_flux/math-doc/document/img60.png +0 -0
  271. data/doc/ep_flux/math-doc/document/img61.png +0 -0
  272. data/doc/ep_flux/math-doc/document/img62.png +0 -0
  273. data/doc/ep_flux/math-doc/document/img63.png +0 -0
  274. data/doc/ep_flux/math-doc/document/img64.png +0 -0
  275. data/doc/ep_flux/math-doc/document/img65.png +0 -0
  276. data/doc/ep_flux/math-doc/document/img66.png +0 -0
  277. data/doc/ep_flux/math-doc/document/img67.png +0 -0
  278. data/doc/ep_flux/math-doc/document/img68.png +0 -0
  279. data/doc/ep_flux/math-doc/document/img69.png +0 -0
  280. data/doc/ep_flux/math-doc/document/img7.png +0 -0
  281. data/doc/ep_flux/math-doc/document/img70.png +0 -0
  282. data/doc/ep_flux/math-doc/document/img71.png +0 -0
  283. data/doc/ep_flux/math-doc/document/img72.png +0 -0
  284. data/doc/ep_flux/math-doc/document/img73.png +0 -0
  285. data/doc/ep_flux/math-doc/document/img74.png +0 -0
  286. data/doc/ep_flux/math-doc/document/img75.png +0 -0
  287. data/doc/ep_flux/math-doc/document/img76.png +0 -0
  288. data/doc/ep_flux/math-doc/document/img77.png +0 -0
  289. data/doc/ep_flux/math-doc/document/img78.png +0 -0
  290. data/doc/ep_flux/math-doc/document/img79.png +0 -0
  291. data/doc/ep_flux/math-doc/document/img8.png +0 -0
  292. data/doc/ep_flux/math-doc/document/img80.png +0 -0
  293. data/doc/ep_flux/math-doc/document/img81.png +0 -0
  294. data/doc/ep_flux/math-doc/document/img82.png +0 -0
  295. data/doc/ep_flux/math-doc/document/img83.png +0 -0
  296. data/doc/ep_flux/math-doc/document/img84.png +0 -0
  297. data/doc/ep_flux/math-doc/document/img85.png +0 -0
  298. data/doc/ep_flux/math-doc/document/img86.png +0 -0
  299. data/doc/ep_flux/math-doc/document/img87.png +0 -0
  300. data/doc/ep_flux/math-doc/document/img88.png +0 -0
  301. data/doc/ep_flux/math-doc/document/img89.png +0 -0
  302. data/doc/ep_flux/math-doc/document/img9.png +0 -0
  303. data/doc/ep_flux/math-doc/document/img90.png +0 -0
  304. data/doc/ep_flux/math-doc/document/img91.png +0 -0
  305. data/doc/ep_flux/math-doc/document/img92.png +0 -0
  306. data/doc/ep_flux/math-doc/document/img93.png +0 -0
  307. data/doc/ep_flux/math-doc/document/img94.png +0 -0
  308. data/doc/ep_flux/math-doc/document/img95.png +0 -0
  309. data/doc/ep_flux/math-doc/document/img96.png +0 -0
  310. data/doc/ep_flux/math-doc/document/img97.png +0 -0
  311. data/doc/ep_flux/math-doc/document/img98.png +0 -0
  312. data/doc/ep_flux/math-doc/document/img99.png +0 -0
  313. data/doc/ep_flux/math-doc/document/index.html +0 -101
  314. data/doc/ep_flux/math-doc/document/internals.pl +0 -258
  315. data/doc/ep_flux/math-doc/document/labels.pl +0 -265
  316. data/doc/ep_flux/math-doc/document/next.png +0 -0
  317. data/doc/ep_flux/math-doc/document/next_g.png +0 -0
  318. data/doc/ep_flux/math-doc/document/node1.html +0 -104
  319. data/doc/ep_flux/math-doc/document/node10.html +0 -164
  320. data/doc/ep_flux/math-doc/document/node11.html +0 -86
  321. data/doc/ep_flux/math-doc/document/node12.html +0 -166
  322. data/doc/ep_flux/math-doc/document/node13.html +0 -897
  323. data/doc/ep_flux/math-doc/document/node14.html +0 -1065
  324. data/doc/ep_flux/math-doc/document/node15.html +0 -72
  325. data/doc/ep_flux/math-doc/document/node16.html +0 -81
  326. data/doc/ep_flux/math-doc/document/node2.html +0 -82
  327. data/doc/ep_flux/math-doc/document/node3.html +0 -91
  328. data/doc/ep_flux/math-doc/document/node4.html +0 -149
  329. data/doc/ep_flux/math-doc/document/node5.html +0 -330
  330. data/doc/ep_flux/math-doc/document/node6.html +0 -99
  331. data/doc/ep_flux/math-doc/document/node7.html +0 -98
  332. data/doc/ep_flux/math-doc/document/node8.html +0 -83
  333. data/doc/ep_flux/math-doc/document/node9.html +0 -140
  334. data/doc/ep_flux/math-doc/document/prev.png +0 -0
  335. data/doc/ep_flux/math-doc/document/prev_g.png +0 -0
  336. data/doc/ep_flux/math-doc/document/up.png +0 -0
  337. data/doc/ep_flux/math-doc/document/up_g.png +0 -0
  338. data/doc/ep_flux/math-doc/document.pdf +0 -0
  339. data/doc/ep_flux/math-doc/document.tex +0 -2018
  340. data/doc/gdir.html +0 -412
  341. data/doc/gdir_client.html +0 -16
  342. data/doc/gdir_connect_ftp-like.html +0 -61
  343. data/doc/gdir_server.html +0 -45
  344. data/doc/ggraph.html +0 -1615
  345. data/doc/gpcat.html +0 -44
  346. data/doc/gpcut.html +0 -41
  347. data/doc/gphys.html +0 -532
  348. data/doc/gphys_fft.html +0 -324
  349. data/doc/gphys_grads_io.html +0 -69
  350. data/doc/gphys_grib_io.html +0 -82
  351. data/doc/gphys_io.html +0 -120
  352. data/doc/gphys_io_common.html +0 -18
  353. data/doc/gphys_netcdf_io.html +0 -283
  354. data/doc/gplist.html +0 -24
  355. data/doc/gpmath.html +0 -51
  356. data/doc/gpmaxmin.html +0 -31
  357. data/doc/gpprint.html +0 -34
  358. data/doc/gpview.html +0 -270
  359. data/doc/grads2nc_with_gphys.html +0 -21
  360. data/doc/grads_gridded.html +0 -307
  361. data/doc/grib.html +0 -144
  362. data/doc/grid.html +0 -212
  363. data/doc/index.html +0 -133
  364. data/doc/index.rd +0 -127
  365. data/doc/netcdf_convention.html +0 -136
  366. data/doc/unumeric.html +0 -176
  367. data/doc/update +0 -64
  368. data/doc/varray.html +0 -299
  369. data/doc/varraycomposite.html +0 -67
data/bin/gpvect CHANGED
@@ -13,7 +13,7 @@ The first command form is for only vector field plotting.
13
13
 
14
14
  where the format of the gturl is
15
15
 
16
- path@varname[,dimname=pos1[:pos2[:thinning_intv]][,dimname=...]]
16
+ path[@|/]varname[,dimname=pos1[:pos2[:thinning_intv]][,dimname=...]]
17
17
 
18
18
  The command loads two gphys variables in each time and draws
19
19
  vector field whose x and y components are the first and the second argument,
@@ -100,6 +100,9 @@ gturl_x gturl_y.
100
100
  :--mean <dim>:
101
101
  mean along axis <dim>.
102
102
 
103
+ :--eddy <dim>:
104
+ deviation from mean along axis <dim>.
105
+
103
106
  :--m, --map <map_type>:
104
107
  plot map. itr number must be set. this option is neglect if itr
105
108
  number is 1-4. abailable map type is coast_world, border_world,
@@ -150,6 +153,9 @@ gturl_x gturl_y.
150
153
  :--patterns:
151
154
  set each patterns for tone plot.
152
155
 
156
+ :--tonf:
157
+ use tonf instead of tone.
158
+
153
159
  :--nocolorbar:
154
160
  do not draw color bar
155
161
 
@@ -178,7 +184,7 @@ gturl_x gturl_y.
178
184
 
179
185
  :--max_unit_vect:
180
186
  (Effective only if flow_vect && unit_vect) use the maximum arrows to
181
- scale the unit vector
187
+ s scale the unit vector
182
188
 
183
189
  ==EXAMPLES
184
190
 
@@ -203,6 +209,8 @@ For the second command format,
203
209
  2010/03/10 Y SASAKI (change help block into RD format)
204
210
  2010/07/16 Y SASAKI (option --clrmap implemented)
205
211
  2011/07/29 S Takehiro (option --clrmap fixed)
212
+ 2012/02/19 S Takehiro (description for gturl format updated)
213
+
206
214
  =end
207
215
  #################################################
208
216
  require "getoptlong" # for option_parse
@@ -215,7 +223,7 @@ include NumRu
215
223
  ## Default param.
216
224
 
217
225
  VIEWPORT = [0.15,0.85,0.2,0.55]
218
- URLfmt = "path@varname[,dimname=pos1[:pos2[:thinning_intv]][,dimname=...]]"
226
+ URLfmt = "path[@|/]varname[,dimname=pos1[:pos2[:thinning_intv]][,dimname=...]]"
219
227
 
220
228
  #####################################################
221
229
  def GGraph::annotate(str_ary)
@@ -397,7 +405,8 @@ def draw(gp, gpux, gpuy, draw_flag)
397
405
  "annotate"=>$annotate,
398
406
  "transpose"=>$OPT_exch,
399
407
  "levels"=>$OPT_slevels,
400
- "patterns"=>$OPT_patterns
408
+ "patterns"=>$OPT_patterns,
409
+ "tonf"=>$OPT_tonf
401
410
  )
402
411
  GGraph.contour(gp,
403
412
  false,
@@ -414,7 +423,8 @@ def draw(gp, gpux, gpuy, draw_flag)
414
423
  "annotate"=>$annotate,
415
424
  "transpose"=>$OPT_exch,
416
425
  "levels"=>$OPT_slevels,
417
- "patterns"=>$OPT_patterns
426
+ "patterns"=>$OPT_patterns,
427
+ "tonf"=>$OPT_tonf
418
428
  )
419
429
  vnewframe = false
420
430
 
@@ -555,6 +565,7 @@ parser.set_options(
555
565
  ['--reverse', GetoptLong::NO_ARGUMENT],
556
566
  ['--Gr', GetoptLong::NO_ARGUMENT],
557
567
  ['--mean', GetoptLong::REQUIRED_ARGUMENT],
568
+ ['--eddy', GetoptLong::REQUIRED_ARGUMENT],
558
569
  ['--map', GetoptLong::REQUIRED_ARGUMENT],
559
570
  ['--m', GetoptLong::NO_ARGUMENT],
560
571
  ['--scalar', GetoptLong::NO_ARGUMENT],
@@ -572,6 +583,7 @@ parser.set_options(
572
583
  ['--clevels', GetoptLong::REQUIRED_ARGUMENT],
573
584
  ['--slevels', GetoptLong::REQUIRED_ARGUMENT],
574
585
  ['--patterns', GetoptLong::REQUIRED_ARGUMENT],
586
+ ['--tonf', GetoptLong::NO_ARGUMENT],
575
587
  ['--nocolorbar', GetoptLong::NO_ARGUMENT],
576
588
  ['--nozero', GetoptLong::NO_ARGUMENT],
577
589
  ### vector option ###
@@ -677,6 +689,17 @@ while ARGV[0] do
677
689
  }
678
690
  end
679
691
 
692
+ ## deviation from mean along any axis
693
+ if ($OPT_eddy)
694
+ dims = ($OPT_eddy).split(/\s*,\s*/)
695
+ dims.each{|dim|
696
+ dim = dim.to_i if dim.to_i.to_s == dim
697
+ gp = gp.eddy(dim)
698
+ gpux = gpux.eddy(dim)
699
+ gpuy = gpuy.eddy(dim)
700
+ }
701
+ end
702
+
680
703
  # set title
681
704
  if !$OPT_title && $OPT_scalar
682
705
  gpnm = gp.data.get_att('long_name') || gp.name
data/bin/gpview CHANGED
@@ -19,7 +19,7 @@ The first command form is
19
19
 
20
20
  where the format of the gturl is
21
21
 
22
- path@varname[,dimname=pos1[:pos2[:thinning_intv]][,dimname=...]]
22
+ path[@|/]varname[,dimname=pos1[:pos2[:thinning_intv]][,dimname=...]]
23
23
 
24
24
  The second commnad form is
25
25
 
@@ -77,7 +77,6 @@ if you want to know more description, please read
77
77
 
78
78
  :--animate/anim <dim>:
79
79
  plot animation along <dim>. <dim> must be name of dimension.
80
-
81
80
 
82
81
  :--alternate, --Ga:
83
82
  enable to backing store.
@@ -97,6 +96,9 @@ if you want to know more description, please read
97
96
  :--mean <dim>:
98
97
  mean along axis <dim>.
99
98
 
99
+ :--eddy <dim>:
100
+ deviation from mean along axis <dim>.
101
+
100
102
  :--m, --map <map_type>:
101
103
  plot map. itr number must be set. this option is neglect if itr
102
104
  number is 1-4. abailable map type is coast_world, border_world,
@@ -107,6 +109,15 @@ if you want to know more description, please read
107
109
  <math_func> should be a math function with one argument
108
110
  such as log10, sqrt, sin, etc.
109
111
 
112
+ :--time_ax [nil|false|h|ymd]:
113
+ specify type of calendar-type time axis:
114
+ nil (=> auto slection)
115
+ false (=> do not use the time axis even if
116
+ the units of the axis is a time one with since field)
117
+ "h" (=> like nil, but always use the hour-resolving datetime_ax method
118
+ in dclext_datetime_ax.rb)
119
+ "ymd" (=> like "h" but for y-m-d type using DCL.uc[xy]acl)
120
+
110
121
 
111
122
  == LINE/MARK OPTIONS
112
123
 
@@ -172,6 +183,9 @@ if you want to know more description, please read
172
183
  :--patterns:
173
184
  set each patterns for tone plot.
174
185
 
186
+ :--tonf:
187
+ use tonf instead of tone.
188
+
175
189
  :--nocolorbar:
176
190
  do not draw color bar
177
191
 
@@ -195,6 +209,7 @@ For a single GPhys variable,
195
209
  % gpview --overplot=3 --anim t data.nc@temp,lon=0
196
210
  % gpview --mark data.nc@temp,lon=0,lat=0
197
211
  % gpview --operation log10 data.nc@temp,lon=0
212
+ % gpview --time_ax false data.nc@temp,lon=0,lat=0
198
213
 
199
214
  For multiple GPhys variables,
200
215
  % gpview data1.nc@temp data2.nc@temp
@@ -238,6 +253,9 @@ For multiple GPhys variables,
238
253
  2008/12/14 S Takehiro (option --mark implemented)
239
254
  2010/03/10 Y SASAKI (change help block into RD format)
240
255
  2011/01/14 T Tanigawa && S Takehiro (option --operation implemented)
256
+ 2011/11/04 S Takehiro (option --time_ax implemented)
257
+ 2011/11/20 S Takehiro (option --eddy implemented)
258
+ 2012/02/19 S Takehiro (description for gturl format updated)
241
259
 
242
260
  =end
243
261
  #################################################
@@ -251,7 +269,7 @@ include NumRu
251
269
  ## Default param.
252
270
 
253
271
  VIEWPORT = [0.15,0.85,0.2,0.55]
254
- URLfmt = "path@varname[,dimname=pos1[:pos2[:thinning_intv]][,dimname=...]]"
272
+ URLfmt = "path[@|/]varname[,dimname=pos1[:pos2[:thinning_intv]][,dimname=...]]"
255
273
 
256
274
  #####################################################
257
275
  def GGraph::annotate(str_ary)
@@ -389,6 +407,12 @@ def draw_setup(gp)
389
407
  GGraph::set_map(map_type=>true)
390
408
  end
391
409
 
410
+ # time axis
411
+ if ($OPT_time_ax)
412
+ $OPT_time_ax = false if $OPT_time_ax == "false"
413
+ GGraph.set_axes('time_ax'=>$OPT_time_ax)
414
+ end
415
+
392
416
  return draw_flag
393
417
 
394
418
  end
@@ -464,7 +488,8 @@ def draw(gp, draw_flag)
464
488
  "annotate"=>$annotate,
465
489
  "transpose"=>$OPT_exch,
466
490
  "levels"=>$OPT_slevels,
467
- "patterns"=>$OPT_patterns
491
+ "patterns"=>$OPT_patterns,
492
+ "tonf"=>$OPT_tonf
468
493
  )
469
494
  GGraph.contour(gp,
470
495
  false,
@@ -479,7 +504,8 @@ def draw(gp, draw_flag)
479
504
  "annotate"=>$annotate,
480
505
  "transpose"=>$OPT_exch,
481
506
  "levels"=>$OPT_slevels,
482
- "patterns"=>$OPT_patterns
507
+ "patterns"=>$OPT_patterns,
508
+ "tonf"=>$OPT_tonf
483
509
  )
484
510
  when "noshade"
485
511
  mj = DCL.udpget('indxmj')
@@ -587,9 +613,11 @@ parser.set_options(
587
613
  ['--reverse', GetoptLong::NO_ARGUMENT],
588
614
  ['--Gr', GetoptLong::NO_ARGUMENT],
589
615
  ['--mean', GetoptLong::REQUIRED_ARGUMENT],
616
+ ['--eddy', GetoptLong::REQUIRED_ARGUMENT],
590
617
  ['--map', GetoptLong::REQUIRED_ARGUMENT],
591
618
  ['--m', GetoptLong::NO_ARGUMENT],
592
619
  ['--operation', GetoptLong::REQUIRED_ARGUMENT],
620
+ ['--time_ax', GetoptLong::REQUIRED_ARGUMENT],
593
621
  ### line/mark option ###
594
622
  ['--line', GetoptLong::NO_ARGUMENT],
595
623
  ['--mark', GetoptLong::NO_ARGUMENT],
@@ -610,6 +638,7 @@ parser.set_options(
610
638
  ['--clevels', GetoptLong::REQUIRED_ARGUMENT],
611
639
  ['--slevels', GetoptLong::REQUIRED_ARGUMENT],
612
640
  ['--patterns', GetoptLong::REQUIRED_ARGUMENT],
641
+ ['--tonf', GetoptLong::NO_ARGUMENT],
613
642
  ['--nocolorbar', GetoptLong::NO_ARGUMENT],
614
643
  ['--nozero', GetoptLong::NO_ARGUMENT],
615
644
  ['--help', GetoptLong::NO_ARGUMENT]
@@ -683,6 +712,15 @@ while ARGV[0] do
683
712
  }
684
713
  end
685
714
 
715
+ ## deviation from mean along any axis
716
+ if ($OPT_eddy)
717
+ dims = ($OPT_eddy).split(/\s*,\s*/)
718
+ dims.each{|dim|
719
+ dim = dim.to_i if dim.to_i.to_s == dim
720
+ gp = gp.eddy(dim)
721
+ }
722
+ end
723
+
686
724
  ## operation of a mathematical function
687
725
  if ($OPT_operation)
688
726
  eval "gp = gp.#{$OPT_operation}"
data/extconf.rb CHANGED
@@ -8,11 +8,10 @@ def install_dirs
8
8
  end
9
9
 
10
10
  #dir_config('narray',$sitearchdir,$sitearchdir)
11
- hoge = Gem::GemPathSearcher.new.find("narray")
12
- narray_fullname = hoge.full_name
13
- narray_installpath = hoge.installation_path
14
- narray_include = "#{narray_installpath}/gems/#{narray_fullname}/"
15
- narray_lib = "#{narray_installpath}/gems/#{narray_fullname}/"
11
+ gem_home=(`gem environment GEM_HOME`).chomp
12
+ narray_dir = Dir.glob("#{gem_home}/gems/narray-*").sort[-1]
13
+ narray_include = narray_dir
14
+ narray_lib = narray_dir
16
15
  dir_config('narray',narray_include,narray_lib)
17
16
 
18
17
  if ( ! ( have_header("narray.h") && have_header("narray_config.h") ) ) then
@@ -39,4 +38,4 @@ if /cygwin|mingw/ =~ RUBY_PLATFORM
39
38
  end
40
39
  end
41
40
 
42
- create_makefile("numru/gphys_ext")
41
+ create_makefile("gphys_ext")
data/gphys.gemspec ADDED
@@ -0,0 +1,34 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "gphys"
8
+ gem.version = GPhys::VERSION
9
+ gem.authors = ["Takeshi Horinouchi", "Ryo Mizuta",\
10
+ "Daisuke Tsukahara", "Seiya Nishizawa", "Shin-ichi Takehiro"]
11
+ gem.email = ["eriko@gfd-dennou.org"]
12
+ gem.description = %q{comprehensive library for self-descriptive gridded physical data (in NetCDF, GrADS, or on memory) with graphicsgraphicsgraphicsgraphics.}
13
+ gem.summary = %q{a multi-purpose class to handle Gridded Physical quantities}
14
+ gem.homepage = 'http://www.gfd-dennou.org/arch/ruby/products/gphys/'
15
+
16
+ gem.files = `git ls-files`.split($/)
17
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
18
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
19
+ gem.require_paths = ["lib"]
20
+ gem.extensions << "extconf.rb"
21
+
22
+ gem.required_ruby_version = Gem::Requirement.new(">= 1.8")
23
+
24
+ gem.add_runtime_dependency(%q<narray>, [">= 0.5.7"])
25
+ gem.add_runtime_dependency(%q<numru-misc>, [">= 0.1.0"])
26
+ gem.add_runtime_dependency(%q<numru-units>, [">= 1.7"])
27
+ gem.add_runtime_dependency(%q<narray_miss>, [">= 1.2.4"])
28
+ gem.add_runtime_dependency(%q<ruby-netcdf>, [">= 0.6.6"])
29
+ gem.add_runtime_dependency(%q<ruby-dcl>, [">= 1.6.1"])
30
+ gem.add_runtime_dependency(%q<ruby-fftw3>, [">= 0.3"])
31
+ gem.add_runtime_dependency(%q<gsl>, [">= 1.14"])
32
+ gem.add_runtime_dependency(%q<ruby-lapack>, [">= 1.5"])
33
+ gem.add_runtime_dependency(%q<rb-grib>, [">= 0.2.0"])
34
+ end
data/interpo.c CHANGED
@@ -14,12 +14,13 @@
14
14
  #endif
15
15
 
16
16
  static VALUE
17
- interpo_do(obj, shape_to, idxmap, val_from, missval)
17
+ interpo_do(obj, shape_to, idxmap, val_from, missval, extrapo)
18
18
  VALUE obj;
19
19
  VALUE shape_to; // [Array] shape of the new grid
20
20
  VALUE idxmap; // [Array] index mapping
21
21
  VALUE val_from; // [NArray] values to be interpolated
22
22
  VALUE missval; // [nil or Float] missing value if Float
23
+ VALUE extrapo; // [false/true] whether to extrapolate
23
24
  {
24
25
  VALUE val_to;
25
26
  VALUE chk , ary;
@@ -33,12 +34,13 @@ interpo_do(obj, shape_to, idxmap, val_from, missval)
33
34
  double *pt, *pf;
34
35
  int nomiss;
35
36
  double vmiss;
37
+ int extr;
36
38
  size_t i, it, kf, j, k, l;
37
39
  int *mtyp;
38
40
  size_t *dm, *dm2, *dm2f, *dm3, *dm3f, *dm4, *dm4f;
39
41
  int **di, nid, nic;
40
42
  double **df, *f, a;
41
- size_t *idf, idfc, *idt;
43
+ int *idf, idfc, *idt;
42
44
 
43
45
  // check arguments
44
46
 
@@ -76,7 +78,10 @@ interpo_do(obj, shape_to, idxmap, val_from, missval)
76
78
  nomiss = (missval == Qnil);
77
79
  if (!nomiss){
78
80
  vmiss = NUM2DBL(missval);
81
+ } else {
82
+ vmiss = -999.0; // dummy to avoid compiler warning (not used)
79
83
  }
84
+ extr = (extrapo != Qfalse); // false -> 0(false); else -> true
80
85
 
81
86
  // read argument (idxmap)
82
87
 
@@ -139,8 +144,8 @@ interpo_do(obj, shape_to, idxmap, val_from, missval)
139
144
 
140
145
  // do interpolation
141
146
 
142
- idt = ALLOCA_N(size_t, rankt);
143
- idf = ALLOCA_N(size_t, rankf);
147
+ idt = ALLOCA_N(int, rankt);
148
+ idf = ALLOCA_N(int, rankf);
144
149
 
145
150
  for(it=0; it<lent; it++){
146
151
  l = it;
@@ -193,6 +198,10 @@ interpo_do(obj, shape_to, idxmap, val_from, missval)
193
198
  k = 0;
194
199
  for(j=0; j<rankf; j++){
195
200
  idfc = idf[j];
201
+ if(!extr && idfc<0){
202
+ pt[it] = vmiss;
203
+ break;
204
+ }
196
205
  if(mtyp[j]>0){
197
206
  if ( (l>>k)%2 && idfc<shf[j]-1 ){
198
207
  idfc += 1;
@@ -202,13 +211,16 @@ interpo_do(obj, shape_to, idxmap, val_from, missval)
202
211
  kf += idfc*cshf;
203
212
  cshf *= shf[j];
204
213
  }
214
+ if (!nomiss && pt[it] == vmiss) {break;}
205
215
  if (nomiss || pf[kf] != vmiss){
206
216
  pt[it] += a*pf[kf];
207
217
  } else {
208
218
  pt[it] = vmiss;
209
219
  break;
210
220
  }
221
+ //printf("$$$$ %d %f %f\n",it, a, pf[kf]);
211
222
  }
223
+ //printf("//// %d %f\n",it, pt[it]);
212
224
  }
213
225
 
214
226
  // finish
@@ -217,32 +229,39 @@ interpo_do(obj, shape_to, idxmap, val_from, missval)
217
229
  }
218
230
 
219
231
  static void
220
- __interpo_find_loc_1D(N, P, n, p, ids, f)
232
+ __interpo_find_loc_1D(N, P, n, p, vmiss, extr, ids, f)
221
233
  double *P, *p; // INPUT
222
234
  size_t N, n; // INPUT
235
+ double vmiss; // INPUT
236
+ int extr; // INPUT
223
237
  int *ids; // OUTPUT
224
238
  double *f; // OUTPUT
225
239
  {
226
- size_t i, j, il, ir;
240
+ size_t j;
241
+ int i, il, ir;
227
242
  int down;
228
243
 
229
244
  // first time finding : use a simple looping
230
245
  j = 0;
231
246
  for(i=0; i<n-1; i++){
232
- if ( (p[i]-P[j])*(P[j]-p[i+1]) >= 0 ){
247
+ if ( p[i] != vmiss && p[i+1] != vmiss &&
248
+ (p[i]-P[j])*(P[j]-p[i+1]) >= 0 ){
233
249
  break;
234
250
  }
235
251
  }
236
252
  if (i<n-1){
237
253
  // found
238
254
  ids[j] = i;
239
- } else {
255
+ } else if (extr) {
240
256
  // not found --> to be extrapolated
241
257
  if ( (P[j]-p[0])*(p[0]-p[n-1]) >= 0 ){
242
258
  ids[j] = i = 0;
243
259
  } else {
244
260
  ids[j] = i = n-2;
245
261
  }
262
+ } else {
263
+ ids[j] = -999999; // a negative value
264
+ i = 0;
246
265
  }
247
266
  f[j] = (p[i]-P[j])/(p[i]-p[i+1]);
248
267
 
@@ -254,41 +273,50 @@ __interpo_find_loc_1D(N, P, n, p, ids, f)
254
273
  if ( (p[i]-P[j])*(P[j]-p[i+1]) >= 0 ) {
255
274
  break;
256
275
  } else {
257
- if ( il>0 && ( down || ir==n-1 ) ){
276
+ if ( il>0 && ( down || ir==n-2 ) ){
258
277
  il--;
259
278
  i = il;
260
279
  down = 0; // false
261
- } else if ( ir<n-1 && ( !down || il==0 ) ){
280
+ } else if ( ir<n-2 && ( !down || il==0 ) ){
262
281
  ir++;
263
282
  i = ir;
264
283
  down = 1; // true
265
284
  } else {
266
- // not found --> to be extrapolated
267
- if ( (P[j]-p[0])*(p[0]-p[n-1]) >= 0 ){
268
- i = 0;
269
- } else {
270
- i = n-2;
285
+ // not found
286
+ if (extr) {
287
+ // to be extrapolated
288
+ if ( (P[j]-p[0])*(p[0]-p[n-1]) >= 0 ){
289
+ i = 0;
290
+ } else {
291
+ i = n-2;
292
+ }
293
+ } else {
294
+ i = -999999; // a negative value (changed to 0 below)
271
295
  }
272
296
  break;
273
297
  }
274
298
  }
275
299
  }
276
300
  ids[j] = i;
301
+ if(i<0){i = 0; down = 0;}
277
302
  f[j] = (p[i]-P[j])/(p[i]-p[i+1]);
278
303
  }
279
304
  }
280
305
 
281
306
  static VALUE
282
- interpo_find_loc_1D(obj, X, x)
307
+ interpo_find_loc_1D(obj, X, x, missval, extrapo)
283
308
  VALUE obj;
284
309
  VALUE X; // [NArray(1D)] coordinate values onto which interpolation is made
285
310
  VALUE x; // [NArray(1D)] coordinate values of original data
311
+ VALUE missval; // [Float] missing value in x
312
+ VALUE extrapo; // [false/true] whether to extrapolate
286
313
  {
287
314
  VALUE na_ids, na_f;
288
315
  VALUE chk;
289
316
  size_t N, n;
290
317
  struct NARRAY *na;
291
- double *P, *p;
318
+ double *P, *p, vmiss;
319
+ int extr;
292
320
  int *ids;
293
321
  double *f;
294
322
  int shape[1]; // could be size_t if NArray is changed
@@ -311,6 +339,10 @@ interpo_find_loc_1D(obj, X, x)
311
339
  n = na->total;
312
340
  p = (double *)NA_PTR(na, 0);
313
341
 
342
+ vmiss = NUM2DBL(missval);
343
+
344
+ extr = (extrapo != Qfalse); // false -> 0(false); else -> true
345
+
314
346
  // prepare output NArrays
315
347
 
316
348
  shape[0] = N;
@@ -323,7 +355,7 @@ interpo_find_loc_1D(obj, X, x)
323
355
 
324
356
  // Do the job
325
357
 
326
- __interpo_find_loc_1D(N, P, n, p, ids, f);
358
+ __interpo_find_loc_1D(N, P, n, p, vmiss, extr, ids, f);
327
359
 
328
360
  // Return
329
361
 
@@ -333,17 +365,20 @@ interpo_find_loc_1D(obj, X, x)
333
365
  /* To apply interpo_find_loc_1D multi-dimensionally
334
366
  */
335
367
  static VALUE
336
- interpo_find_loc_1D_MD(obj, X, x, dimc)
368
+ interpo_find_loc_1D_MD(obj, X, x, dimc, missval, extrapo)
337
369
  VALUE obj;
338
370
  VALUE X; // [NArray(1D)] coordinate values onto which interpolation is made
339
371
  VALUE x; // [NArray(multi-D)] coordinate values of original data
340
372
  VALUE dimc; // [Integer] the dimension in x except which mapping has been set
373
+ VALUE missval; // [Float] missing value in x
374
+ VALUE extrapo; // [false/true] whether to extrapolate
341
375
  {
342
376
  VALUE na_ids, na_f;
343
377
  VALUE chk;
344
378
  size_t N, n1;
345
379
  struct NARRAY *na;
346
- double *P, *p, *p1;
380
+ double *P, *p, *p1, vmiss;
381
+ int extr;
347
382
  int *ids, *ids1;
348
383
  double *f, *f1;
349
384
  int *shr; // shape of the result (could be size_t if NArray is changed)
@@ -370,6 +405,10 @@ interpo_find_loc_1D_MD(obj, X, x, dimc)
370
405
 
371
406
  dmc = NUM2INT( dimc );
372
407
 
408
+ vmiss = NUM2DBL(missval);
409
+
410
+ extr = (extrapo != Qfalse); // false -> 0(false); else -> true
411
+
373
412
  x = na_cast_object(x, NA_DFLOAT);
374
413
  GetNArray(x, na);
375
414
  p = (double *)NA_PTR(na, 0);
@@ -458,7 +497,7 @@ interpo_find_loc_1D_MD(obj, X, x, dimc)
458
497
 
459
498
  // find loc in 1D
460
499
 
461
- __interpo_find_loc_1D(N, P, n1, p1, ids1, f1);
500
+ __interpo_find_loc_1D(N, P, n1, p1, vmiss, extr, ids1, f1);
462
501
 
463
502
  // substitute ids1 and f1 (1D) into ids and f (multi-D)
464
503
 
@@ -486,10 +525,10 @@ init_gphys_interpo()
486
525
  // rb_require("narray"); // it does not work
487
526
  mNumRu = rb_define_module("NumRu");
488
527
  cGPhys = rb_define_class_under(mNumRu, "GPhys", rb_cObject);
489
- rb_define_private_method(cGPhys, "c_interpo_find_loc_1D", interpo_find_loc_1D, 2);
490
- rb_define_private_method(cGPhys, "c_interpo_find_loc_1D_MD", interpo_find_loc_1D_MD, 3);
528
+ rb_define_private_method(cGPhys, "c_interpo_find_loc_1D", interpo_find_loc_1D, 4);
529
+ rb_define_private_method(cGPhys, "c_interpo_find_loc_1D_MD", interpo_find_loc_1D_MD, 5);
491
530
 
492
- rb_define_private_method(cGPhys, "c_interpo_do", interpo_do, 4);
531
+ rb_define_private_method(cGPhys, "c_interpo_do", interpo_do, 5);
493
532
 
494
533
  // to make "find loc" methods available outside GPhys as class methods
495
534
  rb_define_singleton_method(cGPhys, "interpo_find_loc_1D", interpo_find_loc_1D, 2);
data/lib/gphys.rb ADDED
@@ -0,0 +1,2 @@
1
+ require "version"
2
+ require "numru/gphys.rb