Index: wflow-py/wflow/wf_netcdfio.py =================================================================== diff -u -r731a0561bb29f6d7557c583db5faaaf957581f9c -red5994ab4d8c0b03e42e898d7edd43f296a1280c --- wflow-py/wflow/wf_netcdfio.py (.../wf_netcdfio.py) (revision 731a0561bb29f6d7557c583db5faaaf957581f9c) +++ wflow-py/wflow/wf_netcdfio.py (.../wf_netcdfio.py) (revision ed5994ab4d8c0b03e42e898d7edd43f296a1280c) @@ -441,17 +441,13 @@ a = pcr2numpy(cover(0.0), 0.0).flatten() # Determine steps to load in mem based on estimated memory usage floatspermb = 1048576 / 4 - maxmb = 4000 - self.maxsteps = maxmb * len(a) / floatspermb + 1 + maxmb = 40 + + maxlentime = len(self.dataset.variables['time']) + self.maxsteps = minimum(maxmb * len(a) / floatspermb + 1,maxlentime - 1) self.fstep = 0 self.lstep = self.fstep + self.maxsteps - for var in vars: - try: - self.alldat[var] = self.dataset.variables[var][self.fstep:self.maxsteps] - except: - self.alldat.pop(var, None) - logging.warn("Variable " + var + " not found in netcdf file: " + netcdffile) # Now check Y values to see if we must flip the data try: @@ -464,6 +460,16 @@ else: self.flip = True + + for var in vars: + try: + self.alldat[var] = self.dataset.variables[var][self.fstep:self.maxsteps] + except: + self.alldat.pop(var, None) + logging.warn("Variable " + var + " not found in netcdf file: " + netcdffile) + + + def gettimestep(self, timestep, logging, var='P', shifttime=False): """ Gets a map for a single timestep. reads data in blocks assuming sequential access @@ -520,7 +526,7 @@ a = pcr2numpy(cover(0.0), 0.0).flatten() # Determine steps to load in mem based on estimated memory usage floatspermb = 1048576 / 4 - maxmb = 4000 + maxmb = 40 self.maxsteps = maxmb * len(a) / floatspermb + 1 self.fstep = 0 self.lstep = self.fstep + self.maxsteps