Sha256: 97f71b2c2baf2c8801d8c8a9353561ea3b924bddc14a7bb9d369eb78a9cd23ca

Contents?: true

Size: 1.82 KB

Versions: 12

Compression:

Stored size: 1.82 KB

Contents

=begin
=demo_NCEP_2.rb 

  a demo program with GPhys::NetCDF_IO::each_along_dims_write, which 
  is Iterator to process GPhys objects too big to read on memory at once.
  this program show same performance with demo_NCEP_1.rb.

USAGE
  % ruby demo_NCEP_2.rb

Note
  This program requires testdata. The URL is written in demo_NCEP_1.rb

=end

require 'numru/gphys'
require 'numru/gphys/ep_flux'
include NumRu

datadir = "./testdata/"
gp_u =     GPhys::IO.open( datadir+"UWND_NCEP.nc",  "uwnd")
gp_v =     GPhys::IO.open( datadir+"VWND_NCEP.nc",  "vwnd")
gp_omega = GPhys::IO.open( datadir+"OMEGA_NCEP.nc", "omega")
gp_t =     GPhys::IO.open( datadir+"TEMP_NCEP.nc",  "temp")

ofile = NetCDF.create("epflx_NCEP.nc")

nt = gp_u.shape[-1]
i = 0
GPhys::IO.each_along_dims_write([gp_u, gp_v, gp_omega, gp_t], ofile, -1){
  |u, v, omega, t|
  i += 1
  print "processing #{i} / #{nt} ..\n" if (i % (nt/20+1))==1

  epflx_y, epflx_z, v_rmean, w_rmean, gp_lat, gp_z, u_mean, theta_mean,
        uv_dash, vt_dash, uw_dash, dtheta_dz = ary =
                GPhys::EP_Flux::ep_full_sphere(u, v, omega, t, true)

  ary.each{|gp|                                  #  This part will not
    gp.data.att_names.each{|nm|                  #  be needed in future.
      gp.data.del_att(nm) if /^valid_/ =~ nm     #  (Even now, it is not
    }                                            #  needed if the valid
  }                                              #  range is wide enough)

  epflx_div = GPhys::EP_Flux::div_sphere(epflx_y, epflx_z)
  strm_rmean = GPhys::EP_Flux::strm_rmean(v_rmean)

  if i==1    # time independent => write only once
    gp_lat.rename('phi')
    GPhys::IO.write(ofile, gp_lat)
    GPhys::IO.write(ofile, gp_z)
  end
  [ epflx_y, epflx_z, v_rmean, w_rmean, strm_rmean, epflx_div, u_mean, theta_mean,
    uv_dash, vt_dash, uw_dash, dtheta_dz ]
}

ofile.close

Version data entries

12 entries across 12 versions & 2 rubygems

Version Path
gphys-1.5.0 sample/ep_flux/demo_NCEP_2.rb
gphys-1.4.3.2 sample/ep_flux/demo_NCEP_2.rb
gphys-1.4.3.1 sample/ep_flux/demo_NCEP_2.rb
gphys-1.4.3 sample/ep_flux/demo_NCEP_2.rb
gentooboontoo-gphys-1.3.1.1 sample/ep_flux/demo_NCEP_2.rb
gentooboontoo-gphys-0.6.1.3 sample/ep_flux/demo_NCEP_2.rb
gphys-1.2.2.1a sample/ep_flux/demo_NCEP_2.rb
gphys-1.2.2.1 sample/ep_flux/demo_NCEP_2.rb
gphys-1.2.2 sample/ep_flux/demo_NCEP_2.rb
gphys-1.1.1b sample/ep_flux/demo_NCEP_2.rb
gphys-1.1.1a sample/ep_flux/demo_NCEP_2.rb
gphys-1.1.1 sample/ep_flux/demo_NCEP_2.rb