Changeset 1046 in lmdz_wrf for trunk


Ignore:
Timestamp:
Aug 26, 2016, 2:47:39 PM (9 years ago)
Author:
lfita
Message:

Adding `LMDZ_toCF': Function to pass a LMDZ original file to CF-conventions
Removing some spurious 'Lluis' check printings

Location:
trunk/tools
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/nc_var.py

    r1008 r1046  
    1616## e.g. # nc_var.py -o WRF_toCF -f ~/PY/wrfout_d01_2001-11-11_00:00:00 -S XLONG:XLAT:19491201000000:minutes
    1717## e.g. # nc_var.py -o cleaning_varsfile -f ~/PY/wrfout_d01_2001-11-11_00:00:00 -S T2,XLONG,XLAT,Times
     18## e.g. # nc_var.py -o LMDZ_toCF -f LMDZ/AR40/vas_histins_1-1.nc
    1819
    1920from optparse import OptionParser
     
    4142  'getvalues_lonlat', 'grattr',                                                      \
    4243  'grmattr', 'idims', 'igattrs', 'increaseDimvar', 'isgattrs', 'isvattrs', 'ivars',  \
    43   'ivattrs', 'maskvar', 'model_characteristics',                                     \
     44  'ivattrs', 'LMDZ_toCF', 'maskvar', 'model_characteristics',                        \
    4445  'ncreplace', 'ncstepdiff', 'netcdf_concatenation', 'netcdf_fold_concatenation',    \
    4546  'netcdf_fold_concatenation_HMT', 'Partialmap_Entiremap',                           \
     
    213214            print opern + '_______ ______ _____ ____ ___ __ _'
    214215            print getattr(object, opern).__doc__
     216elif oper == 'LMDZ_toCF':
     217    ncvar.LMDZ_toCF(opts.ncfile)
    215218elif oper == 'maskvar':
    216219    ncvar.maskvar(opts.values, opts.ncfile, opts.varname)
  • trunk/tools/nc_var_tools.py

    r1045 r1046  
    57145714                dimsize = (iendv - ibegv + 1)/iintv - 1
    57155715            else:
    5716                 dimsize == 0                       
     5716                dimsize = 0
    57175717                if begv == -9:
    57185718                    ibegv = len(objdim) - 1
     
    57465746
    57475747    ncoobj.sync()
    5748     print fname + 'Lluis; dims:', ncoobj.dimensions
    57495748# Creating variables
    57505749##
    5751     print fname + '; Lluis dimsecslice',dimsecslice
    57525750
    57535751    filedims = ncoobj.dimensions
     
    57575755
    57585756        vardims = varobj.dimensions
    5759         print '  ' + fname + ' Lluis; vardims:', vardims
    57605757
    57615758        if not gen.searchInlist(list(vardims),dimn):
     
    57985795            varfil = None
    57995796        vartype = varobj.dtype
    5800         print '  ' + fname + '; Lluis filevardims:', filevardims
    58015797
    58025798        if varfil is not None:
     
    58065802            newvar = ncoobj.createVariable(varns, vartype, tuple(filevardims))
    58075803        ncoobj.sync()
    5808         print fname + ' Lluis newvardims:', newvar.dimensions
    58095804
    58105805        newvar[:] = varvals
     
    58325827
    58335828    onc = NetCDFFile(ofile, 'r')
    5834     print fname + 'Lluis: ', onc.variables['lon']
    58355829    onc.close()
    58365830
     
    1611216106            self.vardxn = 'lon'
    1611316107            self.vardyn = 'lat'
    16114             self.vardzn = 'pres'
     16108            self.vardzn = 'presnivs'
    1611516109            self.vardtn = 'time_counter'
    1611616110            self.vardsn = None
     
    1656516559    return
    1656616560
     16561def LMDZ_toCF(ncfile):
     16562    """ Function to pass a LMDZ original file to CF-conventions
     16563      ncfile= file to transform
     16564      variables= variables to transform
     16565    """
     16566    fname = 'LMDZ_toCF'
     16567
     16568    if ncfile == 'h':
     16569        print fname + '_____________________________________________________________'
     16570        print LMDZ_toCF.__doc__
     16571        quit()
     16572
     16573    ofile = 'CF_LMDZ.nc'
     16574 
     16575    ncf = NetCDFFile(ncfile,'a')
     16576    ncdims = ncf.dimensions.keys()
     16577    ncvars = ncf.variables.keys()
     16578
     16579#    # CFing dimension-variables
     16580#    CFvardims = {'time_counter': 'time', 'presnivs': 'pres'}
     16581#    for varn in CFvardims.keys():
     16582#        if gen.searchInlist(ncvars,varn):
     16583#            # Making sure CF vardimension is not in the file
     16584#            if not gen.searchInlist(ncvars,CFvardims[varn]):
     16585#                newname = ncf.renameVariable(varn,CFvardims[varn])
     16586
     16587#    ncf.sync()
     16588
     16589    # CFing dimensions
     16590    CFdims = {'time_counter': 'time', 'presnivs': 'pres'}
     16591    for dimn in CFdims.keys():
     16592        if gen.searchInlist(ncdims,dimn):
     16593            # Making sure CF dimension is not in the file
     16594            if not gen.searchInlist(ncdims,CFdims[dimn]):
     16595                newname = ncf.renameDimension(dimn,CFdims[dimn])
     16596
     16597    ncf.sync()
     16598
     16599    ncvars = ncf.variables.keys()
     16600    # Re-arranging coordinates attribute for all the variables
     16601    for varn in ncvars:
     16602        varobj = ncf.variables[varn]
     16603        varattrs = varobj.ncattrs()
     16604        if gen.searchInlist(varattrs, unicode('coordinates')):
     16605            attrv = varobj.getncattr('coordinates')
     16606            newcoord = str(attrv)
     16607            for dimn in CFdims.keys():
     16608                newcoord = newcoord.replace(dimn, CFdims[dimn])
     16609            newattr = set_attribute(varobj, 'coordinates', newcoord)
     16610
     16611    ncf.sync()
     16612
     16613    ncf.close()
     16614
     16615    print fname + ": succesfull CFication of LMDZ file '" + ncfile + "' !!"
     16616
     16617    return
     16618
    1656716619def cleaning_varsfile(values, filen):
    1656816620    """ Function to keep a list of varibales from a file
Note: See TracChangeset for help on using the changeset viewer.