OPALX (Object Oriented Parallel Accelerator Library for Exascal) master (dc2a29eed580)
OPALX
Loading...
Searching...
No Matches
SpinTBMTPusher Class Reference

#include <SpinTBMTPusher.h>

Collaboration diagram for SpinTBMTPusher:
Collaboration graph

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
 

Detailed Description

Definition at line 28 of file SpinTBMTPusher.h.

Constructor & Destructor Documentation

◆ SpinTBMTPusher()

KOKKOS_INLINE_FUNCTION SpinTBMTPusher::SpinTBMTPusher ( )
default

Member Function Documentation

◆ evolve()

template<typename SpinVec >
KOKKOS_INLINE_FUNCTION void SpinTBMTPusher::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
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().

Here is the call graph for this function:

Member Data Documentation

◆ maxAngle_m

constexpr double SpinTBMTPusher::maxAngle_m = 0.1
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().


The documentation for this class was generated from the following file: