|  | Semi-Lagrangian Library
    Modular library for kinetic and gyrokinetic simulations of plasmas in fusion energy devices. | 
Particle pusher based on Hamiltonian splitting for 2d3v Vlasov-Maxwell.
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_2d3v_hs | 
| Hamiltonian splitting type for Vlasov-Maxwell 1d2v.  More... | |
| Functions/Subroutines | |
| subroutine | strang_splitting_pic_vm_2d3v_hs (self, dt, number_steps) | 
| Finalization.  More... | |
| subroutine | lie_splitting_pic_vm_2d3v_hs (self, dt, number_steps) | 
| Lie splitting.  More... | |
| subroutine | lie_splitting_back_pic_vm_2d3v_hs (self, dt, number_steps) | 
| Lie splitting (oposite ordering)  More... | |
| subroutine | operatorhp1_pic_vm_2d3v_hs (self, dt) | 
| Push Hp1: Equations to solve are TODO: UPDATE \partial_t f + v_1 \partial_{x_1} f = 0 -> X_new = X_old + dt V_1 V_new,2 = V_old,2 + \int_0 h V_old,1 B_old \partial_t E_1 = - \int v_1 f(t,x_1, v) dv -> E_{1,new} = E_{1,old} - \int \int v_1 f(t,x_1+s v_1,v) dv ds \partial_t E_2 = 0 -> E_{2,new} = E_{2,old} \partial_t B = 0 => B_new = B_old.  More... | |
| subroutine | operatorhp2_pic_vm_2d3v_hs (self, dt) | 
| Push Hp2: Equations to solve are.  More... | |
| subroutine | operatorhp3_pic_vm_2d3v_hs (self, dt) | 
| Push Hp3: Equations to solve are.  More... | |
| subroutine | operatorhe_pic_vm_2d3v_hs (self, dt) | 
| Push H_E: Equations to be solved \partial_t f + E_1 \partial_{v_1} f + E_2 \partial_{v_2} f = 0 -> V_new = V_old + dt * E \partial_t E_1 = 0 -> E_{1,new} = E_{1,old} \partial_t E_2 = 0 -> E_{2,new} = E_{2,old} \partial_t B + \partial_{x_1} E_2 = 0 => B_new = B_old - dt \partial_{x_1} E_2.  More... | |
| subroutine | operatorhb_pic_vm_2d3v_hs (self, dt) | 
| Push H_B: Equations to be solved V_new = V_old \partial_t E_1 = 0 -> E_{1,new} = E_{1,old} \partial_t E_2 = - \partial_{x_1} B -> E_{2,new} = E_{2,old}-dt*\partial_{x_1} B \partial_t B = 0 -> B_new = B_old.  More... | |
| subroutine | initialize_pic_vm_2d3v_hs (self, maxwell_solver, particle_mesh_coupling, particle_group, efield_dofs, bfield_dofs, x_min, Lx, control_variate, betar) | 
| Constructor.  More... | |
| subroutine | delete_pic_vm_2d3v_hs (self) | 
| Destructor.  More... | |
| subroutine, public | sll_s_new_time_propagator_pic_vm_2d3v_hs (splitting, maxwell_solver, particle_mesh_coupling, particle_group, efield_dofs, bfield_dofs, x_min, Lx, control_variate, betar) | 
| Constructor for allocatable abstract type.  More... | |
| subroutine, public | sll_s_new_time_propagator_pic_vm_2d3v_hs_ptr (splitting, maxwell_solver, particle_mesh_coupling, particle_group, efield_dofs, bfield_dofs, x_min, Lx) | 
| Constructor for pointer abstract type.  More... | |
| 
 | private | 
Destructor.
| [in,out] | self | time propagator object | 
Definition at line 493 of file sll_m_time_propagator_pic_vm_2d3v_hs.F90.
| 
 | private | 
Constructor.
| [out] | self | time propagator object | 
| [in] | maxwell_solver | Maxwell solver | 
| [in] | particle_mesh_coupling | Particle mesh coupling | 
| [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. | 
| [in] | control_variate | Control variate (if delta f) | 
| [in] | betar | reciprocal plasma beta | 
Definition at line 438 of file sll_m_time_propagator_pic_vm_2d3v_hs.F90.
| 
 | private | 
Lie splitting (oposite ordering)
| [in,out] | self | time propagator object | 
| [in] | dt | time step | 
| [in] | number_steps | number of time steps | 
Definition at line 129 of file sll_m_time_propagator_pic_vm_2d3v_hs.F90.
| 
 | private | 
Lie splitting.
| [in,out] | self | time propagator object | 
| [in] | dt | time step | 
| [in] | number_steps | number of time steps | 
Definition at line 110 of file sll_m_time_propagator_pic_vm_2d3v_hs.F90.
| 
 | private | 
Push H_B: Equations to be solved V_new = V_old \partial_t E_1 = 0 -> E_{1,new} = E_{1,old} \partial_t E_2 = - \partial_{x_1} B -> E_{2,new} = E_{2,old}-dt*\partial_{x_1} B \partial_t B = 0 -> B_new = B_old.
| [in,out] | self | time propagator object | 
| [in] | dt | time step | 
Definition at line 425 of file sll_m_time_propagator_pic_vm_2d3v_hs.F90.
| 
 | private | 
Push H_E: Equations to be solved \partial_t f + E_1 \partial_{v_1} f + E_2 \partial_{v_2} f = 0 -> V_new = V_old + dt * E \partial_t E_1 = 0 -> E_{1,new} = E_{1,old} \partial_t E_2 = 0 -> E_{2,new} = E_{2,old} \partial_t B + \partial_{x_1} E_2 = 0 => B_new = B_old - dt \partial_{x_1} E_2.
| [in,out] | self | time propagator object | 
| [in] | dt | time step | 
Definition at line 363 of file sll_m_time_propagator_pic_vm_2d3v_hs.F90.
| 
 | private | 
Push Hp1: Equations to solve are TODO: UPDATE \partial_t f + v_1 \partial_{x_1} f = 0 -> X_new = X_old + dt V_1 V_new,2 = V_old,2 + \int_0 h V_old,1 B_old \partial_t E_1 = - \int v_1 f(t,x_1, v) dv -> E_{1,new} = E_{1,old} - \int \int v_1 f(t,x_1+s v_1,v) dv ds \partial_t E_2 = 0 -> E_{2,new} = E_{2,old} \partial_t B = 0 => B_new = B_old.
| [in,out] | self | time propagator object | 
| [in] | dt | time step | 
Definition at line 155 of file sll_m_time_propagator_pic_vm_2d3v_hs.F90.
| 
 | private | 
Push Hp2: Equations to solve are.
| [in,out] | self | time propagator object | 
| [in] | dt | time step | 
Definition at line 226 of file sll_m_time_propagator_pic_vm_2d3v_hs.F90.
| 
 | private | 
Push Hp3: Equations to solve are.
| [in,out] | self | time propagator object | 
| [in] | dt | time step | 
Definition at line 289 of file sll_m_time_propagator_pic_vm_2d3v_hs.F90.
| subroutine, public sll_m_time_propagator_pic_vm_2d3v_hs::sll_s_new_time_propagator_pic_vm_2d3v_hs | ( | class(sll_c_time_propagator_base), intent(out), allocatable | splitting, | 
| type(sll_t_maxwell_2d_fem_fft), intent(in), pointer | maxwell_solver, | ||
| type(sll_t_particle_mesh_coupling_spline_2d_feec), intent(in), pointer | particle_mesh_coupling, | ||
| class(sll_t_particle_array), intent(in), pointer | particle_group, | ||
| real(kind=f64), dimension(:), intent(in), pointer | efield_dofs, | ||
| real(kind=f64), dimension(:), intent(in), pointer | bfield_dofs, | ||
| real(kind=f64), dimension(2), intent(in) | x_min, | ||
| real(kind=f64), dimension(2), intent(in) | Lx, | ||
| class(sll_t_control_variates), intent(in), optional, target | control_variate, | ||
| real(kind=f64), intent(in), optional | betar | ||
| ) | 
Constructor for allocatable abstract type.
| [out] | splitting | time propagator object | 
| [in] | maxwell_solver | Maxwell solver | 
| [in] | particle_mesh_coupling | Particle mesh coupling | 
| [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. | 
| [in] | control_variate | Control variate (if delta f) | 
| [in] | betar | reciprocal of plasma beta | 
Definition at line 509 of file sll_m_time_propagator_pic_vm_2d3v_hs.F90.
| subroutine, public sll_m_time_propagator_pic_vm_2d3v_hs::sll_s_new_time_propagator_pic_vm_2d3v_hs_ptr | ( | class(sll_c_time_propagator_base), intent(out), pointer | splitting, | 
| type(sll_t_maxwell_2d_fem_fft), intent(in), pointer | maxwell_solver, | ||
| type(sll_t_particle_mesh_coupling_spline_2d_feec), intent(in), pointer | particle_mesh_coupling, | ||
| class(sll_t_particle_array), intent(in), pointer | particle_group, | ||
| real(kind=f64), dimension(:), intent(in), pointer | efield_dofs, | ||
| real(kind=f64), dimension(:), intent(in), pointer | bfield_dofs, | ||
| real(kind=f64), dimension(2), intent(in) | x_min, | ||
| real(kind=f64), dimension(2), intent(in) | Lx | ||
| ) | 
Constructor for pointer abstract type.
| [out] | splitting | time propagator object | 
| [in] | maxwell_solver | Maxwell solver | 
| [in] | particle_mesh_coupling | Particle mesh coupling | 
| [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 590 of file sll_m_time_propagator_pic_vm_2d3v_hs.F90.
| 
 | private | 
Finalization.
Strang splitting
| [in,out] | self | time propagator object | 
| [in] | dt | time step | 
| [in] | number_steps | number of time steps | 
Definition at line 87 of file sll_m_time_propagator_pic_vm_2d3v_hs.F90.
 1.9.1
 1.9.1