gphys 1.1.1a
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/ChangeLog +1777 -0
- data/LICENSE.txt +34 -0
- data/README +33 -0
- data/Rakefile +57 -0
- data/TODO_ep_flux +6 -0
- data/bin/gdir_client +27 -0
- data/bin/gdir_server +129 -0
- data/bin/gpaop +146 -0
- data/bin/gpcat +148 -0
- data/bin/gpcut +102 -0
- data/bin/gpedit +228 -0
- data/bin/gplist +68 -0
- data/bin/gpmath +120 -0
- data/bin/gpmaxmin +128 -0
- data/bin/gpprint +60 -0
- data/bin/gpvect +706 -0
- data/bin/gpview +704 -0
- data/bin/grads2nc_with_gphys +61 -0
- data/doc/attribute.html +19 -0
- data/doc/attributenetcdf.html +15 -0
- data/doc/axis.html +376 -0
- data/doc/coordmapping.html +111 -0
- data/doc/coordtransform.html +36 -0
- data/doc/derivative/gphys-derivative.html +80 -0
- data/doc/derivative/index.html +21 -0
- data/doc/derivative/index.rd +14 -0
- data/doc/derivative/math-doc/document/document.css +30 -0
- data/doc/derivative/math-doc/document/document.html +57 -0
- data/doc/derivative/math-doc/document/images.aux +1 -0
- data/doc/derivative/math-doc/document/images.log +385 -0
- data/doc/derivative/math-doc/document/images.pl +186 -0
- data/doc/derivative/math-doc/document/images.tex +364 -0
- 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 +57 -0
- data/doc/derivative/math-doc/document/labels.pl +13 -0
- 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 +238 -0
- data/doc/derivative/math-doc/document/node2.html +75 -0
- 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 +158 -0
- data/doc/derivative/numru-derivative.html +129 -0
- data/doc/ep_flux/ep_flux.html +469 -0
- data/doc/ep_flux/ggraph_on_merdional_section.html +71 -0
- data/doc/ep_flux/index.html +31 -0
- data/doc/ep_flux/index.rd +24 -0
- data/doc/ep_flux/math-doc/document/WARNINGS +1 -0
- 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 +30 -0
- data/doc/ep_flux/math-doc/document/document.html +101 -0
- data/doc/ep_flux/math-doc/document/images.aux +1 -0
- data/doc/ep_flux/math-doc/document/images.log +1375 -0
- data/doc/ep_flux/math-doc/document/images.pl +1328 -0
- data/doc/ep_flux/math-doc/document/images.tex +1471 -0
- 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 +101 -0
- data/doc/ep_flux/math-doc/document/internals.pl +258 -0
- data/doc/ep_flux/math-doc/document/labels.pl +265 -0
- 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 +104 -0
- data/doc/ep_flux/math-doc/document/node10.html +164 -0
- data/doc/ep_flux/math-doc/document/node11.html +86 -0
- data/doc/ep_flux/math-doc/document/node12.html +166 -0
- data/doc/ep_flux/math-doc/document/node13.html +897 -0
- data/doc/ep_flux/math-doc/document/node14.html +1065 -0
- data/doc/ep_flux/math-doc/document/node15.html +72 -0
- data/doc/ep_flux/math-doc/document/node16.html +81 -0
- data/doc/ep_flux/math-doc/document/node2.html +82 -0
- data/doc/ep_flux/math-doc/document/node3.html +91 -0
- data/doc/ep_flux/math-doc/document/node4.html +149 -0
- data/doc/ep_flux/math-doc/document/node5.html +330 -0
- data/doc/ep_flux/math-doc/document/node6.html +99 -0
- data/doc/ep_flux/math-doc/document/node7.html +98 -0
- data/doc/ep_flux/math-doc/document/node8.html +83 -0
- data/doc/ep_flux/math-doc/document/node9.html +140 -0
- 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 +2018 -0
- data/doc/gdir.html +412 -0
- data/doc/gdir_client.html +16 -0
- data/doc/gdir_connect_ftp-like.html +61 -0
- data/doc/gdir_server.html +45 -0
- data/doc/ggraph.html +1615 -0
- data/doc/gpcat.html +44 -0
- data/doc/gpcut.html +41 -0
- data/doc/gphys.html +532 -0
- data/doc/gphys_fft.html +324 -0
- data/doc/gphys_grads_io.html +69 -0
- data/doc/gphys_grib_io.html +82 -0
- data/doc/gphys_io.html +120 -0
- data/doc/gphys_io_common.html +18 -0
- data/doc/gphys_netcdf_io.html +283 -0
- data/doc/gplist.html +24 -0
- data/doc/gpmath.html +51 -0
- data/doc/gpmaxmin.html +31 -0
- data/doc/gpprint.html +34 -0
- data/doc/gpview.html +270 -0
- data/doc/grads2nc_with_gphys.html +21 -0
- data/doc/grads_gridded.html +307 -0
- data/doc/grib.html +144 -0
- data/doc/grid.html +212 -0
- data/doc/index.html +133 -0
- data/doc/index.rd +127 -0
- data/doc/netcdf_convention.html +136 -0
- data/doc/unumeric.html +176 -0
- data/doc/update +64 -0
- data/doc/varray.html +299 -0
- data/doc/varraycomposite.html +67 -0
- data/ext_coord.c +209 -0
- data/ext_init.c +7 -0
- data/extconf.rb +42 -0
- data/install.rb +130 -0
- data/interpo.c +497 -0
- data/lib/numru/dcl_mouse.rb +71 -0
- data/lib/numru/dclext_datetime_ax.rb +220 -0
- data/lib/numru/derivative.rb +348 -0
- data/lib/numru/ganalysis/covariance.rb +154 -0
- data/lib/numru/ganalysis/eof.rb +298 -0
- data/lib/numru/ganalysis/histogram.rb +252 -0
- data/lib/numru/ganalysis/met.rb +317 -0
- data/lib/numru/ganalysis/planet.rb +182 -0
- data/lib/numru/ganalysis.rb +7 -0
- data/lib/numru/gdir.rb +1038 -0
- data/lib/numru/gdir_connect_ftp-like.rb +149 -0
- data/lib/numru/ggraph.rb +5838 -0
- data/lib/numru/ggraph_on_merdional_section.rb +178 -0
- data/lib/numru/gphys/assoccoords.rb +359 -0
- data/lib/numru/gphys/attribute.rb +129 -0
- data/lib/numru/gphys/attributenetcdf.rb +80 -0
- data/lib/numru/gphys/axis.rb +963 -0
- data/lib/numru/gphys/coordmapping.rb +286 -0
- data/lib/numru/gphys/coordtransform.rb +209 -0
- data/lib/numru/gphys/derivative.rb +314 -0
- data/lib/numru/gphys/ep_flux.rb +868 -0
- data/lib/numru/gphys/gpcommon.rb +52 -0
- data/lib/numru/gphys/gphys.rb +1207 -0
- data/lib/numru/gphys/gphys_fft.rb +886 -0
- data/lib/numru/gphys/gphys_grads_io.rb +212 -0
- data/lib/numru/gphys/gphys_grib_io.rb +214 -0
- data/lib/numru/gphys/gphys_gtool3_io.rb +162 -0
- data/lib/numru/gphys/gphys_hdfeos5_io.rb +672 -0
- data/lib/numru/gphys/gphys_io.rb +452 -0
- data/lib/numru/gphys/gphys_io_common.rb +126 -0
- data/lib/numru/gphys/gphys_netcdf_io.rb +800 -0
- data/lib/numru/gphys/gphys_nusdas_io.rb +132 -0
- data/lib/numru/gphys/grads_gridded.rb +1638 -0
- data/lib/numru/gphys/grib.rb +2049 -0
- data/lib/numru/gphys/grib_params.rb +1465 -0
- data/lib/numru/gphys/grid.rb +723 -0
- data/lib/numru/gphys/gtool3.rb +771 -0
- data/lib/numru/gphys/interpolate.rb +854 -0
- data/lib/numru/gphys/narray_ext.rb +34 -0
- data/lib/numru/gphys/netcdf_convention.rb +406 -0
- data/lib/numru/gphys/subsetmapping.rb +332 -0
- data/lib/numru/gphys/unumeric.rb +522 -0
- data/lib/numru/gphys/varray.rb +1109 -0
- data/lib/numru/gphys/varraycomposite.rb +415 -0
- data/lib/numru/gphys/varraygrads.rb +225 -0
- data/lib/numru/gphys/varraygrib.rb +177 -0
- data/lib/numru/gphys/varraygtool3.rb +226 -0
- data/lib/numru/gphys/varrayhdfeos5.rb +451 -0
- data/lib/numru/gphys/varraynetcdf.rb +350 -0
- data/lib/numru/gphys/varraynusdas.rb +59 -0
- data/lib/numru/gphys.rb +9 -0
- data/lib/numru/htdir.rb +170 -0
- data/multibitIO.c +567 -0
- data/sample/cira86_to_nc.rb +122 -0
- data/sample/druby_cli1.rb +21 -0
- data/sample/druby_cli2.rb +34 -0
- data/sample/druby_serv1.rb +30 -0
- data/sample/druby_serv2.rb +64 -0
- data/sample/ep_flux/demo_NCEP_1.rb +48 -0
- data/sample/ep_flux/demo_NCEP_2.rb +57 -0
- data/sample/ep_flux/demo_NCEP_3.rb +81 -0
- data/sample/ggraph_latlon_labelling_dr002690.rb +159 -0
- data/sample/ggraph_mapfit-axes_dr002687.rb +131 -0
- data/sample/map_projection.rb +121 -0
- data/sample/ncep_theta_coord.rb +79 -0
- data/test/eof_slp.rb +28 -0
- data/test/mltbit.dat +0 -0
- data/test/test_ep_flux.rb +533 -0
- data/test/test_multibitIO.rb +19 -0
- data/testdata/T.jan.ctl +12 -0
- data/testdata/T.jan.dat +0 -0
- data/testdata/T.jan.grib +0 -0
- data/testdata/T.jan.nc +0 -0
- data/testdata/T.jan.packed.withmiss.nc +0 -0
- data/testdata/UV.jan.nc +0 -0
- data/testdata/assoc_crds.nc +0 -0
- data/testdata/cira86.dat +1332 -0
- metadata +621 -0
data/bin/gpview
ADDED
|
@@ -0,0 +1,704 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
##################################################
|
|
3
|
+
=begin
|
|
4
|
+
= NAME
|
|
5
|
+
|
|
6
|
+
gpview - quick viewer for the values of a variable specified by a gtool4-type URL.
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
(1) for 1-dimensional variable, make line plot.
|
|
10
|
+
(2) for 2-dimensional variable, make contour/tone plot.
|
|
11
|
+
(3) for 3/more-dimensional variable, make contour/tone plot,
|
|
12
|
+
select first 2D. possible to make animation.
|
|
13
|
+
|
|
14
|
+
= USAGE
|
|
15
|
+
|
|
16
|
+
The first command form is
|
|
17
|
+
|
|
18
|
+
% gpview [options] gturl1 gturl2 gturl3 ...
|
|
19
|
+
|
|
20
|
+
where the format of the gturl is
|
|
21
|
+
|
|
22
|
+
path@varname[,dimname=pos1[:pos2[:thinning_intv]][,dimname=...]]
|
|
23
|
+
|
|
24
|
+
The second commnad form is
|
|
25
|
+
|
|
26
|
+
% gpview --var url [options] gtfile1 gtfile2 ...
|
|
27
|
+
|
|
28
|
+
where the format of the url is
|
|
29
|
+
|
|
30
|
+
varname[,dimname=pos1[:pos2[:thinning_intv]][,dimname=...]]
|
|
31
|
+
|
|
32
|
+
= OPTIONS
|
|
33
|
+
|
|
34
|
+
if you want to know more description, please read
|
|
35
|
+
|
|
36
|
+
http://ruby.gfd-dennou.org/products/gphys/doc/gpview.html
|
|
37
|
+
|
|
38
|
+
== GLOBAL OPTIONS
|
|
39
|
+
|
|
40
|
+
:--help:
|
|
41
|
+
print this message.
|
|
42
|
+
|
|
43
|
+
:--var url:
|
|
44
|
+
set the variable name and slicing parameters.
|
|
45
|
+
|
|
46
|
+
:--wsn [1-4]:
|
|
47
|
+
set work staion number. each number represent output device:
|
|
48
|
+
1 : X window.
|
|
49
|
+
2 : PS file. (named dcl.ps)
|
|
50
|
+
3 : Tcl/Tk file.
|
|
51
|
+
4 : GTK Windows (depend on dcl-5.3)
|
|
52
|
+
|
|
53
|
+
:--clrmap [1-]:
|
|
54
|
+
set colormap to draw tone/contour.
|
|
55
|
+
|
|
56
|
+
:--itr [1-4,5-7,10-15,20-23,30-33]:
|
|
57
|
+
set axis scale. default is 1.
|
|
58
|
+
1 : linear scale for x/y axis
|
|
59
|
+
2 : linear scale for x , log scale for y axis
|
|
60
|
+
3 : log scale for x , linear scale for y axis
|
|
61
|
+
4 : log scale for x/y axis
|
|
62
|
+
|
|
63
|
+
:--similar [simfac,vxoff,vyoff]:
|
|
64
|
+
(for 5<=itr<=7) set similarity parameters which are fed in DCL.grssim.
|
|
65
|
+
|
|
66
|
+
:--map_axis [uxc,uyc,rot]:
|
|
67
|
+
(for 10<=itr<=33) set mapping parameters which are fed in DCL.umpcnt.
|
|
68
|
+
|
|
69
|
+
:--title:
|
|
70
|
+
set title of figure
|
|
71
|
+
|
|
72
|
+
:--aspect <aspect>:
|
|
73
|
+
set aspect ratio of Viewport. default is 2.0.
|
|
74
|
+
|
|
75
|
+
:--noannotate:
|
|
76
|
+
not draw annotations.
|
|
77
|
+
|
|
78
|
+
:--animate/anim <dim>:
|
|
79
|
+
plot animation along <dim>. <dim> must be name of dimension.
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
:--alternate, --Ga:
|
|
83
|
+
enable to backing store.
|
|
84
|
+
|
|
85
|
+
:--nowait, --Gw:
|
|
86
|
+
not wait for any actions if animate
|
|
87
|
+
|
|
88
|
+
:--reverse, --Gr:
|
|
89
|
+
plot animation reversible if animate
|
|
90
|
+
|
|
91
|
+
:--smooth, --Gaw:
|
|
92
|
+
equal to --anlternate && --nowait
|
|
93
|
+
|
|
94
|
+
:--exch:
|
|
95
|
+
exchange(transpose) x/y axis.
|
|
96
|
+
|
|
97
|
+
:--mean <dim>:
|
|
98
|
+
mean along axis <dim>.
|
|
99
|
+
|
|
100
|
+
:--m, --map <map_type>:
|
|
101
|
+
plot map. itr number must be set. this option is neglect if itr
|
|
102
|
+
number is 1-4. abailable map type is coast_world, border_world,
|
|
103
|
+
plate_world, state_usa, coast_japan, pref_japan
|
|
104
|
+
|
|
105
|
+
:--operation <math_func>:
|
|
106
|
+
operation of the specified math function on the data.
|
|
107
|
+
<math_func> should be a math function with one argument
|
|
108
|
+
such as log10, sqrt, sin, etc.
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
== LINE/MARK OPTIONS
|
|
112
|
+
|
|
113
|
+
:--line:
|
|
114
|
+
make line plot forced. (about first 1D)
|
|
115
|
+
|
|
116
|
+
:--mark:
|
|
117
|
+
make mark plot forced. (about first 1D)
|
|
118
|
+
|
|
119
|
+
:--index:
|
|
120
|
+
set DCL line index, which set the color/thickness of the line
|
|
121
|
+
primitive. please see DCL documents.
|
|
122
|
+
|
|
123
|
+
:--type:
|
|
124
|
+
set line type.
|
|
125
|
+
|
|
126
|
+
:--range [min:max]
|
|
127
|
+
set min/max value for line plot. min or max must be set.
|
|
128
|
+
|
|
129
|
+
:--overplot
|
|
130
|
+
set number of lines on each figure
|
|
131
|
+
|
|
132
|
+
== CONTOUR/TONE OPTIONS
|
|
133
|
+
|
|
134
|
+
:--shade:
|
|
135
|
+
make contour and tone plot.
|
|
136
|
+
|
|
137
|
+
:--noshade:
|
|
138
|
+
make contour plot, without tone.
|
|
139
|
+
|
|
140
|
+
:--nocont:
|
|
141
|
+
make tone plot, without contour.
|
|
142
|
+
|
|
143
|
+
:--range [min:max]:
|
|
144
|
+
set min/max value for contour/tone plot. min or max must be set.
|
|
145
|
+
|
|
146
|
+
:--crange:
|
|
147
|
+
set min/max value for contour plot. this is more dominant than --range
|
|
148
|
+
|
|
149
|
+
:--srange:
|
|
150
|
+
set min/max value for tone plot. this is more dominant than --interval/int
|
|
151
|
+
|
|
152
|
+
:--interval,--int [num]:
|
|
153
|
+
set interval value for contour/tone plot. set the number of lines if
|
|
154
|
+
you set negative value.
|
|
155
|
+
|
|
156
|
+
:--cint:
|
|
157
|
+
set interval value for contour plot. this is more dominant
|
|
158
|
+
than --interval/int
|
|
159
|
+
|
|
160
|
+
:--sint:
|
|
161
|
+
set interval value for tone plot. this is more dominant than --interval/int.
|
|
162
|
+
|
|
163
|
+
:--levels:
|
|
164
|
+
set values of contour/tone levels.
|
|
165
|
+
|
|
166
|
+
:--clevels:
|
|
167
|
+
set values of contour levels.
|
|
168
|
+
|
|
169
|
+
:--slevels:
|
|
170
|
+
set tone of contour levels.
|
|
171
|
+
|
|
172
|
+
:--patterns:
|
|
173
|
+
set each patterns for tone plot.
|
|
174
|
+
|
|
175
|
+
:--nocolorbar:
|
|
176
|
+
do not draw color bar
|
|
177
|
+
|
|
178
|
+
:--nozero:
|
|
179
|
+
do not draw zero contour
|
|
180
|
+
|
|
181
|
+
== EXAMPLES
|
|
182
|
+
|
|
183
|
+
For a single GPhys variable,
|
|
184
|
+
|
|
185
|
+
% gpview data.nc@temp
|
|
186
|
+
% gpview data.nc@temp,lon=130:150,lat=0:90:2
|
|
187
|
+
% gpview --nocont data.nc@temp,lon=130:150,lat=0
|
|
188
|
+
% gpview --noshade data.nc@temp,lon=130:150,lat=0
|
|
189
|
+
% gpview --mean lon data.nc@temp,lon=130:150,lat=0
|
|
190
|
+
% gpview --exch data.nc@temp,lon=130:150,lat=0
|
|
191
|
+
% gpview --animate lon data.nc@temp,lon=130:150
|
|
192
|
+
% gpview --animate lon --alternate data.nc@temp
|
|
193
|
+
% gpview --smooth lon data.nc@temp,lon=130:150
|
|
194
|
+
% gpview --levels 0,10,20,30 --pattern 30999,40999,50999,60999,70999 data.nc@temp
|
|
195
|
+
% gpview --overplot=3 --anim t data.nc@temp,lon=0
|
|
196
|
+
% gpview --mark data.nc@temp,lon=0,lat=0
|
|
197
|
+
% gpview --operation log10 data.nc@temp,lon=0
|
|
198
|
+
|
|
199
|
+
For multiple GPhys variables,
|
|
200
|
+
% gpview data1.nc@temp data2.nc@temp
|
|
201
|
+
% gpview data1.nc@temp,lon=130:150 data2.nc@temp,lon=150:170
|
|
202
|
+
% gpview --overplot=3 --anim t data.nc@temp,lon=0 data.nc@temp,lon=10
|
|
203
|
+
% gpview --var temp,lon=130:150 data?.nc
|
|
204
|
+
% gpview --anim t --var temp,lon=130:150 data*.nc
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
== HISTORY
|
|
208
|
+
|
|
209
|
+
2004/12/14 D Tsukahara && T Horinouti(parse_gturl)
|
|
210
|
+
2005/01/08 D Tsukahara (add option --exch and able to invalid value)
|
|
211
|
+
2005/01/09 D Tsukahara (add option --animate, smooth, alternate, index )
|
|
212
|
+
2005/01/10 D Tsukahara (transpose axis with attr "positive:down" ,
|
|
213
|
+
abailable loopsense_flag. )
|
|
214
|
+
2005/01/10 D Tsukahara (implement GGraph::color_bar, and margin_info,
|
|
215
|
+
which file name, date, and toolname. )
|
|
216
|
+
2005/01/11 D Tsukahara ( 1. write document about OPTIONS.
|
|
217
|
+
2. add many options. more info please see document. )
|
|
218
|
+
2005/01/23 S Takehiro (add option --similar, map_axis)
|
|
219
|
+
2005/02/09 D Tsukahara && M Nakano (add option --reverse, --Gr, --map)
|
|
220
|
+
2005/02/10 D Tsukahara (change option parser (getopts => getoptlong))
|
|
221
|
+
2005/02/24 D Tsukahara (apply --range for line plot)
|
|
222
|
+
2005/06/15 S Takehiro (add option --levels, --clevels, --slevels, --patterns)
|
|
223
|
+
2005/06/17 S Takehiro (missing_value attribute setting removed)
|
|
224
|
+
2005/06/22 S Takehiro (debug, clipping control added to GGraph::annotate)
|
|
225
|
+
2005/06/23 S Takehiro (debug, option --title implemented)
|
|
226
|
+
2005/07/15 S Takehiro (option --noannotate implemented)
|
|
227
|
+
2005/08/07 S Takehiro (option --overplot implemented)
|
|
228
|
+
2005/08/09 S Takehiro && T Horinouchi (add option --help and help function.
|
|
229
|
+
URL information corrected. )
|
|
230
|
+
2005/08/23 S Takehiro (multiple Gphys variables plotting
|
|
231
|
+
and option --var implemented)
|
|
232
|
+
2005/08/23 S Takehiro (common methods to gp* command moved to gpcommon.rb)
|
|
233
|
+
2005/10/30 S Takehiro (option --animate recoverd)
|
|
234
|
+
2005/10/31 S Takehiro (option --smooth bug fixed)
|
|
235
|
+
2006/03/07 M Nakano (option --int bug fixed)
|
|
236
|
+
2007/10/03 S Takehiro (option --nocolorbar implemented)
|
|
237
|
+
2008/04/03 S Takehiro (option --nozero implemented)
|
|
238
|
+
2008/12/14 S Takehiro (option --mark implemented)
|
|
239
|
+
2010/03/10 Y SASAKI (change help block into RD format)
|
|
240
|
+
2011/01/14 T Tanigawa && S Takehiro (option --operation implemented)
|
|
241
|
+
|
|
242
|
+
=end
|
|
243
|
+
#################################################
|
|
244
|
+
require "getoptlong" # for option_parse
|
|
245
|
+
require "numru/ggraph" # ggraph library
|
|
246
|
+
require "numru/gphys/gpcommon"
|
|
247
|
+
|
|
248
|
+
include NumRu
|
|
249
|
+
|
|
250
|
+
#####################################################
|
|
251
|
+
## Default param.
|
|
252
|
+
|
|
253
|
+
VIEWPORT = [0.15,0.85,0.2,0.55]
|
|
254
|
+
URLfmt = "path@varname[,dimname=pos1[:pos2[:thinning_intv]][,dimname=...]]"
|
|
255
|
+
|
|
256
|
+
#####################################################
|
|
257
|
+
def GGraph::annotate(str_ary)
|
|
258
|
+
lclip = DCL.sgpget('lclip')
|
|
259
|
+
DCL.sgpset('lclip',nil)
|
|
260
|
+
lnum = 0
|
|
261
|
+
str_ary.each{ |str|lnum += 1 }
|
|
262
|
+
charsize = 0.7 * DCL.uzpget('rsizec1')
|
|
263
|
+
dvx = 0.01
|
|
264
|
+
dvy = charsize*1.5
|
|
265
|
+
raise TypeError,"Array expected" if ! str_ary.is_a?(Array)
|
|
266
|
+
vxmin,vxmax,vymin,vymax = DCL.sgqvpt
|
|
267
|
+
vx = 0.70
|
|
268
|
+
vy = 0.045 + (lnum-1)*dvy
|
|
269
|
+
str_ary.each{|str|
|
|
270
|
+
DCL::sgtxzv(vx,vy,str,charsize,0,-1,1)
|
|
271
|
+
vy -= dvy
|
|
272
|
+
}
|
|
273
|
+
DCL.sgpset('lclip',lclip)
|
|
274
|
+
nil
|
|
275
|
+
end
|
|
276
|
+
|
|
277
|
+
def each_along_dims(gphys, loopdim)
|
|
278
|
+
|
|
279
|
+
raise ArgumentError,"1st argument must be an GPhys." if !gphys.is_a?(GPhys)
|
|
280
|
+
if loopdim.is_a?(String)
|
|
281
|
+
dimname = loopdim
|
|
282
|
+
elsif
|
|
283
|
+
if loopdim < 0
|
|
284
|
+
dimname = gphys.coord(gphys.rank + loopdim).name
|
|
285
|
+
else
|
|
286
|
+
dimname = gphys.coord(loopdim).name
|
|
287
|
+
end
|
|
288
|
+
else
|
|
289
|
+
raise ArgumentError,"loopdims must consist of Integer and/or String"
|
|
290
|
+
end
|
|
291
|
+
|
|
292
|
+
loopdim_na = gphys.coord(dimname).val # get coord ary
|
|
293
|
+
loopdim_na = loopdim_na[-1..0] if $OPT_reverse || $OPT_Gr # reverse
|
|
294
|
+
loopdim_na.each { |x|
|
|
295
|
+
yield( gphys.cut(dimname=>x) )
|
|
296
|
+
}
|
|
297
|
+
end
|
|
298
|
+
|
|
299
|
+
|
|
300
|
+
def draw_setup(gp)
|
|
301
|
+
|
|
302
|
+
# set missing value
|
|
303
|
+
DCLExt.gl_set_params('lmiss'=>true)
|
|
304
|
+
|
|
305
|
+
# fontsize
|
|
306
|
+
DCL.sgpset('lcntl', false)
|
|
307
|
+
# DCL.uzfact(0.7)
|
|
308
|
+
DCL.sgpset('lfull', true) # use full area in the window
|
|
309
|
+
DCL.sgpset('lfprop',true) # use proportional font
|
|
310
|
+
DCL.uscset('cyspos', 'B' ) # move unit y axis
|
|
311
|
+
|
|
312
|
+
# viewport size
|
|
313
|
+
GGraph.set_fig('viewport'=>$VIEWPORT)
|
|
314
|
+
GGraph.set_fig( 'itr'=>($OPT_itr == nil) ? 1 : $OPT_itr.to_i )
|
|
315
|
+
GGraph.set_fig("xrev"=>"units:mb,units:hPa,units:millibar,positive:down",
|
|
316
|
+
"yrev"=>"units:mb,units:hPa,units:millibar,positive:down")
|
|
317
|
+
|
|
318
|
+
# set options
|
|
319
|
+
min_range, max_range = __split_range($OPT_range)
|
|
320
|
+
min_crange, max_crange = __split_range($OPT_crange)
|
|
321
|
+
min_srange, max_srange = __split_range($OPT_srange)
|
|
322
|
+
GGraph.set_linear_contour_options(
|
|
323
|
+
'int' => ( $OPT_cint || $OPT_interval || $OPT_int ),
|
|
324
|
+
'min' => ( min_crange || min_range ),
|
|
325
|
+
'max' => ( max_crange || max_range )
|
|
326
|
+
)
|
|
327
|
+
GGraph.set_linear_tone_options(
|
|
328
|
+
'int' => ( $OPT_sint || $OPT_interval || $OPT_int ),
|
|
329
|
+
'min' => ( min_srange || min_range ),
|
|
330
|
+
'max' => ( max_srange || max_range )
|
|
331
|
+
)
|
|
332
|
+
if ( $OPT_clevels || $OPT_levels )
|
|
333
|
+
$OPT_clevels=($OPT_clevels || $OPT_levels).split(',').map!{|v| v.to_f }
|
|
334
|
+
end
|
|
335
|
+
|
|
336
|
+
if ( $OPT_slevels || $OPT_levels )
|
|
337
|
+
$OPT_slevels=($OPT_slevels||$OPT_levels).split(',').map!{|v| v.to_f }
|
|
338
|
+
p $OPT_slevels
|
|
339
|
+
end
|
|
340
|
+
|
|
341
|
+
if ( $OPT_patterns )
|
|
342
|
+
$OPT_patterns=$OPT_patterns.split(',').map!{|v| v.to_f }
|
|
343
|
+
end
|
|
344
|
+
|
|
345
|
+
# judge draw kind
|
|
346
|
+
gp_rank = gp.rank
|
|
347
|
+
gp_rank = gp_rank - 1 if ( $OPT_animate || $OPT_anim )
|
|
348
|
+
if ($OPT_mark)
|
|
349
|
+
draw_flag = "mark"
|
|
350
|
+
elsif ($OPT_line || gp_rank == 1)
|
|
351
|
+
draw_flag = "line"
|
|
352
|
+
elsif (!$OPT_line && gp_rank >= 2) && !$OPT_noshade && $OPT_nocont
|
|
353
|
+
draw_flag = "nocont"
|
|
354
|
+
elsif (!$OPT_line && gp_rank >= 2) && $OPT_noshade && !$OPT_nocont
|
|
355
|
+
draw_flag = "noshade"
|
|
356
|
+
elsif (!$OPT_line && gp_rank >= 2) && !$OPT_noshade && !$OPT_nocont
|
|
357
|
+
draw_flag = "full"
|
|
358
|
+
end
|
|
359
|
+
|
|
360
|
+
# similar projection
|
|
361
|
+
if ($OPT_similar)
|
|
362
|
+
if /([\d\-.]*),([\d\-.]*),([\d\-.]*)/ =~ $OPT_similar
|
|
363
|
+
similar=[$1.to_f,$2.to_f,$3.to_f]
|
|
364
|
+
elsif /([\d\-.]*),([\d\-.]*)/ =~ $OPT_similar
|
|
365
|
+
similar=[$1.to_f,$2.to_f,0]
|
|
366
|
+
elsif /([\d\-.]*)/ =~ $OPT_similar
|
|
367
|
+
similar=[$1.to_f,0,0]
|
|
368
|
+
end
|
|
369
|
+
GGraph.set_fig('similar'=>similar)
|
|
370
|
+
end
|
|
371
|
+
|
|
372
|
+
# similar projection
|
|
373
|
+
if ($OPT_map_axis)
|
|
374
|
+
if /([\d\-.]*),([\d\-.]*),([\d\-.]*)/ =~ $OPT_map_axis
|
|
375
|
+
map_axis=[$1.to_f,$2.to_f,$3.to_f]
|
|
376
|
+
elsif /([\d\-.]*),([\d\-.]*)/ =~ $OPT_map_axis
|
|
377
|
+
map_axis=[$1.to_f,$2.to_f,0]
|
|
378
|
+
elsif /([\d\-.]*)/ =~ $OPT_similar
|
|
379
|
+
map_axis=[$1.to_f,0,0]
|
|
380
|
+
end
|
|
381
|
+
GGraph.set_fig('map_axis'=>map_axis)
|
|
382
|
+
end
|
|
383
|
+
|
|
384
|
+
|
|
385
|
+
# map
|
|
386
|
+
if ( $OPT_m || $OPT_map)
|
|
387
|
+
map_type = "coast_world" if $OPT_m
|
|
388
|
+
map_type = $OPT_map if $OPT_map
|
|
389
|
+
GGraph::set_map(map_type=>true)
|
|
390
|
+
end
|
|
391
|
+
|
|
392
|
+
return draw_flag
|
|
393
|
+
|
|
394
|
+
end
|
|
395
|
+
|
|
396
|
+
def draw(gp, draw_flag)
|
|
397
|
+
|
|
398
|
+
# draw hontai
|
|
399
|
+
case draw_flag
|
|
400
|
+
when "line"
|
|
401
|
+
if ( $Overplot == 1 )
|
|
402
|
+
GGraph.line(gp,
|
|
403
|
+
true,
|
|
404
|
+
"title"=>$OPT_title,
|
|
405
|
+
"index"=>($OPT_index||1),
|
|
406
|
+
"type" =>($OPT_type ||1),
|
|
407
|
+
"exchange"=>$OPT_exch,
|
|
408
|
+
"annotate"=>$annotate,
|
|
409
|
+
"min" => __split_range($OPT_range)[0],
|
|
410
|
+
"max" => __split_range($OPT_range)[1]
|
|
411
|
+
)
|
|
412
|
+
else
|
|
413
|
+
GGraph.line(gp,
|
|
414
|
+
false,
|
|
415
|
+
"title"=>$OPT_title,
|
|
416
|
+
"index"=>($OPT_index||1),
|
|
417
|
+
"type" =>($OPT_type ||$Overplot),
|
|
418
|
+
"exchange"=>$OPT_exch,
|
|
419
|
+
"annotate"=>$annotate,
|
|
420
|
+
"min" => __split_range($OPT_range)[0],
|
|
421
|
+
"max" => __split_range($OPT_range)[1]
|
|
422
|
+
)
|
|
423
|
+
end
|
|
424
|
+
if ( $Overplot < $Overplot_max )
|
|
425
|
+
$Overplot += 1
|
|
426
|
+
else
|
|
427
|
+
$Overplot = 1
|
|
428
|
+
end
|
|
429
|
+
|
|
430
|
+
when "mark"
|
|
431
|
+
if ( $Overplot == 1 )
|
|
432
|
+
GGraph.mark(gp,
|
|
433
|
+
true,
|
|
434
|
+
"title"=>$OPT_title,
|
|
435
|
+
"index"=>($OPT_index||1),
|
|
436
|
+
"type" =>($OPT_type ||1),
|
|
437
|
+
"exchange"=>$OPT_exch,
|
|
438
|
+
"annotate"=>$annotate,
|
|
439
|
+
"min" => __split_range($OPT_range)[0],
|
|
440
|
+
"max" => __split_range($OPT_range)[1]
|
|
441
|
+
)
|
|
442
|
+
else
|
|
443
|
+
GGraph.mark(gp,
|
|
444
|
+
false,
|
|
445
|
+
"title"=>$OPT_title,
|
|
446
|
+
"index"=>($OPT_index||1),
|
|
447
|
+
"type" =>($OPT_type ||$Overplot),
|
|
448
|
+
"exchange"=>$OPT_exch,
|
|
449
|
+
"annotate"=>$annotate,
|
|
450
|
+
"min" => __split_range($OPT_range)[0],
|
|
451
|
+
"max" => __split_range($OPT_range)[1]
|
|
452
|
+
)
|
|
453
|
+
end
|
|
454
|
+
if ( $Overplot < $Overplot_max )
|
|
455
|
+
$Overplot += 1
|
|
456
|
+
else
|
|
457
|
+
$Overplot = 1
|
|
458
|
+
end
|
|
459
|
+
|
|
460
|
+
when "full"
|
|
461
|
+
GGraph.tone(gp,
|
|
462
|
+
true,
|
|
463
|
+
"title"=>$OPT_title,
|
|
464
|
+
"annotate"=>$annotate,
|
|
465
|
+
"transpose"=>$OPT_exch,
|
|
466
|
+
"levels"=>$OPT_slevels,
|
|
467
|
+
"patterns"=>$OPT_patterns
|
|
468
|
+
)
|
|
469
|
+
GGraph.contour(gp,
|
|
470
|
+
false,
|
|
471
|
+
"transpose"=>$OPT_exch,
|
|
472
|
+
"levels"=>$OPT_clevels,
|
|
473
|
+
"nozero"=>$OPT_nozero
|
|
474
|
+
)
|
|
475
|
+
when "nocont"
|
|
476
|
+
GGraph.tone(gp,
|
|
477
|
+
true,
|
|
478
|
+
"title"=>$OPT_title,
|
|
479
|
+
"annotate"=>$annotate,
|
|
480
|
+
"transpose"=>$OPT_exch,
|
|
481
|
+
"levels"=>$OPT_slevels,
|
|
482
|
+
"patterns"=>$OPT_patterns
|
|
483
|
+
)
|
|
484
|
+
when "noshade"
|
|
485
|
+
mj = DCL.udpget('indxmj')
|
|
486
|
+
mn = DCL.udpget('indxmn')
|
|
487
|
+
GGraph.contour(gp,
|
|
488
|
+
true,
|
|
489
|
+
"title" =>$OPT_title,
|
|
490
|
+
"label" =>true,
|
|
491
|
+
"annotate"=>$annotate,
|
|
492
|
+
"transpose"=>$OPT_exch,
|
|
493
|
+
"levels"=>$OPT_clevels,
|
|
494
|
+
"nozero"=>$OPT_nozero
|
|
495
|
+
)
|
|
496
|
+
end
|
|
497
|
+
|
|
498
|
+
# color bar
|
|
499
|
+
if ( ( draw_flag == "full") || ( draw_flag == "nocont") ) && $colorbar
|
|
500
|
+
GGraph::color_bar(
|
|
501
|
+
"left" => true,
|
|
502
|
+
"landscape" => true
|
|
503
|
+
)
|
|
504
|
+
end
|
|
505
|
+
|
|
506
|
+
|
|
507
|
+
|
|
508
|
+
end
|
|
509
|
+
|
|
510
|
+
|
|
511
|
+
def set_vpsize( default_vp, aspect=2.0 )
|
|
512
|
+
|
|
513
|
+
raise "#{aspect} must be a positive Numeric" if (aspect.to_f <= 0.0)
|
|
514
|
+
aspect = aspect.to_f
|
|
515
|
+
|
|
516
|
+
# default viewport
|
|
517
|
+
x0 = default_vp[0]; x1 = default_vp[1]
|
|
518
|
+
y0 = default_vp[2]; y1 = default_vp[3]
|
|
519
|
+
# viewport size
|
|
520
|
+
hlength = x1 - x0
|
|
521
|
+
vlength = y1 - y0
|
|
522
|
+
# center grid of viewport
|
|
523
|
+
cen_of_vp = [ x0 + hlength/2.0, y0 + vlength/2.0 ]
|
|
524
|
+
|
|
525
|
+
if aspect <= 2.0
|
|
526
|
+
hlength = vlength * aspect
|
|
527
|
+
x0 = cen_of_vp[0] - hlength/2.0
|
|
528
|
+
x1 = cen_of_vp[0] + hlength/2.0
|
|
529
|
+
else
|
|
530
|
+
vlength = hlength / aspect
|
|
531
|
+
y0 = cen_of_vp[1] - vlength/2.0
|
|
532
|
+
y1 = cen_of_vp[1] + vlength/2.0
|
|
533
|
+
end
|
|
534
|
+
|
|
535
|
+
return [ x0, x1, y0, y1 ]
|
|
536
|
+
|
|
537
|
+
end
|
|
538
|
+
|
|
539
|
+
def __split_range(range)
|
|
540
|
+
|
|
541
|
+
if /(.*):(.*)/ =~ range
|
|
542
|
+
if $1 == ""
|
|
543
|
+
min = nil
|
|
544
|
+
else
|
|
545
|
+
min = $1.to_f
|
|
546
|
+
end
|
|
547
|
+
if $2 == ""
|
|
548
|
+
max = nil
|
|
549
|
+
else
|
|
550
|
+
max = $2.to_f
|
|
551
|
+
end
|
|
552
|
+
elsif range == nil
|
|
553
|
+
min = max = nil
|
|
554
|
+
else
|
|
555
|
+
raise "invalid range: variable subset specification error. split range with ':'\n\n"
|
|
556
|
+
end
|
|
557
|
+
|
|
558
|
+
return min, max
|
|
559
|
+
end
|
|
560
|
+
|
|
561
|
+
|
|
562
|
+
#####################################################
|
|
563
|
+
###++++++ Main Routine ++++++###
|
|
564
|
+
|
|
565
|
+
## parse options
|
|
566
|
+
parser = GetoptLong.new
|
|
567
|
+
parser.set_options(
|
|
568
|
+
### global option ###
|
|
569
|
+
['--var', GetoptLong::REQUIRED_ARGUMENT],
|
|
570
|
+
['--wsn', GetoptLong::REQUIRED_ARGUMENT],
|
|
571
|
+
['--clrmap', GetoptLong::REQUIRED_ARGUMENT],
|
|
572
|
+
['--itr', GetoptLong::REQUIRED_ARGUMENT],
|
|
573
|
+
['--similar', GetoptLong::REQUIRED_ARGUMENT],
|
|
574
|
+
['--map_axis', GetoptLong::REQUIRED_ARGUMENT],
|
|
575
|
+
['--title', GetoptLong::REQUIRED_ARGUMENT],
|
|
576
|
+
['--aspect', GetoptLong::REQUIRED_ARGUMENT],
|
|
577
|
+
['--anim', GetoptLong::REQUIRED_ARGUMENT],
|
|
578
|
+
['--animate', GetoptLong::REQUIRED_ARGUMENT],
|
|
579
|
+
['--noannotate', GetoptLong::NO_ARGUMENT],
|
|
580
|
+
['--alternate', GetoptLong::NO_ARGUMENT],
|
|
581
|
+
['--Ga', GetoptLong::NO_ARGUMENT],
|
|
582
|
+
['--nowait', GetoptLong::NO_ARGUMENT],
|
|
583
|
+
['--Gw', GetoptLong::NO_ARGUMENT],
|
|
584
|
+
['--smooth', GetoptLong::NO_ARGUMENT],
|
|
585
|
+
['--Gaw', GetoptLong::NO_ARGUMENT],
|
|
586
|
+
['--exch', GetoptLong::NO_ARGUMENT],
|
|
587
|
+
['--reverse', GetoptLong::NO_ARGUMENT],
|
|
588
|
+
['--Gr', GetoptLong::NO_ARGUMENT],
|
|
589
|
+
['--mean', GetoptLong::REQUIRED_ARGUMENT],
|
|
590
|
+
['--map', GetoptLong::REQUIRED_ARGUMENT],
|
|
591
|
+
['--m', GetoptLong::NO_ARGUMENT],
|
|
592
|
+
['--operation', GetoptLong::REQUIRED_ARGUMENT],
|
|
593
|
+
### line/mark option ###
|
|
594
|
+
['--line', GetoptLong::NO_ARGUMENT],
|
|
595
|
+
['--mark', GetoptLong::NO_ARGUMENT],
|
|
596
|
+
['--index', GetoptLong::REQUIRED_ARGUMENT],
|
|
597
|
+
['--type', GetoptLong::REQUIRED_ARGUMENT],
|
|
598
|
+
['--overplot', GetoptLong::REQUIRED_ARGUMENT],
|
|
599
|
+
### tone or cont option ###
|
|
600
|
+
['--nocont', GetoptLong::NO_ARGUMENT],
|
|
601
|
+
['--noshade', GetoptLong::NO_ARGUMENT],
|
|
602
|
+
['--range', GetoptLong::REQUIRED_ARGUMENT],
|
|
603
|
+
['--crange', GetoptLong::REQUIRED_ARGUMENT],
|
|
604
|
+
['--srange', GetoptLong::REQUIRED_ARGUMENT],
|
|
605
|
+
['--interval', GetoptLong::REQUIRED_ARGUMENT],
|
|
606
|
+
['--int', GetoptLong::REQUIRED_ARGUMENT],
|
|
607
|
+
['--cint', GetoptLong::REQUIRED_ARGUMENT],
|
|
608
|
+
['--sint', GetoptLong::REQUIRED_ARGUMENT],
|
|
609
|
+
['--levels', GetoptLong::REQUIRED_ARGUMENT],
|
|
610
|
+
['--clevels', GetoptLong::REQUIRED_ARGUMENT],
|
|
611
|
+
['--slevels', GetoptLong::REQUIRED_ARGUMENT],
|
|
612
|
+
['--patterns', GetoptLong::REQUIRED_ARGUMENT],
|
|
613
|
+
['--nocolorbar', GetoptLong::NO_ARGUMENT],
|
|
614
|
+
['--nozero', GetoptLong::NO_ARGUMENT],
|
|
615
|
+
['--help', GetoptLong::NO_ARGUMENT]
|
|
616
|
+
# ['--version', GetoptLong::NO_ARGUMENT] # to be defined
|
|
617
|
+
)
|
|
618
|
+
begin
|
|
619
|
+
parser.each_option do |name, arg|
|
|
620
|
+
eval "$OPT_#{name.sub(/^--/, '').gsub(/-/, '_')} = '#{arg}'" # strage option value to $OPT_val
|
|
621
|
+
end
|
|
622
|
+
rescue
|
|
623
|
+
help
|
|
624
|
+
raise
|
|
625
|
+
end
|
|
626
|
+
|
|
627
|
+
## Print out help message
|
|
628
|
+
if ($OPT_help)
|
|
629
|
+
help
|
|
630
|
+
exit(1)
|
|
631
|
+
end
|
|
632
|
+
|
|
633
|
+
## set some figure option
|
|
634
|
+
DCL::swlset('lwait', false) if ($OPT_nowait || $OPT_Gw || $OPT_smooth || $OPT_Gaw)
|
|
635
|
+
# set wait or nowait
|
|
636
|
+
DCL::swlset('lalt', true) if ($OPT_alternate || $OPT_Ga || $OPT_smooth || $OPT_Gaw)
|
|
637
|
+
# set backing store option
|
|
638
|
+
if ($OPT_noannotate)
|
|
639
|
+
$annotate = false
|
|
640
|
+
else
|
|
641
|
+
$annotate = true
|
|
642
|
+
end
|
|
643
|
+
$Overplot_max = ( $OPT_overplot.to_i || 1 )
|
|
644
|
+
$Overplot = 1
|
|
645
|
+
|
|
646
|
+
if ($OPT_nocolorbar)
|
|
647
|
+
$colorbar = false
|
|
648
|
+
else
|
|
649
|
+
$colorbar = true
|
|
650
|
+
end
|
|
651
|
+
|
|
652
|
+
## decide VIEWPORT
|
|
653
|
+
$VIEWPORT = set_vpsize( VIEWPORT, ($OPT_aspect||2.0) )
|
|
654
|
+
|
|
655
|
+
## tune the size of axis parameters.
|
|
656
|
+
DCL.uzfact(0.7)
|
|
657
|
+
|
|
658
|
+
## draw figure
|
|
659
|
+
loopdim = ( $OPT_animate || $OPT_anim )
|
|
660
|
+
loopdim = loopdim.to_i if loopdim.to_i.to_s == loopdim
|
|
661
|
+
|
|
662
|
+
### set colormap
|
|
663
|
+
DCL.sgscmn($OPT_clrmap||1)
|
|
664
|
+
## open work station
|
|
665
|
+
DCL.gropn($OPT_wsn||1)
|
|
666
|
+
|
|
667
|
+
## open netcdf variables
|
|
668
|
+
|
|
669
|
+
while ARGV[0] do
|
|
670
|
+
gturl = ARGV[0]
|
|
671
|
+
gturl = gturl+'@'+$OPT_var if $OPT_var
|
|
672
|
+
|
|
673
|
+
gp = GPhys::IO.open_gturl(gturl)
|
|
674
|
+
print " Reading #{gturl}\n"
|
|
675
|
+
ARGV.shift
|
|
676
|
+
|
|
677
|
+
## mean along any axis
|
|
678
|
+
if ($OPT_mean)
|
|
679
|
+
dims = ($OPT_mean).split(/\s*,\s*/)
|
|
680
|
+
dims.each{|dim|
|
|
681
|
+
dim = dim.to_i if dim.to_i.to_s == dim
|
|
682
|
+
gp = gp.mean(dim)
|
|
683
|
+
}
|
|
684
|
+
end
|
|
685
|
+
|
|
686
|
+
## operation of a mathematical function
|
|
687
|
+
if ($OPT_operation)
|
|
688
|
+
eval "gp = gp.#{$OPT_operation}"
|
|
689
|
+
end
|
|
690
|
+
|
|
691
|
+
GGraph.margin_info($0, gturl) if $annotate # draw margin infomation
|
|
692
|
+
kind_of_fig = draw_setup(gp) # determine figure kind
|
|
693
|
+
|
|
694
|
+
if loopdim # animation
|
|
695
|
+
each_along_dims(gp, loopdim){|gp_subset|
|
|
696
|
+
draw(gp_subset, kind_of_fig)
|
|
697
|
+
}
|
|
698
|
+
else
|
|
699
|
+
draw( gp, kind_of_fig ) # single figure
|
|
700
|
+
end
|
|
701
|
+
|
|
702
|
+
end
|
|
703
|
+
|
|
704
|
+
DCL.grcls
|