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_ecsim2o Module Reference

Description

Particle pusher based on Lapentas splitting in Ecsim for 1d2v Vlasov-Poisson.

Author
Benedikt Perse, IPP

MPI parallelization by domain cloning. Periodic boundaries. Spline DoFs numerated by the point the spline starts.

Derived types and interfaces

type  sll_t_time_propagator_pic_vm_1d2v_ecsim2o
 Hamiltonian splitting type for Vlasov-Maxwell 1d2v. More...
 

Functions/Subroutines

subroutine strang_splitting_pic_vm_1d2v_ecsim2o (self, dt, number_steps)
 Finalization. More...
 
subroutine lie_splitting_pic_vm_1d2v_ecsim2o (self, dt, number_steps)
 Lie splitting. More...
 
subroutine lie_splitting_back_pic_vm_1d2v_ecsim2o (self, dt, number_steps)
 Lie splitting. More...
 
subroutine advect_x_pic_vm_1d2v_ecsim2o (self, dt)
 
subroutine advect_eb_pic_vm_1d2v_ecsim2o (self, dt)
 
subroutine advect_ev_pic_vm_1d2v_ecsim2o (self, dt)
 
subroutine add_particle_mass_mixed_spline_1d (self, kernel_smoother, degree1, degree2, position, marker_charge, particle_mass)
 Add charge of one particle for splines of different degrees. More...
 
subroutine righthandside_eb (self, dt, rhs)
 calculation of the righthandside of the system of maxwellequations More...
 
subroutine righthandside_ev (self, dt, rhs)
 calculation of the righthandside of the system of maxwellequations More...
 
subroutine initialize_pic_vm_1d2v_ecsim2o (self, kernel_smoother_0, kernel_smoother_1, particle_group, efield_dofs, bfield_dofs, x_min, Lx, solver_tolerance)
 Constructor. More...
 
subroutine delete_pic_vm_1d2v_ecsim2o (self)
 Destructor. More...
 

Function/Subroutine Documentation

◆ add_particle_mass_mixed_spline_1d()

subroutine sll_m_time_propagator_pic_vm_1d2v_ecsim2o::add_particle_mass_mixed_spline_1d ( class(sll_t_time_propagator_pic_vm_1d2v_ecsim2o), intent(inout)  self,
class(sll_c_particle_mesh_coupling_1d), intent(in)  kernel_smoother,
integer(kind=i32), intent(in)  degree1,
integer(kind=i32), intent(in)  degree2,
real(kind=f64), dimension(self%kernel_smoother_1%dim), intent(in)  position,
real(kind=f64), intent(in)  marker_charge,
real(kind=f64), dimension(:,:), intent(inout)  particle_mass 
)
private

Add charge of one particle for splines of different degrees.

Parameters
[in,out]selfTime splitting object
[in]kernel_smootherKernel smoother
[in]degree1Degrees of first spline
[in]degree2Degree of second spline
[in]positionPosition of the particle
[in]marker_chargeParticle weights time charge
[in,out]particle_massCoefficient vector of the charge distribution

Definition at line 320 of file sll_m_time_propagator_pic_vm_1d2v_ecsim2o.F90.

Here is the caller graph for this function:

◆ advect_eb_pic_vm_1d2v_ecsim2o()

subroutine sll_m_time_propagator_pic_vm_1d2v_ecsim2o::advect_eb_pic_vm_1d2v_ecsim2o ( class(sll_t_time_propagator_pic_vm_1d2v_ecsim2o), intent(inout)  self,
real(kind=f64), intent(in)  dt 
)
private
Parameters
[in,out]selftime splitting object
[in]dttime step

Definition at line 179 of file sll_m_time_propagator_pic_vm_1d2v_ecsim2o.F90.

Here is the call graph for this function:

◆ advect_ev_pic_vm_1d2v_ecsim2o()

subroutine sll_m_time_propagator_pic_vm_1d2v_ecsim2o::advect_ev_pic_vm_1d2v_ecsim2o ( class(sll_t_time_propagator_pic_vm_1d2v_ecsim2o), intent(inout)  self,
real(kind=f64), intent(in)  dt 
)
private
Parameters
[in,out]selftime splitting object
[in]dttime step

Definition at line 199 of file sll_m_time_propagator_pic_vm_1d2v_ecsim2o.F90.

Here is the call graph for this function:

◆ advect_x_pic_vm_1d2v_ecsim2o()

subroutine sll_m_time_propagator_pic_vm_1d2v_ecsim2o::advect_x_pic_vm_1d2v_ecsim2o ( class(sll_t_time_propagator_pic_vm_1d2v_ecsim2o), intent(inout)  self,
real(kind=f64), intent(in)  dt 
)
private
Parameters
[in,out]selftime splitting object
[in]dttime step

Definition at line 157 of file sll_m_time_propagator_pic_vm_1d2v_ecsim2o.F90.

◆ delete_pic_vm_1d2v_ecsim2o()

subroutine sll_m_time_propagator_pic_vm_1d2v_ecsim2o::delete_pic_vm_1d2v_ecsim2o ( class(sll_t_time_propagator_pic_vm_1d2v_ecsim2o), intent(inout)  self)
private

Destructor.

Parameters
[in,out]selftime splitting object

Definition at line 545 of file sll_m_time_propagator_pic_vm_1d2v_ecsim2o.F90.

◆ initialize_pic_vm_1d2v_ecsim2o()

subroutine sll_m_time_propagator_pic_vm_1d2v_ecsim2o::initialize_pic_vm_1d2v_ecsim2o ( class(sll_t_time_propagator_pic_vm_1d2v_ecsim2o), intent(out)  self,
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,
real(kind=f64), intent(in), optional  solver_tolerance 
)
private

Constructor.

Parameters
[out]selftime splitting object
[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.
[in]solver_tolerancesolver tolerance

Definition at line 451 of file sll_m_time_propagator_pic_vm_1d2v_ecsim2o.F90.

Here is the call graph for this function:

◆ lie_splitting_back_pic_vm_1d2v_ecsim2o()

subroutine sll_m_time_propagator_pic_vm_1d2v_ecsim2o::lie_splitting_back_pic_vm_1d2v_ecsim2o ( class(sll_t_time_propagator_pic_vm_1d2v_ecsim2o), intent(inout)  self,
real(kind=f64), intent(in)  dt,
integer(kind=i32), intent(in)  number_steps 
)
private

Lie splitting.

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

Definition at line 141 of file sll_m_time_propagator_pic_vm_1d2v_ecsim2o.F90.

◆ lie_splitting_pic_vm_1d2v_ecsim2o()

subroutine sll_m_time_propagator_pic_vm_1d2v_ecsim2o::lie_splitting_pic_vm_1d2v_ecsim2o ( class(sll_t_time_propagator_pic_vm_1d2v_ecsim2o), intent(inout)  self,
real(kind=f64), intent(in)  dt,
integer(kind=i32), intent(in)  number_steps 
)
private

Lie splitting.

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

Definition at line 124 of file sll_m_time_propagator_pic_vm_1d2v_ecsim2o.F90.

◆ righthandside_eb()

subroutine sll_m_time_propagator_pic_vm_1d2v_ecsim2o::righthandside_eb ( class(sll_t_time_propagator_pic_vm_1d2v_ecsim2o), intent(inout)  self,
real(kind=f64), intent(in)  dt,
real(kind=f64), dimension(2*self%n_dofs), intent(out)  rhs 
)
private

calculation of the righthandside of the system of maxwellequations

Parameters
[in,out]selfTime splitting object
[in]dtTimestep
[out]rhsRighthandside of the equationsystem

Definition at line 358 of file sll_m_time_propagator_pic_vm_1d2v_ecsim2o.F90.

Here is the caller graph for this function:

◆ righthandside_ev()

subroutine sll_m_time_propagator_pic_vm_1d2v_ecsim2o::righthandside_ev ( class(sll_t_time_propagator_pic_vm_1d2v_ecsim2o), intent(inout)  self,
real(kind=f64), intent(in)  dt,
real(kind=f64), dimension(2*self%n_dofs), intent(out)  rhs 
)
private

calculation of the righthandside of the system of maxwellequations

Parameters
[in,out]selfTime splitting object
[in]dtTimestep
[out]rhsRighthandside of the equationsystem

Definition at line 400 of file sll_m_time_propagator_pic_vm_1d2v_ecsim2o.F90.

Here is the caller graph for this function:

◆ strang_splitting_pic_vm_1d2v_ecsim2o()

subroutine sll_m_time_propagator_pic_vm_1d2v_ecsim2o::strang_splitting_pic_vm_1d2v_ecsim2o ( class(sll_t_time_propagator_pic_vm_1d2v_ecsim2o), intent(inout)  self,
real(kind=f64), intent(in)  dt,
integer(kind=i32), intent(in)  number_steps 
)
private

Finalization.

Strang splitting

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

Definition at line 104 of file sll_m_time_propagator_pic_vm_1d2v_ecsim2o.F90.

    Report Typos and Errors