#!/usr/bin/env ruby # Ape NetCDF お絵描き応用クラス class Ape_mkfig_agcm # class method ------------------------------------------ def Ape_mkfig_agcm.help print < "control", "3keq" => "control", "3kw1" => "control", "flat3keq" => "flat", "Qobs3keq" => "Qobs", "H1998pa" => "H1998con" } id = ["3keq","flat3keq","Qobs3keq","H1998pa"] gphys_ary_tppn = [] gphys_ary_slh = [] id.size.times{ |num| @data_con = Ape.new("#{$ncfile_path}#{$groupid}_SH_#{expID_con_hash[id[num]]}.nc") @data = Ape.new("#{$ncfile_path}#{$groupid}_SH_#{id[num]}.nc") # 赤道上 降水量 (tppn) gphys_con = @data_con.gphys_open("sh_tppn") gphys = @data.gphys_open("sh_tppn") if $expID == "H1998con" || $expID == "H1998pa" gphys = (gphys - gphys_con.mean(0)) else gphys = (gphys - gphys_con.mean(0)).lon_lotate end gphys = gphys.cut(true,0).rename("sh_tppn_lat0_anm"). set_att("ape_name", "total_precipitation_flux"). set_att("line_name","#{expID_con_hash[id[num]]}-#{id[num]}") gphys_ary_tppn.push(gphys) # 赤道上 蒸発量 (slh) gphys = @data.gphys_open("sh_slh") gphys_con = @data_con.gphys_open("sh_slh") if $expID == "H1998con" || $expID == "H1998pa" gphys = (gphys - gphys_con.mean(0)) else gphys = (gphys - gphys_con.mean(0)).lon_lotate end gphys = gphys.cut(true,0).rename("sh_slh_lat0_anm"). set_att("line_name","#{expID_con_hash[id[num]]}-#{id[num]}") gphys_ary_slh.push(gphys) } mkfig_plot(gphys_ary_tppn) mkfig_plot(gphys_ary_slh) end # #{$groupid}_SH_control.nc@zonal_mean def nc_ml_zonal_comparing_expid # id = ["control","flat","peaked","1keq","3keq","3kw1","Qobs","control-5N"] id = ["control","peaked","flat","Qobs","control-5N","1keq","3keq","3kw1","flat3keq","Qobs3keq","H1998con","H1998pa","HS1986"] $file_label = "#{$rezol}" gphys_ary = [] # U の赤道鉛直断面 id.each{ |expID| $expID = expID $groupid = $groupid_hash[$rezol] $ncfile_path = "/home/yukiko/work/ape/NetCDF/#{$rezol}/" puts "#{$ncfile_path}#{$groupid}_SH_#{$expID}.nc" @data = Ape.new("#{$ncfile_path}#{$groupid}_ML_#{$expID}.nc") gphys = @data.gphys_open("ml_u").cut(true,0,true).mean(0) gphys_ary.push(gphys.rename("#{gphys.name}_lat0_zonal"). set_att("line_name",$expID) ) } mkfig_plot(gphys_ary) # MSE (moist static energy) = CpT + gz + Lq # DSE (dry static energy) = CpT + gz gphys_dse_ary = [] gphys_mse_ary = [] id.each{ |expID| $expID = expID $groupid = $groupid_hash[$rezol] $ncfile_path = "/home/yukiko/work/ape/NetCDF/#{$rezol}/" puts "#{$ncfile_path}#{$groupid}_SH_#{$expID}.nc" @data = Ape.new("#{$ncfile_path}#{$groupid}_ML_#{$expID}.nc") gphys_t = @data.gphys_open("ml_t").mean(0).cut(20,true) gphys_q = @data.gphys_open("ml_q").mean(0).cut(20,true) gphys_phi = @data.gphys_open("ml_phi").mean(0).cut(20,true)*9.8 gphys_dse = gphys_phi + gphys_t.data.val*1004.0 gphys_mse = gphys_dse + gphys_q.data.val*2.5*(10**6) gphys_dse_ary.push( gphys_dse.rename("ml_dse_lat20_zonal"). set_att("line_name",$expID). set_att("ape_name", "dry static energy"). set_att("units","J kg-1") ) gphys_mse_ary.push( gphys_mse.rename("ml_mse_lat20_zonal"). set_att("line_name",$expID). set_att("ape_name", "moist static energy"). set_att("units","J kg-1") ) puts $rezol } mkfig_plot(gphys_dse_ary) mkfig_plot(gphys_mse_ary) end # #{$groupid}_GT_control.nc def nc_gt_comparing_rezol $file_label = "AGCM5_#{$expID}" rezol = ["AGCM5_adj", "AGCM5_kuo", "AGCM5_kuo-nosc"] $groupid = $groupid_hash[rezol[0]] @data = Ape.new("#{$ncfile_path}#{$groupid}_GT_control.nc") @data.netcdf_open.var_names.each { |item| gphys_ary = [] unless item == "time" || item == "gt_slwu" # gt_slwu は一定値 rezol.each{ |rezol_item| $rezol = rezol_item $groupid = $groupid_hash[$rezol] $ncfile_path = "/home/yukiko/work/ape/NetCDF/#{$rezol}/" @data = Ape.new("#{$ncfile_path}#{$groupid}_GT_#{$expID}.nc") gphys_ary.push(@data.gphys_open(item). set_att("line_name",$rezol) ) puts $rezol } mkfig_plot(gphys_ary) end } end # #{$groupid}_SH_control.nc@zonal_mean def nc_sh_zonal_comparing_rezol $file_label = "AGCM5_#{$expID}" rezol = ["AGCM5_adj", "AGCM5_kuo", "AGCM5_kuo-nosc"] $groupid = $groupid_hash[rezol[0]] @data = Ape.new("#{$ncfile_path}#{$groupid}_SH_control.nc") @data.netcdf_open.var_names.each { |item| gphys_ary = [] unless item == "lon" || item == "lat" rezol.each{ |rezol_item| $rezol = rezol_item $groupid = $groupid_hash[$rezol] $ncfile_path = "/home/yukiko/work/ape/NetCDF/#{$rezol}/" @data = Ape.new("#{$ncfile_path}#{$groupid}_SH_#{$expID}.nc") gphys = @data.gphys_open(item).mean(0) gphys_ary.push(gphys.rename("#{gphys.name}_zonal"). set_att("line_name",$rezol) ) puts $rezol } mkfig_plot(gphys_ary) end } end # #{$groupid}_SH_control.nc@zonal_mean def nc_ml_zonal_comparing_rezol $file_label = "AGCM5_#{$expID}" rezol = ["AGCM5_adj", "AGCM5_kuo", "AGCM5_kuo-nosc"] # U の赤道鉛直断面 gphys_ary = [] rezol.each{ |rezol_item| $rezol = rezol_item $ncfile_path = "/home/yukiko/work/ape/NetCDF/#{$rezol}/" puts $ncfile_path $groupid = $groupid_hash[$rezol] @data = Ape.new("#{$ncfile_path}#{$groupid}_ML_#{$expID}.nc") gphys = @data.gphys_open("ml_u").cut(true,0,true).mean(0) gphys_ary.push(gphys.rename("#{gphys.name}_lat0_zonal"). set_att("line_name",$rezol) ) } mkfig_plot(gphys_ary) # MSE (moist static energy) = CpT + gz + Lq # DSE (dry static energy) = CpT + gz gphys_dse_ary = [] gphys_mse_ary = [] rezol.each{ |rezol_item| $rezol = rezol_item $ncfile_path = "/home/yukiko/work/ape/NetCDF/#{$rezol}/" $groupid = $groupid_hash[$rezol] @data = Ape.new("#{$ncfile_path}#{$groupid}_ML_#{$expID}.nc") gphys_t = @data.gphys_open("ml_t").mean(0).cut(20,true) gphys_q = @data.gphys_open("ml_q").mean(0).cut(20,true) gphys_phi = @data.gphys_open("ml_phi").mean(0).cut(20,true)*9.8 gphys_dse = gphys_phi + gphys_t.data.val*1004.0 gphys_mse = gphys_dse + gphys_q.data.val*2.5*(10**6) gphys_dse_ary.push( gphys_dse.rename("ml_dse_lat20_zonal"). set_att("line_name",$rezol). set_att("ape_name", "dry static energy"). set_att("units","J kg-1") ) gphys_mse_ary.push( gphys_mse.rename("ml_mse_lat20_zonal"). set_att("line_name",$rezol). set_att("ape_name", "moist static energy"). set_att("units","J kg-1") ) puts $rezol } mkfig_plot(gphys_dse_ary) mkfig_plot(gphys_mse_ary) end # #{$groupid}_SH_control.nc@zonal_mean def nc_sh_anm_comparing_rezol $file_label = "AGCM5_#{$expID}" rezol = ["AGCM5_adj", "AGCM5_kuo", "AGCM5_kuo-nosc"] expID_con_hash = { "1keq" => "control", "3keq" => "control", "3kw1" => "control", "flat3keq" => "flat", "Qobs3keq" => "Qobs", "H1998pa" => "H1998con" } $file_label = "AGCM5_#{$expID}" zonalcont = expID_con_hash[$expID] lost_axis = ["(diff) from (mean) zonal of #{zonalcont}"] gphys_ary_tppn = [] gphys_ary_slh = [] rezol.each{ |rezol_item| $rezol = rezol_item $groupid = $groupid_hash[$rezol] $ncfile_path = "/home/yukiko/work/ape/NetCDF/#{$rezol}/" @data_con = Ape.new("#{$ncfile_path}#{$groupid}_SH_#{zonalcont}.nc") @data = Ape.new("#{$ncfile_path}#{$groupid}_SH_#{$expID}.nc") # 赤道上 降水量 (tppn) gphys_con = @data_con.gphys_open("sh_tppn") gphys = @data.gphys_open("sh_tppn") if $expID == "H1998con" || $expID == "H1998pa" gphys = (gphys - gphys_con.mean(0)) else gphys = (gphys - gphys_con.mean(0)).lon_lotate end gphys = gphys.cut(true,0).rename("sh_tppn_lat0_anm"). set_att("ape_name", "total_precipitation_flux"). set_att("line_name","#{$rezol}"). add_lost_axes(lost_axis) gphys_ary_tppn.push(gphys) # 赤道上 蒸発量 (slh) gphys = @data.gphys_open("sh_slh") gphys_con = @data_con.gphys_open("sh_slh") if $expID == "H1998con" || $expID == "H1998pa" gphys = (gphys - gphys_con.mean(0)) else gphys = (gphys - gphys_con.mean(0)).lon_lotate end gphys = gphys.cut(true,0).rename("sh_slh_lat0_anm"). set_att("line_name","#{$rezol}"). add_lost_axes(lost_axis) gphys_ary_slh.push(gphys) } mkfig_plot(gphys_ary_tppn) mkfig_plot(gphys_ary_slh) end end