Hamiltonian splitting Boris
GEMPIC.HamiltonianSplittingBoris
— TypeHamiltonianSplittingBoris( maxwell_solver,
kernel_smoother_0, kernel_smoother_1,
particle_group,
e_dofs_1, e_dofs_2, b_dofs)
Boris pusher in GEMPIC framework (spline finite elements)
mid
describing the magnetic field at time $t_{n+1/2}$ (used for push)j_dofs
for kernel representation of current density.maxwell_solver
: Maxwell solverkernel_smoother_0
: Kernel smootherkernel_smoother_1
: Kernel smootherparticle_group
: Particle groupefield_dofs
: array for the coefficients of the efieldsbfield_dofs
: array for the coefficients of the bfieldx_min
: Lower bound of x domainLx
: Length of the domain in x direction.
GEMPIC.push_v_bpart!
— Methodpush_v_bpart!(splitting, dt)
Pusher for vxB part
GEMPIC.push_v_epart!
— Methodpush_v_epart(splitting, dt)
Pusher for $E \nabla_v$ part
\[V_{new} = V_{old} + dt ⋅ E\]
GEMPIC.push_x_accumulate_j!
— Methodpush_x_accumulate_j!(splitting, dt)
Pusher for x and accumulate current densities
For each particle compute the index of the first DoF on the grid it contributes to and its position (normalized to cell size one).
Then update particle position: $X_{new} = X_{old} + dt ⋅ V$
j_dofs
does not hold the values for j itself but for the integrated j.
GEMPIC.staggering!
— Methodstaggering(splitting, dt)
Propagate $E_0$ to $E_{1/2}$ and $x_0$ to $x_{1/2}$ to initialize the staggering
splitting
: time splitting objectdt
: time step
GEMPIC.strang_splitting!
— Methodstrang_splitting(splitting, dt, number_steps)
Second order Boris pusher using staggered grid
splitting
: time splitting objectdt
: time stepnumber_steps
: number of time steps