Semi-Lagrangian Library
Modular library for kinetic and gyrokinetic simulations of plasmas in fusion energy devices.
|
Boris pusher in GEMPIC framework (spline finite elements)
MPI parallelization by domain cloning. Periodic boundaries. Spline DoFs numerated by the point the spline starts. Reference: Kraus, Kormann, Sonnendrücker, Morrison: GEMPIC: Geometric ElectroMagnetic Particle-In-Cell Methods
Derived types and interfaces | |
type | sll_t_time_propagator_pic_vm_1d2v_boris |
Solves 1d2v Vlasov-Maxwell with PIC and spline finite elements with Boris pusher. More... | |
Functions/Subroutines | |
subroutine | lie_boris (self, dt, number_steps) |
Initialize the staggering. More... | |
subroutine | operator_boris (self, dt, number_steps) |
Second order Boris pusher using staggered grid. More... | |
subroutine | push_v_epart (self, dt) |
Pusher for E \nabla_v part. More... | |
subroutine | push_v_bpart (self, dt) |
Pusher for vxB part. More... | |
subroutine | push_x_accumulate_j (self, dt) |
Pusher for x and accumulate current densities. More... | |
subroutine | initialize_pic_vm_1d2v_boris (self, maxwell_solver, kernel_smoother_0, kernel_smoother_1, particle_group, efield_dofs, bfield_dofs, x_min, Lx) |
Constructor. More... | |
subroutine | delete_pic_vm_1d2v_boris (self) |
Destructor. More... | |
subroutine | staggering_pic_vm_1d2v_boris (self, dt) |
Propagate E_0 to E_{1/2} and x_0 to x_{1/2} to initialize the staggering. More... | |
|
private |
Destructor.
[in,out] | self | time splitting object |
Definition at line 316 of file sll_m_time_propagator_pic_vm_1d2v_boris.F90.
|
private |
Constructor.
[out] | self | time splitting object |
[in] | maxwell_solver | Maxwell solver |
[in] | kernel_smoother_0 | Kernel smoother |
[in] | kernel_smoother_1 | Kernel smoother |
[in] | particle_group | Particle group |
[in] | efield_dofs | array for the coefficients of the efields |
[in] | bfield_dofs | array for the coefficients of the bfield |
[in] | x_min | Lower bound of x domain |
[in] | lx | Length of the domain in x direction. |
Definition at line 261 of file sll_m_time_propagator_pic_vm_1d2v_boris.F90.
|
private |
Initialize the staggering.
Lie splitting for Boris not implemented
[in,out] | self | time splitting object |
[in] | dt | time step |
[in] | number_steps | number of time steps |
Definition at line 77 of file sll_m_time_propagator_pic_vm_1d2v_boris.F90.
|
private |
Second order Boris pusher using staggered grid.
[in,out] | self | time splitting object |
[in] | dt | time step |
[in] | number_steps | number of time steps |
Definition at line 88 of file sll_m_time_propagator_pic_vm_1d2v_boris.F90.
|
private |
Pusher for vxB part.
[in,out] | self | time splitting object |
[in] | dt | time step |
Definition at line 159 of file sll_m_time_propagator_pic_vm_1d2v_boris.F90.
|
private |
Pusher for E \nabla_v part.
[in,out] | self | time splitting object |
[in] | dt | time step |
Definition at line 128 of file sll_m_time_propagator_pic_vm_1d2v_boris.F90.
|
private |
Pusher for x and accumulate current densities.
[in,out] | self | time splitting object |
[in] | dt | time step |
Definition at line 195 of file sll_m_time_propagator_pic_vm_1d2v_boris.F90.
|
private |
Propagate E_0 to E_{1/2} and x_0 to x_{1/2} to initialize the staggering.
[in,out] | self | time splitting object |
[in] | dt | time step |
Definition at line 335 of file sll_m_time_propagator_pic_vm_1d2v_boris.F90.