#!/usr/bin/env ruby

=begin

É½Âê: AGUforAPE GrADS to NetCDF

ÍúÎò: 2005/02/18 yukiko¡÷ep.sci.hokudai.ac.jp

=end

END{

  $variable_array.each{ |item|
    mk_gcm_gr2nc(item)
    run_gcm_gr2nc(item)
  }

}



def mk_gcm_gr2nc(item)

    out_file = "AGUforAPE-03a_#{$diagid_hash[item]}_control.nc"
    dir_in   = "/work11/ape/GrADS/T39L48_eml_expID01/0007"
    ncfn_out = "/work11/ape/NetCDF/T39L48_eml/TR/#{out_file}"
    gfn_in   = $variable_hash[item]
    name     = item
    longname = $longname_hash[item]
    units    = $unit_hash[item]

    if gfn_in == "U" || gfn_in == "V" || gfn_in == "T" || gfn_in == "OMG" || gfn_in == "Z" || gfn_in == "Q" || gfn_in == "RH"
      sw_pout = "true"
    else
      sw_pout = "false"
    end

    gcm_gr2nc = <<EOF

&input
    dir_in    = '#{dir_in}'
    gfn_in    = '#{gfn_in}'
    item      = '#{gfn_in}'
&end

&output
    ncfn_out  = '#{ncfn_out}'
&end

&varinfo
   name        = '#{item}'
   stdname     = '#{item}'
   longname    = '#{longname}'
   units       = '#{units}'
&end

&timeinfo
   ts       = 321
   te       = 720
&end

&p_out
	sw_pout   = .#{sw_pout}.
	dir_ps    = '/work11/ape/GrADS/T39L48_eml_expID01/0007'
	gfn_ps    = 'PS'
	item_ps   = 'PS'
	vdim_type = 'traditional'
	plevn     = 17
	plevel    = 10d2   20d2  30d2  50d2
		    70d2  100d2 150d2 200d2   
	           250d2  300d2 400d2 500d2
		   600d2  700d2 850d2 925d2 1000d2
&end

EOF

  wfile = open("#{Dir.pwd}/gcm_gr2nc.#{item}.cntl","w")
  wfile.print(gcm_gr2nc)
  wfile.close
  print "gcm_gr2nc.#{item}.cntl create !\n"

end


def run_gcm_gr2nc(item)

  `cp gcm_gr2nc.#{item}.cntl gcm_gr2nc.cntl` 
  `./gcm_gr2nc -Wl,-T`
   print "gcm_gr2nc #{item} end #{Time.now}  !\n"

end



$variable_array = [
#-----------------------
  'tr_u',
  'tr_v',
  'tr_t',
  'tr_om',
  'tr_phi',
  'tr_q',
  'tr_rh',
#-----------------------
  'tr_t_total',
  'tr_t_dyn',
  'tr_t_sw',
  'tr_t_lw',
  'tr_t_turb',
  'tr_t_conv',
  'tr_t_cld',
  'tr_t_dconv',
#-----------------------
  'tr_q_total',
  'tr_q_dyn',
  'tr_q_turb',
  'tr_q_conv',
  'tr_q_cld',
  'tr_q_dconv',
  'tr_q_negq'
#-----------------------
]



$diagid_hash = {
#-----------------------
  'tr_u'   => 'TR11',
  'tr_v'   => 'TR12',
  'tr_t'   => 'TR13',
  'tr_om'  => 'TR14',
  'tr_phi' => 'TR15',
  'tr_q'   => 'TR16',
  'tr_rh'  => 'TR17',
#-----------------------
  'tr_t_total'    => 'TR18',
  'tr_t_dyn'      => 'tr_t_dyn',
  'tr_t_sw'       => 'TR19',
  'tr_t_lw'       => 'TR20',
  'tr_t_turb'     => 'TR21',
  'tr_t_conv'     => 'TR22',
  'tr_t_cld'      => 'TR23',
  'tr_t_dconv'    => 'tr_t_dconv',
#-----------------------
  'tr_q_total'    => 'TR25',
  'tr_q_dyn'      => 'tr_q_dyn',
  'tr_q_turb'     => 'TR26',
  'tr_q_conv'     => 'TR27',
  'tr_q_cld'      => 'TR28',
  'tr_q_dconv'    => 'tr_q_dconv',
  'tr_q_negq'     => 'TR29'
#-----------------------
}


$variable_hash = {
#-----------------------
  'tr_u'   => 'U',
  'tr_v'   => 'V',
  'tr_t'   => 'T',
  'tr_om'  => 'OMG',
  'tr_phi' => 'Z',
  'tr_q'   => 'Q',
  'tr_rh'  => 'RH',
#-----------------------
  'tr_t_total'    => 'DTTOTAL',
  'tr_t_dyn'      => 'DTDYN',
  'tr_t_sw'       => 'DTRADS',
  'tr_t_lw'       => 'DTRADL',
  'tr_t_turb'     => 'DTVDF',
  'tr_t_conv'     => 'DTCUM',
  'tr_t_cld'      => 'DTLSC',
  'tr_t_dconv'    => 'DTDCA',
#-----------------------
  'tr_q_total'    => 'DQTOTAL',
  'tr_q_dyn'      => 'DQDYN',
  'tr_q_turb'     => 'DQVDF',
  'tr_q_conv'     => 'DQCUM',
  'tr_q_cld'      => 'DQLSC',
  'tr_q_dconv'    => 'DQDCA',
  'tr_q_negq'     => 'SRMNQ'
#-----------------------
}

$unit_hash = {
#-----------------------
  'tr_u'   => 'kg m-2 s-1',
  'tr_v'   => 'kg m-2 s-1',
  'tr_t'   => 'W m-2',
  'tr_om'  => 'Pa s-1',
  'tr_phi' => 'm',
  'tr_q'   => 'kg kg-1',
  'tr_rh'  => '1',
#-----------------------
  'tr_t_total'    => 'K s-1',
  'tr_t_dyn'      => 'K s-1',
  'tr_t_sw'       => 'K s-1',
  'tr_t_lw'       => 'K s-1',
  'tr_t_turb'     => 'K s-1',
  'tr_t_conv'     => 'K s-1',
  'tr_t_cld'      => 'K s-1',
  'tr_t_dconv'    => 'K s-1',
#-----------------------
  'tr_q_total'    => 'kg kg-1 s-1',
  'tr_q_dyn'      => 'kg kg-1 s-1',
  'tr_q_turb'     => 'kg kg-1 s-1',
  'tr_q_conv'     => 'kg kg-1 s-1',
  'tr_q_cld'      => 'kg kg-1 s-1',
  'tr_q_dconv'    => 'kg kg-1 s-1',
  'tr_q_negq'     => 'kg kg-1 s-1'
#-----------------------
}

$longname_hash = {
#-----------------------
  'tr_u'   => 'eastward_wind',
  'tr_v'   => 'northward_wind',
  'tr_t'   => 'air_temperature',
  'tr_om'  => 'omega',
  'tr_phi' => 'geopotential_height',
  'tr_q'   => 'specific_humidity',
  'tr_rh'  => 'relative_humidity',
#-----------------------
  'tr_t_total'    => 'Temperature tendency - Total',
  'tr_t_dyn'      => 'Temperature tendency - Dry Convection',
  'tr_t_sw'       => 'Temperature tendency - Short wave',
  'tr_t_lw'       => 'Temperature tendency - Long wave',
  'tr_t_turb'     => 'Temperature tendency - Turbulence',
  'tr_t_conv'     => 'Temperature tendency - Convection',
  'tr_t_cld'      => 'Temperature tendency - Cloud',
  'tr_t_dconv'    => 'Temperature tendency - Dynamic',
#-----------------------
  'tr_q_total'    => 'Absolute humidity tendency - Total',
  'tr_q_dyn'      => 'Absolute humidity tendency - Dynamic',
  'tr_q_turb'     => 'Absolute humidity tendency - Turbulence',
  'tr_q_conv'     => 'Absolute humidity tendency - Convection',
  'tr_q_cld'      => 'Absolute humidity tendency - Cloud',
  'tr_q_dconv'    => 'Absolute humidity tendency - Dry Convection',
  'tr_q_negq'     => 'Absolute humidity tendency - Negative q fix'
#-----------------------
}

