8#ifndef WARPX_PARTICLES_KINETIC_ENERGY_H_
9#define WARPX_PARTICLES_KINETIC_ENERGY_H_
34 template <
typename T = amrex::ParticleReal>
37 const amrex::ParticleReal ux,
const amrex::ParticleReal uy,
const amrex::ParticleReal uz,
const amrex::ParticleReal mass)
39 using namespace amrex;
41 constexpr auto one =
static_cast<T
>(1.0);
47 const auto u2 =
static_cast<T
>(ux*ux + uy*uy + uz*uz);
48 const auto gamma = std::sqrt(one + u2*inv_c2);
49 return one/(one + gamma)*
static_cast<T
>(mass)*u2;
63 const amrex::ParticleReal ux,
const amrex::ParticleReal uy,
const amrex::ParticleReal uz)
69 return me_c * std::sqrt(ux*ux + uy*uy + uz*uz);
#define AMREX_GPU_HOST_DEVICE
Definition KineticEnergy.H:20
AMREX_GPU_HOST_DEVICE AMREX_INLINE amrex::ParticleReal KineticEnergyPhotons(const amrex::ParticleReal ux, const amrex::ParticleReal uy, const amrex::ParticleReal uz)
Computes the kinetic energy of a photon.
Definition KineticEnergy.H:62
AMREX_GPU_HOST_DEVICE AMREX_INLINE T KineticEnergy(const amrex::ParticleReal ux, const amrex::ParticleReal uy, const amrex::ParticleReal uz, const amrex::ParticleReal mass)
Computes the kinetic energy of a particle. This method should not be used with photons.
Definition KineticEnergy.H:36
static constexpr auto c
vacuum speed of light [m/s]
Definition constant.H:44
static constexpr auto m_e
electron mass [kg]
Definition constant.H:54
constexpr T powi(T x) noexcept