Changeset 286 in lmdz_wrf


Ignore:
Timestamp:
Feb 25, 2015, 3:28:15 PM (10 years ago)
Author:
lfita
Message:

Working versino of the script for 4D variables

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/nc_var_tools.py

    r285 r286  
    1053910539# Too optimistic, but at this stage...
    1054010540            dimz = varobj.shape[1]
     10541
     10542            if not objofile.dimensions.has_key('z'):
     10543                varzobj = objfile.variables[zn]
     10544                if len(varzobj.shape) == 1:
     10545                    dimz = varzobj.shape
     10546                    zvals = varzobj[:]
     10547                elif len(varzobj.shape) == 2:
     10548                    dimz = varzobj.shape[1]
     10549                    zvals = varzobj[0,:]
     10550                elif len(varzobj.shape) == 3:
     10551                    dimz = varzobj.shape[2]
     10552                    zvals = varzobj[0,0,:]
     10553
     10554                objofile.createDimension('z', dimz)
     10555                newvar = objofile.createVariable(zn, 'f4', ('z'),fill_value=fillValue)
     10556                if searchInlist(varzobj.ncattrs(),'standard_name'):
     10557                    vsname = varzobj.getncattr('standard_name')
     10558                else:
     10559                    vsname = variables_values(varn)[1]
     10560                if searchInlist(varzobj.ncattrs(),'long_name'):
     10561                    vlname = varzobj.getncattr('long_name')
     10562                else:
     10563                    vlname = variables_values(varn)[4].replace('|',' ')
     10564                if searchInlist(varzobj.ncattrs(),'units'):
     10565                    vunits = varzobj.getncattr('units')
     10566                else:
     10567                    vunits = variables_values(varn)[5].replace('|',' ')
     10568   
     10569                newattr = basicvardef(newvar, vsname, vlname, vunits)
     10570                newvar[:] = zvals
    1054110571 
    1054210572            varvals = np.ones(tuple([Ttraj,dimz,boxs,boxs]), dtype=np.float)
     
    1055810588                cslicev = []
    1055910589                cslice2D = []
     10590                cslice2Dhor = []
    1056010591                cslicevnoT = []
     10592                cslicevnoThor = []
    1056110593
    1056210594                slicev.append(gtrajvals[it,0])
     
    1064110673                    cslice2D.append(slice(0,cyrangeslice[it][1]-cyrangeslice[it][0]))
    1064210674                    cslice2D.append(slice(0,cxrangeslice[it][1]-cxrangeslice[it][0]))
     10675                    cslice2Dhor.append(slice(0, cyrangeslice[it][1] -                \
     10676                      cyrangeslice[it][0]))
     10677                    cslice2Dhor.append(slice(0, cxrangeslice[it][1] -                \
     10678                      cxrangeslice[it][0]))
    1064310679
    1064410680                    rvarvalst = np.ones((dimz,Nrad*2+1,Nrad*2+1),dtype=np.float)*    \
    1064510681                      fillValue
    1064610682                    rvarvalst[tuple(cslice2D)] = varobj[tuple(cslicev)]
    10647                     rvarvalst[tuple(cslice2D)] = np.where(circdist[tuple(cslice2D)]>\
    10648                       np.float(Nrad), fillValue, rvarvalst[tuple(cslice2D)])
     10683                    for iz in range(dimz):
     10684                        zslice = [slice(iz)]+cslice2Dhor
     10685                        rvarvalst[iz,:,:] = np.where(circdist[tuple(cslice2Dhor)] >  \
     10686                          np.float(Nrad), fillValue, rvarvalst[iz,:,:])
    1064910687
    1065010688                    rvarvals[it,:,:,:] = rvarvalst
     
    1066310701
    1066410702                else:
    10665                     cslicev.append(0,dimz)
     10703                    cslicev.append(slice(0,dimz))
    1066610704                    cslicev.append(slice(gtrajvals[it,2]-Nrad,gtrajvals[it,2]+Nrad+1))
    1066710705                    cslicev.append(slice(gtrajvals[it,1]-Nrad,gtrajvals[it,1]+Nrad+1))
    10668                     cslicevnoT.append(0,dimz)
     10706                    cslicevnoT.append(slice(0,dimz))
    1066910707                    cslicevnoT.append(slice(gtrajvals[it,2]-Nrad, gtrajvals[it,2]+   \
    1067010708                      Nrad+1))
    1067110709                    cslicevnoT.append(slice(gtrajvals[it,1]-Nrad, gtrajvals[it,1]+   \
    1067210710                      Nrad+1))
    10673                     cslice2D.append(0,dimz)
     10711                    cslicevnoThor.append(slice(gtrajvals[it,2]-Nrad, gtrajvals[it,2]+   \
     10712                      Nrad+1))
     10713                    cslicevnoThor.append(slice(gtrajvals[it,1]-Nrad, gtrajvals[it,1]+   \
     10714                      Nrad+1))
     10715                    cslice2D.append(slice(0,dimz))
    1067410716                    cslice2D.append(slice(gtrajvals[it,2]-Nrad,gtrajvals[it,2]+Nrad+ \
    1067510717                      1))
     
    1067810720
    1067910721                    rvarvalst = varobj[tuple(cslicev)]
    10680                     cdist = circdist[tuple(cslicevnoT)]
     10722                    cdist = circdist[tuple(cslicevnoThor)]
    1068110723# circle values
    10682                     rvarvalst = np.where(cdist > np.float(Nrad),fillValue,rvarvalst)
     10724                    for iz in range(dimz):
     10725                        zslice = [slice(iz)]+cslicevnoThor
     10726                        rvarvalst[iz,:,:] = np.where(circdist[tuple(cslicevnoThor)] >\
     10727                          np.float(Nrad), fillValue, rvarvalst[iz,:,:])
    1068310728
    1068410729                    rvarvals[it,:,:,:] = rvarvalst
     
    1069410739                        rstatvarvals[it,iz,4] = maskedvals2[iz,:,:].mean()
    1069510740                        rstatvarvals[it,iz,5] = np.sqrt(rstatvarvals[it,iz,4] -      \
    10696                           rstatvarvals[it,iz,3]*rstatvarvals[it,:,3])
     10741                          rstatvarvals[it,iz,3]*rstatvarvals[it,iz,3])
    1069710742
    1069810743#            print 'statistics:',rstatvarvals[it,:]
Note: See TracChangeset for help on using the changeset viewer.