WarpX
Public Member Functions | Private Types | Private Attributes | List of all members
SplitAndScatterFunc Class Reference

This class defines an operator to create product particles from DSMC collisions and sets the particle properties (position, momentum, weight). More...

#include <SplitAndScatterFunc.H>

Public Member Functions

 SplitAndScatterFunc ()=default
 Default constructor of the SplitAndScatterFunc class. More...
 
 SplitAndScatterFunc (const std::string &collision_name, MultiParticleContainer const *mypc)
 Constructor of the SplitAndScatterFunc class. More...
 
AMREX_INLINE amrex::Vector< intoperator() (const index_type &n_total_pairs, const SoaData_type &, const SoaData_type &, const amrex::Vector< WarpXParticleContainer * > &pc_products, ParticleTileType **AMREX_RESTRICT tile_products, const amrex::ParticleReal m1, const amrex::ParticleReal m2, const amrex::Vector< amrex::ParticleReal > &, const index_type *AMREX_RESTRICT mask, const amrex::Vector< index_type > &products_np, const SmartCopy *AMREX_RESTRICT copy_species1, const SmartCopy *AMREX_RESTRICT copy_species2, const index_type *AMREX_RESTRICT p_pair_indices_1, const index_type *AMREX_RESTRICT p_pair_indices_2, const amrex::ParticleReal *AMREX_RESTRICT p_pair_reaction_weight) const
 Function that performs the particle scattering and injection due to binary collisions. More...
 

Private Types

using ParticleType = typename WarpXParticleContainer::ParticleType
 
using ParticleTileType = typename WarpXParticleContainer::ParticleTileType
 
using ParticleTileDataType = typename ParticleTileType::ParticleTileDataType
 
using ParticleBins = amrex::DenseBins< ParticleTileDataType >
 
using index_type = typename ParticleBins::index_type
 
using SoaData_type = typename WarpXParticleContainer::ParticleTileType::ParticleTileDataType
 

Private Attributes

int m_num_product_species
 
amrex::Gpu::DeviceVector< intm_num_products_device
 
amrex::Gpu::HostVector< intm_num_products_host
 
CollisionType m_collision_type
 

Detailed Description

This class defines an operator to create product particles from DSMC collisions and sets the particle properties (position, momentum, weight).

Member Typedef Documentation

◆ index_type

◆ ParticleBins

◆ ParticleTileDataType

using SplitAndScatterFunc::ParticleTileDataType = typename ParticleTileType::ParticleTileDataType
private

◆ ParticleTileType

◆ ParticleType

◆ SoaData_type

Constructor & Destructor Documentation

◆ SplitAndScatterFunc() [1/2]

SplitAndScatterFunc::SplitAndScatterFunc ( )
default

Default constructor of the SplitAndScatterFunc class.

◆ SplitAndScatterFunc() [2/2]

SplitAndScatterFunc::SplitAndScatterFunc ( const std::string &  collision_name,
MultiParticleContainer const *  mypc 
)

Constructor of the SplitAndScatterFunc class.

Parameters
[in]collision_namethe name of the collision
[in]mypcpointer to the MultiParticleContainer

Member Function Documentation

◆ operator()()

AMREX_INLINE amrex::Vector<int> SplitAndScatterFunc::operator() ( const index_type n_total_pairs,
const SoaData_type ,
const SoaData_type ,
const amrex::Vector< WarpXParticleContainer * > &  pc_products,
ParticleTileType **AMREX_RESTRICT  tile_products,
const amrex::ParticleReal  m1,
const amrex::ParticleReal  m2,
const amrex::Vector< amrex::ParticleReal > &  ,
const index_type *AMREX_RESTRICT  mask,
const amrex::Vector< index_type > &  products_np,
const SmartCopy *AMREX_RESTRICT  copy_species1,
const SmartCopy *AMREX_RESTRICT  copy_species2,
const index_type *AMREX_RESTRICT  p_pair_indices_1,
const index_type *AMREX_RESTRICT  p_pair_indices_2,
const amrex::ParticleReal *AMREX_RESTRICT  p_pair_reaction_weight 
) const
inline

Function that performs the particle scattering and injection due to binary collisions.

Returns
num_added the number of particles added to each species.

Member Data Documentation

◆ m_collision_type

CollisionType SplitAndScatterFunc::m_collision_type
private

◆ m_num_product_species

int SplitAndScatterFunc::m_num_product_species
private

◆ m_num_products_device

amrex::Gpu::DeviceVector<int> SplitAndScatterFunc::m_num_products_device
private

◆ m_num_products_host

amrex::Gpu::HostVector<int> SplitAndScatterFunc::m_num_products_host
private

The documentation for this class was generated from the following files: