Beispiel #1
0
    def get_dens_on_grid(self, Nko=0):
        """
		Calculate the species density on the grid (used by diagnostics)

		Parameters
		----------
		Nko: int
		  number of azimuthal modes to be used

		Returns
		----------
		dens: ndarray with dtype=np.complex
		  species density on the grid (angular Fourier decomposition)

		Comments
		--------
		wrapper for the OMP-vectorized Fortran subroutines

		"""

        VGrid = 2 * np.pi * self.Args['dx'] * self.Args['dr'] * self.Args[
            'Rgrid']
        VGrid = (VGrid +
                 (self.Args['Rgrid'] == 0))**-1 * (self.Args['Rgrid'] > 0.0)
        dens = np.zeros((self.Args['Nx'],self.Args['Nr'],Nko+1),\
          dtype='complex',order='F')
        dens = chimera.dep_dens(self.Data['coords'],self.Data['weights'],\
          dens,self.Args['leftX'],self.Args['Rgrid'],1./self.Args['dx'],\
          1/self.Args['dr'])*VGrid[None,:,None]
        return dens
 def dep_bg(self, solver):
     solver.Data['BckGrndRho'][:] = 0.0
     for species in self.Particles:
         if species.Data['coords'].shape[1]==0 \
           or 'Still' not in species.Args['Features']:
             continue
         if 'KxShift' in solver.Args:
             if 'Xchunked' in species.Args:
                 solver.Data['BckGrndRho'] = chimera.dep_dens_env_chnk(\
                   species.Data['coords'],species.Data['weights'],\
                   solver.Data['BckGrndRho'],species.chunks,\
                   species.Args['Xchunked'][1],solver.Args['leftX'],\
                   *solver.Args['DepProj'])
             else:
                 solver.Data['BckGrndRho'] = chimera.dep_dens_env(\
                   species.Data['coords'],species.Data['weights'],\
                   solver.Data['BckGrndRho'], solver.Args['leftX'],\
                   *solver.Args['DepProj'])
         else:
             if 'Xchunked' in species.Args:
                 solver.Data['BckGrndRho'] = chimera.dep_dens_chnk(\
                   species.Data['coords'],species.Data['weights'],\
                   solver.Data['BckGrndRho'],species.chunks,\
                   species.Args['Xchunked'][1],solver.Args['leftX'],\
                   *solver.Args['DepProj'])
             else:
                 solver.Data['BckGrndRho'] = chimera.dep_dens(\
                   species.Data['coords'],species.Data['weights'],\
                   solver.Data['BckGrndRho'],solver.Args['leftX'],\
                   *solver.Args['DepProj'])
Beispiel #3
0
 def get_dens_on_grid(self, Nko=0):
     VGrid = 2 * np.pi * self.Args['dx'] * self.Args['dr'] * self.Args[
         'Rgrid']
     VGrid = (VGrid +
              (self.Args['Rgrid'] == 0))**-1 * (self.Args['Rgrid'] > 0.0)
     dens = np.zeros((self.Args['Nx'], self.Args['Nr'], Nko + 1),
                     dtype='complex',
                     order='F')
     dens = chimera.dep_dens(self.Data['coords'],self.Data['weights'],dens,self.Args['leftX'],self.Args['Rgrid'],\
       1./self.Args['dx'],1/self.Args['dr'])*VGrid[None,:,None]
     return dens
    def dep_dens(self, solver, component='coords'):
        solver.Data['Rho'][:] = 0.0

        if 'StaticKick' in solver.Args['Features']:
            component = 'coords_halfstep'

        if 'StillAsBackground' in solver.Args['Features']:
            solver.Data['Rho'] += solver.Data['BckGrndRho']

        for species in self.Particles:
            if species.Data[component].shape[1] == 0 \
              or 'Still' in species.Args['Features']:
                continue
            if 'KxShift' in solver.Args:
                if 'Xchunked' in species.Args:
                    solver.Data['Rho'] = chimera.dep_dens_env_chnk(\
                      species.Data[component],species.Data['weights'],\
                      solver.Data['Rho'],species.chunks,\
                      species.Args['Xchunked'][1],solver.Args['leftX'],\
                      *solver.Args['DepProj'])
                else:
                    solver.Data['Rho'] = chimera.dep_dens_env(\
                      species.Data[component],species.Data['weights'],\
                      solver.Data['Rho'],solver.Args['leftX'],\
                      *solver.Args['DepProj'])
            else:
                if 'Xchunked' in species.Args:
                    solver.Data['Rho'] = chimera.dep_dens_chnk(\
                      species.Data[component],species.Data['weights'],\
                      solver.Data['Rho'],species.chunks,\
                      species.Args['Xchunked'][1],solver.Args['leftX'],\
                      *solver.Args['DepProj'])
                else:
                    solver.Data['Rho'] = chimera.dep_dens(\
                      species.Data[component],species.Data['weights'],\
                      solver.Data['Rho'],solver.Args['leftX'],\
                      *solver.Args['DepProj'])