gphys 1.1.1 → 1.2.2
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.
- data/.gitignore +17 -0
- data/ChangeLog +221 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +18 -30
- data/README +23 -26
- data/README.md +29 -0
- data/Rakefile +1 -56
- data/bin/gpaop +2 -1
- data/bin/gpcut +3 -2
- data/bin/gpedit +6 -2
- data/bin/gpmath +3 -2
- data/bin/gpmaxmin +3 -2
- data/bin/gpprint +2 -1
- data/bin/gpvect +28 -5
- data/bin/gpview +43 -5
- data/extconf.rb +5 -6
- data/gphys.gemspec +34 -0
- data/interpo.c +63 -24
- data/lib/gphys.rb +2 -0
- data/lib/numru/dclext.rb +2636 -0
- data/lib/numru/derivative.rb +53 -12
- data/lib/numru/ganalysis/eof.rb +4 -0
- data/lib/numru/ganalysis/histogram.rb +73 -5
- data/lib/numru/ganalysis/met.rb +163 -2
- data/lib/numru/ganalysis/planet.rb +230 -20
- data/lib/numru/ggraph.rb +147 -2247
- data/lib/numru/gphys/assoccoords.rb +19 -3
- data/lib/numru/gphys/axis.rb +1 -1
- data/lib/numru/gphys/coordmapping.rb +2 -2
- data/lib/numru/gphys/derivative.rb +56 -13
- data/lib/numru/gphys/gphys.rb +17 -1
- data/lib/numru/gphys/gphys_grads_io.rb +6 -5
- data/lib/numru/gphys/gphys_grib_io.rb +6 -6
- data/lib/numru/gphys/gphys_io.rb +25 -6
- data/lib/numru/gphys/grads_gridded.rb +31 -29
- data/lib/numru/gphys/grib.rb +13 -9
- data/lib/numru/gphys/interpolate.rb +153 -29
- data/lib/numru/gphys/unumeric.rb +29 -6
- data/lib/numru/gphys/varray.rb +9 -0
- data/lib/numru/gphys/varraygrib.rb +70 -8
- data/lib/version.rb +3 -0
- metadata +247 -531
- data/doc/attribute.html +0 -19
- data/doc/attributenetcdf.html +0 -15
- data/doc/axis.html +0 -376
- data/doc/coordmapping.html +0 -111
- data/doc/coordtransform.html +0 -36
- data/doc/derivative/gphys-derivative.html +0 -80
- data/doc/derivative/index.html +0 -21
- data/doc/derivative/index.rd +0 -14
- data/doc/derivative/math-doc/document/document.css +0 -30
- data/doc/derivative/math-doc/document/document.html +0 -57
- data/doc/derivative/math-doc/document/images.aux +0 -1
- data/doc/derivative/math-doc/document/images.log +0 -385
- data/doc/derivative/math-doc/document/images.pl +0 -186
- data/doc/derivative/math-doc/document/images.tex +0 -364
- data/doc/derivative/math-doc/document/img1.png +0 -0
- data/doc/derivative/math-doc/document/img10.png +0 -0
- data/doc/derivative/math-doc/document/img11.png +0 -0
- data/doc/derivative/math-doc/document/img12.png +0 -0
- data/doc/derivative/math-doc/document/img13.png +0 -0
- data/doc/derivative/math-doc/document/img14.png +0 -0
- data/doc/derivative/math-doc/document/img15.png +0 -0
- data/doc/derivative/math-doc/document/img16.png +0 -0
- data/doc/derivative/math-doc/document/img17.png +0 -0
- data/doc/derivative/math-doc/document/img18.png +0 -0
- data/doc/derivative/math-doc/document/img19.png +0 -0
- data/doc/derivative/math-doc/document/img2.png +0 -0
- data/doc/derivative/math-doc/document/img20.png +0 -0
- data/doc/derivative/math-doc/document/img21.png +0 -0
- data/doc/derivative/math-doc/document/img22.png +0 -0
- data/doc/derivative/math-doc/document/img23.png +0 -0
- data/doc/derivative/math-doc/document/img24.png +0 -0
- data/doc/derivative/math-doc/document/img25.png +0 -0
- data/doc/derivative/math-doc/document/img26.png +0 -0
- data/doc/derivative/math-doc/document/img27.png +0 -0
- data/doc/derivative/math-doc/document/img28.png +0 -0
- data/doc/derivative/math-doc/document/img29.png +0 -0
- data/doc/derivative/math-doc/document/img3.png +0 -0
- data/doc/derivative/math-doc/document/img30.png +0 -0
- data/doc/derivative/math-doc/document/img4.png +0 -0
- data/doc/derivative/math-doc/document/img5.png +0 -0
- data/doc/derivative/math-doc/document/img6.png +0 -0
- data/doc/derivative/math-doc/document/img7.png +0 -0
- data/doc/derivative/math-doc/document/img8.png +0 -0
- data/doc/derivative/math-doc/document/img9.png +0 -0
- data/doc/derivative/math-doc/document/index.html +0 -57
- data/doc/derivative/math-doc/document/labels.pl +0 -13
- data/doc/derivative/math-doc/document/next.png +0 -0
- data/doc/derivative/math-doc/document/next_g.png +0 -0
- data/doc/derivative/math-doc/document/node1.html +0 -238
- data/doc/derivative/math-doc/document/node2.html +0 -75
- data/doc/derivative/math-doc/document/prev.png +0 -0
- data/doc/derivative/math-doc/document/prev_g.png +0 -0
- data/doc/derivative/math-doc/document/up.png +0 -0
- data/doc/derivative/math-doc/document/up_g.png +0 -0
- data/doc/derivative/math-doc/document.pdf +0 -0
- data/doc/derivative/math-doc/document.tex +0 -158
- data/doc/derivative/numru-derivative.html +0 -129
- data/doc/ep_flux/ep_flux.html +0 -469
- data/doc/ep_flux/ggraph_on_merdional_section.html +0 -71
- data/doc/ep_flux/index.html +0 -31
- data/doc/ep_flux/index.rd +0 -24
- data/doc/ep_flux/math-doc/document/WARNINGS +0 -1
- data/doc/ep_flux/math-doc/document/contents.png +0 -0
- data/doc/ep_flux/math-doc/document/crossref.png +0 -0
- data/doc/ep_flux/math-doc/document/document.css +0 -30
- data/doc/ep_flux/math-doc/document/document.html +0 -101
- data/doc/ep_flux/math-doc/document/images.aux +0 -1
- data/doc/ep_flux/math-doc/document/images.log +0 -1375
- data/doc/ep_flux/math-doc/document/images.pl +0 -1328
- data/doc/ep_flux/math-doc/document/images.tex +0 -1471
- data/doc/ep_flux/math-doc/document/img1.png +0 -0
- data/doc/ep_flux/math-doc/document/img10.png +0 -0
- data/doc/ep_flux/math-doc/document/img100.png +0 -0
- data/doc/ep_flux/math-doc/document/img101.png +0 -0
- data/doc/ep_flux/math-doc/document/img102.png +0 -0
- data/doc/ep_flux/math-doc/document/img103.png +0 -0
- data/doc/ep_flux/math-doc/document/img104.png +0 -0
- data/doc/ep_flux/math-doc/document/img105.png +0 -0
- data/doc/ep_flux/math-doc/document/img106.png +0 -0
- data/doc/ep_flux/math-doc/document/img107.png +0 -0
- data/doc/ep_flux/math-doc/document/img108.png +0 -0
- data/doc/ep_flux/math-doc/document/img109.png +0 -0
- data/doc/ep_flux/math-doc/document/img11.png +0 -0
- data/doc/ep_flux/math-doc/document/img110.png +0 -0
- data/doc/ep_flux/math-doc/document/img111.png +0 -0
- data/doc/ep_flux/math-doc/document/img112.png +0 -0
- data/doc/ep_flux/math-doc/document/img113.png +0 -0
- data/doc/ep_flux/math-doc/document/img114.png +0 -0
- data/doc/ep_flux/math-doc/document/img115.png +0 -0
- data/doc/ep_flux/math-doc/document/img116.png +0 -0
- data/doc/ep_flux/math-doc/document/img117.png +0 -0
- data/doc/ep_flux/math-doc/document/img118.png +0 -0
- data/doc/ep_flux/math-doc/document/img119.png +0 -0
- data/doc/ep_flux/math-doc/document/img12.png +0 -0
- data/doc/ep_flux/math-doc/document/img120.png +0 -0
- data/doc/ep_flux/math-doc/document/img121.png +0 -0
- data/doc/ep_flux/math-doc/document/img122.png +0 -0
- data/doc/ep_flux/math-doc/document/img123.png +0 -0
- data/doc/ep_flux/math-doc/document/img124.png +0 -0
- data/doc/ep_flux/math-doc/document/img125.png +0 -0
- data/doc/ep_flux/math-doc/document/img126.png +0 -0
- data/doc/ep_flux/math-doc/document/img127.png +0 -0
- data/doc/ep_flux/math-doc/document/img128.png +0 -0
- data/doc/ep_flux/math-doc/document/img129.png +0 -0
- data/doc/ep_flux/math-doc/document/img13.png +0 -0
- data/doc/ep_flux/math-doc/document/img130.png +0 -0
- data/doc/ep_flux/math-doc/document/img131.png +0 -0
- data/doc/ep_flux/math-doc/document/img132.png +0 -0
- data/doc/ep_flux/math-doc/document/img133.png +0 -0
- data/doc/ep_flux/math-doc/document/img134.png +0 -0
- data/doc/ep_flux/math-doc/document/img135.png +0 -0
- data/doc/ep_flux/math-doc/document/img136.png +0 -0
- data/doc/ep_flux/math-doc/document/img137.png +0 -0
- data/doc/ep_flux/math-doc/document/img138.png +0 -0
- data/doc/ep_flux/math-doc/document/img139.png +0 -0
- data/doc/ep_flux/math-doc/document/img14.png +0 -0
- data/doc/ep_flux/math-doc/document/img140.png +0 -0
- data/doc/ep_flux/math-doc/document/img141.png +0 -0
- data/doc/ep_flux/math-doc/document/img142.png +0 -0
- data/doc/ep_flux/math-doc/document/img143.png +0 -0
- data/doc/ep_flux/math-doc/document/img144.png +0 -0
- data/doc/ep_flux/math-doc/document/img145.png +0 -0
- data/doc/ep_flux/math-doc/document/img146.png +0 -0
- data/doc/ep_flux/math-doc/document/img147.png +0 -0
- data/doc/ep_flux/math-doc/document/img148.png +0 -0
- data/doc/ep_flux/math-doc/document/img149.png +0 -0
- data/doc/ep_flux/math-doc/document/img15.png +0 -0
- data/doc/ep_flux/math-doc/document/img150.png +0 -0
- data/doc/ep_flux/math-doc/document/img151.png +0 -0
- data/doc/ep_flux/math-doc/document/img152.png +0 -0
- data/doc/ep_flux/math-doc/document/img153.png +0 -0
- data/doc/ep_flux/math-doc/document/img154.png +0 -0
- data/doc/ep_flux/math-doc/document/img155.png +0 -0
- data/doc/ep_flux/math-doc/document/img156.png +0 -0
- data/doc/ep_flux/math-doc/document/img157.png +0 -0
- data/doc/ep_flux/math-doc/document/img158.png +0 -0
- data/doc/ep_flux/math-doc/document/img159.png +0 -0
- data/doc/ep_flux/math-doc/document/img16.png +0 -0
- data/doc/ep_flux/math-doc/document/img160.png +0 -0
- data/doc/ep_flux/math-doc/document/img161.png +0 -0
- data/doc/ep_flux/math-doc/document/img162.png +0 -0
- data/doc/ep_flux/math-doc/document/img163.png +0 -0
- data/doc/ep_flux/math-doc/document/img164.png +0 -0
- data/doc/ep_flux/math-doc/document/img165.png +0 -0
- data/doc/ep_flux/math-doc/document/img166.png +0 -0
- data/doc/ep_flux/math-doc/document/img167.png +0 -0
- data/doc/ep_flux/math-doc/document/img168.png +0 -0
- data/doc/ep_flux/math-doc/document/img169.png +0 -0
- data/doc/ep_flux/math-doc/document/img17.png +0 -0
- data/doc/ep_flux/math-doc/document/img170.png +0 -0
- data/doc/ep_flux/math-doc/document/img171.png +0 -0
- data/doc/ep_flux/math-doc/document/img172.png +0 -0
- data/doc/ep_flux/math-doc/document/img173.png +0 -0
- data/doc/ep_flux/math-doc/document/img174.png +0 -0
- data/doc/ep_flux/math-doc/document/img175.png +0 -0
- data/doc/ep_flux/math-doc/document/img176.png +0 -0
- data/doc/ep_flux/math-doc/document/img177.png +0 -0
- data/doc/ep_flux/math-doc/document/img178.png +0 -0
- data/doc/ep_flux/math-doc/document/img179.png +0 -0
- data/doc/ep_flux/math-doc/document/img18.png +0 -0
- data/doc/ep_flux/math-doc/document/img180.png +0 -0
- data/doc/ep_flux/math-doc/document/img181.png +0 -0
- data/doc/ep_flux/math-doc/document/img182.png +0 -0
- data/doc/ep_flux/math-doc/document/img183.png +0 -0
- data/doc/ep_flux/math-doc/document/img184.png +0 -0
- data/doc/ep_flux/math-doc/document/img185.png +0 -0
- data/doc/ep_flux/math-doc/document/img186.png +0 -0
- data/doc/ep_flux/math-doc/document/img187.png +0 -0
- data/doc/ep_flux/math-doc/document/img188.png +0 -0
- data/doc/ep_flux/math-doc/document/img189.png +0 -0
- data/doc/ep_flux/math-doc/document/img19.png +0 -0
- data/doc/ep_flux/math-doc/document/img190.png +0 -0
- data/doc/ep_flux/math-doc/document/img191.png +0 -0
- data/doc/ep_flux/math-doc/document/img192.png +0 -0
- data/doc/ep_flux/math-doc/document/img193.png +0 -0
- data/doc/ep_flux/math-doc/document/img194.png +0 -0
- data/doc/ep_flux/math-doc/document/img195.png +0 -0
- data/doc/ep_flux/math-doc/document/img196.png +0 -0
- data/doc/ep_flux/math-doc/document/img197.png +0 -0
- data/doc/ep_flux/math-doc/document/img198.png +0 -0
- data/doc/ep_flux/math-doc/document/img199.png +0 -0
- data/doc/ep_flux/math-doc/document/img2.png +0 -0
- data/doc/ep_flux/math-doc/document/img20.png +0 -0
- data/doc/ep_flux/math-doc/document/img200.png +0 -0
- data/doc/ep_flux/math-doc/document/img21.png +0 -0
- data/doc/ep_flux/math-doc/document/img22.png +0 -0
- data/doc/ep_flux/math-doc/document/img23.png +0 -0
- data/doc/ep_flux/math-doc/document/img24.png +0 -0
- data/doc/ep_flux/math-doc/document/img25.png +0 -0
- data/doc/ep_flux/math-doc/document/img26.png +0 -0
- data/doc/ep_flux/math-doc/document/img27.png +0 -0
- data/doc/ep_flux/math-doc/document/img28.png +0 -0
- data/doc/ep_flux/math-doc/document/img29.png +0 -0
- data/doc/ep_flux/math-doc/document/img3.png +0 -0
- data/doc/ep_flux/math-doc/document/img30.png +0 -0
- data/doc/ep_flux/math-doc/document/img31.png +0 -0
- data/doc/ep_flux/math-doc/document/img32.png +0 -0
- data/doc/ep_flux/math-doc/document/img33.png +0 -0
- data/doc/ep_flux/math-doc/document/img34.png +0 -0
- data/doc/ep_flux/math-doc/document/img35.png +0 -0
- data/doc/ep_flux/math-doc/document/img36.png +0 -0
- data/doc/ep_flux/math-doc/document/img37.png +0 -0
- data/doc/ep_flux/math-doc/document/img38.png +0 -0
- data/doc/ep_flux/math-doc/document/img39.png +0 -0
- data/doc/ep_flux/math-doc/document/img4.png +0 -0
- data/doc/ep_flux/math-doc/document/img40.png +0 -0
- data/doc/ep_flux/math-doc/document/img41.png +0 -0
- data/doc/ep_flux/math-doc/document/img42.png +0 -0
- data/doc/ep_flux/math-doc/document/img43.png +0 -0
- data/doc/ep_flux/math-doc/document/img44.png +0 -0
- data/doc/ep_flux/math-doc/document/img45.png +0 -0
- data/doc/ep_flux/math-doc/document/img46.png +0 -0
- data/doc/ep_flux/math-doc/document/img47.png +0 -0
- data/doc/ep_flux/math-doc/document/img48.png +0 -0
- data/doc/ep_flux/math-doc/document/img49.png +0 -0
- data/doc/ep_flux/math-doc/document/img5.png +0 -0
- data/doc/ep_flux/math-doc/document/img50.png +0 -0
- data/doc/ep_flux/math-doc/document/img51.png +0 -0
- data/doc/ep_flux/math-doc/document/img52.png +0 -0
- data/doc/ep_flux/math-doc/document/img53.png +0 -0
- data/doc/ep_flux/math-doc/document/img54.png +0 -0
- data/doc/ep_flux/math-doc/document/img55.png +0 -0
- data/doc/ep_flux/math-doc/document/img56.png +0 -0
- data/doc/ep_flux/math-doc/document/img57.png +0 -0
- data/doc/ep_flux/math-doc/document/img58.png +0 -0
- data/doc/ep_flux/math-doc/document/img59.png +0 -0
- data/doc/ep_flux/math-doc/document/img6.png +0 -0
- data/doc/ep_flux/math-doc/document/img60.png +0 -0
- data/doc/ep_flux/math-doc/document/img61.png +0 -0
- data/doc/ep_flux/math-doc/document/img62.png +0 -0
- data/doc/ep_flux/math-doc/document/img63.png +0 -0
- data/doc/ep_flux/math-doc/document/img64.png +0 -0
- data/doc/ep_flux/math-doc/document/img65.png +0 -0
- data/doc/ep_flux/math-doc/document/img66.png +0 -0
- data/doc/ep_flux/math-doc/document/img67.png +0 -0
- data/doc/ep_flux/math-doc/document/img68.png +0 -0
- data/doc/ep_flux/math-doc/document/img69.png +0 -0
- data/doc/ep_flux/math-doc/document/img7.png +0 -0
- data/doc/ep_flux/math-doc/document/img70.png +0 -0
- data/doc/ep_flux/math-doc/document/img71.png +0 -0
- data/doc/ep_flux/math-doc/document/img72.png +0 -0
- data/doc/ep_flux/math-doc/document/img73.png +0 -0
- data/doc/ep_flux/math-doc/document/img74.png +0 -0
- data/doc/ep_flux/math-doc/document/img75.png +0 -0
- data/doc/ep_flux/math-doc/document/img76.png +0 -0
- data/doc/ep_flux/math-doc/document/img77.png +0 -0
- data/doc/ep_flux/math-doc/document/img78.png +0 -0
- data/doc/ep_flux/math-doc/document/img79.png +0 -0
- data/doc/ep_flux/math-doc/document/img8.png +0 -0
- data/doc/ep_flux/math-doc/document/img80.png +0 -0
- data/doc/ep_flux/math-doc/document/img81.png +0 -0
- data/doc/ep_flux/math-doc/document/img82.png +0 -0
- data/doc/ep_flux/math-doc/document/img83.png +0 -0
- data/doc/ep_flux/math-doc/document/img84.png +0 -0
- data/doc/ep_flux/math-doc/document/img85.png +0 -0
- data/doc/ep_flux/math-doc/document/img86.png +0 -0
- data/doc/ep_flux/math-doc/document/img87.png +0 -0
- data/doc/ep_flux/math-doc/document/img88.png +0 -0
- data/doc/ep_flux/math-doc/document/img89.png +0 -0
- data/doc/ep_flux/math-doc/document/img9.png +0 -0
- data/doc/ep_flux/math-doc/document/img90.png +0 -0
- data/doc/ep_flux/math-doc/document/img91.png +0 -0
- data/doc/ep_flux/math-doc/document/img92.png +0 -0
- data/doc/ep_flux/math-doc/document/img93.png +0 -0
- data/doc/ep_flux/math-doc/document/img94.png +0 -0
- data/doc/ep_flux/math-doc/document/img95.png +0 -0
- data/doc/ep_flux/math-doc/document/img96.png +0 -0
- data/doc/ep_flux/math-doc/document/img97.png +0 -0
- data/doc/ep_flux/math-doc/document/img98.png +0 -0
- data/doc/ep_flux/math-doc/document/img99.png +0 -0
- data/doc/ep_flux/math-doc/document/index.html +0 -101
- data/doc/ep_flux/math-doc/document/internals.pl +0 -258
- data/doc/ep_flux/math-doc/document/labels.pl +0 -265
- data/doc/ep_flux/math-doc/document/next.png +0 -0
- data/doc/ep_flux/math-doc/document/next_g.png +0 -0
- data/doc/ep_flux/math-doc/document/node1.html +0 -104
- data/doc/ep_flux/math-doc/document/node10.html +0 -164
- data/doc/ep_flux/math-doc/document/node11.html +0 -86
- data/doc/ep_flux/math-doc/document/node12.html +0 -166
- data/doc/ep_flux/math-doc/document/node13.html +0 -897
- data/doc/ep_flux/math-doc/document/node14.html +0 -1065
- data/doc/ep_flux/math-doc/document/node15.html +0 -72
- data/doc/ep_flux/math-doc/document/node16.html +0 -81
- data/doc/ep_flux/math-doc/document/node2.html +0 -82
- data/doc/ep_flux/math-doc/document/node3.html +0 -91
- data/doc/ep_flux/math-doc/document/node4.html +0 -149
- data/doc/ep_flux/math-doc/document/node5.html +0 -330
- data/doc/ep_flux/math-doc/document/node6.html +0 -99
- data/doc/ep_flux/math-doc/document/node7.html +0 -98
- data/doc/ep_flux/math-doc/document/node8.html +0 -83
- data/doc/ep_flux/math-doc/document/node9.html +0 -140
- data/doc/ep_flux/math-doc/document/prev.png +0 -0
- data/doc/ep_flux/math-doc/document/prev_g.png +0 -0
- data/doc/ep_flux/math-doc/document/up.png +0 -0
- data/doc/ep_flux/math-doc/document/up_g.png +0 -0
- data/doc/ep_flux/math-doc/document.pdf +0 -0
- data/doc/ep_flux/math-doc/document.tex +0 -2018
- data/doc/gdir.html +0 -412
- data/doc/gdir_client.html +0 -16
- data/doc/gdir_connect_ftp-like.html +0 -61
- data/doc/gdir_server.html +0 -45
- data/doc/ggraph.html +0 -1615
- data/doc/gpcat.html +0 -44
- data/doc/gpcut.html +0 -41
- data/doc/gphys.html +0 -532
- data/doc/gphys_fft.html +0 -324
- data/doc/gphys_grads_io.html +0 -69
- data/doc/gphys_grib_io.html +0 -82
- data/doc/gphys_io.html +0 -120
- data/doc/gphys_io_common.html +0 -18
- data/doc/gphys_netcdf_io.html +0 -283
- data/doc/gplist.html +0 -24
- data/doc/gpmath.html +0 -51
- data/doc/gpmaxmin.html +0 -31
- data/doc/gpprint.html +0 -34
- data/doc/gpview.html +0 -270
- data/doc/grads2nc_with_gphys.html +0 -21
- data/doc/grads_gridded.html +0 -307
- data/doc/grib.html +0 -144
- data/doc/grid.html +0 -212
- data/doc/index.html +0 -133
- data/doc/index.rd +0 -127
- data/doc/netcdf_convention.html +0 -136
- data/doc/unumeric.html +0 -176
- data/doc/update +0 -64
- data/doc/varray.html +0 -299
- data/doc/varraycomposite.html +0 -67
@@ -55,18 +55,34 @@ module NumRu
|
|
55
55
|
@groups = Hash.new # axnames => assoc coord names
|
56
56
|
assoc_crds.each do |gp|
|
57
57
|
pushed = false
|
58
|
+
axnames_sv = acnames_sv = nil
|
58
59
|
@groups.each do | axnames, acnames |
|
59
60
|
a = gp.axnames
|
60
61
|
if (axnames - a).length < axnames.length # included?
|
61
|
-
|
62
|
-
|
62
|
+
unless pushed
|
63
|
+
# first time in this loop
|
64
|
+
axnames.concat(a).uniq!
|
65
|
+
acnames.push(gp.name)
|
66
|
+
axnames_sv = axnames
|
67
|
+
acnames_sv = acnames
|
68
|
+
else
|
69
|
+
# second or greater time in this loop --> need merger to the first
|
70
|
+
@groups.delete(axnames)
|
71
|
+
axnames_sv.concat(axnames).uniq!
|
72
|
+
acnames_sv.concat(acnames).uniq!
|
73
|
+
end
|
63
74
|
pushed = true
|
64
|
-
break
|
75
|
+
#break # <-- old code; this doesn't work
|
65
76
|
end
|
66
77
|
end
|
67
78
|
@groups[ gp.axnames ] = [gp.name] if !pushed # new group
|
68
79
|
end
|
69
80
|
|
81
|
+
# < sort keys in @groups in the order of original axes >
|
82
|
+
# -- though its necesity was not originally supposed, but...
|
83
|
+
@groups.each_key do |axnames|
|
84
|
+
axnames.replace( @axnames - (@axnames - axnames) )
|
85
|
+
end
|
70
86
|
end
|
71
87
|
|
72
88
|
attr_reader :assoc_crds, :axnames, :axlens
|
data/lib/numru/gphys/axis.rb
CHANGED
@@ -278,9 +278,9 @@ if $0 == __FILE__
|
|
278
278
|
puts "<<forward>>"
|
279
279
|
p p,q,r
|
280
280
|
puts "<<inverse>>"
|
281
|
-
p *mp.inverse_map(p,q,r)
|
281
|
+
p( *mp.inverse_map(p,q,r))
|
282
282
|
puts "<<map grid>>"
|
283
283
|
x = y = NArray[0.0, 1.0]
|
284
284
|
z = NArray[0.0,1.0,2.0]
|
285
|
-
p *mp.map_grid(x,y,z)
|
285
|
+
p( *mp.map_grid(x,y,z))
|
286
286
|
end
|
@@ -82,6 +82,9 @@ module NumRu
|
|
82
82
|
def threepoint_O2nd_deriv(*args)
|
83
83
|
Derivative::threepoint_O2nd_deriv(self,*args)
|
84
84
|
end
|
85
|
+
def deriv2nd(*args)
|
86
|
+
Derivative::deriv2nd(self,*args)
|
87
|
+
end
|
85
88
|
|
86
89
|
module Derivative
|
87
90
|
|
@@ -93,15 +96,19 @@ module NumRu
|
|
93
96
|
|
94
97
|
module_function
|
95
98
|
|
96
|
-
def threepoint_O2nd_deriv(gp, dim, bc=
|
97
|
-
__deriv(gp, dim, bc, altcoord, "threepoint_O2nd_deriv")
|
99
|
+
def threepoint_O2nd_deriv(gp, dim, bc=CYCLIC_OR_LINEAR, altcoord=nil)
|
100
|
+
__deriv(gp, dim, bc, altcoord, "threepoint_O2nd_deriv",1)
|
101
|
+
end
|
102
|
+
|
103
|
+
def cderiv(gp, dim, bc=CYCLIC_OR_LINEAR, altcoord=nil)
|
104
|
+
__deriv(gp, dim, bc, altcoord, "cderiv",1)
|
98
105
|
end
|
99
106
|
|
100
|
-
def
|
101
|
-
__deriv(gp, dim, bc, altcoord, "
|
107
|
+
def deriv2nd(gp, dim, bc=CYCLIC_OR_LINEAR, altcoord=nil)
|
108
|
+
__deriv(gp, dim, bc, altcoord, "deriv2nd",2)
|
102
109
|
end
|
103
110
|
|
104
|
-
def __deriv(gp,dim,bc, altcoord, dtype="cderiv")
|
111
|
+
def __deriv(gp,dim,bc, altcoord, dtype="cderiv", deriv_order=1)
|
105
112
|
if bc == CYCLIC_OR_LINEAR
|
106
113
|
bc = ( gp.axis(dim).cyclic_extendible? ? CYCLIC_EXT : LINEAR_EXT )
|
107
114
|
end
|
@@ -127,22 +134,39 @@ module NumRu
|
|
127
134
|
n_dgpdx = NumRu::Derivative::cderiv(n_data,n_x,dim,bc)
|
128
135
|
when "threepoint_O2nd_deriv"
|
129
136
|
n_dgpdx = NumRu::Derivative::threepoint_O2nd_deriv(n_data,n_x,dim,bc)
|
137
|
+
when "deriv2nd"
|
138
|
+
n_dgpdx = NumRu::Derivative::deriv2nd(n_data,n_x,dim,bc)
|
130
139
|
else
|
131
140
|
raise ArgumentError, "Unsupported derivative type :'#{dtype}'"
|
132
141
|
end
|
133
|
-
|
134
|
-
|
142
|
+
case deriv_order
|
143
|
+
when 1
|
144
|
+
name = "d#{gp.name}_d#{v_x.name}" # ex. "dT_dx"
|
145
|
+
when 2
|
146
|
+
name = "d2#{gp.name}_d#{v_x.name}2" # ex. "d2T_dx2"
|
147
|
+
end
|
148
|
+
v_dgpdx = VArray.new(n_dgpdx, gp.data, name) # make varray
|
135
149
|
g_dgpdx = GPhys.new( gp.grid_copy, v_dgpdx ) # make gphys
|
136
150
|
|
137
151
|
# <<set attribute>>
|
138
152
|
u_data = v_data.units
|
139
153
|
u_x = v_x.units
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
154
|
+
case deriv_order
|
155
|
+
when 1
|
156
|
+
g_dgpdx.units = u_data/u_x # set units
|
157
|
+
if v_data.get_att('long_name') && v_x.get_att('long_name')
|
158
|
+
long_name = "d_#{v_data.get_att('long_name')}_d_#{v_x.get_att('long_name')}"
|
159
|
+
else
|
160
|
+
long_name = name
|
161
|
+
end
|
162
|
+
when 2
|
163
|
+
g_dgpdx.units = u_data/u_x**2 # set units
|
164
|
+
if v_data.get_att('long_name') && v_x.get_att('long_name')
|
165
|
+
long_name = "d2(#{v_data.get_att('long_name')})_d(#{v_x.get_att('long_name')})2"
|
166
|
+
else
|
167
|
+
long_name = name
|
168
|
+
end
|
169
|
+
end
|
146
170
|
g_dgpdx.data.set_att("long_name",long_name) # set long_name
|
147
171
|
return g_dgpdx
|
148
172
|
end
|
@@ -277,6 +301,20 @@ if $0 == __FILE__
|
|
277
301
|
show_attr(gp, deriv)
|
278
302
|
end
|
279
303
|
|
304
|
+
def test5(x1, dim_or_dimname)
|
305
|
+
f1 = sin(x1)
|
306
|
+
gp1 = make_gp1D(f1, x1)
|
307
|
+
deriv = GPhys::Derivative::deriv2nd(gp1, dim_or_dimname)
|
308
|
+
dfdx1 = deriv.data.val
|
309
|
+
dfdx2 = -sin(x1)
|
310
|
+
p(dfdx1) if $VERBOSE
|
311
|
+
diff = (dfdx1 - dfdx2)[1..-2].abs
|
312
|
+
err = diff.mean
|
313
|
+
print "dfdx - kaiseki_kai (except boundary): "
|
314
|
+
print err, "\t", diff.max,"\n"
|
315
|
+
err
|
316
|
+
end
|
317
|
+
|
280
318
|
## main routine of test ---------------------------------------------
|
281
319
|
|
282
320
|
[0, "lon"].each do |dim|
|
@@ -303,6 +341,11 @@ if $0 == __FILE__
|
|
303
341
|
er2 = test2( gen_z2(21), dim )
|
304
342
|
print "error change from nx=11->21: ", er2/er1,"\n"
|
305
343
|
|
344
|
+
print "**** equally spaced grid (2nd deriv) ****\n"
|
345
|
+
er1 = test5( gen_x(11), dim )
|
346
|
+
er2 = test5( gen_x(21), dim )
|
347
|
+
print "error change from nx=11->21: ", er2/er1,"\n"
|
348
|
+
|
306
349
|
end
|
307
350
|
|
308
351
|
print "************** multi-D *************\n"
|
data/lib/numru/gphys/gphys.rb
CHANGED
@@ -409,7 +409,13 @@
|
|
409
409
|
((|You know what it is.|))
|
410
410
|
|
411
411
|
---shape_coerce(other)
|
412
|
-
Like ((<coerce>)), but just changes shape without changing numeric type
|
412
|
+
Like ((<coerce>)), but just changes shape without changing numeric type
|
413
|
+
by possibly inserting dimensions whose lengths are one (i.e.,
|
414
|
+
without changeing the total length of data).
|
415
|
+
|
416
|
+
---shape_coerce_full(other)
|
417
|
+
Similar to ((<shape_coerce>)) but to return the gphyses having
|
418
|
+
really the same shape with possible expansion by replication.
|
413
419
|
|
414
420
|
---transpose(*dims)
|
415
421
|
Transpose.
|
@@ -767,6 +773,16 @@ module NumRu
|
|
767
773
|
end
|
768
774
|
end
|
769
775
|
|
776
|
+
def shape_coerce_full(other)
|
777
|
+
o, s = shape_coerce(other)
|
778
|
+
if o.length < s.length
|
779
|
+
o = GPhys.new( s.grid, o + NArray.new(o.typecode,*s.shape) )
|
780
|
+
elsif o.length > s.length
|
781
|
+
s = GPhys.new( o.grid, s + NArray.new(s.typecode,*o.shape) )
|
782
|
+
end
|
783
|
+
[o, s]
|
784
|
+
end
|
785
|
+
|
770
786
|
def transpose(*dims)
|
771
787
|
grid = @grid.transpose(*dims)
|
772
788
|
data = @data.transpose(*dims)
|
@@ -80,17 +80,18 @@ module NumRu
|
|
80
80
|
raise ArgumentError, "1st arg must be a GrADS_Gridded or a file name"
|
81
81
|
end
|
82
82
|
|
83
|
-
grvar =
|
83
|
+
grvar = GrADSVar.new(file,varname,true,false)
|
84
84
|
data = VArrayGrADS.new(grvar)
|
85
85
|
|
86
|
-
|
87
|
-
|
88
|
-
rank =
|
86
|
+
shape_current = grvar.shape_current
|
87
|
+
dimnames = grvar.dim_names
|
88
|
+
rank = dimnames.length
|
89
89
|
bare_index = [ false ] * rank # will be true if coord var is not found
|
90
90
|
|
91
91
|
axes = Array.new
|
92
92
|
for i in 0...rank
|
93
|
-
|
93
|
+
grvar = GrADSVar.new(file,dimnames[i],false,true)
|
94
|
+
axpos = VArrayGrADS.new(grvar)[0...shape_current[i]]
|
94
95
|
|
95
96
|
cell_center = true
|
96
97
|
cell = false
|
@@ -72,13 +72,13 @@ module NumRu
|
|
72
72
|
module_function
|
73
73
|
|
74
74
|
def is_a_Grib?(filename)
|
75
|
-
|
75
|
+
VArrayGrib.grib.is_a_Grib?(filename)
|
76
76
|
end
|
77
77
|
|
78
78
|
def open(file, varname)
|
79
79
|
if file.is_a?(String)
|
80
|
-
file =
|
81
|
-
elsif !
|
80
|
+
file = VArrayGrib.grib.open(file)
|
81
|
+
elsif ! VArrayGrib.grib===file
|
82
82
|
raise ArgumentError, "1st arg must be a Grib or a file name"
|
83
83
|
end
|
84
84
|
|
@@ -157,8 +157,8 @@ module NumRu
|
|
157
157
|
opened = false
|
158
158
|
case file
|
159
159
|
when String
|
160
|
-
file =
|
161
|
-
when
|
160
|
+
file = VArrayGrib.grib.open(file)
|
161
|
+
when VArrayGrib.grib
|
162
162
|
opened = true
|
163
163
|
else
|
164
164
|
raise ArgumentError, "arg must be a Grib or a file name"
|
@@ -197,7 +197,7 @@ if $0 == __FILE__
|
|
197
197
|
|
198
198
|
puts "\n** test convert (T.jan.nc to tmp.grib) **"
|
199
199
|
temp3 = GPhys::NetCDF_IO.open("../../../testdata/T.jan.nc","T")
|
200
|
-
file =
|
200
|
+
file = VArrayGrib.grib.create("tmp.grib")
|
201
201
|
GPhys::Grib_IO.write(file,temp3)
|
202
202
|
file.close
|
203
203
|
|
data/lib/numru/gphys/gphys_io.rb
CHANGED
@@ -61,11 +61,11 @@ For example, (('GPhys::IO.open(file, name)')) simply calls
|
|
61
61
|
---parse_gturl(gturl)
|
62
62
|
Parses GTOOL4-type URLs to specify path, variable name,
|
63
63
|
and optionally subsets, whose format is
|
64
|
-
(('path
|
64
|
+
(('path[@|/]varname[,dimname=pos1[:pos2[:thinning_intv]][,dimname=...]]'))
|
65
65
|
|
66
66
|
ARGUMENTS
|
67
67
|
* gturl (String) GTOOL4 URL, whose format is
|
68
|
-
(('path
|
68
|
+
(('path[@|/]varname[,dimname=pos1[:pos2[:thinning_intv]][,dimname=...]]'))
|
69
69
|
|
70
70
|
RETURN VALUES
|
71
71
|
* An Array consisting of [file, var, slice, cut_slice, thinning], where
|
@@ -116,6 +116,15 @@ module NumRu
|
|
116
116
|
module IO
|
117
117
|
module_function
|
118
118
|
|
119
|
+
## switches for io libraries
|
120
|
+
# switch grib library
|
121
|
+
def use_gphys_grib
|
122
|
+
VArrayGrib.use_gphys_grib
|
123
|
+
end
|
124
|
+
def use_rb_grib
|
125
|
+
VArrayGrib.use_rb_grib
|
126
|
+
end
|
127
|
+
|
119
128
|
## // module functions to be defined in specific IO modules -->
|
120
129
|
def open(file, varname)
|
121
130
|
file2specific_module(file)::open(file, varname)
|
@@ -158,9 +167,16 @@ module NumRu
|
|
158
167
|
GTOOL3 => GPhys::Gtool3_IO}
|
159
168
|
@@file_class = {NETCDF => NetCDF,
|
160
169
|
GRADS => GrADS_Gridded,
|
161
|
-
GRIB =>
|
170
|
+
#GRIB => VArrayGrib.grib, # Hash is not dynamic: see below
|
162
171
|
NUSDAS => NuSDaS,
|
163
172
|
GTOOL3 => Gtool3}
|
173
|
+
def @@file_class.[](key)
|
174
|
+
if key == GRIB
|
175
|
+
VArrayGrib.grib
|
176
|
+
else
|
177
|
+
super
|
178
|
+
end
|
179
|
+
end
|
164
180
|
@@nc_pattern = [/\.nc$/]
|
165
181
|
@@grad_pattern = [/\.ctl$/]
|
166
182
|
@@grib_pattern = [/\.grib$/, /\.grb$/]
|
@@ -181,7 +197,7 @@ module NumRu
|
|
181
197
|
return NETCDF
|
182
198
|
when GrADS_Gridded
|
183
199
|
return GRADS
|
184
|
-
when
|
200
|
+
when VArrayGrib.grib
|
185
201
|
return GRIB
|
186
202
|
when NuSDaS
|
187
203
|
return NUSDAS
|
@@ -260,14 +276,17 @@ module NumRu
|
|
260
276
|
file2specific_module(file).var_names_except_coordinates(file)
|
261
277
|
end
|
262
278
|
|
263
|
-
GTURLfmt = "path
|
279
|
+
GTURLfmt = "path[@|/]varname[,dimname=pos1[:pos2[:thinning_intv]][,dimname=...]]"
|
264
280
|
|
265
281
|
def parse_gturl(gturl)
|
266
282
|
if /(.*)@(.*)/ =~ gturl
|
267
283
|
file = $1
|
268
284
|
var = $2
|
285
|
+
elsif /(.*)\/(.*)/ =~ gturl
|
286
|
+
file = $1
|
287
|
+
var = $2
|
269
288
|
else
|
270
|
-
raise "invalid URL: '
|
289
|
+
raise "invalid URL: '[@|/]' between path & variable is not found\n\n" +
|
271
290
|
"URL format: " + GTURLfmt
|
272
291
|
end
|
273
292
|
if /,/ =~ var
|
@@ -1215,56 +1215,58 @@ EOS
|
|
1215
1215
|
|
1216
1216
|
class GrADSVar
|
1217
1217
|
|
1218
|
-
def initialize(file,varname)
|
1218
|
+
def initialize(file,varname,varonly=false,dimonly=false)
|
1219
1219
|
@varname = varname
|
1220
1220
|
|
1221
1221
|
if file.is_a?(String)
|
1222
1222
|
file = GrADS_Gridded.open(file)
|
1223
|
-
elsif !
|
1223
|
+
elsif !file.is_a?(GrADS_Gridded)
|
1224
1224
|
raise ArgumentError, "1st arg must be a GrADS_Gridded or a file name"
|
1225
1225
|
end
|
1226
1226
|
@ctl = file # control file name
|
1227
|
-
# @ctl = ctl
|
1228
|
-
|
1229
|
-
@idim = -1
|
1230
|
-
for i in 0...@ctl.dimensions.length
|
1231
|
-
# p @ctl.dimensions[i][:name]
|
1232
|
-
if @varname == @ctl.dimensions[i][:name]
|
1233
|
-
@idim = i
|
1234
|
-
end
|
1235
|
-
end
|
1236
1227
|
|
1237
1228
|
@attr = NumRu::Attribute.new
|
1238
|
-
if( @idim != -1 )
|
1239
|
-
@dimensions = [ @ctl.dimensions[@idim] ]
|
1240
|
-
@rank = 1
|
1241
|
-
@attr[:name] = @dimensions[0][:name]
|
1242
|
-
@attr[:long_name] = @dimensions[0][:description]
|
1243
|
-
@attr[:units] = @dimensions[0][:units]
|
1244
|
-
if @attr[:long_name] == "time" && @ctl.get_att("365_day_calendar") == true
|
1245
|
-
@attr[:calendar] = "365_day"
|
1246
|
-
end
|
1247
1229
|
|
1248
|
-
|
1249
|
-
|
1230
|
+
found = false
|
1231
|
+
if !dimonly
|
1250
1232
|
@dimensions = @ctl.dimensions
|
1251
1233
|
@rank = @dimensions.length
|
1252
|
-
|
1253
|
-
|
1254
|
-
|
1255
|
-
@attr[:long_name] =
|
1256
|
-
@attr[:nlev] =
|
1234
|
+
@ctl.variables.each do |var|
|
1235
|
+
if @varname == var[:name]
|
1236
|
+
@idim = -1
|
1237
|
+
@attr[:long_name] = var[:description]
|
1238
|
+
@attr[:nlev] = var[:nlev].to_s
|
1257
1239
|
|
1258
1240
|
@shape = [@dimensions[0][:len],@dimensions[1][:len],
|
1259
1241
|
@dimensions[2][:len],@dimensions[3][:len]]
|
1260
|
-
@shape[2] =
|
1242
|
+
@shape[2] = var[:nlev].to_i if( var[:nlev] )
|
1261
1243
|
|
1262
1244
|
@attr[:missing_value] = NArray.sfloat(1).fill!(@ctl.undef)
|
1263
1245
|
found = true
|
1264
1246
|
end
|
1265
1247
|
end
|
1266
|
-
raise "variable #{@varname} is not found" if !found
|
1267
1248
|
end
|
1249
|
+
|
1250
|
+
if !found && !varonly
|
1251
|
+
@ctl.dimensions.each_with_index do |dim,i|
|
1252
|
+
if @varname == dim[:name]
|
1253
|
+
@idim = i
|
1254
|
+
@dimensions = [ dim ]
|
1255
|
+
@rank = 1
|
1256
|
+
@attr[:name] = dim[:name]
|
1257
|
+
@attr[:long_name] = dim[:description]
|
1258
|
+
@attr[:units] = dim[:units]
|
1259
|
+
if @attr[:long_name] == "time" && @ctl.get_att("365_day_calendar") == true
|
1260
|
+
@attr[:calendar] = "365_day"
|
1261
|
+
end
|
1262
|
+
|
1263
|
+
@shape = [dim[:len]]
|
1264
|
+
found = true
|
1265
|
+
end
|
1266
|
+
end
|
1267
|
+
end
|
1268
|
+
|
1269
|
+
raise "variable #{@varname} is not found" if !found
|
1268
1270
|
end
|
1269
1271
|
|
1270
1272
|
attr_accessor (:rank)
|
data/lib/numru/gphys/grib.rb
CHANGED
@@ -31,6 +31,7 @@ end
|
|
31
31
|
## <---/
|
32
32
|
|
33
33
|
module NumRu
|
34
|
+
class GPhys
|
34
35
|
module GribUtils
|
35
36
|
require "numru/gphys/grib_params"
|
36
37
|
private
|
@@ -230,7 +231,7 @@ module NumRu
|
|
230
231
|
len = file.read(3).to_uint3
|
231
232
|
bds = GribBDS.new(obj,file.pos,len)
|
232
233
|
obj.bds = bds
|
233
|
-
file.seek(len-3
|
234
|
+
file.seek(len-3,::IO::SEEK_CUR)
|
234
235
|
|
235
236
|
es = GribES.new(obj,file.read(4))
|
236
237
|
unless es.grib?
|
@@ -1020,14 +1021,14 @@ module NumRu
|
|
1020
1021
|
private
|
1021
1022
|
def oct4
|
1022
1023
|
return @oct4 if @oct4
|
1023
|
-
@sgm.file.seek(@pos, IO::SEEK_SET)
|
1024
|
+
@sgm.file.seek(@pos, ::IO::SEEK_SET)
|
1024
1025
|
@oct4 = @sgm.file.read(1).to_uint1
|
1025
1026
|
return @oct4
|
1026
1027
|
end
|
1027
1028
|
def oct14
|
1028
1029
|
return nil if flag4==0
|
1029
1030
|
return @oct14 if @oct14
|
1030
|
-
@sgm.file.seek(@pos+10, IO::SEEK_SET)
|
1031
|
+
@sgm.file.seek(@pos+10, ::IO::SEEK_SET)
|
1031
1032
|
@oct14 = @sgm.file.read(1).to_uint1
|
1032
1033
|
return @oct14
|
1033
1034
|
end
|
@@ -1070,7 +1071,7 @@ module NumRu
|
|
1070
1071
|
ebu = (8-(eb&7))/nstep unless ebu==0
|
1071
1072
|
eb = (eb+7)/8
|
1072
1073
|
return NArray.sfloat(0) if eb==sb
|
1073
|
-
file.seek(pos+sb
|
1074
|
+
file.seek(pos+sb,::IO::SEEK_SET)
|
1074
1075
|
str = file.read(eb-sb)
|
1075
1076
|
return get_bits(str,nstep,nbits,sbu,ebu,NArray::SFLOAT)
|
1076
1077
|
end
|
@@ -1183,19 +1184,19 @@ module NumRu
|
|
1183
1184
|
end
|
1184
1185
|
def offset
|
1185
1186
|
return @offset if @offset
|
1186
|
-
@sgm.file.seek(@pos+3, IO::SEEK_SET)
|
1187
|
+
@sgm.file.seek(@pos+3, ::IO::SEEK_SET)
|
1187
1188
|
@offset = float_value(@sgm.file.read(4))
|
1188
1189
|
return @offset
|
1189
1190
|
end
|
1190
1191
|
def efactor
|
1191
1192
|
return @efactor if @efactor
|
1192
|
-
@sgm.file.seek(@pos+1, IO::SEEK_SET)
|
1193
|
+
@sgm.file.seek(@pos+1, ::IO::SEEK_SET)
|
1193
1194
|
@efactor = 2.0**str2int2( @sgm.file.read(2) )
|
1194
1195
|
return @efactor
|
1195
1196
|
end
|
1196
1197
|
def value(shape,*arg)
|
1197
1198
|
nbits_unuse = oct4&15
|
1198
|
-
@sgm.file.seek(@pos+7, IO::SEEK_SET)
|
1199
|
+
@sgm.file.seek(@pos+7, ::IO::SEEK_SET)
|
1199
1200
|
nbits_pack = @sgm.file.read(1).to_uint1
|
1200
1201
|
if (nbits_pack%8) == 0
|
1201
1202
|
nstep = 8
|
@@ -1280,7 +1281,7 @@ module NumRu
|
|
1280
1281
|
else
|
1281
1282
|
raise "not defined yet"
|
1282
1283
|
n1 = @file.read(2).to_uint2
|
1283
|
-
@sgm.file.seek(1, IO::SEEK_CUR)
|
1284
|
+
@sgm.file.seek(1, ::IO::SEEK_CUR)
|
1284
1285
|
str = @sgm.file.read(6)
|
1285
1286
|
n2 = str.to_uint2
|
1286
1287
|
p1 = str.to_uint2(2)
|
@@ -1406,6 +1407,8 @@ module NumRu
|
|
1406
1407
|
return defined?(is) && is
|
1407
1408
|
end
|
1408
1409
|
def open(fname)
|
1410
|
+
#warn "This grib library is obsoleted."
|
1411
|
+
#warn "Use http://ruby.gfd-dennou.org/products/rb-grib/ instead."
|
1409
1412
|
f = Grib.new(fname,"r")
|
1410
1413
|
mbio = NumRu::MultibitIO.new(fname)
|
1411
1414
|
f.parse(mbio)
|
@@ -1427,7 +1430,7 @@ module NumRu
|
|
1427
1430
|
while true
|
1428
1431
|
@file.read(1)=="\000" && next
|
1429
1432
|
@file.eof? && break
|
1430
|
-
@file.seek(-1, IO::SEEK_CUR)
|
1433
|
+
@file.seek(-1, ::IO::SEEK_CUR)
|
1431
1434
|
sgm = GribSegment.parse(@file, mbio)
|
1432
1435
|
return nil unless sgm
|
1433
1436
|
name = sgm.pds.sname
|
@@ -2015,6 +2018,7 @@ module NumRu
|
|
2015
2018
|
end
|
2016
2019
|
|
2017
2020
|
end
|
2021
|
+
end
|
2018
2022
|
|
2019
2023
|
|
2020
2024
|
#####################################################
|