def read_class_npvar_red(casedir='.',datadir='/data',pfile='pvar.dat',proc=0): dims = pc.read_dim(casedir+datadir,proc) pdims = pc.read_pdim(casedir+datadir) npar_loc = read_npar_loc(casedir=casedir,datadir=datadir,pfile=pfile,proc=proc) # print npar_loc,' particles on processor: ',proc mvars = pdims.mpaux+pdims.mpvar ltot = npar_loc*mvars array_shape= np.dtype([('header','<i4'), ('npar_loc','<i4'), ('footer','<i4'), ('header2','<i4'), ('ipar','<i4',npar_loc), ('footer2','<i4'), ('header3','<i4'), ('fp','<f8',ltot), ('footer3','<i4'), ('header4','<i4'), ('t','<f8'), ('x','<f8',dims.mx), ('y','<f8',dims.my), ('z','<f8',dims.mz), ('dx','<f8'), ('dy','<f8'), ('dz','<f8'), ('footer4','<i4')]) p_data = np.fromfile(casedir+datadir+'/proc'+str(proc)+'/'+pfile,dtype=array_shape) partpars = np.array(p_data['fp'].reshape(mvars,npar_loc)) ipar = np.squeeze(p_data['ipar'].reshape(p_data['ipar'].size)) return ipar,partpars
def __init__(self, varfile='particles_stalker.dat', datadir='./data', proc=-1, verbose=False, reduce_to=-1): pdata = pc.read_pdim() setattr(self, 'nstalk', pdata.npar_stalk) self.find_no_of_procs(proc=proc, datadir=datadir) self.get_stalkdim(datadir=datadir) self.get_stalktime(datadir=datadir) for proc in self.procdirs: self.read_stalker_data(datadir=datadir, procdir=proc) self.bundle_stalker_data()
def __init__(self, varfile='particles_stalker.dat', datadir='./data', proc=-1, verbose=False, reduce_to=-1): pdata = pc.read_pdim() setattr(self,'nstalk',pdata.npar_stalk) self.find_no_of_procs(proc=proc,datadir=datadir) self.get_stalkdim(datadir=datadir) self.get_stalktime(datadir=datadir) for proc in self.procdirs: self.read_stalker_data(datadir=datadir,procdir=proc) self.bundle_stalker_data()
def read_class_npvar_red(casedir=".", datadir="/data", pfile="pvar.dat", proc=0, verbose=False): dims = pc.read_dim(casedir + datadir, proc) pdims = pc.read_pdim(casedir + datadir) npar_loc = read_npar_loc(casedir=casedir, datadir=datadir, pfile=pfile, proc=proc) if verbose: # print npar_loc,' particles on processor: ',proc # Python 2 print(npar_loc + " particles on processor: " + proc) mvars = pdims.mpaux + pdims.mpvar ltot = npar_loc * mvars if dims.precision == "S": REAL = "<f4" else: REAL = "<f8" array_shape = np.dtype( [ ("header", "<i4"), ("npar_loc", "<i4"), ("footer", "<i4"), ("header2", "<i4"), ("ipar", "<i4", npar_loc), ("footer2", "<i4"), ("header3", "<i4"), ("fp", REAL, ltot), ("footer3", "<i4"), ("header4", "<i4"), ("t", REAL), ("x", REAL, dims.mx), ("y", REAL, dims.my), ("z", REAL, dims.mz), ("dx", REAL), ("dy", REAL), ("dz", REAL), ("footer4", "<i4"), ] ) p_data = np.fromfile(casedir + datadir + "/proc" + str(proc) + "/" + pfile, dtype=array_shape) partpars = np.array(p_data["fp"].reshape(mvars, npar_loc)) ipar = np.squeeze(p_data["ipar"].reshape(p_data["ipar"].size)) return ipar, partpars
def read_class_npvar_red(casedir='.', datadir='/data', pfile='pvar.dat', proc=0, verbose=False): dims = pc.read_dim(casedir + datadir, proc) pdims = pc.read_pdim(casedir + datadir) npar_loc = read_npar_loc(casedir=casedir, datadir=datadir, pfile=pfile, proc=proc) if (verbose): #print npar_loc,' particles on processor: ',proc # Python 2 print(npar_loc + ' particles on processor: ' + proc) mvars = pdims.mpaux + pdims.mpvar ltot = npar_loc * mvars if (dims.precision == 'S'): REAL = '<f4' else: REAL = '<f8' array_shape = np.dtype([('header', '<i4'), ('npar_loc', '<i4'), ('footer', '<i4'), ('header2', '<i4'), ('ipar', '<i4', npar_loc), ('footer2', '<i4'), ('header3', '<i4'), ('fp', REAL, ltot), ('footer3', '<i4'), ('header4', '<i4'), ('t', REAL), ('x', REAL, dims.mx), ('y', REAL, dims.my), ('z', REAL, dims.mz), ('dx', REAL), ('dy', REAL), ('dz', REAL), ('footer4', '<i4')]) p_data = np.fromfile(casedir + datadir + '/proc' + str(proc) + '/' + pfile, dtype=array_shape) partpars = np.array(p_data['fp'].reshape(mvars, npar_loc)) ipar = np.squeeze(p_data['ipar'].reshape(p_data['ipar'].size)) return ipar, partpars
def read_class_npvar_red(datadir='./data', pfile='pvar.dat', proc=0, verbose=False, reduce_to=-1, set_reduce=-1): dims = pc.read_dim(datadir, proc) pdims = pc.read_pdim(datadir) npar_loc = read_npar_loc(datadir=datadir, pfile=pfile, proc=proc) # # the Next bit calculates how many particles are written for all but # the last processor. The last processor is assigned a number of particles # to write so that the required number of particles is obtained # if (reduce_to > 0): if (set_reduce <= 0): reductionfactor = float(reduce_to) / float(pdims.npar) npar_red = int(round(npar_loc * reductionfactor)) else: npar_red = set_reduce if (verbose): #print 'reducing '+str(npar_loc)+' to '+str(npar_red)+ ' on proc'+str(proc) print('reducing {} to {} on proc {}'.format( npar_loc, npar_red, proc)) written_parts = npar_red else: written_parts = set_reduce if (verbose): #print npar_loc,' particles on processor: ',proc # Python 2 print(str(npar_loc) + ' particles on processor: ' + str(proc)) mvars = pdims.mpaux + pdims.mpvar ltot = npar_loc * mvars if (dims.precision == 'S'): REAL = '<f4' else: REAL = '<f8' array_shape = np.dtype([('header', '<i4'), ('npar_loc', '<i4'), ('footer', '<i4'), ('header2', '<i4'), ('ipar', '<i4', npar_loc), ('footer2', '<i4'), ('header3', '<i4'), ('fp', REAL, ltot), ('footer3', '<i4'), ('header4', '<i4'), ('t', REAL), ('x', REAL, dims.mx), ('y', REAL, dims.my), ('z', REAL, dims.mz), ('dx', REAL), ('dy', REAL), ('dz', REAL), ('footer4', '<i4')]) p_data = np.fromfile(datadir + '/proc' + str(proc) + '/' + pfile, dtype=array_shape) partpars = np.array(p_data['fp'].reshape(mvars, npar_loc)) if (reduce_to > 0): particle_list = map( lambda x: int(x), np.linspace(0.0, npar_loc, num=npar_red, endpoint=False)) red_parts = partpars[:, particle_list] red_shape = np.dtype([('header', '<i4'), ('npar_loc', '<i4'), ('footer', '<i4'), ('header2', '<i4'), ( 'ipar', '<i4', (npar_red), ), ('footer2', '<i4'), ('header3', '<i4'), ('fp', REAL, npar_red * mvars), ('footer3', '<i4'), ('header4', '<i4'), ('t', REAL), ('x', REAL, (dims.mx, )), ('y', REAL, (dims.my, )), ('z', REAL, (dims.mz, )), ('dx', REAL), ('dy', REAL), ('dz', REAL), ('footer4', '<i4')]) p_red = np.array( [(4, npar_red, 4, (npar_red * 4), (np.squeeze(p_data['ipar'][0, :npar_red])), (npar_red * 4), (npar_red * mvars * 8), (np.squeeze(np.ravel(red_parts))), (npar_red * mvars * 8), (p_data['header4'][0]), (p_data['t']), (p_data['x']), (p_data['y']), (p_data['z']), (p_data['dx']), (p_data['dy']), (p_data['dz']), p_data['footer4'][0])], dtype=red_shape) p_red.tofile(datadir + '/proc' + str(proc) + '/' + str(reduce_to) + '_' + pfile) ipar = np.squeeze(p_data['ipar'].reshape(p_data['ipar'].size)) return ipar, partpars, written_parts
def read_class_npvar_red(datadir='./data', pfile='pvar.dat', proc=0, verbose=False, reduce_to=-1, set_reduce=-1): dims = pc.read_dim(datadir,proc) pdims = pc.read_pdim(datadir) npar_loc = read_npar_loc(datadir=datadir,pfile=pfile,proc=proc) # # the Next bit calculates how many particles are written for all but # the last processor. The last processor is assigned a number of particles # to write so that the required number of particles is obtained # if (reduce_to > 0): if (set_reduce <= 0): reductionfactor = float(reduce_to)/float(pdims.npar) npar_red = int(round(npar_loc*reductionfactor)) else: npar_red = set_reduce if (verbose): #print 'reducing '+str(npar_loc)+' to '+str(npar_red)+ ' on proc'+str(proc) print('reducing {} to {} on proc {}'.format( npar_loc, npar_red, proc)) written_parts=npar_red else: written_parts=set_reduce if (verbose): #print npar_loc,' particles on processor: ',proc # Python 2 print(str(npar_loc)+' particles on processor: '+str(proc)) mvars = pdims.mpaux+pdims.mpvar ltot = npar_loc*mvars if (dims.precision == 'S'): REAL = '<f4' else: REAL = '<f8' array_shape= np.dtype([('header','<i4'), ('npar_loc','<i4'), ('footer','<i4'), ('header2','<i4'), ('ipar','<i4',npar_loc), ('footer2','<i4'), ('header3','<i4'), ('fp',REAL,ltot), ('footer3','<i4'), ('header4','<i4'), ('t',REAL), ('x',REAL,dims.mx), ('y',REAL,dims.my), ('z',REAL,dims.mz), ('dx',REAL), ('dy',REAL), ('dz',REAL), ('footer4','<i4')]) p_data = np.fromfile(datadir+'/proc'+str(proc)+'/'+pfile,dtype=array_shape) partpars = np.array(p_data['fp'].reshape(mvars,npar_loc)) if (reduce_to>0): particle_list = map(lambda x: int(x),np.linspace(0.0,npar_loc,num=npar_red,endpoint=False)) red_parts = partpars[:,particle_list] red_shape = np.dtype([('header','<i4'), ('npar_loc','<i4'), ('footer','<i4'), ('header2','<i4'), ('ipar','<i4',(npar_red),), ('footer2','<i4'), ('header3','<i4'), ('fp',REAL,npar_red*mvars), ('footer3','<i4'), ('header4','<i4'), ('t',REAL), ('x',REAL,(dims.mx,)), ('y',REAL,(dims.my,)), ('z',REAL,(dims.mz,)), ('dx',REAL), ('dy',REAL), ('dz',REAL), ('footer4','<i4')]) p_red =np.array([(4, npar_red, 4, (npar_red*4), (np.squeeze(p_data['ipar'][0,:npar_red])), (npar_red*4), (npar_red*mvars*8), (np.squeeze(np.ravel(red_parts))), (npar_red*mvars*8), (p_data['header4'][0]), (p_data['t']), (p_data['x']), (p_data['y']), (p_data['z']), (p_data['dx']), (p_data['dy']), (p_data['dz']), p_data['footer4'][0]) ],dtype=red_shape) p_red.tofile(datadir+'/proc'+str(proc)+'/'+str(reduce_to)+'_'+pfile) ipar = np.squeeze(p_data['ipar'].reshape(p_data['ipar'].size)) return ipar, partpars, written_parts