Changeset 697 in lmdz_wrf
- Timestamp:
- Mar 10, 2016, 6:54:33 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/tools/nc_var_tools.py
r695 r697 17333 17333 quit(-1) 17334 17334 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 17335 17349 # Getting shape of output variables for future average loop 17336 17350 ## … … 17495 17509 lonv, latv = lonlat2D(ilonv, ilatv) 17496 17510 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.)) 17498 17512 TOTsumwgt = np.sum(ivarwgtv) 17499 17513 if len(loopshape) == 1: 17500 17514 newvals = np.ones((loopshape[0]), dtype=np.float)*fillValueF 17515 newsumvals = np.ones((loopshape[0]), dtype=np.float)*fillValueF 17501 17516 for id1 in range(loopshape[0]): 17502 17517 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 17504 17523 elif len(loopshape) == 2: 17505 17524 newvals = np.ones((loopshape[0],loopshape[1]), dtype=np.float)*fillValueF 17525 newsumvals = np.ones((loopshape[0],loopshape[1]), dtype=np.float)*fillValueF 17506 17526 for id1 in range(loopshape[0]): 17507 17527 for id2 in range(loopshape[1]): 17508 17528 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 17511 17534 elif len(loopshape) == 3: 17512 17535 newvals = np.ones((loopshape[0],loopshape[1],loopshape[2]), \ 17536 dtype=np.float)*fillValueF 17537 newsumvals = np.ones((loopshape[0],loopshape[1],loopshape[2]), \ 17513 17538 dtype=np.float)*fillValueF 17514 17539 for id1 in range(loopshape[0]): … … 17516 17541 for id3 in range(loopshape[2]): 17517 17542 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 17520 17548 outweightvals = ivarwgtv 17521 17549 … … 17534 17562 # Output variable 17535 17563 ## 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 17536 17572 newvar = onewnc.createVariable(varn + 'spaceweightmean', 'f4', tuple(dimsloop), \ 17537 17573 fill_value=fillValueF) … … 17541 17577 17542 17578 onewnc.sync() 17579 17580 print 'newsumvals:',newsumvals,'newvals:',newvals,'TOTsumwgt:',TOTsumwgt 17543 17581 17544 17582 # Spatial weight
Note: See TracChangeset
for help on using the changeset viewer.