Changeset 1354 in lmdz_wrf


Ignore:
Timestamp:
Nov 25, 2016, 6:24:18 PM (8 years ago)
Author:
lfita
Message:

Fixing variable-dimension's lack in `reproject' and variable definition

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/nc_var_tools.py

    r1353 r1354  
    49314931      'newlatdim]|[oldlonname,oldlatname]|[oldlondim,oldlatdim]'
    49324932 
    4933     check_arguments(fname,values,expectargs,'|')
     4933    gen.check_arguments(fname,values,expectargs,'|')
    49344934
    49354935    newprojectionfile = values.split('|')[0]
     
    49444944        ofile = 'remapnn_allvars.nc'
    49454945
    4946     filexist(filename, errormsg, 'old file')
    4947     filexist(newprojectionfile, errormsg, 'new file')
     4946    gen.filexist(filename, errormsg, 'old file')
     4947    gen.filexist(newprojectionfile, errormsg, 'new file')
    49484948
    49494949    oldlon=oldlonlatname.split(',')[0]
     
    49614961    varinfile(newncfile, newprojectionfile, errormsg, 'new', newlat)
    49624962
    4963     oldlon2d, oldlat2d = lonlat2D(oldncfile.variables[oldlon],                       \
     4963    oldlon2d, oldlat2d = gen.lonlat2D(oldncfile.variables[oldlon],                   \
    49644964      oldncfile.variables[oldlat])
    4965     newlon2d, newlat2d = lonlat2D(newncfile.variables[newlon],                       \
     4965    newlon2d, newlat2d = gen.lonlat2D(newncfile.variables[newlon],                   \
    49664966      newncfile.variables[newlat])
    49674967
     
    49914991              (newlat2d[jnew, inew] - oldlat2d10)**2.)
    49924992            mindist = np.min(dist)
    4993             minydist10, minxdist10 = index_mat(dist,mindist)
     4993            minydist10, minxdist10 = gen.index_mat(dist,mindist)
    49944994            firstmappairs[:,jnew,inew] = [int(dy10*(1+minydist10)),                  \
    49954995              int(dx10*(1+minxdist10))]
     
    1639116391              varn + "' !!"
    1639216392            quit(-1)
    16393         print '  ' + fname + ": re-projecting '" + varn + "' ..."
    1639416393        ovarin = inf.variables[varn]
    1639516394        if flipy:
     
    1640816407        varint = varin.transpose()
    1640916408
     16409        # Variable's dimensions and their related variables
     16410        vdims = list(ovarin.dimensions)
     16411        for dimn in vdims:
     16412            dimsfile = onewnc.dimensions.keys()
     16413            if not gen.searchInlist(dimsfile, dimn):
     16414                odimn = inf.dimensions[dimn]
     16415                if odimn.isunlimited():
     16416                    newdim = onewnc.createDimension(dimn, None)
     16417                else:
     16418                    newdim = onewnc.createDimension(dimn, len(odimn))
     16419                if not vardimns.has_key(dimn):
     16420                    print errormsg
     16421                    print '  ' + fname + ": dimension '" + dimn + "' does not have "+\
     16422                      'assigned any variable !!'
     16423                    print '    assigned pairs (via [dimvars]) _______'
     16424                    gen.printing_dictionary(vardimns)
     16425                    quit(-1)
     16426                else:
     16427                    add_vars(inf,onewnc,[vardimns[dimn]])
     16428
     16429        # Interpolated variable
     16430        vardims = list(ovarin.dimensions)
     16431        newvardims = gen.replace_list(vardims,dimvarns[inlonn],'lon')
     16432        newvardims = gen.replace_list(newvardims,dimvarns[inlatn],'lat')
     16433        varattrs = ovarin.ncattrs()
     16434        if gen.searchInlist(varattrs,'_FillValue'):       
     16435            fillv = ovarin.getncattr('_FillValue')
     16436            varout = np.where(varout == fillv, gen.fillValueF, varout)
     16437            varattrs.remove('_FillValue')
     16438        newvar = onewnc.createVariable(varn, 'f4', tuple(newvardims),            \
     16439          fill_value=gen.fillValueF)
     16440        onewnc.sync()
     16441
    1641016442        # Do we have masked values?
    1641116443        if type(varin) == type(ma.asarray([1,1])):
    1641216444            inmask = np.where(varin.mask, 0, 1)
     16445            print '  ' + fname + ": re-projecting masked '" + varn + "'",           \
     16446              varin.shape, " ..."
    1641316447        else:
    1641416448            inmask = np.ones((varin.shape), dtype=int)
     16449            print '  ' + fname + ": re-projecting '" +varn+ "'", varin.shape," ..."
    1641516450        inmaskt = inmask.transpose()
    1641616451
     
    1644216477        varout = varoutt.transpose()
    1644316478        varout = np.where(varout >= 0.9*gen.fillValueF, gen.fillValueF, varout)
    16444 
    16445         # Variable's dimensions and their related variables
    16446         vdims = list(ovarin.dimensions)
    16447         for dimn in vdims:
    16448             dimsfile = onewnc.dimensions.keys()
    16449             if not gen.searchInlist(dimsfile, dimn):
    16450                 odimn = inf.dimensions[dimn]
    16451                 if odimn.isunlimited():
    16452                     newdim = onewnc.createDimension(dimn, None)
    16453                 else:
    16454                     newdim = onewnc.createDimension(dimn, len(odimn))
    16455                 if not vardimns.has_key(dimn):
    16456                     print errormsg
    16457                     print '  ' + fname + ": dimension '" + dimn + "' does not have "+\
    16458                       'assigned any variable !!'
    16459                     print '    assigned pairs (via [dimvars]) _______'
    16460                     gen.printing_dictionary(vardimns)
    16461                     quit(-1)
    16462                 else:
    16463                     add_vars(inf,onewnc,[vardimns[dimn]])
    16464 
    16465         # Interpolated variable
    16466         vardims = list(ovarin.dimensions)
    16467         newvardims = gen.replace_list(vardims,dimvarns[inlonn],'lon')
    16468         newvardims = gen.replace_list(newvardims,dimvarns[inlatn],'lat')
    16469         varattrs = ovarin.ncattrs()
    16470         if gen.searchInlist(varattrs,'_FillValue'):       
    16471             fillv = ovarin.getncattr('_FillValue')
    16472             varout = np.where(varout == fillv, gen.fillValueF, varout)
    16473             varattrs.remove('_FillValue')
    16474         newvar = onewnc.createVariable(varn, 'f4', tuple(newvardims),            \
    16475           fill_value=gen.fillValueF)
    1647616479
    1647716480        newvar[:] = varout[:]
Note: See TracChangeset for help on using the changeset viewer.