9 #ifndef WARPX_PARTICLES_COLLISION_SCATTERING_PROCESS_H_
10 #define WARPX_PARTICLES_COLLISION_SCATTERING_PROCESS_H_
30 const std::string& scattering_process,
31 const std::string& cross_section_file,
32 amrex::ParticleReal energy
35 template <
typename InputVector>
37 const std::string& scattering_process,
38 const InputVector&& energies,
39 const InputVector&& sigmas,
40 amrex::ParticleReal energy
60 const std::string& cross_section_file,
68 amrex::ParticleReal dE
88 using amrex::Math::floor;
89 using amrex::Math::ceil;
92 const int idx_1 =
static_cast<int>(floor(temp));
93 const int idx_2 =
static_cast<int>(ceil(temp));
133 void init (
const std::string& scattering_process, amrex::ParticleReal energy);
#define AMREX_FORCE_INLINE
#define AMREX_GPU_HOST_DEVICE
ScatteringProcessType
Definition: ScatteringProcess.H:17
Definition: ScatteringProcess.H:27
static void readCrossSectionFile(const std::string &cross_section_file, amrex::Vector< amrex::ParticleReal > &energies, amrex::Gpu::HostVector< amrex::ParticleReal > &sigmas)
Definition: ScatteringProcess.cpp:96
amrex::ParticleReal getEnergyInputStep() const
Definition: ScatteringProcess.H:124
~ScatteringProcess()=default
ScatteringProcess & operator=(ScatteringProcess const &)=delete
ScatteringProcess(ScatteringProcess &&)=default
int m_grid_size
Definition: ScatteringProcess.H:144
static ScatteringProcessType parseProcessType(const std::string &process)
Definition: ScatteringProcess.cpp:78
static void sanityCheckEnergyGrid(const amrex::Vector< amrex::ParticleReal > &energies, amrex::ParticleReal dE)
Definition: ScatteringProcess.cpp:114
Executor const & executor() const
Definition: ScatteringProcess.H:108
ScatteringProcess(const std::string &scattering_process, const std::string &cross_section_file, amrex::ParticleReal energy)
Definition: ScatteringProcess.cpp:14
ScatteringProcessType type() const
Definition: ScatteringProcess.H:126
amrex::ParticleReal getMinEnergyInput() const
Definition: ScatteringProcess.H:122
amrex::Gpu::HostVector< amrex::ParticleReal > m_sigmas_h
Definition: ScatteringProcess.H:141
ScatteringProcess(ScatteringProcess const &)=delete
amrex::ParticleReal getEnergyPenalty() const
Definition: ScatteringProcess.H:121
amrex::ParticleReal getMaxEnergyInput() const
Definition: ScatteringProcess.H:123
amrex::ParticleReal getCrossSection(amrex::ParticleReal E_coll) const
Definition: ScatteringProcess.H:116
void init(const std::string &scattering_process, amrex::ParticleReal energy)
Definition: ScatteringProcess.cpp:39
Executor m_exe_h
Definition: ScatteringProcess.H:142
amrex::Vector< amrex::ParticleReal > m_energies
Definition: ScatteringProcess.H:135
Definition: ScatteringProcess.H:71
ScatteringProcessType m_type
Definition: ScatteringProcess.H:104
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::ParticleReal getCrossSection(amrex::ParticleReal E_coll) const
Definition: ScatteringProcess.H:81
amrex::ParticleReal m_energy_penalty
Definition: ScatteringProcess.H:103
amrex::ParticleReal m_sigma_lo
Definition: ScatteringProcess.H:102
amrex::ParticleReal m_energy_lo
Definition: ScatteringProcess.H:102
amrex::ParticleReal m_energy_hi
Definition: ScatteringProcess.H:102
amrex::ParticleReal * m_sigmas_data
Definition: ScatteringProcess.H:101
amrex::ParticleReal m_dE
Definition: ScatteringProcess.H:102
amrex::ParticleReal m_sigma_hi
Definition: ScatteringProcess.H:102