Changeset 1075


Ignore:
Timestamp:
Mar 14, 2005, 2:13:50 PM (19 years ago)
Author:
prow
Message:

Fixed some bugs (a recursion crash if a single save exceeds max_size)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • inundation/ga/storm_surge/pyvolution/data_manager.py

    r1066 r1075  
    208208
    209209
    210     def __init__(self, domain, mode = 'w', filename_ext = ''):
     210    def __init__(self, domain, mode = 'w',\
     211                 max_size = 2000000000,recursion=False):
    211212        from Scientific.IO.NetCDF import NetCDFFile
    212213        from Numeric import Int, Float, Float32
    213214
    214215        self.precision = Float32 #Use single precision
    215         self.max_size = 2000000000#file size max is 2Gig
     216        if hasattr(domain,'max_size'):
     217            self.max_size = domain.max_size#file size max is 2Gig
     218        else:
     219            self.max_size = max_size
     220        self.recursion = recursion
    216221        self.mode = mode
    217222
     
    327332        #Close
    328333        fid.close()
    329 
    330334
    331335    def store_timestep(self, names):
     
    367371        file_size = stat(self.filename)[6]
    368372        file_size_increase =  file_size/i
    369         if file_size + file_size_increase > self.max_size:
     373        if file_size + file_size_increase > self.max_size*(2**self.recursion):
    370374            #in order to get the file name and start time correct,
    371375            #I change the domian.filename and domain.starttime.
     
    373377            #other modules (I think).
    374378
    375             #write a filename addon that won't bread swollen
     379            #write a filename addon that won't break swollens reader
     380            #(10.sww is bad)
    376381            filename_ext = '_time_%s'%self.domain.time           
    377382            filename_ext = filename_ext.replace('.', '_')
     
    379384            #name with the extension
    380385            old_domain_filename = self.domain.filename
    381             self.domain.filename = self.domain.filename+filename_ext
     386            if not self.recursion:
     387                self.domain.filename = self.domain.filename+filename_ext
    382388
    383389            #change the domain starttime to the current time
     
    387393            #build a new data_structure.
    388394            next_data_structure=\
    389                 Data_format_sww(self.domain, mode=self.mode\
    390                                 ,filename_ext=filename_ext)
    391             print '    file_size = %s'%file_size
    392             print '    saving file to %s'%self.next_data_structure.filename
    393 
     395                Data_format_sww(self.domain, mode=self.mode,\
     396                                max_size = self.max_size,\
     397                                recursion = self.recursion+1)
     398            if not self.recursion:
     399                print '    file_size = %s'%file_size
     400                print '    saving file to %s'%next_data_structure.filename
    394401            #set up the new data_structure
    395402            self.domain.writer = next_data_structure
     
    405412            self.domain.filename = old_domain_filename
    406413        else:
     414            self.recursion = False
    407415            domain = self.domain
    408416
     
    444452            fid.sync()
    445453            fid.close()
     454
    446455
    447456
     
    591600        fid.sync()
    592601        fid.close()
    593 
    594 
    595602
    596603
Note: See TracChangeset for help on using the changeset viewer.