#!/usr/bin/env ruby =begin = mkfig.rb -- make figure for 25 years mean strm(mass stream function) =end require "getopts" # for option_parse require "numru/netcdf_miss" require "numru/ggraph" require "colorbar" require "libgphys-n" include NumRu def make_mean_gphys(season,year) phys = "STRM" src = "NCEP" ary = [] y1 = year[0]; y2 = year[1] path = "../../#{phys}.#{src}/" season.each do |m| y1.upto(y2) do |y| fn = path + "#{phys}.#{y}.#{src}/#{phys}_#{y}-#{m}_#{src}.nc" ary << fn end end return mean_gphys(ary, phys.downcase) end year = [1979, 2003] winter = ["12", "01", "02"]; spring = ["03", "04", "05"] summer = ["06", "07", "08"]; fall = ["09", "10", "11"] level = [-9e+12, 0, 9e+12]; pattern = [35999, 70999] contour_int = 1.0e10 djf = make_mean_gphys(winter,year).cut('level'=>100..1000) mam = make_mean_gphys(spring,year).cut('level'=>100..1000) jja = make_mean_gphys(summer,year).cut('level'=>100..1000) son = make_mean_gphys(fall,year).cut('level'=>100..1000) # set User Path for dcldatabase DCL.glcset('DUPATH','/home/daktu32/.dcldir/') ## four in one(itr 2) itr = 2 DCL.gropn(2) DCL.sgpset('lcntl', false) # DCL.sgpset('lfull',true) # DCL.sgpset('lcorner',false) # DCL.uzfact(0.35) # DCL.sgpset('lfprop',true) # DCL.udpset('lmsg',false) # # ビューポート設定 vpt = NArray[0.05, 0.45, 0.05, 0.25] # vpt00 = ( vpt + ([0.050]*2 + [0.32]*2) ).to_a # vpt01 = ( vpt + ([0.474]*2 + [0.32]*2) ).to_a # vpt10 = ( vpt + ([0.050]*2 + [0.10]*2) ).to_a # vpt11 = ( vpt + ([0.474]*2 + [0.10]*2) ).to_a # # dcl に欠損値情報を教える before = DCLExt.gl_set_params('lmiss'=>true,'rmiss'=>djf.data.get_att("missing_value")[0]) # contour 間隔設定 GGraph.set_linear_contour_options( 'int'=>contour_int) # 冬平均(左上の絵) GGraph.set_fig('viewport'=>vpt00, 'itr'=>itr) GGraph.set_axes('xunits'=>'','yunits'=>'','xtitle'=>'') DCL.uzpset('labelxb',false) GGraph.tone( mam, true , 'annot'=>false, 'titl'=>'', 'pat'=>pattern, 'lev'=>level ) GGraph.contour( mam, false , 'annot'=>false, 'titl'=>'' ) DCL.uzpset('pad1',0.2) ; DCL.uxsttl('t','Spring(MAM)', -1) ; DCL.uzpset('pad1',0.7) # 春平均(右上の絵) GGraph.set_fig('viewport'=>vpt01, 'new_frame'=>false, 'itr'=>itr) GGraph.set_axes('ytitle'=>'') DCL.uzpset('labelyl',false) GGraph.tone( jja, true , 'annot'=>false, 'titl'=>'', 'pat'=>pattern, 'lev'=>level ) GGraph.contour( jja, false , 'annot'=>false, 'titl'=>'' ) DCL.uzpset('pad1',0.2) ; DCL.uxsttl('t','Summer(JJA)',-1) ; DCL.uzpset('pad1',0.7) # 夏平均(左下の絵) GGraph.set_fig('viewport'=>vpt10, 'new_frame'=>false, 'itr'=>itr) GGraph.set_axes('ytitle'=>nil,'xtitle'=>nil) DCL.uzpset('labelyl',true); DCL.uzpset('labelxb',true) GGraph.tone( son, true , 'annot'=>false, 'titl'=>'', 'pat'=>pattern, 'lev'=>level ) GGraph.contour( son, false , 'annot'=>false, 'titl'=>'' ) DCL.uzpset('pad1',0.2) ; DCL.uxsttl('t','Autumn(SON)',-1) ; DCL.uzpset('pad1',0.7) # 秋平均(右下の絵) GGraph.set_fig('viewport'=>vpt11, 'new_frame'=>false, 'itr'=>itr) GGraph.set_axes('ytitle'=>'') DCL.uzpset('labelyl',false) GGraph.tone( djf, true , 'annot'=>false, 'titl'=>'', 'pat'=>pattern, 'lev'=>level ) GGraph.contour( djf, false , 'annot'=>false, 'titl'=>'' ) DCL.uzpset('pad1',0.2) ; DCL.uxsttl('t','Winter(DJF)',-1) ; DCL.uzpset('pad1',0.7) ## -- colorbar -- DCL::Util::color_bar({ "levels"=>level, "colors"=>pattern, "eqlev"=>true, "nobound"=>0, "tick1"=>10,"tick2"=>1, "vx0"=>0.3, "vxlength"=>0.4, "vy0"=>0.08, "vylength"=>0.02 }) ## -- extra information -- DCL::sgtxzv(0.5,vpt00[3]+0.028,"25 years mean Mass Stream Function (1979-2003)", 1.15*DCL.uzpget('rsizec2'),0,0,3) DCL::sgtxzv(0.88,vpt00[3]+0.01,"(units:#{djf.data.units.to_s})", 0.9*DCL.uzpget('rsizec2'),0,0,3) DCL.grcls