# dcpam5 の入力ファイル (2 次元) を作成 # # Ref. URL: http://ruby.gfd-dennou.org/products/gphys/tutorial/ncwrite2.rb # require "numru/gphys" include NumRu nlon = 64 # 東西格子点数 nlat = 32 # 南北格子点数 scond = 1 # 地表面温度の変更を許すか. (0 は固定, 1 は可変) hcap = 0.0 # 地表面の比熱 filename = "tmp_surfcond_heatcap_swamp_T21.nc" lon_a = VArray.new( NArray.sfloat(nlon).indgen(0.0,1.0) * 360.0/nlon, {"long_name"=>"longitude", "units"=>"degrees_east"}, "lon" ) lon = Axis.new.set_pos(lon_a) # ToDo: ガウス緯度とガウス荷重を計算するメソッドを作る lat_a = VArray.new( NArray.sfloat(nlat).indgen(0.0,1.0) * 180.0/nlat, {"long_name"=>"latitude","units"=>"degrees_north"}, "lat" ) lat = Axis.new.set_pos(lat_a) surfcond_a = NArray.sfloat(nlon,nlat).fill!(scond) surfcond = VArray.new( surfcond_a, {"long_name"=>"Surface Condition", "units"=>"1"}, "SurfCond" ) heatcapacity_a = NArray.sfloat(nlon,nlat).fill!(hcap) heatcapacity = VArray.new( heatcapacity_a, {"long_name"=>"Heat Capacity", "units"=>"J K-1 m-2"}, "HeatCap" ) # netCDF ファイルを新規作成 file = NetCDF.create(filename) gphys = GPhys.new( Grid.new(lon,lat), surfcond ) GPhys::NetCDF_IO.write(file,gphys) gphys = GPhys.new( Grid.new(lon,lat), heatcapacity ) GPhys::NetCDF_IO.write(file,gphys) file.close