Hamiltonian splitting Boris
GEMPIC.HamiltonianSplittingBoris — Type
HamiltonianSplittingBoris( 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)
middescribing the magnetic field at time $t_{n+1/2}$ (used for push)j_dofsfor 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! — Method
push_v_bpart!(splitting, dt)Pusher for vxB part
GEMPIC.push_v_epart! — Method
push_v_epart(splitting, dt)Pusher for $E \nabla_v$ part
\[V_{new} = V_{old} + dt ⋅ E\]
GEMPIC.push_x_accumulate_j! — Method
push_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$
GEMPIC.staggering! — Method
staggering(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! — Method
strang_splitting(splitting, dt, number_steps)Second order Boris pusher using staggered grid
splitting: time splitting objectdt: time stepnumber_steps: number of time steps