WarpX
Loading...
Searching...
No Matches
PulsedDecay Class Referencefinal

This class performs the decay of species 1 into species A and B via a user-specified rate. dnA/dt = +nu(t)*n1(t)= dnB/dt dn1/dt = -nu(t)*n1(t) ==> nA(t+dt) - nA(t) = n1(t)*(1 - exp(-nu(t)*t)) For example, this can represent ionization of species 1 from a laser pulse. The user-specified decay rate nu is a function of space and time. The velocity of the product particles is set to a random parent species particle plus a direction-dependent thermal part obtained from a user-specified normal distribution. More...

#include <PulsedDecay.H>

Inheritance diagram for PulsedDecay:
CollisionBase

Public Member Functions

 PulsedDecay (std::string const &collision_name, MultiParticleContainer const *mypc)
 
 ~PulsedDecay () override=default
 
 PulsedDecay (PulsedDecay const &)=delete
 
PulsedDecayoperator= (PulsedDecay const &)=delete
 
 PulsedDecay (PulsedDecay &&)=delete
 
PulsedDecayoperator= (PulsedDecay &&)=delete
 
void doCollisions (amrex::Real cur_time, amrex::Real dt, MultiParticleContainer *mypc) override
 
- Public Member Functions inherited from CollisionBase
 CollisionBase (const std::string &collision_name)
 
 CollisionBase (CollisionBase const &)=delete
 
 CollisionBase (CollisionBase &&)=delete
 
CollisionBaseoperator= (CollisionBase const &)=delete
 
CollisionBaseoperator= (CollisionBase const &&)=delete
 
virtual ~CollisionBase ()=default
 
void BackwardCompatibility ()
 
int get_ndt () const
 
CollisionSteppingMode get_collision_stepping_mode () const
 
bool use_global_debye_length () const
 

Private Attributes

amrex::Vector< std::string > m_product_species
 
amrex::ParticleReal m_fixed_product_weight
 
amrex::GpuArray< amrex::ParticleReal, 3 > m_productA_thermal_speed
 
amrex::GpuArray< amrex::ParticleReal, 3 > m_productB_thermal_speed
 
amrex::Parser m_decay_rate_parser
 
amrex::ParserExecutor< 4 > m_decay_rate_func
 

Additional Inherited Members

- Protected Attributes inherited from CollisionBase
std::string m_collision_name
 
amrex::Vector< std::string > m_species_names
 
int m_ndt = 1
 
CollisionSteppingMode m_collision_stepping_mode = CollisionSteppingMode::Supercycle
 
bool m_use_global_debye_length = false
 

Detailed Description

This class performs the decay of species 1 into species A and B via a user-specified rate. dnA/dt = +nu(t)*n1(t)= dnB/dt dn1/dt = -nu(t)*n1(t) ==> nA(t+dt) - nA(t) = n1(t)*(1 - exp(-nu(t)*t)) For example, this can represent ionization of species 1 from a laser pulse. The user-specified decay rate nu is a function of space and time. The velocity of the product particles is set to a random parent species particle plus a direction-dependent thermal part obtained from a user-specified normal distribution.

Constructor & Destructor Documentation

◆ PulsedDecay() [1/3]

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

◆ ~PulsedDecay()

PulsedDecay::~PulsedDecay ( )
overridedefault

◆ PulsedDecay() [2/3]

PulsedDecay::PulsedDecay ( PulsedDecay const & )
delete

◆ PulsedDecay() [3/3]

PulsedDecay::PulsedDecay ( PulsedDecay && )
delete

Member Function Documentation

◆ doCollisions()

void PulsedDecay::doCollisions ( amrex::Real cur_time,
amrex::Real dt,
MultiParticleContainer * mypc )
overridevirtual

Perform the collisions

Parameters
cur_timeCurrent time
dtTime step size
mypcContainer of species involved

Reimplemented from CollisionBase.

◆ operator=() [1/2]

PulsedDecay & PulsedDecay::operator= ( PulsedDecay && )
delete

◆ operator=() [2/2]

PulsedDecay & PulsedDecay::operator= ( PulsedDecay const & )
delete

Member Data Documentation

◆ m_decay_rate_func

amrex::ParserExecutor<4> PulsedDecay::m_decay_rate_func
private

◆ m_decay_rate_parser

amrex::Parser PulsedDecay::m_decay_rate_parser
private

◆ m_fixed_product_weight

amrex::ParticleReal PulsedDecay::m_fixed_product_weight
private

◆ m_product_species

amrex::Vector<std::string> PulsedDecay::m_product_species
private

◆ m_productA_thermal_speed

amrex::GpuArray<amrex::ParticleReal,3> PulsedDecay::m_productA_thermal_speed
private

◆ m_productB_thermal_speed

amrex::GpuArray<amrex::ParticleReal,3> PulsedDecay::m_productB_thermal_speed
private

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