#!/usr/bin/env ruby
load "/home/yukiko/work/ape/yukiko/lib/ape-view.rb"

set_dir_id  = "aguforape"
host = "eva01"

#$rezol = "T39L96_eml"
#$rezol = "T39L48_eml"
#$rezol = "T39L24_eml"
#$rezol = "T159L48_eml"


#$rezol = "T39L96_non"
#$rezol = "T39L48_non"
#$rezol = "T39L24_non"
#$rezol = "T159L48_non"
#$rezol = "T319L48_non"
$rezol = "T79L48_non"


$expID = "control"
set_dir(set_dir_id,host)

$dir = "#{$rezol}_expID01/mean/"

END{



itemarray = ["DTCUM","DTLSC", "DTRADL","DTRADS","DTDCA","DTVDF","DTDYN"]
$gphys_ary = []

itemarray.each{|item|
  itemset(item)
}
itemset_opt

a = ape_new 0
a.mkdump($gphys_ary)



}


def itemset(item)
  a = ape_new("#{$dir}mean#{item}.ctl"); g = a.go(item)
  g = g.cut(true,0,true,true).mean(0).mean(1)
  g = g.
    set_att("ape_name","Temperature tendency").
    set_att("units","K s-1").
    set_lost_axes("")

  grid = g.grid_copy.axis(0).pos.val
  grid = Axis.new().
    set_pos( VArray.new(grid).rename("sigma").put_att("units","1") )
  grid = Grid.new(grid)
  g = GPhys.new(grid, g.data )

  $gphys_ary.push(g.rename("pf_t_zonal").
		 set_att("line_name",item) )
end

def itemset_opt

  a = ape_new("#{$dir}meanDTCUM.ctl"); g = a.go("DTCUM")
  a = ape_new("#{$dir}meanDTLSC.ctl"); gg = a.go("DTLSC")

  g = g.cut(true,0,true,true).mean(0).mean(1) + 
    gg.cut(true,0,true,true).mean(0).mean(1)

  g = g.
    set_att("ape_name","Temperature tendency").
    set_att("units","K s-1").
    set_lost_axes("")

  grid = g.grid_copy.axis(0).pos.val
  grid = Axis.new().
    set_pos( VArray.new(grid).rename("sigma").put_att("units","1") )
  grid = Grid.new(grid)
  g = GPhys.new(grid, g.data )

  $gphys_ary.push(g.rename("pf_t_zonal").
		 set_att("line_name","DTCOND") )

  g1 = g

  a = ape_new("#{$dir}meanDTRADL.ctl"); g = a.go("DTRADL")
  a = ape_new("#{$dir}meanDTRADS.ctl"); gg = a.go("DTRADS")

  g = g.cut(true,0,true,true).mean(0).mean(1) + 
    gg.cut(true,0,true,true).mean(0).mean(1)

  g = g.
    set_att("ape_name","Temperature tendency").
    set_att("units","K s-1").
    set_lost_axes("")

  grid = g.grid_copy.axis(0).pos.val
  grid = Axis.new().
    set_pos( VArray.new(grid).rename("sigma").put_att("units","1") )
  grid = Grid.new(grid)
  g = GPhys.new(grid, g.data )

  $gphys_ary.push(g.rename("pf_t_zonal").
		 set_att("line_name","DTRAD") )

  g2 = g

  a = ape_new("#{$dir}meanDTDCA.ctl"); g = a.go("DTDCA")
  a = ape_new("#{$dir}meanDTVDF.ctl"); gg = a.go("DTVDF")

  g = g.cut(true,0,true,true).mean(0).mean(1) + 
    gg.cut(true,0,true,true).mean(0).mean(1) + g1 + g2

  g = g.
    set_att("ape_name","Temperature tendency").
    set_att("units","K s-1").
    set_lost_axes("")

  grid = g.grid_copy.axis(0).pos.val
  grid = Axis.new().
    set_pos( VArray.new(grid).rename("sigma").put_att("units","1") )
  grid = Grid.new(grid)
  g = GPhys.new(grid, g.data )

  $gphys_ary.push(g.rename("pf_t_zonal").
		 set_att("line_name","DTPHY") )

  g3 = g

  a = ape_new("#{$dir}meanDTDYN.ctl"); g = a.go("DTDYN")

  g = g.cut(true,0,true,true).mean(0).mean(1) + g3
    
  g = g.
    set_att("ape_name","Temperature tendency").
    set_att("units","K s-1").
    set_lost_axes("")

  grid = g.grid_copy.axis(0).pos.val
  grid = Axis.new().
    set_pos( VArray.new(grid).rename("sigma").put_att("units","1") )
  grid = Grid.new(grid)
  g = GPhys.new(grid, g.data )

  $gphys_ary.push(g.rename("pf_t_zonal").
		 set_att("line_name","DTALL") )

end


class Ape 

  def plot_line_main(gphys_array)
    
    # attribute の long_name を消す (タイトル描画位置の都合)
    if gphys_array[0].data.get_att("long_name")
      gphys_array[0] = gphys_array[0].set_att("long_name","")
    end

    GGraph.set_fig($fig_set_hash)
    
    line_index_ary = Array.new
    line_type_ary  = Array.new
    name_ary       = Array.new

    $line_color = $line_hash
    $line_color.store("index", 12)
    $line_color.store("type", 1)
    line_index_ary.push(12)
    line_type_ary.push(1)
    name_ary.push(gphys_array[0].data.get_att("line_name"))
    
    # 描画
    GGraph.line( gphys_array[0], true, $line_color )
    gphys_array.size.times{ |num|
      unless num == 0
	if num == 4
	  $line_color = $line_hash
	  $line_color.store("index", 92)  # 水色
          $line_color.store("type", 1)
	  line_index_ary.push(92)
          line_type_ary.push(1)
	elsif num == 6
	  $line_color = $line_hash
	  $line_color.store("index", 742)  # 橙
          $line_color.store("type", 1)
	  line_index_ary.push(742)
          line_type_ary.push(1)
	elsif num == 7
	  $line_color = $line_hash
	  $line_color.store("index", 22)
          $line_color.store("type", 3)
	  line_index_ary.push(22)
          line_type_ary.push(3)
	elsif num == 8
	  $line_color = $line_hash
	  $line_color.store("index", 32)
          $line_color.store("type", 3)
	  line_index_ary.push(32)
          line_type_ary.push(3)
	elsif num == 9
	  $line_color = $line_hash
	  $line_color.store("index", 42)
          $line_color.store("type", 3)
	  line_index_ary.push(42)
          line_type_ary.push(3)
	elsif num == 10
	  $line_color = $line_hash
	  $line_color.store("index", 742)
          $line_color.store("type", 3)
	  line_index_ary.push(742)
          line_type_ary.push(3)
	else 
	  $line_color = $line_hash
	  $line_color.store("index", (num*10 +12))
          $line_color.store("type", 1)
	  line_index_ary.push(num*10 +12)
          line_type_ary.push(1)
	end

	name_ary.push(gphys_array[num].data.get_att("line_name"))
	GGraph.line( gphys_array[num], false, $line_color ) 

      end
    }

    # タイトル
    DCL::uzinit 
    tani = "(#{gphys_array[0].data.get_att("units")})"
    DCL::uxsttl("t", tani , -1.0 )
    if  gphys_array[0].data.get_att("ape_name") then
      DCL::uxmttl("t", gphys_array[0].data.get_att("ape_name").
		  gsub("_", " "), -1.0 ) 
    end

    # nc ファイル名
    if $gropn == 2
      charsize = 0.79 - $file_label.size * 0.0115 
      DCL::sgtxzv(charsize,0.62,$file_label,0.8 * DCL.uzpget('rsizec1'),0,-1,1)
    else
      charsize = 0.78 - $file_label.size * 0.0095 
      DCL::sgtxzv(charsize,0.65,$file_label,0.8 * DCL.uzpget('rsizec1'),0,-1,1) 
    end

    __show_line_index(name_ary,line_index_ary, line_type_ary)

  end
end
