# -*- coding: utf-8 -*-
require "numru/ggraph"
include NumRu
include Math

# ----- コマンドラインオプション -----
ek_file = "../ek_analysis/ek-analysis.nc"
ens_file = "../ens_analysis/ens-analysis.nc"
iws = ( ARGV[0] || 1 ).to_i                    # 装置番号 (1,2,or 4)
tsleep = [ ( ARGV[1] || 0.0 ).to_f, 0.0 ].max  # 描画間隔(秒)
wait = ( tsleep <= 0.0 )            #->true/false; 0以下(true)ならマウスクリックを待つ

# ----- 使用データ -----
ek_tro_flux1  = (GPhys::IO.open ek_file, 'tro_flux1').mean("t") 
ek_tro_flux2  = (GPhys::IO.open ek_file, 'tro_flux2').mean("t") 
ek_cli_flux1  = (GPhys::IO.open ek_file, 'cli_flux1').mean("t") 
ek_cli_flux2  = (GPhys::IO.open ek_file, 'cli_flux2').mean("t") 
ek_cli_flux3  = (GPhys::IO.open ek_file, 'cli_flux3').mean("t") 

ens_tro_flux1 = (GPhys::IO.open ens_file, 'tro_flux1').mean("t") 
ens_tro_flux2 = (GPhys::IO.open ens_file, 'tro_flux2').mean("t") 
ens_cli_flux1 = (GPhys::IO.open ens_file, 'cli_flux1').mean("t") 
ens_cli_flux2 = (GPhys::IO.open ens_file, 'cli_flux2').mean("t") 
ens_cli_flux3 = (GPhys::IO.open ens_file, 'cli_flux3').mean("t") 

# ----- DCL設定 -----
def prep_dcl(iws=1,wait=false) # iws : DCL出力デバイス．1,4:画面, 2:PS
  DCL.swpset("iwidth",700)     # 画面の幅
  DCL.swpset("iheight",700)    # 画面の高さ
  DCL.swpset("lwait",wait)     # 次の描画の前にマウスクリックを待つ
  DCL.swpset("lalt",true)      # 裏で描画（パラパラアニメ用）
  DCL.swpset("ifl",1)          # png で出力
  DCL.gropn(iws)
  DCL.sgscmn(39)               # カラーマップ番号の指定
  DCL.sglset("lcntl",true)     # 上付き下付き文字を有効
  DCL.sgiset("ifont",2)
  DCL.glpset('lmiss',true)     # DCLの欠損値処理を on に
  DCL.uzfact(1.5)             # 座標軸の文字列サイズを定数倍
end

va_wn = ek_tro_flux1.coord("n")
axis_wn = Axis.new.set_pos(va_wn)

wn_ek_flux_tmp = NArray.float(341)
ek_flux  = (ek_tro_flux1 + ek_tro_flux2 + ek_cli_flux1 + ek_cli_flux2 + ek_cli_flux3).val
for k in 0..339
  wn_ek_flux_tmp[k] = (k+1)**2 * ek_flux[k]
end
name1 = 'k|2"' + DCL.csgi(143) + '_E"'
wn_ek_flux_tmp2 = VArray.new(wn_ek_flux_tmp, nil,name1 )

# GPhys オブジェクトの作成
wn_ek_flux = GPhys.new(Grid.new(axis_wn),wn_ek_flux_tmp2)
ens_flux = ens_tro_flux1 + ens_tro_flux2 + ens_cli_flux1 + ens_cli_flux2 + ens_cli_flux3
ens_flux.name = DCL.csgi(143) + '_Q"'

sign = wn_ek_flux - ens_flux
sign.name = 'k|2"' + DCL.csgi(143) + '_E"' + DCL.csgi(190) + DCL.csgi(143) + '_Q"' 

title = DCL.csgi(131) + DCL.csgi(164) + "= 1.560" + DCL.csgi(194) + '10|-16"'

x = NArray.sfloat(341)
y = NArray.sfloat(341)
y.fill!(0.0)
x[0] = 1.0
# y[0] = 5.0*10**(-3)
for k in 0..339
    x[k+1] = x[k] + 1.0
#   y[k+1] = y[k]*1.0*10**(0.205)
end

vpt = NArray[0.1, 0.7, 0.1, 0.7]             # ビューポートサイズ (1:1)
vpt00 = ( vpt + ([0.00]*2 + [0.03]*2 ).to_a)    # x,y方向にずらしてArray化

# ----- 描画 -----
prep_dcl(iws,wait)
GGraph.set_fig("itr"=>3,"viewport"=>vpt00)
GGraph.set_axes("ytitle"=>" ","xtitle"=>"k",'xside'=>'b', 'yside'=>'l')
GGraph.line sign,true,"title"=>"","legend"=>true,"type"=>1, "max"=>8.0*10**(0), "min"=>-8.0*10**(0),"index"=>4,"annotate"=>false
GGraph.line wn_ek_flux,false,"legend"=>true,"type"=>2,"index"=>3
GGraph.line ens_flux,false,"legend"=>true,"type"=>4,"index"=>3

DCL.uulinz(x,y,3,3)

DCL.grcls      # 描画終了処理
