Changeset 697 in lmdz_wrf


Ignore:
Timestamp:
Mar 10, 2016, 6:54:33 PM (9 years ago)
Author:
lfita
Message:

Adding added variable in SpaceWeightedAverge?

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/nc_var_tools.py

    r695 r697  
    1733317333        quit(-1)
    1733417334
     17335# Variable attributes
     17336    filemiss = False
     17337    ivarattrs = iovar.ncattrs()
     17338    if searchInlist(ivarattrs, 'missing_value'):
     17339        filemissv = iovar.getncattr('missing_value')
     17340        filemiss = True
     17341        print '  ' + fname + ' input data with missing value:',filemissv,'!!'
     17342
     17343    filefill = False
     17344    if searchInlist(ivarattrs, '_FillValue'):
     17345        filefillv = iovar.getncattr('_FillValue')
     17346        filefill = True
     17347        print '  ' + fname + ' input data with fill value:',filefillv,'!!'
     17348
    1733517349# Getting shape of output variables for future average loop
    1733617350##
     
    1749517509        lonv, latv = lonlat2D(ilonv, ilatv)
    1749617510
    17497         ivarwgtv = np.abs(np.cos(latv*np.pi/180.))/(lonv.shape[0]*lonv.shape[1])
     17511        ivarwgtv = np.abs(np.cos(latv*np.pi/180.))
    1749817512        TOTsumwgt = np.sum(ivarwgtv)
    1749917513        if len(loopshape) == 1:
    1750017514            newvals = np.ones((loopshape[0]), dtype=np.float)*fillValueF
     17515            newsumvals = np.ones((loopshape[0]), dtype=np.float)*fillValueF
    1750117516            for id1 in range(loopshape[0]):
    1750217517                slicevalues = SliceVar(iovar,dimsloop,[id1])
    17503                 newvals[id1] = np.sum(ivarv[tuple(slicevalues)]*ivarwgtv)/TOTsumwgt
     17518                vals = ivarv[tuple(slicevalues)]
     17519                if filemiss: vals = np.where(vals == filemissv, 0., vals)
     17520                if filefill: vals = np.where(vals == filefillv, 0., vals)
     17521                newsumvals[id1] = np.sum(vals*ivarwgtv)
     17522                newvals[id1] = newsumvals[id1]/TOTsumwgt
    1750417523        elif len(loopshape) == 2:
    1750517524            newvals = np.ones((loopshape[0],loopshape[1]), dtype=np.float)*fillValueF
     17525            newsumvals = np.ones((loopshape[0],loopshape[1]), dtype=np.float)*fillValueF
    1750617526            for id1 in range(loopshape[0]):
    1750717527                for id2 in range(loopshape[1]):
    1750817528                    slicevalues = SliceVar(iovar,dimsloop,[id1,id2])
    17509                     newvals[id1,id2] = np.sum(ivarv[tuple(slicevalues)]*ivarwgtv) /  \
    17510                       TOTsumwgt
     17529                    vals = ivarv[tuple(slicevalues)]
     17530                    if filemiss: vals = np.where(vals == filemissv, 0., vals)
     17531                    if filefill: vals = np.where(vals == filefillv, 0., vals)
     17532                    newsumvals[id1,id2] = np.sum(vals*ivarwgtv)
     17533                    newvals[id1,id2] = newsumvals[id1,id2] / TOTsumwgt
    1751117534        elif len(loopshape) == 3:
    1751217535            newvals = np.ones((loopshape[0],loopshape[1],loopshape[2]),              \
     17536              dtype=np.float)*fillValueF
     17537            newsumvals = np.ones((loopshape[0],loopshape[1],loopshape[2]),           \
    1751317538              dtype=np.float)*fillValueF
    1751417539            for id1 in range(loopshape[0]):
     
    1751617541                    for id3 in range(loopshape[2]):
    1751717542                        slicevalues = SliceVar(iovar,dimsloop,[id1,id2,id3])
    17518                         newvals[id1,id2,id3] = np.sum(ivarv[tuple(slicevalues)] *    \
    17519                           ivarwgtv) / TOTsumwgt
     17543                        vals = ivarv[tuple(slicevalues)]
     17544                        if filemiss: vals = np.where(vals == filemissv, 0., vals)
     17545                        if filefill: vals = np.where(vals == filefillv, 0., vals)
     17546                        newsumvals[id1,id2,id3] = np.sum(vals*ivarwgtv)
     17547                        newvals[id1,id2,id3] = newsumvals[id1,id2,id3] / TOTsumwgt
    1752017548        outweightvals = ivarwgtv
    1752117549
     
    1753417562# Output variable
    1753517563##
     17564    newvar = onewnc.createVariable(varn + 'spaceweightsum', 'f4', tuple(dimsloop),   \
     17565      fill_value=fillValueF)
     17566    basicvardef(newvar, varn + 'spaceweightsum', 'space summed ' + varn + ' ' +      \
     17567      longvarname, iovar.getncattr('units'))
     17568    newvar[:] = newsumvals
     17569
     17570    onewnc.sync()
     17571
    1753617572    newvar = onewnc.createVariable(varn + 'spaceweightmean', 'f4', tuple(dimsloop),  \
    1753717573      fill_value=fillValueF)
     
    1754117577
    1754217578    onewnc.sync()
     17579
     17580    print 'newsumvals:',newsumvals,'newvals:',newvals,'TOTsumwgt:',TOTsumwgt
    1754317581
    1754417582# Spatial weight
Note: See TracChangeset for help on using the changeset viewer.