Changeset 810 in lmdz_wrf


Ignore:
Timestamp:
Jun 7, 2016, 5:36:20 PM (9 years ago)
Author:
lfita
Message:

`faddvar': Adding updating of variable if it already exists in the file

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/nc_var_tools.py

    r800 r810  
    11731173      print '    ' + fname + ': Adding refvar:', refvar, 'shape: ', refvarv.shape
    11741174      var = ncf.createVariable(refvar, vartype, vardims, fill_value=varfil)
    1175 
    1176       varshape = refvarv.shape
    1177       varvals = np.zeros(tuple(varshape), dtype=vartype)     
    1178       Nvars = len(varshape)
     1175  else:
     1176      print warnmsg
     1177      print '    ' + fname + ': updating var:', refvar, 'shape: ', refvarv.shape
     1178      var = ncf.variables[refvar]
     1179
     1180  varshape = refvarv.shape
     1181  varvals = np.zeros(tuple(varshape), dtype=vartype)     
     1182  Nvars = len(varshape)
    11791183   
    11801184# Allocating all the necessary memory (just in case)
     1185  var[:] = varvals
     1186
     1187  if Nvars <= 2:
     1188      varvals = refvarv[:]
    11811189      var[:] = varvals
    1182 
    1183       if Nvars <= 2:
    1184           varvals = refvarv[:]
    1185           var[:] = varvals
    1186       elif Nvars == 3:
    1187           for i in range(varshape[0]):
    1188               varvals[i,:,:] = refvarv[i,:,:]
    1189               var[i,:,:] = varvals[i,:,:]
    1190       elif Nvars == 4:
    1191           for i in range(varshape[0]):
    1192               for j in range(varshape[1]):
    1193                   varvals[i,j,:,:] = refvarv[i,j,:,:]
    1194                   var[i,j,:,:] = varvals[i,j,:,:]
    1195       elif Nvars == 5:
    1196           for i in range(varshape[0]):
    1197               for j in range(varshape[1]):
    1198                   for k in range(varshape[2]):
    1199                       varvals[i,j,k,:,:] = refvarv[i,j,k,:,:]
    1200                       var[i,j,k,:,:] = varvals[i,j,k,:,:]
    1201       elif Nvars == 6:
    1202           for i in range(varshape[0]):
    1203               for j in range(varshape[1]):
    1204                   for k in range(varshape[2]):
    1205                       for l in range(varshape[3]):
    1206                           varvals[i,j,k,l,:,:] = refvarv[i,j,k,l,:,:]
    1207                           var[i,j,k,l,:,:] = varvals[i,j,k,l,:,:]
    1208 
    1209       newvar = ncf.variables[refvar]
    1210       for attr in varattr:
    1211           newvarattrs = newvar.ncattrs()
    1212           attrv = refvarv.getncattr(attr)
    1213           if not gen.searchInlist(newvarattrs, attr):     
    1214               newvar.setncattr(attr, attrv)
    1215 
    1216       ncf.sync()
     1190  elif Nvars == 3:
     1191      for i in range(varshape[0]):
     1192          varvals[i,:,:] = refvarv[i,:,:]
     1193          var[i,:,:] = varvals[i,:,:]
     1194  elif Nvars == 4:
     1195      for i in range(varshape[0]):
     1196          for j in range(varshape[1]):
     1197              varvals[i,j,:,:] = refvarv[i,j,:,:]
     1198              var[i,j,:,:] = varvals[i,j,:,:]
     1199  elif Nvars == 5:
     1200      for i in range(varshape[0]):
     1201          for j in range(varshape[1]):
     1202              for k in range(varshape[2]):
     1203                  varvals[i,j,k,:,:] = refvarv[i,j,k,:,:]
     1204                  var[i,j,k,:,:] = varvals[i,j,k,:,:]
     1205  elif Nvars == 6:
     1206      for i in range(varshape[0]):
     1207          for j in range(varshape[1]):
     1208              for k in range(varshape[2]):
     1209                  for l in range(varshape[3]):
     1210                      varvals[i,j,k,l,:,:] = refvarv[i,j,k,l,:,:]
     1211                      var[i,j,k,l,:,:] = varvals[i,j,k,l,:,:]
     1212
     1213  newvar = ncf.variables[refvar]
     1214  for attr in varattr:
     1215      newvarattrs = newvar.ncattrs()
     1216      attrv = refvarv.getncattr(attr)
     1217      if not gen.searchInlist(newvarattrs, attr):     
     1218          newvar.setncattr(attr, attrv)
     1219
     1220  ncf.sync()
    12171221  ncf.close()
    12181222  ncref.close()
Note: See TracChangeset for help on using the changeset viewer.