1 #ifndef CLASSIC_PartPusher_H
2 #define CLASSIC_PartPusher_H
22 const double &dt)
const;
26 const double &dt,
const double &mass,
27 const double &charge)
const;
50 const double &dt)
const
58 const double &dt,
const double &mass,
59 const double &charge)
const
90 P += 0.5 * dt * charge *
c / mass * Ef;
101 double const gamma =
sqrt(1.0 +
dot(P, P));
102 Vector_t const t = 0.5 * dt * charge *
c *
c / (gamma * mass) * Bf;
112 P += 0.5 * dt * charge *
c / mass * Ef;
123 R += 0.5 * P /
sqrt(1.0 +
dot(P, P));
const PartData * itsReference
double dot(const Vector3D &lhs, const Vector3D &rhs)
Vector dot product.
double getQ() const
The constant charge per particle.
constexpr double c
The velocity of light in m/s.
Vector3D cross(const Vector3D &lhs, const Vector3D &rhs)
Vector cross product.
void kick(const Vector_t &R, Vector_t &P, const Vector_t &Ef, const Vector_t &Bf, const double &dt) const
Tps< T > sqrt(const Tps< T > &x)
Square root.
double getM() const
The constant mass per particle.
void push(Vector_t &R, const Vector_t &P, const double &dt) const
void initialise(const PartData *ref)