Hipace
Functions
ParticleUtil Namespace Reference

Basic helper functions that can be used for both plasma and beam species. More...

Functions

AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void get_position_unit_cell (amrex::Real *r, const amrex::IntVect &nppc, int i_part, const amrex::RandomEngine &engine, const amrex::GpuArray< int, 3 > rand)
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void get_position_unit_cell (amrex::Real *r, const amrex::IntVect &nppc, int i_part)
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void get_position_unit_cell_fine (amrex::Real *r, bool &do_init, int i_part, const amrex::Array< int, 2 > &nppc_coarse, const amrex::Array< int, 2 > &nppc_fine, const int n_fine_transition_cells, const int i_fine_transition_cells)
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void get_gaussian_random_momentum (amrex::Real *u, const amrex::RealVect u_mean, const amrex::RealVect u_std, const amrex::RandomEngine &engine)
 

Detailed Description

Basic helper functions that can be used for both plasma and beam species.

Function Documentation

◆ get_gaussian_random_momentum()

AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void ParticleUtil::get_gaussian_random_momentum ( amrex::Real *  u,
const amrex::RealVect  u_mean,
const amrex::RealVect  u_std,
const amrex::RandomEngine engine 
)

Return momentum of 1 particle from a Gaussian random draw.

Parameters
[in,out]u3D momentum of 1 particle, modified by this function
[in]u_meanMean value of the random distribution in each dimension
[in]u_stdstandard deviation of the random distribution in each dimension
[in]enginerandom number engine

◆ get_position_unit_cell() [1/2]

AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void ParticleUtil::get_position_unit_cell ( amrex::Real *  r,
const amrex::IntVect nppc,
int  i_part 
)

◆ get_position_unit_cell() [2/2]

AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void ParticleUtil::get_position_unit_cell ( amrex::Real *  r,
const amrex::IntVect nppc,
int  i_part,
const amrex::RandomEngine engine,
const amrex::GpuArray< int, 3 >  rand 
)

During particles initialization, we loop over nppc particles in 1 cell. This function returns the position, in cell size unit, of particle number i_part so that particles are distributed uniformly within the cell.

Parameters
[in,out]rposition of the particle, modified by the function
[in]nppcnumber of particles per cell in each direction
[in]i_partindex of current particle, between 0 and nppc-1
[in]enginerandom engine
[in]randwhether to randomize position in each cell, per dimension

◆ get_position_unit_cell_fine()

AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void ParticleUtil::get_position_unit_cell_fine ( amrex::Real *  r,
bool &  do_init,
int  i_part,
const amrex::Array< int, 2 > &  nppc_coarse,
const amrex::Array< int, 2 > &  nppc_fine,
const int  n_fine_transition_cells,
const int  i_fine_transition_cells 
)