Пример #1
0
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
Пример #2
0
    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()
Пример #3
0
	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()
Пример #4
0
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
Пример #5
0
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
Пример #6
0
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
Пример #7
0
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