OPALX (Object Oriented Parallel Accelerator Library for Exascal) MINIorX
OPALX
BorisPusher Class Reference

#include <BorisPusher.h>

Collaboration diagram for BorisPusher:

Public Member Functions

KOKKOS_INLINE_FUNCTION BorisPusher (const PartData &ref)
KOKKOS_INLINE_FUNCTION BorisPusher ()
KOKKOS_INLINE_FUNCTION void initialise (const PartData *ref)
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 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 double &mass, const double &charge) const
KOKKOS_INLINE_FUNCTION void push (Vector_t< double, 3 > &R, const Vector_t< double, 3 > &P, const double &dt) const

Private Attributes

const PartDataitsReference

Detailed Description

Definition at line 34 of file BorisPusher.h.

Constructor & Destructor Documentation

◆ BorisPusher() [1/2]

KOKKOS_INLINE_FUNCTION BorisPusher::BorisPusher ( const PartData & ref)

Definition at line 57 of file BorisPusher.h.

References itsReference.

◆ BorisPusher() [2/2]

KOKKOS_INLINE_FUNCTION BorisPusher::BorisPusher ( )

Definition at line 60 of file BorisPusher.h.

References itsReference.

Member Function Documentation

◆ initialise()

KOKKOS_INLINE_FUNCTION void BorisPusher::initialise ( const PartData * ref)

Definition at line 63 of file BorisPusher.h.

References itsReference.

◆ kick() [1/2]

KOKKOS_INLINE_FUNCTION void BorisPusher::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

Definition at line 67 of file BorisPusher.h.

References itsReference, and kick().

Referenced by kick(), RFCavity::trackOnAxisParticle(), and ParallelTracker::updateReferenceParticle().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ kick() [2/2]

KOKKOS_INLINE_FUNCTION void BorisPusher::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 double & mass,
const double & charge ) const

Definition at line 73 of file BorisPusher.h.

References Physics::c, cross(), and dot().

Here is the call graph for this function:

◆ push()

KOKKOS_INLINE_FUNCTION void BorisPusher::push ( Vector_t< double, 3 > & R,
const Vector_t< double, 3 > & P,
const double & dt ) const

\[ \vec{x}_{n+1/2} = \vec{x}_{n} + \frac{1}{2}\vec{v}_{n-1/2}\quad (= \vec{x}_{n} + \frac{\Delta t}{2} \frac{\vec{\beta}_{n-1/2}\gamma_{n-1/2}}{\gamma_{n-1/2}}) \]

R[i] += 0.5 * P[i] * recpgamma;

Definition at line 129 of file BorisPusher.h.

References dot().

Referenced by ParallelTracker::applyFractionalStep(), ParallelTracker::autophaseCavities(), RFCavity::trackOnAxisParticle(), and ParallelTracker::updateReferenceParticle().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ itsReference

const PartData* BorisPusher::itsReference
private

Definition at line 54 of file BorisPusher.h.

Referenced by BorisPusher(), BorisPusher(), initialise(), and kick().


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