示例#1
0
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
示例#2
0
def differenceFileName(t0):
    # file names are like: 'diff.2006-07-10_00.nc'
    s = cfsr.form_cfsrTimeString(t0)
    fname = "diff." + s + ".nc"
    return fname
示例#3
0
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()