cleaned
legacy format was for pre-MPI output where the extra bytes at start and end of a chunk (Fortran out) had to be handled manually
This commit is contained in:
parent
5054291557
commit
697d97cd38
|
@ -121,12 +121,8 @@ class MPIEspectral_result: # mimic py_post result object
|
|||
self._logscales = self._keyedPackedArray('logscales',count=self.N_loadcases,type='i')
|
||||
|
||||
self.size = self._keyedPackedArray('size:',count=3,type='d')
|
||||
if self.size == [None,None,None]: # no 'size' found, try legacy alias 'dimension'
|
||||
self.size = self._keyedPackedArray('dimension',count=3,type='d')
|
||||
|
||||
self.grid = self._keyedPackedArray('grid:',count=3,type='i')
|
||||
if self.grid == [None,None,None]: # no 'grid' found, try legacy alias 'resolution'
|
||||
self.grid = self._keyedPackedArray('resolution',count=3,type='i')
|
||||
|
||||
self.N_nodes = (self.grid[0]+1)*(self.grid[1]+1)*(self.grid[2]+1)
|
||||
self.N_elements = self.grid[0] * self.grid[1] * self.grid[2]
|
||||
|
@ -142,13 +138,8 @@ class MPIEspectral_result: # mimic py_post result object
|
|||
|
||||
# parameters for file handling depending on output format
|
||||
|
||||
if options.legacy:
|
||||
self.tagLen=8
|
||||
self.fourByteLimit = 2**31 -1 -8
|
||||
else:
|
||||
self.tagLen=0
|
||||
self.tagLen=0
|
||||
self.expectedFileSize = self.dataOffset+self.N_increments*(self.tagLen+self.N_elements*self.N_element_scalars*8)
|
||||
if options.legacy: self.expectedFileSize+=self.expectedFileSize//self.fourByteLimit*8 # add extra 8 bytes for additional headers at 4 GB limits
|
||||
if self.expectedFileSize != self.filesize:
|
||||
print('\n**\n* Unexpected file size. Incomplete simulation or file corrupted!\n**')
|
||||
|
||||
|
@ -280,42 +271,16 @@ class MPIEspectral_result: # mimic py_post result object
|
|||
return self.N_element_scalars
|
||||
|
||||
def element_scalar(self,e,idx):
|
||||
if not options.legacy:
|
||||
incStart = self.dataOffset \
|
||||
+ self.position*8*self.N_elements*self.N_element_scalars
|
||||
where = (e*self.N_element_scalars + idx)*8
|
||||
try:
|
||||
self.file.seek(incStart+where)
|
||||
value = struct.unpack('d',self.file.read(8))[0]
|
||||
except:
|
||||
print('seeking {}'.format(incStart+where))
|
||||
print('e {} idx {}'.format(e,idx))
|
||||
sys.exit(1)
|
||||
|
||||
else:
|
||||
self.fourByteLimit = 2**31 -1 -8
|
||||
# header & footer + extra header and footer for 4 byte int range (Fortran)
|
||||
# values
|
||||
incStart = self.dataOffset \
|
||||
+ self.position*8*( 1 + self.N_elements*self.N_element_scalars*8//self.fourByteLimit \
|
||||
+ self.N_elements*self.N_element_scalars)
|
||||
|
||||
where = (e*self.N_element_scalars + idx)*8
|
||||
try:
|
||||
if where%self.fourByteLimit + 8 >= self.fourByteLimit: # danger of reading into fortran record footer at 4 byte limit
|
||||
data=''
|
||||
for i in range(8):
|
||||
self.file.seek(incStart+where+(where//self.fourByteLimit)*8+4)
|
||||
data += self.file.read(1)
|
||||
where += 1
|
||||
value = struct.unpack('d',data)[0]
|
||||
else:
|
||||
self.file.seek(incStart+where+(where//self.fourByteLimit)*8+4)
|
||||
value = struct.unpack('d',self.file.read(8))[0]
|
||||
except:
|
||||
print('seeking {}'.format(incStart+where+(where//self.fourByteLimit)*8+4))
|
||||
print('e {} idx {}'.format(e,idx))
|
||||
sys.exit(1)
|
||||
incStart = self.dataOffset \
|
||||
+ self.position*8*self.N_elements*self.N_element_scalars
|
||||
where = (e*self.N_element_scalars + idx)*8
|
||||
try:
|
||||
self.file.seek(incStart+where)
|
||||
value = struct.unpack('d',self.file.read(8))[0]
|
||||
except:
|
||||
print('seeking {}'.format(incStart+where))
|
||||
print('e {} idx {}'.format(e,idx))
|
||||
sys.exit(1)
|
||||
|
||||
return [elemental_scalar(node,value) for node in self.element(e).items]
|
||||
|
||||
|
@ -645,8 +610,6 @@ of already processed data points for evaluation.
|
|||
|
||||
parser.add_option('-i','--info', action='store_true', dest='info',
|
||||
help='list contents of resultfile')
|
||||
parser.add_option('-l','--legacy', action='store_true', dest='legacy',
|
||||
help='data format of spectral solver is in legacy format (no MPI out)')
|
||||
parser.add_option('-n','--nodal', action='store_true', dest='nodal',
|
||||
help='data is extrapolated to nodal value')
|
||||
parser.add_option( '--prefix', dest='prefix',
|
||||
|
@ -673,10 +636,7 @@ parser.add_option('-p','--type', dest='filetype',
|
|||
help = 'type of result file [auto]')
|
||||
parser.add_option('-q','--quiet', dest='verbose',
|
||||
action = 'store_false',
|
||||
help = 'suppress verbose output')
|
||||
parser.add_option('--verbose', dest='verbose',
|
||||
action = 'store_true',
|
||||
help = 'enable verbose output')
|
||||
help = 'legacy switch, no effect')
|
||||
|
||||
group_material = OptionGroup(parser,'Material identifier')
|
||||
|
||||
|
@ -718,8 +678,6 @@ parser.add_option_group(group_general)
|
|||
parser.add_option_group(group_special)
|
||||
|
||||
parser.set_defaults(info = False,
|
||||
verbose = False,
|
||||
legacy = False,
|
||||
nodal = False,
|
||||
prefix = '',
|
||||
suffix = '',
|
||||
|
|
Loading…
Reference in New Issue