#!/usr/bin/env ruby
# ----------------------------------------------
# local load path

 $local_path = '/GFD_Dennou_Work2/yukiko/eva01/work11/ape/yukiko/lib'
# $local_path = '/work11/ape/yukiko/lib'
# $local_path = '/home/yukiko/tmp/ape-data/lib'
$: << $local_path

# ----------------------------------------------
# 必要なライブラリ, モジュールの読み込み

load "#{$local_path}/ape-view.rb"

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

END{

#sstid = ["control","flat","peaked","1keq","3keq","3kw1","Qobs","control-5N"]
sstid = ["control","flat","Qobs","3keq","flat3keq","Qobs3keq",
  "H1998con","H1998pa"]
groupid = ["aguforape","agcm5_adj","agcm5_kuo"]
cumulusid = ["eml","ias","ksc","kuo","mca","non"]
rezolid = ["T39L48_eml", "T39L24_eml","T39L96_eml", "T79L48_eml", "T159L48_eml"]

host = "eva01"
# a = Ape_mkfig.new 3
a = Ape_mkfig.new 2
# a = Ape_mkfig.new 1

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

set_dir_id  = groupid[0]

$cumulus = "non"
$expID = "control"
set_dir(set_dir_id,host)
ape_set
#a.nc_tr


#  rezolid = ["T159L48_eml"]
  rezolid = ["T159L48_non"]

#  rezolid = ["T39L48_eml", "T79L48_eml", "T159L48_eml"]

#  rezolid.each { |item|
#    $rezol = item

    $rezol = "T159L48_non"
    $expID = "control"
    set_dir(set_dir_id,host)
    a.gr_comp_tuom_online
#    a.gr_comp_point_online


#    a.gr_comp_tuv
#    a.gr_comp_point
#    a.nc_ml_mse_dse
#    a.nc_ml_mse_dse_comparing
    $expID = "flat"
    set_dir(set_dir_id,host)
#    a.nc_ml_mse_dse
#    a.nc_ml_mse_dse_comparing
#  }


#a.nc_gt_comparing_rezol
#a.nc_gt_comparing_rezol

#a.nc_sh_zonal_comparing_rezol
#a.nc_sh_zonal_comparing_rezol



cumulusid.each { |item|

# a.nc_sh_anm_comparing_expid

$cumulus = item
$rezol = "T39L48_#{$cumulus}"
$expID = "3keq"
set_dir(set_dir_id,host)
#a.nc_sh_anm

$cumulus = item
$rezol = "T39L48_#{$cumulus}"
$expID = "1keq"
set_dir(set_dir_id,host)
#a.nc_sh_anm

$cumulus = item
$rezol = "T39L48_#{$cumulus}"
$expID = "3kw1"
set_dir(set_dir_id,host)
#a.nc_sh_anm

$expID = "flat3keq"
set_dir(set_dir_id,host)
#a.nc_sh_anm("flat")

$expID = "Qobs3keq"
set_dir(set_dir_id,host)
#a.nc_sh_anm("Qobs")

$expID = "H1998pa"
set_dir(set_dir_id,host)
#a.nc_sh_anm("H1998con")

}

#rezolid = ["T39L24_eml","T39L96_eml", "T79L48_eml", "T159L48_eml", 
#  "T39L24_non","T39L96_non", "T79L48_non", "T159L48_non"]
#rezolid = ["T159L48_non"]

#rezolid = ["T39L48_eml", "T39L24_eml","T39L96_eml", "T79L48_eml", "T159L48_eml"]

rezolid = ["T159L48_eml"]

rezolid.each { |item|

$rezol = item
$expID = "control"
set_dir(set_dir_id,host)
#a.gr_comp_tuv_mono_online
#a.gr_comp_tuv_online
#a.gr_comp_point_online

}

}


=begin


$rezol = item
$expID = "1keq"
set_dir(set_dir_id,host)
#a.nc_sh_anm

$rezol = item
$expID = "3kw1"
set_dir(set_dir_id,host)
#a.nc_sh_anm


}


#a.nc_ml_tuom_anm
#a.nc_sh_tuv500_anm
#a.nc_sh_psuv_anm
#a.nc_sh_phiuv250_anm
#a.nc_sh_phiuv850_anm

# control
$cumulus = "eml"

$rezol = "T39L48_#{$cumulus}"
$expID = "3keq"
set_dir(set_dir_id,host)
#a.nc_sh_anm 

cumulusid.each { |item|

$cumulus = item
$rezol = "T39L48_#{$cumulus}"
$expID = "3keq"
set_dir(set_dir_id,host)
#a.nc_sh_anm 

$expID = "flat3keq"
set_dir(set_dir_id,host)
#a.nc_sh_anm("flat")

$expID = "Qobs3keq"
set_dir(set_dir_id,host)
#a.nc_sh_anm("Qobs")

$expID = "H1998pa"
set_dir(set_dir_id,host)
#a.nc_sh_anm("H1998con")

}

$cumulus = "eml"
$expID = "3keq"

rezolid.each { |item|

$rezol = item
set_dir(set_dir_id,host)
#a.nc_sh_anm 

}

$cumulus = "eml"
$expID = "3keq"
$rezol = "T39L48_#{$cumulus}"
set_dir(set_dir_id,host)
#a.nc_sh_anm_comparing_rezol

cumulusid.each{ |item|
  $cumulus = item
  $rezol = "T39L48_#{$cumulus}"
  $expID = "3keq"
  set_dir(set_dir_id,host)
#  a.nc_sh_anm_comparing_expid
}

["3keq","flat3keq","Qobs3keq","H1998pa"].each{ |item|
  $expID = item 
  $cumulus = "eml"
  $rezol = "T39L48_#{$cumulus}"
  set_dir(set_dir_id,host)
  a.nc_sh_anm_comparing_cumulus

}


$cumulus = "eml"

$rezol = "T39L48_#{$cumulus}"
$expID = "3keq"
set_dir(set_dir_id,host)
a.nc_sh_anm 

=end

=begin
#a.nc_sh_zonal_comparing_expid
#a.nc_gt_comparing_expid  
#a.nc_sh_zonal_comparing_expid

sstid = ["control","flat","Qobs","3keq","H1998con" ]

sstid.each{ |item|

  $expID = item

  a.nc_sh_zonal_comparing_cumulus
  a.nc_gt_comparing_cumulus

  $cumulus = "ksc"
  $rezol = "T39L48_#{$cumulus}"
  set_dir(set_dir_id,host)
  
#  a.nc_tr_300day 
  a.nc_tr_5deg_mean 
  a.nc_tr
  a.nc_gt
  a.nc_sh
  a.nc_sh_zonal
  a.nc_ml
  a.nc_mf
  a.nc_gt_anm        unless $cumulus == "non"
  a.nc_sh_anm 
  a.nc_sh_zonal_anm   unless $expID == "control" || $cumulus == "non" 
  a.nc_ml_anm         unless $expID == "control"
  a.nc_mf_anm         unless $expID == "control"

}


  $expID = "flat3keq"
  $cumulus = "ksc"
  $rezol = "T39L48_#{$cumulus}"
  set_dir(set_dir_id,host)

#  a.nc_sh_zonal_comparing_cumulus
#  a.nc_gt_comparing_cumulus
#  a.nc_sh_zonal_comparing_cumulus

  set_dir(set_dir_id,host)
  
  a.nc_tr
  a.nc_gt
  a.nc_sh
  a.nc_sh_zonal
  a.nc_ml
  a.nc_mf
  a.nc_gt_anm("flat")        unless $cumulus == "non"
  a.nc_sh_anm("flat") 
  a.nc_sh_zonal_anm("flat")   unless $expID == "control" || $cumulus == "non" 
  a.nc_ml_anm("flat")         unless $expID == "control"
  a.nc_mf_anm("flat")         unless $expID == "control"


  $expID = "Qobs3keq"
  $cumulus = "ksc"
  $rezol = "T39L48_#{$cumulus}"
  set_dir(set_dir_id,host)

  a.nc_sh_zonal_comparing_cumulus
  a.nc_gt_comparing_cumulus
  a.nc_sh_zonal_comparing_cumulus

  $expID = "Qobs3keq"
  $cumulus = "ksc"
  $rezol = "T39L48_#{$cumulus}"
  set_dir(set_dir_id,host)
  
  a.nc_tr
  a.nc_gt
  a.nc_sh
  a.nc_sh_zonal
  a.nc_ml
  a.nc_mf
  a.nc_gt_anm("Qobs")        unless $cumulus == "non"
  a.nc_sh_anm("Qobs") 
  a.nc_sh_zonal_anm("Qobs")   unless $expID == "control" || $cumulus == "non" 
  a.nc_ml_anm("Qobs")         unless $expID == "control"
  a.nc_mf_anm("Qobs")         unless $expID == "control"


  $expID = "H1998pa"
  $cumulus = "ksc"
  $rezol = "T39L48_#{$cumulus}"
  set_dir(set_dir_id,host)

  a.nc_sh_zonal_comparing_cumulus
  a.nc_gt_comparing_cumulus
  a.nc_sh_zonal_comparing_cumulus


  $expID = "H1998pa"
  $cumulus = "ksc"
  $rezol = "T39L48_#{$cumulus}"
  set_dir(set_dir_id,host)
  
  a.nc_tr
  a.nc_gt
  a.nc_sh
  a.nc_sh_zonal
  a.nc_ml
  a.nc_mf
  a.nc_gt_anm("H1998con")        unless $cumulus == "non"
  a.nc_sh_anm("H1998con") 
  a.nc_sh_zonal_anm("H1998con") unless $expID == "control" || $cumulus == "non"
  a.nc_ml_anm("H1998con")         unless $expID == "control"
  a.nc_mf_anm("H1998con")         unless $expID == "control"


set_dir(set_dir_id,host)

a.nc_sh_zonal_comparing_cumulus
a.nc_gt_comparing_cumulus
a.nc_sh_zonal_comparing_cumulus


cumulusid = ["ksc"]

cumulusid.each{ |item|

  $cumulus = item

  set_dir(set_dir_id,host)
  
  a.nc_tr
  a.nc_gt
  a.nc_sh
  a.nc_sh_zonal
  a.nc_ml
  a.nc_mf
  a.nc_gt_anm        unless $cumulus == "non"
  a.nc_sh_anm 
  a.nc_sh_zonal_anm   unless $expID == "control" || $cumulus == "non" 
  a.nc_ml_anm         unless $expID == "control"
  a.nc_mf_anm         unless $expID == "control"

}

# ------

$expID = sstid[1]

set_dir(set_dir_id,host)

a.nc_sh_zonal_comparing_cumulus
a.nc_gt_comparing_cumulus
a.nc_sh_zonal_comparing_cumulus

cumulusid = ["ksc"]

cumulusid.each{ |item|

  $cumulus = item

  set_dir(set_dir_id,host)
  
  a.nc_tr
  a.nc_gt
  a.nc_sh
  a.nc_sh_zonal
  a.nc_ml
  a.nc_mf
  a.nc_gt_anm        unless $cumulus == "non"
  a.nc_sh_anm 
  a.nc_sh_zonal_anm   unless $expID == "control" || $cumulus == "non" 
  a.nc_ml_anm         unless $expID == "control"
  a.nc_mf_anm         unless $expID == "control"

}

a.nc_tr

=end

=begin


# control
$expID = sstid[0]
set_dir(set_dir_id,host)
a.nc_sh_anm("flat")

a.nc_sh
a.nc_sh_anm("flat")
a.nc_sh_zonal
a.nc_sh_zonal_anm("flat")
a.nc_gt
a.nc_gt_anm("flat")

$expID = "Qobs3keq"
set_dir(set_dir_id,host)
a.nc_sh
a.nc_sh_anm("Qobs")
a.nc_sh_zonal
a.nc_sh_zonal_anm("Qobs")
a.nc_gt
a.nc_gt_anm("Qobs")

$expID = "H1998pa"
set_dir(set_dir_id,host)
a.nc_sh
a.nc_sh_anm("H1998con")
a.nc_sh_zonal
a.nc_sh_zonal_anm("H1998con")
a.nc_gt
a.nc_gt_anm("H1998con")


$expID = "H1998con"
set_dir(set_dir_id,host)
a.nc_sh
a.nc_sh_anm
a.nc_sh_zonal
a.nc_sh_zonal_anm
a.nc_gt
a.nc_gt_anm
a.nc_gt_anm



# control, 3keq, flat
sstid = ["control","flat","3keq"]

sstid.size.times{ |num|
  $expID = sstid[num]
  set_dir(set_dir_id,host)

  a.nc_gt
  a.nc_tr
  a.nc_sh_zonal
  a.nc_sh
  a.nc_ml
  
  a.nc_sh_zonal_anm unless num == 0
  a.nc_gt_anm
  a.nc_sh_anm
  a.nc_ml_anm  unless num == 0

}


a.nc_gt

# flat3keq
$expID = "flat3keq"
set_dir(set_dir_id,host)

a.nc_gt
a.nc_tr
a.nc_sh_zonal
a.nc_sh
a.nc_ml

a.nc_sh_zonal_anm("flat")
a.nc_gt_anm("flat")
a.nc_sh_anm("flat")
a.nc_ml_anm("flat")

a.nc_gt

=end


# ------------------------------------------------
=begin

set_dir_id  = groupid[1]
$expID = sstid[0]
set_dir(set_dir_id,host)

a.nc_gt


8.times { |num|

$expID = sstid[num]
set_dir(set_dir_id,host)

a.nc_sh_zonal
a.nc_sh_zonal_anm unless num == 0
a.nc_gt_anm
a.nc_sh_anm
a.nc_ml_anm  unless num == 0

}

set_dir_id  = groupid[2]
8.times { |num|

$expID = sstid[num]
set_dir(set_dir_id,host)

a.nc_sh_zonal
a.nc_sh_zonal_anm unless num == 0
a.nc_gt_anm
a.nc_sh_anm
a.nc_ml_anm  unless num == 0

}

a.nc_gt

8.times { |num|

$expID = sstid[num]
set_dir(set_dir_id,host)

a.nc_gt
a.nc_tr
a.nc_sh
a.nc_ml

}

set_dir_id  = groupid[2]
8.times { |num|

$expID = sstid[num]
set_dir(set_dir_id,host)

a.nc_gt
a.nc_tr
a.nc_sh
a.nc_ml

}

a.nc_gt


class Ape_mkfig

  def gr_comp_tuv_mono

    file_name = Array.new
    Dir.foreach($gr2ncfile_path) { |item|
      file_name.push("#{$gr2ncfile_path}/#{item}") if item =~ /.nc$/
    }
    @data = Ape.new(file_name)

    #  tr_tppn
    rain = @data.gphys_open("tr_tppn").cut(true,0,true).lon_lotate
    lost_axes = rain.lost_axes.to_s.sub("y=","lat=")
#   rain = rain[true,-401..-1].set_lost_axes(lost_axes)
   rain = rain[true,-401..-1].set_lost_axes("")

    # T composite
    gphys = @data.gphys_open("T")[true,true,-401..-1].lon_lotate
    t_comp = gphys.composite(rain, 0.0007)
    t_comp = t_comp.
      set_att("ape_name", "T_(U,_-OMG)_composite").
      set_att("units", "K, (m s-1, Pa s-1)" )
    t_comp = (t_comp - t_comp.mean(0)).
      set_lost_axes("").
#      set_lost_axes(lost_axes).
#      add_lost_axes("(diff) from (mean) zonal").
      rename("comp_tuv_mono")

    # U composite
    gphys = @data.gphys_open("U")[true,true,-401..-1].lon_lotate
    u_comp = gphys.composite(rain, 0.0007)
    u_comp = u_comp - u_comp.mean(0)

    # OMG composite
    gphys = @data.gphys_open("OMG")[true,true,-401..-1].lon_lotate
    om_comp = gphys.composite(rain, 0.0007)    
    om_comp = om_comp - om_comp.mean(0)

    # ベクトルの間引
    u_data  = NArray.sfloat( u_comp.axis(0).pos.val.size , 
			   u_comp.axis(1).pos.val.size ).fill!(0.0)
 
    om_data = NArray.sfloat( om_comp.axis(0).pos.val.size , 
			    om_comp.axis(1).pos.val.size ).fill!(0.0)

    num_l = u_comp.axis(0).pos.val.size/120
    num_z = u_comp.axis(1).pos.val.size/48

    u_comp.axis(0).pos.val.size.times{ |num|
      if (num % num_l) == 0
	u_data[num,true]  =  u_comp.data.val[num,true]
	om_data[num,true] =  om_comp.data.val[num,true]
      elsif
	u_data[num,true]  = 0.0
	om_data[num,true] = 0.0
      end
    }
    
    num_z =1 if num_z < 1

    u_comp.axis(1).pos.val.size.times{ |num|
      if (num % num_z) == 0
	u_data[true,num]  =  u_data[true,num]
	om_data[true,num] =  om_data[true,num]
      elsif
	u_data[true,num]  = 0.0
	om_data[true,num] = 0.0
      end
    }


    # 軸の long_name 直し (pressure level => sigma)
    z = t_comp.grid_copy.axis(1).pos.
      set_att("long_name","sigma").
      set_att("units","1")
    z = Axis.new().set_pos(z)
    grid = t_comp.grid_copy.change_axis(1, z)
    t_comp = GPhys.new( grid, t_comp.data )

    # 描画
    dim = t_comp.axis(0).pos.val.size
    mkfig_plot(t_comp[(dim/3)..(dim*2/3),true],
	       u_data[(dim/3)..(dim*2/3),true], 
	       -om_data[(dim/3)..(dim*2/3),true])

  end

  def gr_comp_tuv_mono_online

    file_name = Array.new
    Dir.foreach($gr2ncfile_path) { |item|
      file_name.push("#{$gr2ncfile_path}/#{item}") if item =~ /.nc$/
    }
    @data = Ape.new(file_name)

    #  tr_tppn
    rain = @data.gphys_open("tr_tppn").cut(true,0,true).lon_lotate
    lost_axes = rain.lost_axes.to_s.sub("y=","lat=")
#   rain = rain[true,-401..-1].set_lost_axes(lost_axes)
   rain = rain[true,-401..-1].set_lost_axes("")

    # T composite
    gphys = @data.gphys_open("T")[true,true,-401..-1].lon_lotate
    t_comp = gphys.composite_online(rain, 0.0007)
    t_comp = t_comp.
      set_att("ape_name", "T_(U,_-OMG)_composite").
      set_att("units", "K, (m s-1, Pa s-1)" )
    t_comp = (t_comp - t_comp.mean(0)).
      set_lost_axes("").
#      set_lost_axes(lost_axes).
#      add_lost_axes("(diff) from (mean) zonal").
      rename("comp_tuv_mono")

    # U composite
    gphys = @data.gphys_open("U")[true,true,-401..-1].lon_lotate
    u_comp = gphys.composite_online(rain, 0.0007)
    u_comp = u_comp - u_comp.mean(0)

    # OMG composite
    gphys = @data.gphys_open("OMG")[true,true,-401..-1].lon_lotate
    om_comp = gphys.composite_online(rain, 0.0007)    
    om_comp = om_comp - om_comp.mean(0)

    # ベクトルの間引
    u_data  = NArray.sfloat( u_comp.axis(0).pos.val.size , 
			   u_comp.axis(1).pos.val.size ).fill!(0.0)
 
    om_data = NArray.sfloat( om_comp.axis(0).pos.val.size , 
			    om_comp.axis(1).pos.val.size ).fill!(0.0)

    num_l = u_comp.axis(0).pos.val.size/120
    num_z = u_comp.axis(1).pos.val.size/48

    u_comp.axis(0).pos.val.size.times{ |num|
      if (num % num_l) == 0
	u_data[num,true]  =  u_comp.data.val[num,true]
	om_data[num,true] =  om_comp.data.val[num,true]
      elsif
	u_data[num,true]  = 0.0
	om_data[num,true] = 0.0
      end
    }
    
    num_z =1 if num_z < 1

    u_comp.axis(1).pos.val.size.times{ |num|
      if (num % num_z) == 0
	u_data[true,num]  =  u_data[true,num]
	om_data[true,num] =  om_data[true,num]
      elsif
	u_data[true,num]  = 0.0
	om_data[true,num] = 0.0
      end
    }


    # 軸の long_name 直し (pressure level => sigma)
    z = t_comp.grid_copy.axis(1).pos.
      set_att("long_name","sigma").
      set_att("units","1")
    z = Axis.new().set_pos(z)
    grid = t_comp.grid_copy.change_axis(1, z)
    t_comp = GPhys.new( grid, t_comp.data )

    # 描画
    dim = t_comp.axis(0).pos.val.size
    mkfig_plot(t_comp[(dim/3)..(dim*2/3),true],
	       u_data[(dim/3)..(dim*2/3),true], 
	       -om_data[(dim/3)..(dim*2/3),true])

  end

#  def gr_comp_tuv_online

    file_name = Array.new
    Dir.foreach($gr2ncfile_path) { |item|
      file_name.push("#{$gr2ncfile_path}/#{item}") if item =~ /.nc$/
    }
    @data = Ape.new(file_name)

    #  tr_tppn
    rain = @data.gphys_open("tr_tppn").cut(true,0,true).lon_lotate
    lost_axes = rain.lost_axes.to_s.sub("y=","lat=")
   rain = rain[true,-401..-1].set_lost_axes(lost_axes)
#   rain = rain[true,-401..-1].set_lost_axes("")

    # T composite
    gphys = @data.gphys_open("T")[true,true,-401..-1].lon_lotate
    t_comp = gphys.composite_online(rain, 0.0007)
    t_comp = t_comp.
      set_att("ape_name", "T_(U,_-OMG)_composite").
      set_att("units", "K, (m s-1, Pa s-1)" )
    t_comp = (t_comp - t_comp.mean(0)).
      set_lost_axes("").
      set_lost_axes(lost_axes).
      add_lost_axes("(diff) from (mean) zonal").
      rename("comp_tuv")

    # U composite
    gphys = @data.gphys_open("U")[true,true,-401..-1].lon_lotate
    u_comp = gphys.composite_online(rain, 0.0007)
    u_comp = u_comp - u_comp.mean(0)

    # OMG composite
    gphys = @data.gphys_open("OMG")[true,true,-401..-1].lon_lotate
    om_comp = gphys.composite_online(rain, 0.0007)    
    om_comp = om_comp - om_comp.mean(0)

    # ベクトルの間引
    u_data  = NArray.sfloat( u_comp.axis(0).pos.val.size , 
			   u_comp.axis(1).pos.val.size ).fill!(0.0)
 
    om_data = NArray.sfloat( om_comp.axis(0).pos.val.size , 
			    om_comp.axis(1).pos.val.size ).fill!(0.0)

    num_l = u_comp.axis(0).pos.val.size/120
    num_z = u_comp.axis(1).pos.val.size/48

    u_comp.axis(0).pos.val.size.times{ |num|
      if (num % num_l) == 0
	u_data[num,true]  =  u_comp.data.val[num,true]
	om_data[num,true] =  om_comp.data.val[num,true]
      elsif
	u_data[num,true]  = 0.0
	om_data[num,true] = 0.0
      end
    }
    
    num_z =1 if num_z < 1

    u_comp.axis(1).pos.val.size.times{ |num|
      if (num % num_z) == 0
	u_data[true,num]  =  u_data[true,num]
	om_data[true,num] =  om_data[true,num]
      elsif
	u_data[true,num]  = 0.0
	om_data[true,num] = 0.0
      end
    }


    # 軸の long_name 直し (pressure level => sigma)
    z = t_comp.grid_copy.axis(1).pos.
      set_att("long_name","sigma").
      set_att("units","1")
    z = Axis.new().set_pos(z)
    grid = t_comp.grid_copy.change_axis(1, z)
    t_comp = GPhys.new( grid, t_comp.data )

    # 描画
    dim = t_comp.axis(0).pos.val.size
    mkfig_plot(t_comp[(dim/3)..(dim*2/3),true],
	       u_data[(dim/3)..(dim*2/3),true], 
	       -om_data[(dim/3)..(dim*2/3),true])

  end

end




=end







