def example_vars(): # for every 6 hours of the IC CFSR data, # write a vtk file with slp, 500mb heights, and theta on 2 pv surface t0 = dt.datetime(2006, 6, 1, 0) # tf = dt.datetime(2006,9,29,18) tf = dt.datetime(2006, 6, 1, 13) h6 = dt.timedelta(hours=6) cfsrPath = "/arctic1/nick/cases/cfsr/" vtkBase = "cfsrIC." i = 1 t = t0 while t <= tf: # since increment t after check, don't do # open the .nc data file for this datetime tString = cfsr.form_cfsrTimeString(t) ncName = "vert_sfc." + tString + ".nc" # initial condition netcdf file ncName = cfsrPath + ncName data = output_data.open_netcdf_data(ncName) # open the output vtk file and write header. ------------------- vtkfname = vtkBase + str(i - 1) + ".vtk" fvtk = output_data.write_vtk_header_polydata(vtkfname, ncName) # write nodes and cells nNodes = output_data.write_vtk_xyzNodes(fvtk, data) nCells = output_data.write_vtk_polygons(fvtk, data) nLevels = len(data.dimensions["nVertLevels"]) # write some cell data -------------------- fvtk.write("\nCELL_DATA " + str(nCells) + "\n") timeInd = 0 # data.close() fvtk.close() # increment day t = t0 + i * h6 i = i + 1
def differenceFileName(t0): # file names are like: 'diff.2006-07-10_00.nc' s = cfsr.form_cfsrTimeString(t0) fname = "diff." + s + ".nc" return fname
def example_difference_vtk(): # For this, we have mpas outputs and CFSR ICs every 6 hours. # The files are on the same horizontal and vertical mesh t0 = dt.datetime(2006, 7, 15, 0) mpasFile = mpasOutputName(t0) mpasData = netCDF4.Dataset(mpasFile, "r") # fields: config_frames_per_outfile tells us when we need to get new file # config_output_interval time separation between values nTimeInds = 28 h6 = dt.timedelta(hours=6) s = cfsr.form_cfsrTimeString(t0) diffFile = "diff." + s + ".6hr.vtk" fvtk = output_data.write_vtk_header_polydata(diffFile, s) # write nodes and cells nNodes = output_data.write_vtk_xyzNodes(fvtk, mpasData) nCells = output_data.write_vtk_polygons(fvtk, mpasData) nLevels = len(mpasData.dimensions["nVertLevels"]) fieldKeys = [ "uReconstructX", "uReconstructY", "uReconstructZ", "uReconstructZonal", "uReconstructMeridional", "w", "theta", ] # ,'qv','qc','qr'] for i in xrange(nTimeInds): # for i in xrange(4,5,1): t = t0 + i * h6 initFile = loc_initFile(t) initData = netCDF4.Dataset(initFile, "r") for key in fieldKeys: varInit = initData.variables[key][0, :, :] varMPAS = mpasData.variables[key][i, :, :] varMPAS -= varInit s = "Statistics for MPAS-Init for variable {0} at timInd {1}\n".format(key, i) m = np.mean(varMPAS) dev = np.std(varMPAS) maxd = np.max(np.abs(varMPAS)) s += "{0},\t{1},\t{2}\n".format(m, dev, maxd) print s s = "" # diffData.variables[key][i,:,:] = varMPAS[:,:] # histograms varMPAS.flatten() # else each column is separate dataset nBins = 100 plt2.hist(varMPAS, bins=nBins, normed=False) # save instead of displaying figName = key + ".t" + str(i) plt2.title(figName) # plt2.savefig(figName+'.png') plt2.autoscale(enable=True, axis="x", tight=True) plt2.savefig(figName + ".png") plt2.clf() initData.close() mpasData.close()