Report Typos and Errors    
Semi-Lagrangian Library
Modular library for kinetic and gyrokinetic simulations of plasmas in fusion energy devices.
Derived types and interfaces | Functions/Subroutines
sll_m_time_propagator_pic_vm_1d2v_boris Module Reference

Description

Boris pusher in GEMPIC framework (spline finite elements)

Author
Katharina Kormann, IPP

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...
 

Function/Subroutine Documentation

◆ delete_pic_vm_1d2v_boris()

subroutine sll_m_time_propagator_pic_vm_1d2v_boris::delete_pic_vm_1d2v_boris ( class(sll_t_time_propagator_pic_vm_1d2v_boris), intent(inout)  self)
private

Destructor.

Parameters
[in,out]selftime splitting object

Definition at line 316 of file sll_m_time_propagator_pic_vm_1d2v_boris.F90.

◆ initialize_pic_vm_1d2v_boris()

subroutine sll_m_time_propagator_pic_vm_1d2v_boris::initialize_pic_vm_1d2v_boris ( class(sll_t_time_propagator_pic_vm_1d2v_boris), intent(out)  self,
class(sll_c_maxwell_1d_base), intent(in), target  maxwell_solver,
class(sll_c_particle_mesh_coupling_1d), intent(in), target  kernel_smoother_0,
class(sll_c_particle_mesh_coupling_1d), intent(in), target  kernel_smoother_1,
class(sll_t_particle_array), intent(in), target  particle_group,
real(kind=f64), dimension(:,:), intent(in), target  efield_dofs,
real(kind=f64), dimension(:), intent(in), target  bfield_dofs,
real(kind=f64), intent(in)  x_min,
real(kind=f64), intent(in)  Lx 
)
private

Constructor.

Parameters
[out]selftime splitting object
[in]maxwell_solverMaxwell solver
[in]kernel_smoother_0Kernel smoother
[in]kernel_smoother_1Kernel smoother
[in]particle_groupParticle group
[in]efield_dofsarray for the coefficients of the efields
[in]bfield_dofsarray for the coefficients of the bfield
[in]x_minLower bound of x domain
[in]lxLength of the domain in x direction.

Definition at line 261 of file sll_m_time_propagator_pic_vm_1d2v_boris.F90.

◆ lie_boris()

subroutine sll_m_time_propagator_pic_vm_1d2v_boris::lie_boris ( class(sll_t_time_propagator_pic_vm_1d2v_boris), intent(inout)  self,
real(kind=f64), intent(in)  dt,
integer(kind=i32), intent(in)  number_steps 
)
private

Initialize the staggering.

Lie splitting for Boris not implemented

Parameters
[in,out]selftime splitting object
[in]dttime step
[in]number_stepsnumber of time steps

Definition at line 77 of file sll_m_time_propagator_pic_vm_1d2v_boris.F90.

◆ operator_boris()

subroutine sll_m_time_propagator_pic_vm_1d2v_boris::operator_boris ( class(sll_t_time_propagator_pic_vm_1d2v_boris), intent(inout)  self,
real(kind=f64), intent(in)  dt,
integer(kind=i32), intent(in)  number_steps 
)
private

Second order Boris pusher using staggered grid.

Parameters
[in,out]selftime splitting object
[in]dttime step
[in]number_stepsnumber of time steps

Definition at line 88 of file sll_m_time_propagator_pic_vm_1d2v_boris.F90.

Here is the call graph for this function:

◆ push_v_bpart()

subroutine sll_m_time_propagator_pic_vm_1d2v_boris::push_v_bpart ( class(sll_t_time_propagator_pic_vm_1d2v_boris), intent(inout)  self,
real(kind=f64), intent(in)  dt 
)
private

Pusher for vxB part.

Parameters
[in,out]selftime splitting object
[in]dttime step

Definition at line 159 of file sll_m_time_propagator_pic_vm_1d2v_boris.F90.

Here is the caller graph for this function:

◆ push_v_epart()

subroutine sll_m_time_propagator_pic_vm_1d2v_boris::push_v_epart ( class(sll_t_time_propagator_pic_vm_1d2v_boris), intent(inout)  self,
real(kind=f64), intent(in)  dt 
)
private

Pusher for E \nabla_v part.

Parameters
[in,out]selftime splitting object
[in]dttime step

Definition at line 128 of file sll_m_time_propagator_pic_vm_1d2v_boris.F90.

Here is the caller graph for this function:

◆ push_x_accumulate_j()

subroutine sll_m_time_propagator_pic_vm_1d2v_boris::push_x_accumulate_j ( class(sll_t_time_propagator_pic_vm_1d2v_boris), intent(inout)  self,
real(kind=f64), intent(in)  dt 
)
private

Pusher for x and accumulate current densities.

Parameters
[in,out]selftime splitting object
[in]dttime step

Definition at line 195 of file sll_m_time_propagator_pic_vm_1d2v_boris.F90.

Here is the caller graph for this function:

◆ staggering_pic_vm_1d2v_boris()

subroutine sll_m_time_propagator_pic_vm_1d2v_boris::staggering_pic_vm_1d2v_boris ( class(sll_t_time_propagator_pic_vm_1d2v_boris), intent(inout)  self,
real(kind=f64), intent(in)  dt 
)
private

Propagate E_0 to E_{1/2} and x_0 to x_{1/2} to initialize the staggering.

Parameters
[in,out]selftime splitting object
[in]dttime step

Definition at line 335 of file sll_m_time_propagator_pic_vm_1d2v_boris.F90.

Here is the call graph for this function:
    Report Typos and Errors