gphys 1.1.1 → 1.2.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
#####################################################
|