18#ifndef CLASSIC_PartPusher_H
19#define CLASSIC_PartPusher_H
25#include "Expression/IpplExpressions.h"
42 KOKKOS_INLINE_FUNCTION
void kick(
46 KOKKOS_INLINE_FUNCTION
void kick(
49 const double& charge)
const;
76 const double& charge)
const {
104 P += 0.5 * dt * charge *
Physics::c / mass * Ef;
115 double gamma = Kokkos::sqrt(1.0 +
dot(P, P));
126 P += 0.5 * dt * charge *
Physics::c / mass * Ef;
138 R += 0.5 * P / Kokkos::sqrt(1.0 +
dot(P));
Vector3D cross(const Vector3D &lhs, const Vector3D &rhs)
Vector cross product.
double dot(const Vector3D &lhs, const Vector3D &rhs)
Vector dot product.
ippl::Vector< T, Dim > Vector_t
constexpr double c
The velocity of light in m/s.
KOKKOS_INLINE_FUNCTION BorisPusher()
const PartData * itsReference
KOKKOS_INLINE_FUNCTION void kick(const Vector_t< double, 3 > &R, Vector_t< double, 3 > &P, const Vector_t< double, 3 > &Ef, const Vector_t< double, 3 > &Bf, const double &dt) const
KOKKOS_INLINE_FUNCTION void initialise(const PartData *ref)
KOKKOS_INLINE_FUNCTION BorisPusher(const PartData &ref)
KOKKOS_INLINE_FUNCTION void push(Vector_t< double, 3 > &R, const Vector_t< double, 3 > &P, const double &dt) const