# -*- coding: euc-jp -*-
# Title: Ruby script drawing contour map for deepconv/arare5 output data 
#
# History: 2011/09/27 (Masatsugu Odaka)
#
require "numru/ggraph"

module NumRu
  class GPhys
    def deriv(dim)
      dim = dim_index(dim)    # input dim can be a String or an Integer
      x = axis(dim).to_gphys
      a = [true]*dim + [1..-1,false]
      b = [true]*dim + [0..-2,false]
      dydx = ( self[*a] - self[*b] ) / ( x[1..-1] - x[0..-2] )
      xi = ( x[1..-1] + x[0..-2] ) / 2
      dydx.axis(dim).set_pos(xi.coord(0))
      dydx.long_name = "d #{name}/d #{x.name}"
      dydx
    end
  end
end


include NumRu

file0 = 'restart_long-PTempBZ.nc'
file1 = '../time_000000000-000172000/BS1998-all_PTemp.nc'

varname0 = 'PTempBZ'
varname1 = 'PTemp'


#comax = 249.0
#comin = 247.0
comax = 0.010
comin = -0.0010
var0  = GPhys::IO.open(file0, varname0)
var1  = GPhys::IO.open(file1, varname1)
dptdz = GPhys::IO.open('../DPTDz.nc', 'DPTDz')
dptdz = dptdz.cut('z'=>300..20000)

time  = ARGV[0].to_f
timelabel = time.to_s
x_co  = GPhys::IO.open(file1, 'x').val

# <Open DCL>
DCL.swlset( 'ldump', true )
DCL.gropn(2)

varall = var1.mean('t').cut(true,true,true) + var0

# 安定度の計算 dptdz
#stability = varall.cut(1,true,true,time)

varmean = varall.average('x').average('y')
stability = varmean.deriv('z')

GGraph.line( dptdz, 
             true, 'exchange'=>true ,
             'index'=>2, 'type'=>1, 'label'=>'init',
             'title'=>'Mean Potemtial Temp.',
             'max'=>comax, 'min'=>comin)    
#=begin
GGraph.line( stability, 
             false, 'exchange'=>true ,
             'index'=>1, 'type'=>3, #'label'=>'after',
             'max'=>comax, 'min'=>comin)    
#=end

# <Close DCL>
DCL.grcls
