#!/usr/bin/env ruby # ----------------------------------------------- # Ape NetCDF お絵描き応用クラス class Ape_mkfig # class method ------------------------------------------ def Ape_mkfig.help print < miss) || (v_data_tmp[numu,numv] < -miss) || (v_data_tmp[numu,numv] > miss ) u_data[numu,numv] = 0.0 v_data[numu,numv] = 0.0 # u_data_tmp[numu,numv] = 0.0 # v_data_tmp[numu,numv] = 0.0 end } } mkfig_plot(gphys_phi,u_data,v_data) mkfig_plot(gphys_z,u_data,v_data) mkfig_plot(gphys_div,u_data,v_data) size= (gphys_u.axis(1).pos.val.size/ 2).to_i gphys_phi = gphys_phi[true,size..-1].rename("sh_phitn#{level}_lath") gphys_div = gphys_div[true,size..-1].rename("sh_tndivtn#{level}_lath") gphys_z = gphys_z[true,size..-1].rename("sh_tnztn#{level}_lath") u_data = u_data_tmp[true,size..-1] v_data = v_data_tmp[true,size..-1] u_data[true,0..2] = 0.0 v_data[true,0..2] = 0.0 u_data[true,-2..-1] = 0.0 v_data[true,-2..-1] = 0.0 miss = 20 gphys_u.axis(0).pos.val.size.times{ |numu| gphys_u.axis(1).pos.val.size.times{ |numv| if (u_data_tmp[numu,numv] < -miss) || (u_data_tmp[numu,numv] > miss) || (v_data_tmp[numu,numv] < -miss) || (v_data_tmp[numu,numv] > miss ) u_data_tmp[numu,numv] = 0.0 v_data_tmp[numu,numv] = 0.0 end } } mkfig_plot(gphys_phi,u_data,v_data) mkfig_plot(gphys_z,u_data,v_data) mkfig_plot(gphys_div,u_data,v_data) } end def nc_sh_tnflux(zonalcont="control") lost_axis = ["TNflux: (basic state) #{zonalcont}"] dir = "/home/yukiko/work/ape/NetCDF/other_group/tnfx_netcdf/" @data = Ape.new("#{dir}/TNX_#{$rezol}_#{$expID}.ctl") gphys_u = @data.gphys_open("TNX")[true,true,true,0]. cut(true,true,250).lon_lotate @data = Ape.new("#{dir}/TNY_#{$rezol}_#{$expID}.ctl") gphys_v = @data.gphys_open("TNY")[true,true,true,0]. cut(true,true,250).lon_lotate @data = Ape.new("#{dir}/TNZ_#{$rezol}_#{$expID}.ctl") gphys_z = @data.gphys_open("TNZ")[true,true,true,0]. cut(true,true,850).lon_lotate @data = Ape.new("#{dir}/DIV_#{$rezol}_#{$expID}.ctl") gphys_div = @data.gphys_open("DIV")[true,true,true,0]. cut(true,true,250).lon_lotate gphys_z = gphys_z. set_lost_axes(lost_axis). add_lost_axes("x,y: z=250 hPa, z: z=850 hPa"). rename("sh_tnz850tn250"). set_att("ape_name","TN flux z, (x,y)"). set_att("units","m2 s-2, (m2 s-2, m2 s-2)") gphys_div = gphys_div. set_lost_axes(lost_axis). add_lost_axes("z=250 hPa"). rename("sh_tndiv250tn250"). set_att("ape_name","TN flux div, (x,y)"). set_att("units","m day-1, (m2 s-2, m2 s-2)") @data_con = Ape.new("#{$ncfile_path}#{$groupid}_ML_#{zonalcont}.nc") @data = Ape.new("#{$ncfile_path}#{$groupid}_ML_#{$expID}.nc") if $rezol == "GFDL" gphys_phi = @data.gphys_open("ml_phi").cut(true,true,250) gphys_phi_con = @data_con.gphys_open("ml_phi").cut(true,true,250) else gphys_phi = @data.gphys_open("ml_phi").cut(true,true,25000) gphys_phi_con = @data_con.gphys_open("ml_phi").cut(true,true,25000) end @data = Ape.new("#{$ncfile_path}#{$groupid}_SH_#{$expID}.nc") @data_con = Ape.new("#{$ncfile_path}#{$groupid}_SH_#{zonalcont}.nc") gphys_ps = @data.gphys_open("sh_ps") gphys_ps_con = @data_con.gphys_open("sh_ps") lost_axis_2 = ["phi: (diff) from (mean) #{zonalcont}"] gphys_phi = ( gphys_phi - gphys_phi_con.mean(0) ).lon_lotate. set_lost_axes(lost_axis).add_lost_axes("z=250 hPa"). add_lost_axes(lost_axis_2). rename("sh_phitn250"). set_att("ape_name","phi, TN flux (x,y)"). set_att("units","m, (m2 s-2, m2 s-2)") lost_axis_2 = ["ps: (diff) from (mean) #{zonalcont}"] gphys_ps = ( gphys_ps - gphys_ps_con.mean(0) ).lon_lotate. set_lost_axes(lost_axis). add_lost_axes(lost_axis_2). rename("sh_pstn250"). set_att("ape_name","ps, TN flux(x,y)"). set_att("units","Pa, (m2 s-2, m2 s-2)") u_data = NArray.sfloat( gphys_u.axis(0).pos.val.size , gphys_u.axis(1).pos.val.size ).fill!(0.0) v_data = NArray.sfloat( gphys_v.axis(0).pos.val.size , gphys_v.axis(1).pos.val.size ).fill!(0.0) u_data_tmp = NArray.sfloat( gphys_u.axis(0).pos.val.size , gphys_u.axis(1).pos.val.size ).fill!(0.0) v_data_tmp = NArray.sfloat( gphys_v.axis(0).pos.val.size , gphys_v.axis(1).pos.val.size ).fill!(0.0) num_x = gphys_u.axis(0).pos.val.size/40 num_y = gphys_u.axis(1).pos.val.size/20 gphys_u.axis(0).pos.val.size.times{ |num| if (num % num_x) == 0 if (gphys_u.data.val.class == NArray) u_data[num,true] = gphys_u.data.val[num,true] v_data[num,true] = gphys_v.data.val[num,true] u_data_tmp[num,true] = gphys_u.data.val[num,true] v_data_tmp[num,true] = gphys_v.data.val[num,true] else u_data[num,true] = gphys_u.data.val.to_na[num,true] v_data[num,true] = gphys_v.data.val.to_na[num,true] u_data_tmp[num,true] = gphys_u.data.val.to_na[num,true] v_data_tmp[num,true] = gphys_v.data.val.to_na[num,true] end elsif u_data[num,true] = 0.0 v_data[num,true] = 0.0 u_data_tmp[num,true] = 0.0 v_data_tmp[num,true] = 0.0 end } gphys_u.axis(1).pos.val.size.times{ |num| if ((num+2) % num_y) == 0 u_data[true,num] = u_data[true,num] v_data[true,num] = v_data[true,num] elsif u_data[true,num] = 0.0 v_data[true,num] = 0.0 end } miss = 10 gphys_u.axis(0).pos.val.size.times{ |numu| gphys_u.axis(1).pos.val.size.times{ |numv| if (u_data_tmp[numu,numv] < -miss) || (u_data_tmp[numu,numv] > miss) || (v_data_tmp[numu,numv] < -miss) || (v_data_tmp[numu,numv] > miss ) u_data[numu,numv] = 0.0 v_data[numu,numv] = 0.0 # u_data_tmp[numu,numv] = 0.0 # v_data_tmp[numu,numv] = 0.0 end } } mkfig_plot(gphys_phi,u_data,v_data) mkfig_plot(gphys_ps,u_data,v_data) mkfig_plot(gphys_z,u_data,v_data) mkfig_plot(gphys_div,u_data,v_data) size= (gphys_u.axis(1).pos.val.size/ 2).to_i gphys_phi = gphys_phi[true,size..-1].rename("sh_phitn250_lath") gphys_ps = gphys_ps[true,size..-1].rename("sh_pstn250_lath") gphys_div = gphys_div[true,size..-1].rename("sh_tndiv250tn250_lath") gphys_z = gphys_z[true,size..-1].rename("sh_tnz850tn250_lath") u_data = u_data_tmp[true,size..-1] v_data = v_data_tmp[true,size..-1] u_data[true,0..2] = 0.0 v_data[true,0..2] = 0.0 u_data[true,-2..-1] = 0.0 v_data[true,-2..-1] = 0.0 miss = 20 gphys_u.axis(0).pos.val.size.times{ |numu| gphys_u.axis(1).pos.val.size.times{ |numv| if (u_data_tmp[numu,numv] < -miss) || (u_data_tmp[numu,numv] > miss) || (v_data_tmp[numu,numv] < -miss) || (v_data_tmp[numu,numv] > miss ) u_data_tmp[numu,numv] = 0.0 v_data_tmp[numu,numv] = 0.0 end } } mkfig_plot(gphys_phi,u_data,v_data) mkfig_plot(gphys_ps,u_data,v_data) mkfig_plot(gphys_z,u_data,v_data) mkfig_plot(gphys_div,u_data,v_data) end # 渦度 ----------------------------------------------------- # #{$groupid}_ML_control.nc def nc_sh_vor_anm(zonalcont="control") lost_axis = ["(diff) from (mean) #{zonalcont}"] @data = Ape.new("#{$ncfile_path}#{$groupid}_ML_#{$expID}.nc") @data_con = Ape.new("#{$ncfile_path}#{$groupid}_ML_#{zonalcont}.nc") [1000,850,500,250].each{ |plev| if $rezol == "UKMO_n48" if $expID == "1keq" gphys_u = @data.gphys_open("ml_u")[true,true,true,0]. cut(true,true,plev).lon_lotate gphys_v = @data.gphys_open("ml_v")[true,true,true,0]. cut(true,true,plev).lon_lotate gphys_u_con = @data_con.gphys_open("ml_u"). cut(true,true,plev).lon_lotate gphys_v_con = @data_con.gphys_open("ml_v"). cut(true,true,plev).lon_lotate else gphys_u = @data.gphys_open("ml_u"). cut(true,true,plev).lon_lotate gphys_v = @data.gphys_open("ml_v"). cut(true,true,plev).lon_lotate gphys_u_con = @data_con.gphys_open("ml_u"). cut(true,true,plev).lon_lotate gphys_v_con = @data_con.gphys_open("ml_v"). cut(true,true,plev).lon_lotate end elsif $rezol == "UKMO_n96" gphys_u = @data.gphys_open("ml_u")[true,true,true,0]. cut(true,true,plev).lon_lotate gphys_v = @data.gphys_open("ml_v")[true,true,true,0]. cut(true,true,plev).lon_lotate gphys_u_con = @data_con.gphys_open("ml_u"). cut(true,true,plev).lon_lotate gphys_v_con = @data_con.gphys_open("ml_v"). cut(true,true,plev).lon_lotate elsif $rezol =~ /ECMWF/ gphys_u = @data.gphys_open("ml_u")[true,true,true,0]. cut(true,true,plev).lon_lotate gphys_v = @data.gphys_open("ml_v")[true,true,true,0]. cut(true,true,plev).lon_lotate gphys_u_con = @data_con.gphys_open("ml_u")[true,true,true,0]. cut(true,true,plev).lon_lotate gphys_v_con = @data_con.gphys_open("ml_v")[true,true,true,0]. cut(true,true,plev).lon_lotate elsif $rezol == "GFDL" gphys_u = @data.gphys_open("ml_u").cut(true,true,plev).lon_lotate gphys_v = @data.gphys_open("ml_v").cut(true,true,plev).lon_lotate gphys_u_con = @data_con.gphys_open("ml_u").cut(true,true,plev). lon_lotate gphys_v_con = @data_con.gphys_open("ml_v").cut(true,true,plev). lon_lotate else gphys_u = @data.gphys_open("ml_u").cut(true,true,plev*100).lon_lotate gphys_v = @data.gphys_open("ml_v").cut(true,true,plev*100).lon_lotate gphys_u_con = @data_con.gphys_open("ml_u").cut(true,true,plev*100). lon_lotate gphys_v_con = @data_con.gphys_open("ml_v").cut(true,true,plev*100). lon_lotate end gphys = gphys_u.copy gphys_con = gphys_u.copy lat = gphys_u.grid_copy.axis(1) lat.pos.val.size.times{ |num| lon = gphys_u.grid_copy.axis(0) lat = gphys_u.grid_copy.axis(1) lon = 2.0 * 3.14159 * 6371.0 * 1000.0 * lon.pos.val / 360 * cos(2.0*3.14159*lat.pos.val[num]/360.0) lat = 2.0 * 3.14159 * 6371.0 * 1000.0 * lat.pos.val / 360 lon = Axis.new().set_pos(VArray.new(lon).rename("lon").put_att("units","degrees_east")) lat = Axis.new().set_pos(VArray.new(lat).rename("lat").put_att("units","degrees_north")) grid = Grid.new(lon, lat) gu = GPhys.new( grid, gphys_u.data ) gv = GPhys.new( grid, gphys_v.data ) guc = GPhys.new( grid, gphys_u_con.data ) gvc = GPhys.new( grid, gphys_v_con.data ) gphys[true,num] = ( GPhys::Derivative::threepoint_O2nd_deriv(gv, 0) - GPhys::Derivative::threepoint_O2nd_deriv(gu, 1) )[true,num]. data.val gphys_con[true,num] = ( GPhys::Derivative::threepoint_O2nd_deriv(gvc, 0) - GPhys::Derivative::threepoint_O2nd_deriv(guc, 1) )[true,num]. data.val } gphys = ( gphys-gphys_con.mean(0) ). rename("sh_vor#{plev}_anm"). set_att("ape_name","vorticity"). set_att("units","s-1"). add_lost_axes(lost_axis) mkfig_plot( gphys ) } end # line 重ね描き ----------------------------------------------------- # #{$groupid}_GT_control.nc def nc_gt_comparing_expid id = ["control","peaked","flat","Qobs","control-5N","1keq","3keq","3kw1"] id_ary = Array.new id_ary.push ( id ) id_ary.push(["control","peaked","flat","Qobs","control-5N"]) id_ary.push(["control","1keq","3keq","3kw1"]) if $rezol =~ /T39L48/ id_ary.push( ["control","flat","Qobs","H1998con"]) id_ary.push( ["control","3keq","flat","flat3keq","Qobs","Qobs3keq"]) id_ary.push( ["control","3keq","H1998con","H1998pa"]) end $file_label = "#{$rezol}" @data = Ape.new("#{$ncfile_path}#{$groupid}_GT_control.nc") id_ary.size.times{ |idsize| @data.netcdf_open.var_names.each { |item| id = id_ary[idsize] gphys_ary = [] unless item == "time" || item == "gt_slwu" # gt_slwu は一定値 id.each{ |expID| $expID = expID @data = Ape.new("#{$ncfile_path}#{$groupid}_GT_#{$expID}.nc") if idsize == 0 gphys = @data.gphys_open(item). rename("#{item}"). set_att("line_name",$expID) else gphys = @data.gphys_open(item). rename("#{item}_#{idsize}"). set_att("line_name",$expID) end gphys_ary.push( gphys ) } puts item if $rezol =~ /non/ && item == "gt_cppn" else mkfig_plot(gphys_ary) end end } } # total_precipitation_flux id_ary.size.times{ |idsize| id = id_ary[idsize] gphys_ary = [] id.each{ |expID| $expID = expID @data = Ape.new("#{$ncfile_path}#{$groupid}_GT_#{$expID}.nc") if $rezol =~ /non/ gphys = @data.gphys_open("gt_dppn").rename("gt_tppn") else g1 = @data.gphys_open("gt_cppn") g2 = @data.gphys_open("gt_dppn") gphys = (g1 + g2).rename("gt_tppn") end gphys = gphys. set_att("ape_name", "total_precipitation_flux") if idsize == 0 gphys = gphys. rename("#{gphys.name}"). set_att("line_name",$expID) else gphys = gphys. rename("#{gphys.name}_#{idsize}"). set_att("line_name",$expID) end gphys_ary.push( gphys ) } mkfig_plot(gphys_ary) } end # #{$groupid}_SH_control.nc@zonal_mean def nc_sh_zonal_comparing_expid id = ["control","peaked","flat","Qobs","control-5N","1keq","3keq","3kw1"] # id = ["control","flat","peaked","Qobs","control-5N"] # id = ["control","flat","3keq","Qobs"] id_ary = Array.new id_ary.push( id ) id_ary.push( ["control","peaked","flat","Qobs","control-5N"]) id_ary.push( ["control","1keq","3keq","3kw1"]) if $rezol =~ /T39L48/ id_ary.push( ["control","flat","Qobs","H1998con"]) id_ary.push( ["control","3keq","flat","flat3keq","Qobs","Qobs3keq"]) id_ary.push( ["control","3keq","H1998con","H1998pa"]) end $file_label = "#{$rezol}" @data = Ape.new("#{$ncfile_path}#{$groupid}_SH_control.nc") id_ary.size.times{ |idsize| @data.netcdf_open.var_names.each { |item| id = id_ary[idsize] gphys_ary = [] unless item == "lon" || item == "lat" || item == "nv" id.each{ |expID| $expID = expID @data = Ape.new("#{$ncfile_path}#{$groupid}_SH_#{$expID}.nc") gphys = @data.gphys_open(item).mean(0) if $rezol == "MGO" gphys = gphys[true,0] end if $rezol == "UKMO_n48" && ($expID == "flat" ||$expID == "qobs" ||$expID == "1keq" ||$expID == "peaked") gphys = gphys[true,0] end if idsize == 0 gphys_ary.push(gphys. rename("#{gphys.name}_zonal"). set_att("line_name",$expID) ) else gphys_ary.push(gphys. rename("#{gphys.name}_zonal_#{idsize}"). set_att("line_name",$expID) ) end } puts item if $rezol =~ /non/ && item == "sh_cppn" else mkfig_plot(gphys_ary) end end } } # total_precipitation_flux id_ary.size.times{ |idsize| gphys_ary = [] id = id_ary[idsize] id.each{ |expID| $expID = expID @data = Ape.new("#{$ncfile_path}#{$groupid}_SH_#{$expID}.nc") g1 = @data.gphys_open("sh_cppn") g2 = @data.gphys_open("sh_dppn") gphys = (g1 + g2).rename("sh_tppn_zonal"). set_att("ape_name", "total_precipitation_flux") if $rezol == "MGO" gphys = gphys[true,true,0] end if $rezol == "UKMO_n48" && ($expID == "flat" ||$expID == "qobs" ||$expID == "1keq" ||$expID == "peaked") gphys = gphys[true,true,0] end if idsize == 0 gphys_ary.push(gphys.mean(0). rename("#{gphys.name}"). set_att("line_name",$expID) ) else gphys_ary.push(gphys.mean(0). rename("#{gphys.name}_#{idsize}"). set_att("line_name",$expID) ) end } mkfig_plot(gphys_ary) } end # #{$groupid}_SH_control.nc@zonal_mean def nc_sh_anm_comparing_expid id_con = ["control","flat","Qobs","H1998con"] id = ["3keq","flat3keq","Qobs3keq","H1998pa"] $file_label = "#{$rezol}" gphys_ary_tppn = [] gphys_ary_slh = [] id.size.times{ |num| @data_con = Ape.new("#{$ncfile_path}#{$groupid}_SH_#{id_con[num]}.nc") @data = Ape.new("#{$ncfile_path}#{$groupid}_SH_#{id[num]}.nc") # 赤道上 降水量 (tppn) g1 = @data_con.gphys_open("sh_cppn") g2 = @data_con.gphys_open("sh_dppn") gphys_con = (g1 + g2).rename("sh_tppn_zonal") g1 = @data.gphys_open("sh_cppn") g2 = @data.gphys_open("sh_dppn") gphys= (g1 + g2) if $rezol == "MGO" gphys = gphys[true,true,0] gphys_con = gphys_con[true,true,0] end if $rezol == "UKMO_n48" && ($expID == "flat" ||$expID == "qobs" ||$expID == "1keq" ||$expID == "peaked") gphys = gphys[true,true,0] end gphys = (gphys - gphys_con.mean(0)).lon_lotate gphys = gphys.cut(true,0).rename("sh_tppn_lat0_anm"). set_att("ape_name", "total_precipitation_flux"). set_att("line_name","#{id_con[num]}-#{id[num]}") gphys_ary_tppn.push(gphys) # 赤道上 蒸発量 (slh) gphys = @data.gphys_open("sh_slh") gphys_con = @data_con.gphys_open("sh_slh") if $rezol == "MGO" gphys = gphys[true,true,0] gphys_con = gphys_con[true,true,0] end if $rezol == "UKMO_n48" && ($expID == "flat" ||$expID == "qobs" ||$expID == "1keq" ||$expID == "peaked") gphys = gphys[true,true,0] gphys_con = gphys_con[true,true,0] end gphys = (gphys - gphys_con.mean(0)).lon_lotate gphys = gphys.cut(true,0).rename("sh_slh_lat0_anm"). set_att("line_name","#{id_con[num]}-#{id[num]}") gphys_ary_slh.push(gphys) } mkfig_plot(gphys_ary_tppn) mkfig_plot(gphys_ary_slh) end # #{$groupid}_ML_control.nc@zonal_mean def nc_ml_zonal_comparing_expid id = ["control","peaked","flat","Qobs","control-5N","1keq","3keq","3kw1"] $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}_ML_#{$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}_ML_#{$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) if ( $rezol == "CSIRO" || $rezol == "MGO" || $rezol == " FRCGC" || $rezol == "UKMO_n48" || $rezol == "UKMO_n96"|| $rezol == "CGAM"|| $rezol == "DWD" || $rezol == "CSIRO_standard" || $rezol == "CSIRO_old" || $rezol == "MIT"|| $rezol == "MRI" ) gphys_phi = gphys_phi*9.8 end 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}_SH_control.nc@zonal_mean def nc_sh_zonal_comparing_rezol $file_label = "#{$cumulus}_#{$expID}" if $expID == "control" rezol = ["T39L48_#{$cumulus}", "T39L24_#{$cumulus}", "T39L96_#{$cumulus}", "T79L48_#{$cumulus}", "T159L48_#{$cumulus}","T319L48_#{$cumulus}"] else rezol = ["T39L48_#{$cumulus}", "T39L24_#{$cumulus}", "T39L96_#{$cumulus}", "T79L48_#{$cumulus}", "T159L48_#{$cumulus}"] end $ncfile_path = "/home/yukiko/work/ape/NetCDF/#{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" || item == "nv" rezol.each{ |rezol_item| $rezol = rezol_item $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) ) } mkfig_plot(gphys_ary) end } # total_precipitation_flux gphys_ary = [] rezol.each{ |rezol_item| $rezol = rezol_item $ncfile_path = "/home/yukiko/work/ape/NetCDF/#{$rezol}/" @data = Ape.new("#{$ncfile_path}#{$groupid}_SH_#{$expID}.nc") g1 = @data.gphys_open("sh_cppn") g2 = @data.gphys_open("sh_dppn") gphys = (g1 + g2).rename("sh_tppn_zonal"). set_att("ape_name", "total_precipitation_flux") gphys_ary.push(gphys.mean(0). set_att("line_name",$rezol) ) } mkfig_plot(gphys_ary) end # #{$groupid}_GT_control.nc def nc_gt_comparing_rezol $file_label = "#{$cumulus}_#{$expID}" if $expID == "control" && $cumulus == "eml" rezol = ["T39L48_#{$cumulus}", "T39L24_#{$cumulus}", "T39L96_#{$cumulus}", "T79L48_#{$cumulus}", "T159L48_#{$cumulus}","T319L48_#{$cumulus}"] else rezol = ["T39L48_#{$cumulus}", "T39L24_#{$cumulus}", "T39L96_#{$cumulus}", "T79L48_#{$cumulus}", "T159L48_#{$cumulus}"] end $ncfile_path = "/home/yukiko/work/ape/NetCDF/#{rezol[0]}/" print "#{$ncfile_path}#{$groupid}\n" @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 $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 } # total_precipitation_flux gphys_ary = [] rezol.each{ |rezol_item| $rezol = rezol_item $ncfile_path = "/home/yukiko/work/ape/NetCDF/#{$rezol}/" @data = Ape.new("#{$ncfile_path}#{$groupid}_GT_#{$expID}.nc") g1 = @data.gphys_open("gt_cppn") g2 = @data.gphys_open("gt_dppn") gphys = (g1 + g2).rename("gt_tppn"). set_att("ape_name", "total_precipitation_flux") gphys_ary.push(gphys. set_att("line_name",$rezol) ) } mkfig_plot(gphys_ary) end # #{$groupid}_SH_control.nc@zonal_mean def nc_ml_zonal_comparing_rezol $file_label = "#{$cumulus}_#{$expID}" rezol = ["T39L48_#{$cumulus}", "T39L24_#{$cumulus}","T39L96_#{$cumulus}", "T79L48_#{$cumulus}", "T159L48_#{$cumulus}"] # U の赤道鉛直断面 gphys_ary = [] rezol.each{ |rezol_item| $rezol = rezol_item $ncfile_path = "/home/yukiko/work/ape/NetCDF/#{$rezol}/" puts $ncfile_path @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}/" @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) if ( $rezol == "CSIRO" || $rezol == "MGO" || $rezol == " FRCGC" || $rezol == "UKMO_n48" || $rezol == "UKMO_n96" || $rezol == "CGAM" || $rezol == "CSIRO_standard" || $rezol == "CSIRO_old"|| $rezol == "DWD" || $rezol == "MIT" || $rezol == "MRI") gphys_phi = gphys_phi*9.8 end 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 rezol = ["T39L48_#{$cumulus}", "T39L24_#{$cumulus}","T39L96_#{$cumulus}", "T79L48_#{$cumulus}", "T159L48_#{$cumulus}"] expID_con_hash = { "1keq" => "control", "3keq" => "control", "3kw1" => "control", "flat3keq" => "flat", "Qobs3keq" => "Qobs", "H1998pa" => "H1998con" } $file_label = "#{$cumulus}_#{$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 $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) g1 = @data_con.gphys_open("sh_cppn") g2 = @data_con.gphys_open("sh_dppn") gphys_con = (g1 + g2).rename("sh_tppn_zonal") g1 = @data.gphys_open("sh_cppn") g2 = @data.gphys_open("sh_dppn") gphys= (g1 + g2) gphys = (gphys - gphys_con.mean(0)).lon_lotate 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") gphys = (gphys - gphys_con.mean(0)).lon_lotate 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 # #{$groupid}_SH_control.nc@zonal_mean def nc_sh_zonal_comparing_cumulus $file_label = "T39L48_#{$expID}" rezol = ["T39L48_eml", "T39L48_ias", "T39L48_ksc", "T39L48_kuo","T39L48_mca","T39L48_non"] @data = Ape.new("#{$ncfile_path}#{$groupid}_SH_control.nc") @data.netcdf_open.var_names.each { |item| gphys_ary = [] unless item == "lon" || item == "lat" || item == "nv" rezol.each{ |rezol_item| $rezol = rezol_item $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) ) } mkfig_plot(gphys_ary) end } # total_precipitation_flux gphys_ary = [] rezol.each{ |rezol_item| $rezol = rezol_item $ncfile_path = "/home/yukiko/work/ape/NetCDF/#{$rezol}/" @data = Ape.new("#{$ncfile_path}#{$groupid}_SH_#{$expID}.nc") g1 = @data.gphys_open("sh_cppn") g2 = @data.gphys_open("sh_dppn") gphys = (g1 + g2).rename("sh_tppn_zonal"). set_att("ape_name", "total_precipitation_flux") gphys_ary.push(gphys.mean(0). set_att("line_name",$rezol) ) } mkfig_plot(gphys_ary) end # #{$groupid}_GT_control.nc def nc_gt_comparing_cumulus $file_label = "T39L48_#{$expID}" rezol = ["T39L48_eml", "T39L48_ias", "T39L48_ksc", "T39L48_kuo","T39L48_mca","T39L48_non"] @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 $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 } # total_precipitation_flux gphys_ary = [] rezol.each{ |rezol_item| $rezol = rezol_item $ncfile_path = "/home/yukiko/work/ape/NetCDF/#{$rezol}/" @data = Ape.new("#{$ncfile_path}#{$groupid}_GT_#{$expID}.nc") g1 = @data.gphys_open("gt_cppn") g2 = @data.gphys_open("gt_dppn") gphys = (g1 + g2).rename("gt_tppn"). set_att("ape_name", "total_precipitation_flux") gphys_ary.push(gphys. set_att("line_name",$rezol) ) } mkfig_plot(gphys_ary) end # #{$groupid}_SH_control.nc@zonal_mean def nc_sh_anm_comparing_cumulus rezol = ["T39L48_eml", "T39L48_ias", "T39L48_ksc", "T39L48_kuo","T39L48_mca","T39L48_non"] expID_con_hash = { "1keq" => "control", "3keq" => "control", "3kw1" => "control", "flat3keq" => "flat", "Qobs3keq" => "Qobs", "H1998pa" => "H1998con" } $file_label = "T39L48_#{$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 $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) g1 = @data_con.gphys_open("sh_cppn") g2 = @data_con.gphys_open("sh_dppn") gphys_con = (g1 + g2).rename("sh_tppn_zonal") g1 = @data.gphys_open("sh_cppn") g2 = @data.gphys_open("sh_dppn") gphys= (g1 + g2) gphys = (gphys - gphys_con.mean(0)).lon_lotate 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") gphys = (gphys - gphys_con.mean(0)).lon_lotate 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 # #{$groupid}_ML_control.nc@zonal_mean def nc_ml_zonal_comparing_cumulus rezol = ["T39L48_eml", "T39L48_ias", "T39L48_ksc", "T39L48_kuo","T39L48_mca","T39L48_non"] $file_label = "T39L48_#{$expID}" gphys_ary = [] # U の赤道鉛直断面 rezol.each{ |rezol_item| $rezol = rezol_item $ncfile_path = "/home/yukiko/work/ape/NetCDF/#{$rezol}/" # $groupid = $groupid_hash[$rezol] puts "#{$ncfile_path}#{$groupid}_ML_#{$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",$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] puts "#{$ncfile_path}#{$groupid}_ML_#{$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) if ( $rezol == "CSIRO" || $rezol == "MGO" || $rezol == " FRCGC" || $rezol == "UKMO_n48" || $rezol == "UKMO_n96"|| $rezol == "CGAM" || $rezol == "DWD" || $rezol == "CSIRO_old" || $rezol == "CSIRO_standard" || $rezol == "MIT"|| $rezol == "MRI" ) gphys_phi = gphys_phi*9.8 end 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 # GrADS ----------------------------------------------------- def __T159L48_non_gphys_open(g,dimcut) grid0size = g.grid_copy.axis(0).pos.val.size grid_0 = g.grid_copy.axis(0) unless dimcut == 0 grid1size = g.grid_copy.axis(1).pos.val.size grid_1 = g.grid_copy.axis(1) end timesize = 4*360 grid_time = Axis.new(). set_pos(VArray.new(NArray.sfloat(timesize).indgen!/4+ 0.25).rename("time"). put_att("units","days")) if $rezol == "T159L48_non" if dimcut == 0 data = NArray.sfloat(grid0size,timesize).fill!(0.0) grid = Grid.new(grid_0, grid_time) data[true,0..(2*360-1)] = GPhys::NetCDF_IO.open( "#{$ncfile_path}#{$groupid}_TR_#{$expID}_half1.nc", g.name).cut(true,dimcut,true).data.val data[true,(2*360)..-1] = GPhys::NetCDF_IO.open( "#{$ncfile_path}#{$groupid}_TR_#{$expID}_half2.nc", g.name).cut(true,dimcut,true).data.val else data = NArray.sfloat(grid0size,grid1size,timesize).fill!(0.0) grid = Grid.new(grid_0, grid_1, grid_time) data[true,true,0..(2*360-1)] = GPhys::NetCDF_IO.open( "#{$ncfile_path}#{$groupid}_TR_#{$expID}_half1.nc", g.name).cut(true,dimcut,true).data.val data[true,true,(2*360)..-1] = GPhys::NetCDF_IO.open( "#{$ncfile_path}#{$groupid}_TR_#{$expID}_half2.nc", g.name).cut(true,dimcut,true).data.val end elsif $rezol == "T319L48_non" if dimcut == 0 data = NArray.sfloat(grid0size,timesize).fill!(0.0) grid = Grid.new(grid_0, grid_time) data[true,0..(4*30-1)] = GPhys::NetCDF_IO.open( "#{$ncfile_path}#{$groupid}_TR_#{$expID}_0031.nc", g.name).cut(true,dimcut,true).data.val data[true,(4*30)..(4*30*2-1)] = GPhys::NetCDF_IO.open( "#{$ncfile_path}#{$groupid}_TR_#{$expID}_0032.nc", g.name).cut(true,dimcut,true).data.val data[true,(4*30*2)..(4*30*3-1)] = GPhys::NetCDF_IO.open( "#{$ncfile_path}#{$groupid}_TR_#{$expID}_0033.nc", g.name).cut(true,dimcut,true).data.val data[true,(4*30*3)..(4*30*4-1)] = GPhys::NetCDF_IO.open( "#{$ncfile_path}#{$groupid}_TR_#{$expID}_0034.nc", g.name).cut(true,dimcut,true).data.val data[true,(4*30*4)..(4*30*5-1)] = GPhys::NetCDF_IO.open( "#{$ncfile_path}#{$groupid}_TR_#{$expID}_0035.nc", g.name).cut(true,dimcut,true).data.val data[true,(4*30*5)..(4*30*6-1)] = GPhys::NetCDF_IO.open( "#{$ncfile_path}#{$groupid}_TR_#{$expID}_0036.nc", g.name).cut(true,dimcut,true).data.val data[true,(4*30*6)..(4*30*7-1)] = GPhys::NetCDF_IO.open( "#{$ncfile_path}#{$groupid}_TR_#{$expID}_0037.nc", g.name).cut(true,dimcut,true).data.val data[true,(4*30*7)..(4*30*8-1)] = GPhys::NetCDF_IO.open( "#{$ncfile_path}#{$groupid}_TR_#{$expID}_0038.nc", g.name).cut(true,dimcut,true).data.val data[true,(4*30*8)..(4*30*9-1)] = GPhys::NetCDF_IO.open( "#{$ncfile_path}#{$groupid}_TR_#{$expID}_0039.nc", g.name).cut(true,dimcut,true).data.val data[true,(4*30*9)..(4*30*10-1)] = GPhys::NetCDF_IO.open( "#{$ncfile_path}#{$groupid}_TR_#{$expID}_0040.nc", g.name).cut(true,dimcut,true).data.val data[true,(4*30*10)..(4*30*11-1)] = GPhys::NetCDF_IO.open( "#{$ncfile_path}#{$groupid}_TR_#{$expID}_0041.nc", g.name).cut(true,dimcut,true).data.val data[true,(4*30*11)..(4*30*12-1)] = GPhys::NetCDF_IO.open( "#{$ncfile_path}#{$groupid}_TR_#{$expID}_0042.nc", g.name).cut(true,dimcut,true).data.val else data = NArray.sfloat(grid0size,grid1size,timesize).fill!(0.0) grid = Grid.new(grid_0, grid_1, grid_time) data[true,true,0..(4*30-1)] = GPhys::NetCDF_IO.open( "#{$ncfile_path}#{$groupid}_TR_#{$expID}_0031.nc", g.name).cut(true,dimcut,true).data.val data[true,true,(4*30)..(4*30*2-1)] = GPhys::NetCDF_IO.open( "#{$ncfile_path}#{$groupid}_TR_#{$expID}_0032.nc", g.name).cut(true,dimcut,true).data.val data[true,true,(4*30*2)..(4*30*3-1)] = GPhys::NetCDF_IO.open( "#{$ncfile_path}#{$groupid}_TR_#{$expID}_0033.nc", g.name).cut(true,dimcut,true).data.val data[true,true,(4*30*3)..(4*30*4-1)] = GPhys::NetCDF_IO.open( "#{$ncfile_path}#{$groupid}_TR_#{$expID}_0034.nc", g.name).cut(true,dimcut,true).data.val data[true,true,(4*30*4)..(4*30*5-1)] = GPhys::NetCDF_IO.open( "#{$ncfile_path}#{$groupid}_TR_#{$expID}_0035.nc", g.name).cut(true,dimcut,true).data.val data[true,true,(4*30*5)..(4*30*6-1)] = GPhys::NetCDF_IO.open( "#{$ncfile_path}#{$groupid}_TR_#{$expID}_0036.nc", g.name).cut(true,dimcut,true).data.val data[true,true,(4*30*6)..(4*30*7-1)] = GPhys::NetCDF_IO.open( "#{$ncfile_path}#{$groupid}_TR_#{$expID}_0037.nc", g.name).cut(true,dimcut,true).data.val data[true,true,(4*30*7)..(4*30*8-1)] = GPhys::NetCDF_IO.open( "#{$ncfile_path}#{$groupid}_TR_#{$expID}_0038.nc", g.name).cut(true,dimcut,true).data.val data[true,true,(4*30*8)..(4*30*9-1)] = GPhys::NetCDF_IO.open( "#{$ncfile_path}#{$groupid}_TR_#{$expID}_0039.nc", g.name).cut(true,dimcut,true).data.val data[true,true,(4*30*9)..(4*30*10-1)] = GPhys::NetCDF_IO.open( "#{$ncfile_path}#{$groupid}_TR_#{$expID}_0040.nc", g.name).cut(true,dimcut,true).data.val data[true,true,(4*30*10)..(4*30*11-1)] = GPhys::NetCDF_IO.open( "#{$ncfile_path}#{$groupid}_TR_#{$expID}_0041.nc", g.name).cut(true,dimcut,true).data.val data[true,true,(4*30*11)..(4*30*12-1)] = GPhys::NetCDF_IO.open( "#{$ncfile_path}#{$groupid}_TR_#{$expID}_0042.nc", g.name).cut(true,dimcut,true).data.val end end data = VArray.new(data).rename(g.name) gphys = GPhys.new(grid, data) gphys = gphys.set_att("ape_name",g.get_att("ape_name")). set_att("units",g.get_att("units")). set_lost_axes(g.lost_axes) return gphys end def __gr2_gphys_make(g,dimcut) grid0size = g.grid_copy.axis(0).pos.val.size grid_0 = g.grid_copy.axis(0) timesize = 360*4 grid_time = Axis.new(). set_pos(VArray.new(NArray.sfloat(timesize).indgen!/4+ 0.25).rename("time"). put_att("units","days")) data = NArray.sfloat(grid0size,timesize).fill!(0.0) grid = Grid.new(grid_0, grid_time) if $rezol =~ /T159L48/ data[true,0..(3*30*4-1)] = GPhys::NetCDF_IO.open( "#{$gr2ncfile_path}#{$rezol}_expID01_0011.nc", g.name).cut(true,dimcut,true).data.val.to_na data[true,(3*30*4)..(3*30*4*2-1)] = GPhys::NetCDF_IO.open( "#{$gr2ncfile_path}#{$rezol}_expID01_0012.nc", g.name).cut(true,dimcut,true).data.val.to_na data[true,(3*30*4*2)..(3*30*4*3-1)] = GPhys::NetCDF_IO.open( "#{$gr2ncfile_path}#{$rezol}_expID01_0013.nc", g.name).cut(true,dimcut,true).data.val.to_na data[true,(3*30*4*3)..(3*30*4*4-1)] = GPhys::NetCDF_IO.open( "#{$gr2ncfile_path}#{$rezol}_expID01_0014.nc", g.name).cut(true,dimcut,true).data.val.to_na elsif $rezol =~ /T319L48_eml/ data[true,(-30*4*4)..(-30*4*3-1)] = GPhys::NetCDF_IO.open( "#{$gr2ncfile_path}#{$rezol}_expID01_0039.nc", g.name).cut(true,dimcut,true).data.val data[true,(-30*4*3)..(-30*4*2-1)] = GPhys::NetCDF_IO.open( "#{$gr2ncfile_path}#{$rezol}_expID01_0040.nc", g.name).cut(true,dimcut,true).data.val data[true,(-30*4*2)..(-30*4-1)] = GPhys::NetCDF_IO.open( "#{$gr2ncfile_path}#{$rezol}_expID01_0041.nc", g.name).cut(true,dimcut,true).data.val data[true,(-30*4)..-1] = GPhys::NetCDF_IO.open( "#{$gr2ncfile_path}#{$rezol}_expID01_0042.nc", g.name).cut(true,dimcut,true).data.val else data[true,0..(6*30*4-1)] = GPhys::NetCDF_IO.open( "#{$gr2ncf