|
OPALX (Object Oriented Parallel Accelerator Library for Exascal) master (dc2a29eed580)
OPALX
|
#include <SpinTBMTPusher.h>

Public Member Functions | |
| KOKKOS_INLINE_FUNCTION | SpinTBMTPusher ()=default |
| template<typename SpinVec > | |
| KOKKOS_INLINE_FUNCTION void | evolve (SpinVec &Pol, const Vector_t< double, 3 > &P, const Vector_t< double, 3 > &Ef, const Vector_t< double, 3 > &Bf, const double &dt, const double &mass, const double &charge, const double &anom) const |
Static Public Attributes | |
| static constexpr double | maxAngle_m = 0.1 |
Definition at line 28 of file SpinTBMTPusher.h.
|
default |
|
inline |
Per-particle Thomas-BMT update.
Inputs (all lab-frame, in OPALX conventions): P : momentum in beta*gamma (dimensionless) Ef, Bf : electric and magnetic field at the particle position [V/m, T] dt : timestep [s] mass : rest energy [eV] (m * c^2) charge : particle charge [C] anom : magnetic moment anomaly G = (g - 2) / 2 [dimensionless] In/out: Pol : polarization 3-vector (rest-frame Pauli expectations along lab axes, |Pol| in [0, 1]). Updated in place.
Definition at line 49 of file SpinTBMTPusher.h.
References Physics::c, cross(), dot(), and maxAngle_m.
Referenced by ParallelTracker::evolveSpinTBMT(), TEST_F(), TEST_F(), TEST_F(), and TEST_F().

|
staticconstexpr |
Sub-step threshold: maximum rotation angle (rad) per Rodrigues call. Above this we split dt into uniform sub-steps to keep the rotation accurate.
Definition at line 34 of file SpinTBMTPusher.h.
Referenced by evolve().