#!/usr/bin/env ruby

=begin
  varname=noaa_olr
  for xwdfile in dcl*xwd
  do
    giffile=`echo $xwdfile | sed s/dcl/$varname/g | sed s/.xwd//g `
    xwdtopnm ${xwdfile} | pnmcut 2 2 904 654  > tmp.pnm
    ppmtogif tmp.pnm > ${giffile}.gif
    rm tmp.pnm ${xwdfile}
  done
=end

# ----------------------------------------------
# 必要なライブラリ, モジュールの読み込み
require "numru/ggraph"
require "numru/dcl"
include NumRu

# ----------------------------------------------
# ファイル名, 変数の読み込み

filename = "shallow.nc"
#filename = "shallow1.nc"
varname = "eigen_val"
eig = GPhys::NetCDF_IO.open(filename,varname)
varname = "growth"
growth = GPhys::NetCDF_IO.open(filename,varname)

# ----------------------------------------------
# 窓開く

=begin
DCL.swpset('LDUMP', true) 
DCL.swpset('LWAIT',false) ; DCL.swpset('LWAIT1',false)  
DCL.swpset('IPOSX', 50) ; DCL.swpset('IPOSY',50)  
=end

iws = (ARGV[0] || (puts ' WORKSTATION ID (I)  ? ;'; DCL::sgpwsn; gets)).to_i
DCL::gropn(-iws)
DCL.slmgn(0.0, 0.0, 0.0, 0.0)  # 描画マージン指定
DCL.sgpset('lfull',true)       # 全画面表示
DCL.uzfact(0.6)
DCL.sgpset('lcorner',false)
DCL.uscset('cyspos', 'B' )      # y 軸単位を書く位置
DCL.sgpset('lfprop',true)      # プロポーショナルフォントを使う
DCL.sgpset('lcntl', false)     # アンダーバーは普通に表示

# ----------------------------------------------

END{
  
#  $file_label = "shallow, c_g = 1.0"
#  $file_label = "shallow, dumping=0.1, c_g = 1.0"
#  $file_label = "shallow, diffusion=0.02, c_g = 1.0"
#  $file_label = "shallow, diffusion=0.2, c_g = 1.0"
  $file_label  = "shallow, diffusion=0.2 kotei, c_g = 1.0"

  plot_main(eig)  

  # lm=41, diffusion=0.2, koteitan
  DCL::uusmki(12)
  markk(112,eig)    # 赤道ケルビン
#  DCL::uusmki(82)
#  markk(115,eig)    # 南北壁のケルビン
#  DCL::uusmki(62)
#  markk(118,eig)    # 南北壁のケルビン
  DCL::uusmki(22)
  markk(111,eig)    # 混合 
  DCL::uusmki(32)
  markk(110,eig)   # n=0 東進重力
  DCL::uusmki(802)
  markk(104,eig)   # n=1 西進重力
  DCL::uusmki(102)
  markk(109,eig)   # n=1 東進重力
  DCL::uusmki(92)
  markk(113,eig)   # n=1 ロスビー


  plot_main(growth)


  # lm=41, diffusion=0.2, koteitan
  DCL::uusmki(12)
  markk(112,growth)    # 赤道ケルビン
#  DCL::uusmki(82)
#  markk(115,growth)    # 南北壁のケルビン
#  DCL::uusmki(62)
#  markk(118,growth)    # 南北壁のケルビン
  DCL::uusmki(22)
  markk(111,growth)    # 混合 
  DCL::uusmki(32)
  markk(110,growth)   # n=0 東進重力
  DCL::uusmki(802)
  markk(104,growth)   # n=1 西進重力
  DCL::uusmki(102)
  markk(109,growth)   # n=1 東進重力
  DCL::uusmki(92)
  markk(113,growth)   # n=1 ロスビー

  DCL.grcls
  
}


def plot_main(eig)
  DCL.grfrm 
  
  k = eig.grid_copy.axis(0).pos.val
  eig.shape[1].times{ |num|
    DCL.usspnt(k,eig[true,num].val)
  }
  
  NumRu::DCL.grswnd(0.0,4.0,-4.0,4.0)
#  NumRu::DCL.grswnd(0.0,4.0,-0.5,0.5)
#  NumRu::DCL.grsvpt(0.23,0.58,0.13,0.83)
  NumRu::DCL.grsvpt(0.15,0.55,0.23,0.88)
  NumRu::DCL.grstrn(1)
  
  DCL::grstrf
  DCL::ussttl( 'knum', '1', 'freq', '1' )
  DCL::usdaxs
  DCL::uusmks(0.015)
  DCL::uusmkt(1)
  
  (eig.shape[1]).times{ |num|
#    DCL::uusmki(100+num*20+5)
    DCL::uusmki(42)
    DCL.uumrk(k,eig[true,num].val)
  }


  DCL::uxsttl("t", "(1)" , -1.0 )
  if eig.name == "growth" then 
    DCL::uxmttl("t", "growth rate", -1.0 ) 
  else
    DCL::uxmttl("t", "frequency", -1.0 ) 
  end
  charsize = 0.56 - $file_label.size * 0.0095 
  DCL::sgtxzv(charsize,0.9,$file_label,0.8 * DCL.uzpget('rsizec1'),0,-1,1) 
  
end

def markk(eigennum,eig)
#  DCL::uusmki(2)
  DCL::uusmkt(4)
  DCL::uusmks(0.01)
  puts eig.shape[1]
  a = [0.5,0.5]
  aa = [eig.val[4,eigennum],eig.val[4,eigennum]]
  DCL.uumrk(a,aa)
end



# lm=80
#DCL.uumrk(k[9..10],eig[9..10,154])  # n=1 東進重力
# DCL.uumrk(k[9..10],eig[9..10,155])  # n=1 西進重力
# DCL.uumrk(k[8..10],eig[8..10,156])  # n=0 東進重力
# DCL.uumrk(k[8..9],eig[8..9,157])    # 南北壁のケルビン
# DCL.uumrk(k[8..9],eig[8..9,158])      # 赤道ケルビン
# DCL.uumrk(k[9..10],eig[9..10,159])  # 南北壁のケルビン
# DCL.uumrk(k[9..10],eig[9..10,160])  # 混合
# DCL.uumrk(k[9..10],eig[9..10,161])  # n=1 ロスビー

# lm=20
# DCL.uumrk(k[9..10],eig[9..10,34])  # n=1 東進重力
# DCL.uumrk(k[8..9],eig[8..9,36])  # n=0 東進重力
# DCL.uumrk(k[9..10],eig[9..10,37])  # 赤道ケルビン
# DCL.uumrk(k[9..10],eig[9..10,38])  # 南北壁のケルビン
# DCL.uumrk(k[9..10],eig[9..10,40])   # 混合 
#DCL.uumrk(k[9..10],eig[9..10,39])# 南北壁のケルビン
#DCL.uumrk(k[9..10],eig[9..10,41])  # n=1 ロスビー
# DCL.uumrk(k[9..10],eig[9..10,35])  # n=1 西進重力


# lm=40
# DCL.uumrk(k[4..5],eig[4..5,74]) # n=1 東進重力
# DCL.uumrk(k[4..5],eig[4..5,75]) # n=1 西進重力
# DCL.uumrk(k[4..5],eig[4..5,76]) # n=0 東進重力
# DCL.uumrk(k[4..5],eig[4..5,77])    # 混合 
# DCL.uumrk(k[4..5],eig[4..5,78]) # 赤道ケルビン
# DCL.uumrk(k[4..5],eig[4..5,79])     # 南北壁のケルビン
# DCL.uumrk(k[4..5],eig[4..5,80])# 南北壁のケルビン
# DCL.uumrk(k[4..5],eig[4..5,81])   # n=1 ロスビー


=begin
  # lm=41
  DCL::uusmki(12)
  markk(80,eig)    # 赤道ケルビン
  DCL::uusmki(82)
  markk(81,eig)    # 南北壁のケルビン
  DCL::uusmki(62)
  markk(82,eig)    # 南北壁のケルビン
  DCL::uusmki(22)
  markk(79,eig)    # 混合 
  DCL::uusmki(32)
  markk(78,eig)   # n=0 東進重力
  DCL::uusmki(802)
  markk(77,eig)   # n=1 西進重力
  DCL::uusmki(102)
  markk(76,eig)   # n=1 東進重力
  DCL::uusmki(92)
  markk(83,eig)   # n=1 ロスビー

  # lm=41, diffusion=0.02
  DCL::uusmki(12)
  markk(102,eig)    # 赤道ケルビン
  DCL::uusmki(82)
  markk(109,eig)    # 南北壁のケルビン
  DCL::uusmki(62)
  markk(110,eig)    # 南北壁のケルビン
  DCL::uusmki(22)
  markk(100,eig)    # 混合 
  DCL::uusmki(32)
  markk(78,eig)   # n=0 東進重力
  DCL::uusmki(802)
  markk(77,eig)   # n=1 西進重力
  DCL::uusmki(102)
  markk(76,eig)   # n=1 東進重力
  DCL::uusmki(92)
  markk(113,eig)   # n=1 ロスビー

  # lm=41, diffusion=0.2
  DCL::uusmki(12)
  markk(113,eig)    # 赤道ケルビン
  DCL::uusmki(82)
#  markk(115,eig)    # 南北壁のケルビン
#  DCL::uusmki(62)
#  markk(118,eig)    # 南北壁のケルビン ???
#  DCL::uusmki(22)
  markk(114,eig)    # 混合 
  DCL::uusmki(32)
  markk(111,eig)   # n=0 東進重力
  DCL::uusmki(802)
  markk(110,eig)   # n=1 西進重力
  DCL::uusmki(102)
  markk(109,eig)   # n=1 東進重力
  DCL::uusmki(92)
  markk(115,eig)   # n=1 ロスビー と  南北壁のケルビン のあいのこ

  # lm=41, diffusion=0.2, koteitan
  DCL::uusmki(12)
  markk(112,eig)    # 赤道ケルビン
#  DCL::uusmki(82)
#  markk(115,eig)    # 南北壁のケルビン
#  DCL::uusmki(62)
#  markk(118,eig)    # 南北壁のケルビン
  DCL::uusmki(22)
  markk(111,eig)    # 混合 
  DCL::uusmki(32)
  markk(110,eig)   # n=0 東進重力
  DCL::uusmki(802)
  markk(104,eig)   # n=1 西進重力
  DCL::uusmki(102)
  markk(109,eig)   # n=1 東進重力
  DCL::uusmki(92)
  markk(113,eig)   # n=1 ロスビー

=end





