Changeset 1379 in lmdz_wrf


Ignore:
Timestamp:
Dec 13, 2016, 1:32:29 PM (8 years ago)
Author:
lfita
Message:

Adding to 'addVar':

  • 'scalar' as [dnames] for the addition of a scalar variable
  • 'None' as [arguments] to avoid the addition of the standard attributes: standard_name, long_name, units
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/nc_var_tools.py

    r1376 r1379  
    1815118151      values= [dnames]|[varattributes]|[kind]
    1815218152        [dnames]: [dimn1],...,[dimnN], ',' list of name of dimensions for the new variable (already existing)
    18153         [attributes]: [std_name]@[long_name]@[units], standard name, long name and units of the variable
    18154           ('!' for spaces)
     18153          'scalar', for scalar variables
     18154        [attributes]: [std_name]@[long_name]@[units], standard name, long name and units of the variable ('!' for spaces)
     18155          'None' for no standard attributes
    1815518156        [kind]: type of variable (standard netCDF4/C-like values, 'c', 'i', 'f', 'f8',...)
    1815618157      ncfile= name of the file
     
    1817618177    dimns = onc.dimensions
    1817718178    varns = onc.variables.keys()
    18178 
    18179     # Checking dimensions
    18180     dsize = []
    18181     for dimn in dnames:
    18182         if not gen.searchInlist(dimns, dimn):
    18183             print errormsg
    18184             print '  ' +fname+ ": file '" + ncfile + "' does not have dimension '" + \
    18185                 dimn + "' !!"
    18186             print '    existing ones:', dimns
    18187             quit(-1)
    18188         else:
    18189             dsize.append(len(onc.dimensions[dimn]))
    18190 
     18179   
    1819118180    # Checking new varname
    1819218181    if gen.searchInlist(varns, varn):
     
    1819718186        quit(-1)
    1819818187
     18188    if values.split('|')[0].find(',') != -1:
     18189        # Checking dimensions
     18190        dsize = []
     18191        for dimn in dnames:
     18192            if not gen.searchInlist(dimns, dimn):
     18193                print errormsg
     18194                print '  ' +fname+ ": file '" + ncfile + "' does not have " +        \
     18195                  "dimension '" +  dimn + "' !!"
     18196                print '    existing ones:', dimns
     18197                quit(-1)
     18198            else:
     18199                dsize.append(len(onc.dimensions[dimn]))
     18200
    1819918201# Variable
    18200     if kind == 'c':
    18201         newvar = onc.createVariable(varn, 'c', tuple(dnames))
    18202 #        newvar[:] = np.zeros(tuple(dsize), dtype=np.float)
    18203     elif kind == 'f' or kind == 'f4':
    18204         newvar = onc.createVariable(varn, 'f4', tuple(dnames),                       \
    18205           fill_value=gen.fillValueF)
    18206         newvar[:] = np.zeros(tuple(dsize), dtype=np.float)
    18207     elif kind == 'f8':
    18208         newvar = onc.createVariable(varn, 'f8', tuple(dnames),                       \
    18209           fill_value=gen.fillValueD)
    18210         newvar[:] = np.zeros(tuple(dsize), dtype=np.float64)
    18211     elif kind == 'i':
    18212         newvar = onc.createVariable(varn, 'i', tuple(dnames),                        \
    18213           fill_value=gen.fillValueI)
    18214         newvar[:] = np.zeros(tuple(dsize), dtype=int)
     18202        if kind == 'c':
     18203            newvar = onc.createVariable(varn, 'c', tuple(dnames))
     18204#            newvar[:] = np.zeros(tuple(dsize), dtype=np.float)
     18205        elif kind == 'f' or kind == 'f4':
     18206            newvar = onc.createVariable(varn, 'f4', tuple(dnames),                   \
     18207                  fill_value=gen.fillValueF)
     18208            newvar[:] = np.zeros(tuple(dsize), dtype=np.float)
     18209        elif kind == 'f8':
     18210            newvar = onc.createVariable(varn, 'f8', tuple(dnames),                   \
     18211              fill_value=gen.fillValueD)
     18212            newvar[:] = np.zeros(tuple(dsize), dtype=np.float64)
     18213        elif kind == 'i':
     18214            newvar = onc.createVariable(varn, 'i', tuple(dnames),                    \
     18215              fill_value=gen.fillValueI)
     18216            newvar[:] = np.zeros(tuple(dsize), dtype=int)
     18217        else:
     18218            print errormsg
     18219            print '  ' + fname + ": variable kind '" + kind + "' not ready!!"
     18220            quit(-1)
     18221
     18222    elif values.split('|')[0] == 'scalar':
     18223        print '  ' + fname + ': creation of scalar variable !!'
     18224
     18225# Variable
     18226        if kind == 'c':
     18227            newvar = onc.createVariable(varn, 'c')
     18228#            newvar[:] = np.zeros(tuple(dsize), dtype=np.float)
     18229        elif kind == 'f' or kind == 'f4':
     18230            newvar = onc.createVariable(varn, 'f4')
     18231            newvar[:] = np.float(0.)
     18232        elif kind == 'f8':
     18233            newvar = onc.createVariable(varn, 'f8')
     18234            newvar[:] = np.float64(0.)
     18235        elif kind == 'i':
     18236            newvar = onc.createVariable(varn, 'i')
     18237            newvar[:] = int(0)
     18238        else:
     18239            print errormsg
     18240            print '  ' + fname + ": variable kind '" + kind + "' not ready!!"
     18241            quit(-1)
    1821518242    else:
    1821618243        print errormsg
    18217         print '  ' + fname + ": variable kind '" + kind + "' not ready!!"
     18244        print '  ' + fname + ": wrong dimension values: '" + dnames + "' !!"
    1821818245        quit(-1)
    1821918246
    18220     sname = attributes.split('@')[0]
    18221     lname = attributes.split('@')[1]
    18222     u = attributes.split('@')[2]
     18247    # Setting standard attributes
     18248    if values.split('|')[1] != 'None':
     18249        sname = attributes.split('@')[0]
     18250        lname = attributes.split('@')[1]
     18251        u = attributes.split('@')[2]
    1822318252   
    18224     newattr = basicvardef(newvar, sname, lname, u)
     18253        newattr = basicvardef(newvar, sname, lname, u)
    1822518254
    1822618255    onc.sync()
     
    1824718276    if values == 'h':
    1824818277        print fname + '_____________________________________________________________'
    18249         print addVar.__doc__
     18278        print setvar_nc.__doc__
    1825018279        quit()
    1825118280
Note: See TracChangeset for help on using the changeset viewer.