#!/usr/bin/env ruby =begin ɽÂê: AGCM5 NetCDF ºîÀ®¥Ä¡¼¥ë ÍúÎò: 2004/04/18 yukiko@ep.sci.hokudai.ac.jp =end # ÀßÄê ========================================================= # local load path $local_path = '/work11/ape/yukiko/lib' $: << $local_path # ɬÍפʥ饤¥Ö¥é¥ê, ¥â¥¸¥å¡¼¥ë¤ÎÆÉ¤ß¹þ¤ß require "lib-ape-base.rb" # main() ======================================================= END{ set_opt print "$expid = #{$expid}, $cum = #{$cum}\n" ncfile_gt_make print "GT NetCDF make end\n" ncfile_sh_make print "SH NetCDF make end\n" ncfile_ml_make print "ML NetCDF make end\n" ncfile_tr_make print "TR NetCDF make end\n" } # ÀßÄê ======================================================== def set_opt $cum = "adj" $expid = 1 # ¼Â¹Ô¥ª¥×¥·¥ç¥ó²òÀÏ $cum = "kuo" if ARGV.index("-kuo") $cum = "kuo-nosc" if ARGV.index("-kuo-nosc") $expid = ARGV[ARGV.index("-exp")+1] if ARGV.index("-exp") if $expid == "flat3keq" ||$expid == "Qobs3keq" || $expid =~ /H1998/ || $expid =~ /HS1986/ expID = $expid $sst = $expid else expID = "expID0#{$expid}" id = ["control","peaked","flat","Qobs","control-5N","1keq","3keq","3kw1"] $sst = id[$expid.to_i - 1] end $ncdir = "/work11/ape/NetCDF/AGCM5_#{$cum}/" $ncfile_head = "AGCM5-#{$cum}" $gt3dir = "/work11/ape/GTOOL3/#{$cum}_#{expID}" # $gt3dir = "/work11/ape/GTOOL3/AGCM5-#{$cum}_#{expID}" # $gt3dir = "/work11/ape/GTOOL3/AGCM5-#{$cum}_add_#{expID}" puts $gt3dir end # sub() ======================================================== def ncfile_gt_make # grid ========================================================= grid = VArray.new( NArray.sfloat(1080).indgen!(1) ).rename("time") grid = grid.set_att("standard_name","time") grid = grid.set_att("units","days since 0000-01-01") grid = grid.set_att("bounds","time_bnds") grid = Axis.new().set_pos(grid) grid = Grid.new(grid) # variable =================================================== # variable common --------------------------------------------- $cell_methods = "time: mean (accumulation at every time-step) longitude: latitude: mean (area-weighted)" gphys_ary = [] # osr ---------------------------------------------------- item = "osr_sum_gt.nc" file = ["#{$gt3dir}/gt/0002/#{item}","#{$gt3dir}/gt/0003/#{item}", "#{$gt3dir}/gt/0004/#{item}","#{$gt3dir}/gt/0005/#{item}", "#{$gt3dir}/gt/0006/#{item}","#{$gt3dir}/gt/0007/#{item}"] gphys = GPhys::NetCDF_IO.open(file, "osr") data = VArray.new(gphys.data.val).rename("gt_sw_toa") data = data.set_att("units","W m-2") data = data.set_att("ape_name","toa_shortwave_flux") data = data.set_att("cell_methods", $cell_methods) gphys_ary.push(GPhys.new(grid,data)) # olr ---------------------------------------------------- item = "olr_sum_gt.nc" file = ["#{$gt3dir}/gt/0002/#{item}","#{$gt3dir}/gt/0003/#{item}", "#{$gt3dir}/gt/0004/#{item}","#{$gt3dir}/gt/0005/#{item}", "#{$gt3dir}/gt/0006/#{item}","#{$gt3dir}/gt/0007/#{item}"] gphys = GPhys::NetCDF_IO.open(file, "olr") data = VArray.new(gphys.data.val).rename("gt_lw_toa") data = data.set_att("units","W m-2") data = data.set_att("ape_name","toa_outgoing_longwave_flux") data = data.set_att("cell_methods", $cell_methods) gphys_ary.push(GPhys.new(grid,data)) # rain ---------------------------------------------------- item = "rain_sum_gt.nc" file = ["#{$gt3dir}/gt/0002/#{item}","#{$gt3dir}/gt/0003/#{item}", "#{$gt3dir}/gt/0004/#{item}","#{$gt3dir}/gt/0005/#{item}", "#{$gt3dir}/gt/0006/#{item}","#{$gt3dir}/gt/0007/#{item}"] gphys = GPhys::NetCDF_IO.open(file, "rain") data = VArray.new(gphys.data.val*0.4*10**(-6)).rename("gt_tppn") data = data.set_att("units","kg m-2 s-1") data = data.set_att("ape_name","total_precipitation_flux") data = data.set_att("cell_methods", $cell_methods) gphys_ary.push(GPhys.new(grid,data)) # ssr ---------------------------------------------------- item = "ssr_sum_gt.nc" file = ["#{$gt3dir}/gt/0002/#{item}","#{$gt3dir}/gt/0003/#{item}", "#{$gt3dir}/gt/0004/#{item}","#{$gt3dir}/gt/0005/#{item}", "#{$gt3dir}/gt/0006/#{item}","#{$gt3dir}/gt/0007/#{item}"] gphys = GPhys::NetCDF_IO.open(file, "ssr") data = VArray.new(gphys.data.val).rename("gt_ssw") data = data.set_att("units","W m-2") data = data.set_att("ape_name","surface_shortwave_flux") data = data.set_att("cell_methods", $cell_methods) gphys_ary.push(GPhys.new(grid,data)) # slr ---------------------------------------------------- item = "slr_sum_gt.nc" file = ["#{$gt3dir}/gt/0002/#{item}","#{$gt3dir}/gt/0003/#{item}", "#{$gt3dir}/gt/0004/#{item}","#{$gt3dir}/gt/0005/#{item}", "#{$gt3dir}/gt/0006/#{item}","#{$gt3dir}/gt/0007/#{item}"] gphys = GPhys::NetCDF_IO.open(file, "slr") data = VArray.new(gphys.data.val).rename("gt_slw") data = data.set_att("units","W m-2") data = data.set_att("ape_name","surface_longwave_flux") data = data.set_att("cell_methods", $cell_methods) gphys_ary.push(GPhys.new(grid,data)) # evap (latent_heat) ----------------------------------- item = "evap_sum_gt.nc" file = ["#{$gt3dir}/gt/0002/#{item}","#{$gt3dir}/gt/0003/#{item}", "#{$gt3dir}/gt/0004/#{item}","#{$gt3dir}/gt/0005/#{item}", "#{$gt3dir}/gt/0006/#{item}","#{$gt3dir}/gt/0007/#{item}"] gphys = GPhys::NetCDF_IO.open(file, "evap") data = VArray.new(gphys.data.val).rename("gt_slh") data = data.set_att("units","W m-2") data = data.set_att("ape_name","surface_upward_latent_heat_flux") data = data.set_att("cell_methods", $cell_methods) gphys_ary.push(GPhys.new(grid,data)) # evap (evap) ---------------------------------------- item = "evap_sum_gt.nc" file = ["#{$gt3dir}/gt/0002/#{item}","#{$gt3dir}/gt/0003/#{item}", "#{$gt3dir}/gt/0004/#{item}","#{$gt3dir}/gt/0005/#{item}", "#{$gt3dir}/gt/0006/#{item}","#{$gt3dir}/gt/0007/#{item}"] gphys = GPhys::NetCDF_IO.open(file, "evap") data = VArray.new(gphys.data.val*0.4*10**(-6)).rename("gt_evap") data = data.set_att("units","kg m-2 s-1") data = data.set_att("ape_name","evaporation_flux") data = data.set_att("cell_methods", $cell_methods) gphys_ary.push(GPhys.new(grid,data)) # sens ---------------------------------------------- item = "sens_sum_gt.nc" file = ["#{$gt3dir}/gt/0002/#{item}","#{$gt3dir}/gt/0003/#{item}", "#{$gt3dir}/gt/0004/#{item}","#{$gt3dir}/gt/0005/#{item}", "#{$gt3dir}/gt/0006/#{item}","#{$gt3dir}/gt/0007/#{item}"] gphys = GPhys::NetCDF_IO.open(file, "sens") data = VArray.new(gphys.data.val).rename("gt_ssh") data = data.set_att("units","W m-2") data = data.set_att("ape_name","surface_upward_sensible_heat_flux") data = data.set_att("cell_methods", $cell_methods) gphys_ary.push(GPhys.new(grid,data)) # ps ---------------------------------------------- item = "ps_out_gt.nc" file = ["#{$gt3dir}/gt/0002/#{item}","#{$gt3dir}/gt/0003/#{item}", "#{$gt3dir}/gt/0004/#{item}","#{$gt3dir}/gt/0005/#{item}", "#{$gt3dir}/gt/0006/#{item}","#{$gt3dir}/gt/0007/#{item}"] gphys = GPhys::NetCDF_IO.open(file, "ps") data = VArray.new(gphys.data.val*100).rename("gt_ps") data = data.set_att("units","Pa") data = data.set_att("ape_name","surface_air_pressure") data = data.set_att("cell_methods", "time: mean (interval: 6 hours) longitude: latitude: mean (area-weighted)") gphys_ary.push(GPhys.new(grid,data)) # float time_bnds(time, bnd) ; # time_bnds:long_name = "time interval endpoints" ; # NetCDF ½ñ¤­¹þ¤ß ================================================ f=NetCDF.create("#{$ncdir}/#{$ncfile_head}_GT_#{$sst}.nc") gphys_ary.each{ |gphys| GPhys::NetCDF_IO.write( f, gphys ) } f.put_att("Conventions", "CF-1.0") f.put_att("title","Aqua Planet: Global Time-Series from \'#{$sst}\' Experiment") f.put_att("history", "Original data produced: #{Time.now} on NIES SX6; area-weighted global means calculated for APE GT standard output") f.put_att("institution", "GFD Dennou Club") f.put_att("source","agcm5.3") f.close end # sub() ======================================================== def ncfile_sh_make # grid ========================================================= item = "osr_sum_avg.nc" gphys = GPhys::NetCDF_IO.open("#{$gt3dir}/mlsh/#{item}", "osr") g0 = VArray.new(gphys.grid_copy.axis(0).pos.val ).rename("lon") g0 = g0.set_att("standard_name","longitude") g0 = g0.set_att("units","degrees_east") g0 = Axis.new().set_pos(g0) g1 = VArray.new(gphys.grid_copy.axis(1).pos.val ).rename("lat") g1 = g1.set_att("standard_name","latitude") g1 = g1.set_att("units","degrees_north") g1[-1..0] = g1[0..-1] # °ÞÅÙ¼´¤Îȿž g1 = Axis.new().set_pos(g1) grid = Grid.new(g0,g1) # variable =================================================== # variable common --------------------------------------------- $cell_methods = "time: mean (accumulation at every time-step comment: averaged over 3-year period following 6-month spin-up)" gphys_ary = [] # osr ---------------------------------------------------- item = "osr_sum_avg.nc" gphys = GPhys::NetCDF_IO.open("#{$gt3dir}/mlsh/#{item}", "osr").cut(true,true,0) data = VArray.new(gphys.data.val).rename("sh_sw_toa") data[true,-1..0] = data[true,0..-1] # °ÞÅÙ¼´¤Îȿž data = data.set_att("units","W m-2") data = data.set_att("ape_name","toa_shortwave_flux") data = data.set_att("cell_methods", $cell_methods) gphys_ary.push(GPhys.new(grid,data)) # olr ---------------------------------------------------- item = "olr_sum_avg.nc" gphys = GPhys::NetCDF_IO.open("#{$gt3dir}/mlsh/#{item}", "olr").cut(true,true,0) data = VArray.new(gphys.data.val).rename("sh_lw_toa") data[true,-1..0] = data[true,0..-1] # °ÞÅÙ¼´¤Îȿž data = data.set_att("units","W m-2") data = data.set_att("ape_name","toa_outgoing_longwave_flux") data = data.set_att("cell_methods", $cell_methods) gphys_ary.push(GPhys.new(grid,data)) # rain ---------------------------------------------------- item = "rain_sum_avg.nc" gphys = GPhys::NetCDF_IO.open("#{$gt3dir}/mlsh/#{item}", "rain").cut(true,true,0) data = VArray.new(gphys.data.val*0.4*10**(-6)).rename("sh_tppn") data[true,-1..0] = data[true,0..-1] # °ÞÅÙ¼´¤Îȿž data = data.set_att("units","kg m-2 s-1") data = data.set_att("ape_name","total_precipitation_flux") data = data.set_att("cell_methods", $cell_methods) gphys_ary.push(GPhys.new(grid,data)) # ssr ---------------------------------------------------- item = "ssr_sum_avg.nc" gphys = GPhys::NetCDF_IO.open("#{$gt3dir}/mlsh/#{item}", "ssr").cut(true,true,0) data = VArray.new(gphys.data.val).rename("sh_ssw") data[true,-1..0] = data[true,0..-1] # °ÞÅÙ¼´¤Îȿž data = data.set_att("units","W m-2") data = data.set_att("ape_name","surface_shortwave_flux") data = data.set_att("cell_methods", $cell_methods) gphys_ary.push(GPhys.new(grid,data)) # slr ---------------------------------------------------- item = "slr_sum_avg.nc" gphys = GPhys::NetCDF_IO.open("#{$gt3dir}/mlsh/#{item}", "slr").cut(true,true,0) data = VArray.new(gphys.data.val).rename("sh_slw") data[true,-1..0] = data[true,0..-1] # °ÞÅÙ¼´¤Îȿž data = data.set_att("units","W m-2") data = data.set_att("ape_name","surface_longwave_flux") data = data.set_att("cell_methods", $cell_methods) gphys_ary.push(GPhys.new(grid,data)) # evap (latent_heat) ----------------------------------- item = "evap_sum_avg.nc" gphys = GPhys::NetCDF_IO.open("#{$gt3dir}/mlsh/#{item}", "evap").cut(true,true,0) data = VArray.new(gphys.data.val).rename("sh_slh") data[true,-1..0] = data[true,0..-1] # °ÞÅÙ¼´¤Îȿž data = data.set_att("units","W m-2") data = data.set_att("ape_name","surface_upward_latent_heat_flux") data = data.set_att("cell_methods", $cell_methods) gphys_ary.push(GPhys.new(grid,data)) # evap (evap) ---------------------------------------- item = "evap_sum_avg.nc" gphys = GPhys::NetCDF_IO.open("#{$gt3dir}/mlsh/#{item}", "evap").cut(true,true,0) data = VArray.new(gphys.data.val*0.4*10**(-6)).rename("sh_evap") data[true,-1..0] = data[true,0..-1] # °ÞÅÙ¼´¤Îȿž data = data.set_att("units","kg m-2 s-1") data = data.set_att("ape_name","evaporation_flux") data = data.set_att("cell_methods", $cell_methods) gphys_ary.push(GPhys.new(grid,data)) # sens ---------------------------------------------- item = "sens_sum_avg.nc" gphys = GPhys::NetCDF_IO.open("#{$gt3dir}/mlsh/#{item}", "sens").cut(true,true,0) data = VArray.new(gphys.data.val).rename("sh_ssh") data[true,-1..0] = data[true,0..-1] # °ÞÅÙ¼´¤Îȿž data = data.set_att("units","W m-2") data = data.set_att("ape_name","surface_upward_sensible_heat_flux") data = data.set_att("cell_methods", $cell_methods) gphys_ary.push(GPhys.new(grid,data)) # tauu ---------------------------------------------- item = "taux_sum_avg.nc" gphys = GPhys::NetCDF_IO.open("#{$gt3dir}/mlsh/#{item}", "taux").cut(true,true,0) data = VArray.new(gphys.data.val).rename("sh_tauu") data[true,-1..0] = data[true,0..-1] # °ÞÅÙ¼´¤Îȿž data = data.set_att("units","Pa") data = data.set_att("ape_name","surface_downward_eastward_stress") data = data.set_att("cell_methods", $cell_methods) gphys_ary.push(GPhys.new(grid,data)) # tauv ---------------------------------------------- item = "tauy_sum_avg.nc" gphys = GPhys::NetCDF_IO.open("#{$gt3dir}/mlsh/#{item}", "tauy").cut(true,true,0) data = VArray.new(gphys.data.val).rename("sh_tauv") data[true,-1..0] = data[true,0..-1] # °ÞÅÙ¼´¤Îȿž data = data.set_att("units","Pa") data = data.set_att("ape_name","surface_downward_northward_stress") data = data.set_att("cell_methods", $cell_methods) gphys_ary.push(GPhys.new(grid,data)) # ps ---------------------------------------------- item = "ps_out_avg.nc" gphys = GPhys::NetCDF_IO.open("#{$gt3dir}/mlsh/#{item}", "ps").cut(true,true,0) data = VArray.new(gphys.data.val*100).rename("sh_ps") data[true,-1..0] = data[true,0..-1] # °ÞÅÙ¼´¤Îȿž data = data.set_att("units","Pa") data = data.set_att("ape_name","surface_air_pressure") data = data.set_att("cell_methods", "time: mean (interval: 6 hours comment: averaged over 3-year period following 6-month spin-up)") gphys_ary.push(GPhys.new(grid,data)) # NetCDF ½ñ¤­¹þ¤ß ================================================ f=NetCDF.create("#{$ncdir}/#{$ncfile_head}_SH_#{$sst}.nc") gphys_ary.each{ |gphys| GPhys::NetCDF_IO.write( f, gphys ) } f.put_att("Conventions", "CF-1.0") f.put_att("title","Aqua Planet: Single-Level 2-D Means from \'#{$sst}\' Experiment") f.put_att("history", "Original data produced: #{Time.now} on NIES SX6; time-mean calculated for APE SH standard output") f.put_att("institution", "GFD Dennou Club") f.put_att("source","agcm5.3") f.close end # sub() ======================================================== def ncfile_ml_make # grid ========================================================= item = "u_out_avg.nc" gphys = GPhys::NetCDF_IO.open("#{$gt3dir}/mlsh/#{item}", "u") g0 = VArray.new(gphys.grid_copy.axis(0).pos.val ).rename("lon") g0 = g0.set_att("standard_name","longitude") g0 = g0.set_att("units","degrees_east") g0 = Axis.new().set_pos(g0) g1 = VArray.new(gphys.grid_copy.axis(1).pos.val ).rename("lat") g1[-1..0] = g1[0..-1] # °ÞÅÙ¼´¤Îȿž g1 = g1.set_att("standard_name","latitude") g1 = g1.set_att("units","degrees_north") g1 = Axis.new().set_pos(g1) g2 = [ 1000.0, 925.0, 850.0, 700.0, 600.0, 500.0, 400.0, 300.0, 250.0, 200.0, 150.0, 100.0, 70.0, 50.0, 30.0, 20.0, 10.0 ] g2 = NArray.to_na(g2) g2 = VArray.new( g2 * 100 ).rename("plev") g2 = g2.set_att("standard_name","air_pressure") g2 = g2.set_att("units","Pa") g2 = Axis.new().set_pos(g2) grid = Grid.new(g0,g1,g2) # variable =================================================== # variable common --------------------------------------------- $cell_methods = "time: mean (interval: 6 hours comment: averaged over 3-year period following 6-month spin-up) longitude: mean" gphys_ary = [] item = "ps_out_avg.nc" ps = GPhys::NetCDF_IO.open("#{$gt3dir}/mlsh/#{item}", "ps").cut(true,true,0) # u ---------------------------------------------------- print " ml_u start\n" item = "u_out_avg.nc" gphys = GPhys::NetCDF_IO.open("#{$gt3dir}/mlsh/#{item}", "u").cut(true,true,true,0) gphys = gphys.gts2p(ps) data = VArray.new(gphys.data.val).rename("ml_u") data[true,-1..0,true] = data[true,0..-1,true] # °ÞÅÙ¼´¤Îȿž data = data.set_att("units","m s-1") data = data.set_att("ape_name","eastward_wind") data = data.set_att("cell_methods", $cell_methods) gphys_ary.push(GPhys.new(grid,data)) # v ---------------------------------------------------- print " ml_v start\n" item = "v_out_avg.nc" gphys = GPhys::NetCDF_IO.open("#{$gt3dir}/mlsh/#{item}", "v").cut(true,true,true,0) gphys = gphys.gts2p(ps) data = VArray.new(gphys.data.val).rename("ml_v") data[true,-1..0,true] = data[true,0..-1,true] # °ÞÅÙ¼´¤Îȿž data = data.set_att("units","m s-1") data = data.set_att("ape_name","northward_wind") data = data.set_att("cell_methods", $cell_methods) gphys_ary.push(GPhys.new(grid,data)) # t ---------------------------------------------------- print " ml_t start\n" item = "t_out_avg.nc" gphys = GPhys::NetCDF_IO.open("#{$gt3dir}/mlsh/#{item}", "t").cut(true,true,true,0) gphys = gphys.gts2p(ps) data = VArray.new(gphys.data.val).rename("ml_t") data[true,-1..0,true] = data[true,0..-1,true] # °ÞÅÙ¼´¤Îȿž data = data.set_att("units","K") data = data.set_att("ape_name","air_temperature") data = data.set_att("cell_methods", $cell_methods) gphys_ary.push(GPhys.new(grid,data)) # om ---------------------------------------------------- print " ml_om start\n" item = "sigdot_out_avg.nc" gphys = GPhys::NetCDF_IO.open("#{$gt3dir}/mlsh/#{item}", "sigdot"). cut(true,true,true,0) gphys = gphys.gts2p(ps) data = VArray.new(gphys.data.val*ps.data.val*100).rename("ml_om") data[true,-1..0,true] = data[true,0..-1,true] # °ÞÅÙ¼´¤Îȿž data = data.set_att("units","Pa s-1") data = data.set_att("ape_name","omega") data = data.set_att("cell_methods", $cell_methods) gphys_ary.push(GPhys.new(grid,data)) # phi ---------------------------------------------------- print " ml_phi start\n" item = "gph_out_avg.nc" gphys = GPhys::NetCDF_IO.open("#{$gt3dir}/mlsh/#{item}", "z"). cut(true,true,true,0) gphys = gphys.gts2p(ps) data = VArray.new(gphys.data.val).rename("ml_phi") data[true,-1..0,true] = data[true,0..-1,true] # °ÞÅÙ¼´¤Îȿž data = data.set_att("units","m") data = data.set_att("ape_name","geopotential_height") data = data.set_att("cell_methods", $cell_methods) gphys_ary.push(GPhys.new(grid,data)) # q ---------------------------------------------------- print " ml_q start\n" item = "q_out_avg.nc" gphys = GPhys::NetCDF_IO.open("#{$gt3dir}/mlsh/#{item}", "q"). cut(true,true,true,0) gphys = gphys.gts2p(ps) data = VArray.new(gphys.data.val).rename("ml_q") data[true,-1..0,true] = data[true,0..-1,true] # °ÞÅÙ¼´¤Îȿž data = data.set_att("units","1") data = data.set_att("ape_name","specific_humidity") data = data.set_att("cell_methods", $cell_methods) gphys_ary.push(GPhys.new(grid,data)) # rh ---------------------------------------------------- print " ml_rh start\n" item = "relh_out_avg.nc" gphys = GPhys::NetCDF_IO.open("#{$gt3dir}/mlsh/#{item}", "rh"). cut(true,true,true,0) gphys = gphys.gts2p(ps) data = VArray.new(gphys.data.val * 100 ).rename("ml_rh") data[true,-1..0,true] = data[true,0..-1,true] # °ÞÅÙ¼´¤Îȿž data = data.set_att("units","1") data = data.set_att("ape_name","relative_humidity") data = data.set_att("cell_methods", $cell_methods) gphys_ary.push(GPhys.new(grid,data)) # NetCDF ½ñ¤­¹þ¤ß ================================================ print " nc create start\n" f=NetCDF.create("#{$ncdir}/#{$ncfile_head}_ML_#{$sst}.nc") gphys_ary.each{ |gphys| GPhys::NetCDF_IO.write( f, gphys ) } f.put_att("Conventions", "CF-1.0") f.put_att("title","Aqua Planet: Multiple-Level 3-D Means from \'#{$sst}\' Experiment") f.put_att("history", "Original data produced: #{Time.now} on NIES SX6; time-mean calculated for APE SH standard output") f.put_att("institution", "GFD Dennou Club") f.put_att("source","agcm5.3") f.close end # sub() ======================================================== def ncfile_tr_make # grid ========================================================= item = "ps_out.nc" gphys = GPhys::NetCDF_IO.open("#{$gt3dir}/tr/0002/#{item}", "ps") g0 = VArray.new(gphys.grid_copy.axis(0).pos.val ).rename("lon") g0 = g0.set_att("standard_name","longitude") g0 = g0.set_att("units","degrees_east") g0 = Axis.new().set_pos(g0) g1 = VArray.new(gphys.grid_copy.axis(1).pos.val ).rename("lat") g1[-1..0] = g1[0..-1] # °ÞÅÙ¼´¤Îȿž g1 = g1.set_att("standard_name","latitude") g1 = g1.set_att("units","degrees_north") g1 = Axis.new().set_pos(g1) g2 = VArray.new( NArray.sfloat(1440).indgen!(1)*0.25 ).rename("time") g2 = g2.set_att("standard_name","time") g2 = g2.set_att("units","days since 0000-01-01") g2 = g2.set_att("bounds","time_bnds") g2 = Axis.new().set_pos(g2) grid = Grid.new(g0,g1,g2) # variable =================================================== # variable common --------------------------------------------- $cell_methods = "time: mean (interval: accumulation at every time-step)" gphys_ary = [] # rain ---------------------------------------------------- print " tr_tppn start\n" item = "rain_sum.nc" file = ["#{$gt3dir}/tr/0002/#{item}","#{$gt3dir}/tr/0003/#{item}", "#{$gt3dir}/tr/0004/#{item}","#{$gt3dir}/tr/0005/#{item}", "#{$gt3dir}/tr/0006/#{item}","#{$gt3dir}/tr/0007/#{item}"] gphys = GPhys::NetCDF_IO.open(file, "rain")[true,true,-1440..-1] data = VArray.new(gphys.data.val*0.4*10**(-6)).rename("tr_tppn") data[true,-1..0,true] = data[true,0..-1,true] # °ÞÅÙ¼´¤Îȿž data = data.set_att("units","kg m-2 s-1") data = data.set_att("ape_name","precipitation_flux") data = data.set_att("cell_methods", "time: mean (interval: accumulation at every time-step)") gphys_ary.push(GPhys.new(grid,data)) # olr ---------------------------------------------------- print " tr_lw_toa start\n" item = "olr_sum.nc" file = ["#{$gt3dir}/tr/0002/#{item}","#{$gt3dir}/tr/0003/#{item}", "#{$gt3dir}/tr/0004/#{item}","#{$gt3dir}/tr/0005/#{item}", "#{$gt3dir}/tr/0006/#{item}","#{$gt3dir}/tr/0007/#{item}"] gphys = GPhys::NetCDF_IO.open(file, "olr")[true,true,-1440..-1] data = VArray.new(gphys.data.val).rename("tr_lw_toa") data[true,-1..0,true] = data[true,0..-1,true] # °ÞÅÙ¼´¤Îȿž data = data.set_att("units","W m-2") data = data.set_att("ape_name","toa_outgoing_longwave_flux") data = data.set_att("cell_methods", "time: mean (interval: accumulation at every time-step)") gphys_ary.push(GPhys.new(grid,data)) # om500 ---------------------------------------------------- print " tr_om500 start\n" item = "om500_out.nc" file = ["#{$gt3dir}/tr/0002/#{item}","#{$gt3dir}/tr/0003/#{item}", "#{$gt3dir}/tr/0004/#{item}","#{$gt3dir}/tr/0005/#{item}", "#{$gt3dir}/tr/0006/#{item}","#{$gt3dir}/tr/0007/#{item}"] gphys = GPhys::NetCDF_IO.open(file, "omg")[true,true,-1440..-1] data = VArray.new(gphys.data.val).rename("tr_om500") data[true,-1..0,true] = data[true,0..-1,true] # °ÞÅÙ¼´¤Îȿž data = data.set_att("units","Pa s-1") data = data.set_att("ape_name","omega") data = data.set_att("cell_methods", "time: point") gphys_ary.push(GPhys.new(grid,data)) # u250 ---------------------------------------------------- print " tr_u250 start\n" item = "u250_out.nc" file = ["#{$gt3dir}/tr/0002/#{item}","#{$gt3dir}/tr/0003/#{item}", "#{$gt3dir}/tr/0004/#{item}","#{$gt3dir}/tr/0005/#{item}", "#{$gt3dir}/tr/0006/#{item}","#{$gt3dir}/tr/0007/#{item}"] gphys = GPhys::NetCDF_IO.open(file, "u")[true,true,-1440..-1] data = VArray.new(gphys.data.val).rename("tr_u250") data[true,-1..0,true] = data[true,0..-1,true] # °ÞÅÙ¼´¤Îȿž data = data.set_att("units","m s-1") data = data.set_att("ape_name","eastward_wind") data = data.set_att("cell_methods", "time: point") gphys_ary.push(GPhys.new(grid,data)) # v250 ---------------------------------------------------- print " tr_v250 start\n" item = "v250_out.nc" file = ["#{$gt3dir}/tr/0002/#{item}","#{$gt3dir}/tr/0003/#{item}", "#{$gt3dir}/tr/0004/#{item}","#{$gt3dir}/tr/0005/#{item}", "#{$gt3dir}/tr/0006/#{item}","#{$gt3dir}/tr/0007/#{item}"] gphys = GPhys::NetCDF_IO.open(file, "v")[true,true,-1440..-1] data = VArray.new(gphys.data.val).rename("tr_v250") data[true,-1..0,true] = data[true,0..-1,true] # °ÞÅÙ¼´¤Îȿž data = data.set_att("units","m s-1") data = data.set_att("ape_name","northward_wind") data = data.set_att("cell_methods", "time: point") gphys_ary.push(GPhys.new(grid,data)) # mslp ---------------------------------------------------- print " tr_mslp start\n" item = "ps_out.nc" file = ["#{$gt3dir}/tr/0002/#{item}","#{$gt3dir}/tr/0003/#{item}", "#{$gt3dir}/tr/0004/#{item}","#{$gt3dir}/tr/0005/#{item}", "#{$gt3dir}/tr/0006/#{item}","#{$gt3dir}/tr/0007/#{item}"] gphys = GPhys::NetCDF_IO.open(file, "ps")[true,true,-1440..-1] data = VArray.new(gphys.data.val*100).rename("tr_mslp") data[true,-1..0,true] = data[true,0..-1,true] # °ÞÅÙ¼´¤Îȿž data = data.set_att("units","Pa") data = data.set_att("ape_name","air_pressure_at_sea_level") data = data.set_att("cell_methods", "time: point") gphys_ary.push(GPhys.new(grid,data)) # float time_bnds(time, bnd) ; # time_bnds:long_name = "time interval endpoints" ; # NetCDF ½ñ¤­¹þ¤ß ================================================ print " nc create start\n" f=NetCDF.create("#{$ncdir}/#{$ncfile_head}_TR_#{$sst}.nc") gphys_ary.each{ |gphys| GPhys::NetCDF_IO.write( f, gphys ) } f.put_att("Conventions", "CF-1.0") f.put_att("title","Aqua Planet: Transients from \'#{$sst}\' Experiment") f.put_att("history", "Original data produced: #{Time.now} on NIES SX6; translated format to conform with APE TR standard output") f.put_att("institution", "GFD Dennou Club") f.put_att("source","agcm5.3") f.close end