WarpX
Public Member Functions | Private Types | Private Attributes | List of all members
DSMC Class Referencefinal

This class performs DSMC (direct simulation Monte Carlo) collisions within a cell. Particles are paired up and for each pair a stochastic process determines whether a collision occurs. The algorithm is similar to the one used for binary Coulomb collisions and the nuclear fusion module. More...

#include <DSMC.H>

Inheritance diagram for DSMC:
CollisionBase

Public Member Functions

 DSMC (std::string collision_name)
 Constructor of the DSMC class. More...
 
void doCollisions (amrex::Real, amrex::Real dt, MultiParticleContainer *mypc) override
 
void doCollisionsWithinTile (amrex::Real dt, int lev, amrex::MFIter const &mfi, WarpXParticleContainer &species_1, WarpXParticleContainer &species_2, SmartCopy &copy_species1, SmartCopy &copy_species2)
 
- Public Member Functions inherited from CollisionBase
 CollisionBase (std::string collision_name)
 
 CollisionBase (CollisionBase const &)=delete
 
 CollisionBase (CollisionBase &&)=delete
 
CollisionBaseoperator= (CollisionBase const &)=delete
 
CollisionBaseoperator= (CollisionBase const &&)=delete
 
virtual ~CollisionBase ()=default
 
int get_ndt ()
 

Private Types

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

Private Attributes

amrex::Vector< ScatteringProcessm_scattering_processes
 
amrex::Gpu::DeviceVector< ScatteringProcess::Executorm_scattering_processes_exe
 

Additional Inherited Members

- Protected Attributes inherited from CollisionBase
amrex::Vector< std::string > m_species_names
 
int m_ndt
 

Detailed Description

This class performs DSMC (direct simulation Monte Carlo) collisions within a cell. Particles are paired up and for each pair a stochastic process determines whether a collision occurs. The algorithm is similar to the one used for binary Coulomb collisions and the nuclear fusion module.

Member Typedef Documentation

◆ index_type

◆ ParticleBins

◆ ParticleTileType

◆ ParticleType

◆ SoaData_type

Constructor & Destructor Documentation

◆ DSMC()

DSMC::DSMC ( std::string  collision_name)

Constructor of the DSMC class.

Parameters
[in]collision_namethe name of the collision

Member Function Documentation

◆ doCollisions()

void DSMC::doCollisions ( amrex::Real  ,
amrex::Real  dt,
MultiParticleContainer mypc 
)
overridevirtual

Perform the collisions

Parameters
cur_timeCurrent time
dtTime step size
mypcContainer of species involved

Reimplemented from CollisionBase.

◆ doCollisionsWithinTile()

void DSMC::doCollisionsWithinTile ( amrex::Real  dt,
int  lev,
amrex::MFIter const &  mfi,
WarpXParticleContainer species_1,
WarpXParticleContainer species_2,
SmartCopy copy_species1,
SmartCopy copy_species2 
)

Perform all binary collisions within a tile

Parameters
[in]levthe mesh-refinement level
[in]mfiiterator for multifab
species_1first species container
species_2second species container
copy_species1SmartCopy for species_1
copy_species2SmartCopy for species_2

Member Data Documentation

◆ m_scattering_processes

amrex::Vector<ScatteringProcess> DSMC::m_scattering_processes
private

◆ m_scattering_processes_exe

amrex::Gpu::DeviceVector<ScatteringProcess::Executor> DSMC::m_scattering_processes_exe
private

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