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

Derived types and interfaces

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

Functions/Subroutines

subroutine advect_x_pic_vm_1d2v_helper (self, dt)
 Advection of x part separately. More...
 
subroutine compute_particle_boundary (self, xold, xnew, vi)
 Helper function for advect_x. More...
 
subroutine advect_vb_pic_vm_1d2v_helper (self, dt)
 advect_vb: Equations to be solved $V_{1,2}^{n+1}= (\cos(B_3)&\sin(B) \ -\sin(B) &\cos(B) ) V_{1,2}^n More...
 
subroutine advect_eb_pic_vm_1d2v_helper (self, dt)
 advect_eb: Equations to be solved Solution with Schur complement: $ S=M_1+\frac{\Delta t^2}{4} D^\top M_2 D $ $ e_2^{n+1}=S^{-1}( (M_1-\frac{\Delta t^2}{4} D^\top M_2 D)e_2^n+\Delta t D^\top M_2 b_3^n) $ $ b_3^{n+1}=b_3^n-\frac{\Delta t}{2} C(e_2^n+e_2^{n+1}) $ More...
 
subroutine advect_e_pic_vm_1d2v_helper (self, dt)
 Solution with Schur complement: $ S_{+}=M_1+\frac{\Delta t^2 q^2}{4 m} (\mathbb{\Lambda}^1)^T \mathbb{\Lambda}^1 $ $e^{n+1}=S_{+}^{-1}\left(S_{-}e^n-\Delta t (\mathbb{\Lambda}^1)^\top \mathbb{W}_q V^n \right)$ $V^{n+1}=V^n+\frac{\Delta t}{2} \mathbb{W}_{\frac{q}{m}} \mathbb{\Lambda}^1(e^{n+1}+e^n)$. More...
 
subroutine advect_ex_pic_vm_1d2v_helper (self, dt)
 Operator for first variant without subcycling (Picard iteration, started by DISGRADE) More...
 
subroutine compute_particle_boundary_current_evaluate (self, xi, xnew, vi, vbar, wi, qoverm, dt)
 Helper function for advect_ex. More...
 
subroutine advect_e_sub_pic_vm_1d2v_helper (self, dt)
 Operator for e,x-part with subcycling. More...
 
subroutine subcycle_xv (self, dt, qoverm, efield_dofs, wi, position, velocity, sub_iter_counter)
 Helper function for subcycle (using Picard iteration) More...
 
subroutine initialize_pic_vm_1d2v_helper (self, maxwell_solver, kernel_smoother_0, kernel_smoother_1, particle_group, phi_dofs, efield_dofs, bfield_dofs, x_min, Lx, filter, build_particle_mass, boundary_particles, solver_tolerance, iter_tolerance, max_iter, force_sign, control_variate, i_weight, betar, jmean)
 Constructor. More...
 
subroutine initialize_file_pic_vm_1d2v_helper (self, maxwell_solver, kernel_smoother_0, kernel_smoother_1, particle_group, phi_dofs, efield_dofs, bfield_dofs, x_min, Lx, filter, filename, build_particle_mass, boundary_particles, force_sign, control_variate, i_weight, betar, jmean)
 Constructor. More...
 
subroutine delete_pic_vm_1d2v_helper (self)
 Destructor. More...
 
subroutine advect_e_start_disgrade_pic_vm_1d2v_helper (self, dt)
 Operator for first variant without subcycling (Picard iteration, started by DISGRADE) More...
 
subroutine disgrade_for_start (self, dt, efield_dofs)
 DISGRADE as first guess DisgradE as first guess. More...
 
subroutine reinit_fields (self)
 Computes the filtered dofs. More...
 

Function/Subroutine Documentation

◆ advect_e_pic_vm_1d2v_helper()

subroutine sll_m_time_propagator_pic_vm_1d2v_helper::advect_e_pic_vm_1d2v_helper ( class(sll_t_time_propagator_pic_vm_1d2v_helper), intent(inout)  self,
real(kind=f64), intent(in)  dt 
)
private

Solution with Schur complement: $ S_{+}=M_1+\frac{\Delta t^2 q^2}{4 m} (\mathbb{\Lambda}^1)^T \mathbb{\Lambda}^1 $ $e^{n+1}=S_{+}^{-1}\left(S_{-}e^n-\Delta t (\mathbb{\Lambda}^1)^\top \mathbb{W}_q V^n \right)$ $V^{n+1}=V^n+\frac{\Delta t}{2} \mathbb{W}_{\frac{q}{m}} \mathbb{\Lambda}^1(e^{n+1}+e^n)$.

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

Definition at line 325 of file sll_m_time_propagator_pic_vm_1d2v_helper.F90.

◆ advect_e_start_disgrade_pic_vm_1d2v_helper()

subroutine sll_m_time_propagator_pic_vm_1d2v_helper::advect_e_start_disgrade_pic_vm_1d2v_helper ( class(sll_t_time_propagator_pic_vm_1d2v_helper), intent(inout)  self,
real(kind=f64), intent(in)  dt 
)
private

Operator for first variant without subcycling (Picard iteration, started by DISGRADE)

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

Definition at line 1648 of file sll_m_time_propagator_pic_vm_1d2v_helper.F90.

◆ advect_e_sub_pic_vm_1d2v_helper()

subroutine sll_m_time_propagator_pic_vm_1d2v_helper::advect_e_sub_pic_vm_1d2v_helper ( class(sll_t_time_propagator_pic_vm_1d2v_helper), intent(inout)  self,
real(kind=f64), intent(in)  dt 
)
private

Operator for e,x-part with subcycling.

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

Definition at line 828 of file sll_m_time_propagator_pic_vm_1d2v_helper.F90.

Here is the call graph for this function:

◆ advect_eb_pic_vm_1d2v_helper()

subroutine sll_m_time_propagator_pic_vm_1d2v_helper::advect_eb_pic_vm_1d2v_helper ( class(sll_t_time_propagator_pic_vm_1d2v_helper), intent(inout)  self,
real(kind=f64), intent(in)  dt 
)
private

advect_eb: Equations to be solved Solution with Schur complement: $ S=M_1+\frac{\Delta t^2}{4} D^\top M_2 D $ $ e_2^{n+1}=S^{-1}( (M_1-\frac{\Delta t^2}{4} D^\top M_2 D)e_2^n+\Delta t D^\top M_2 b_3^n) $ $ b_3^{n+1}=b_3^n-\frac{\Delta t}{2} C(e_2^n+e_2^{n+1}) $

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

Definition at line 307 of file sll_m_time_propagator_pic_vm_1d2v_helper.F90.

◆ advect_ex_pic_vm_1d2v_helper()

subroutine sll_m_time_propagator_pic_vm_1d2v_helper::advect_ex_pic_vm_1d2v_helper ( class(sll_t_time_propagator_pic_vm_1d2v_helper), intent(inout)  self,
real(kind=f64), intent(in)  dt 
)
private

Operator for first variant without subcycling (Picard iteration, started by DISGRADE)

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

Definition at line 483 of file sll_m_time_propagator_pic_vm_1d2v_helper.F90.

Here is the call graph for this function:

◆ advect_vb_pic_vm_1d2v_helper()

subroutine sll_m_time_propagator_pic_vm_1d2v_helper::advect_vb_pic_vm_1d2v_helper ( class(sll_t_time_propagator_pic_vm_1d2v_helper), intent(inout)  self,
real(kind=f64), intent(in)  dt 
)
private

advect_vb: Equations to be solved $V_{1,2}^{n+1}= (\cos(B_3)&\sin(B) \ -\sin(B) &\cos(B) ) V_{1,2}^n

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

Definition at line 261 of file sll_m_time_propagator_pic_vm_1d2v_helper.F90.

◆ advect_x_pic_vm_1d2v_helper()

subroutine sll_m_time_propagator_pic_vm_1d2v_helper::advect_x_pic_vm_1d2v_helper ( class(sll_t_time_propagator_pic_vm_1d2v_helper), intent(inout)  self,
real(kind=f64), intent(in)  dt 
)
private

Advection of x part separately.

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

Definition at line 189 of file sll_m_time_propagator_pic_vm_1d2v_helper.F90.

Here is the call graph for this function:

◆ compute_particle_boundary()

subroutine sll_m_time_propagator_pic_vm_1d2v_helper::compute_particle_boundary ( class(sll_t_time_propagator_pic_vm_1d2v_helper), intent(inout)  self,
real(kind=f64), intent(inout)  xold,
real(kind=f64), intent(inout)  xnew,
real(kind=f64), intent(inout)  vi 
)
private

Helper function for advect_x.

Parameters
[in,out]selftime propagator object

Definition at line 220 of file sll_m_time_propagator_pic_vm_1d2v_helper.F90.

Here is the caller graph for this function:

◆ compute_particle_boundary_current_evaluate()

subroutine sll_m_time_propagator_pic_vm_1d2v_helper::compute_particle_boundary_current_evaluate ( class(sll_t_time_propagator_pic_vm_1d2v_helper), intent(inout)  self,
real(kind=f64), dimension(1), intent(in)  xi,
real(kind=f64), dimension(1), intent(inout)  xnew,
real(kind=f64), dimension(2), intent(inout)  vi,
real(kind=f64), dimension(2), intent(inout)  vbar,
real(kind=f64), dimension(1), intent(in)  wi,
real(kind=f64), intent(in)  qoverm,
real(kind=f64), intent(in)  dt 
)
private

Helper function for advect_ex.

Parameters
[in,out]selftime propagator object

Definition at line 729 of file sll_m_time_propagator_pic_vm_1d2v_helper.F90.

Here is the caller graph for this function:

◆ delete_pic_vm_1d2v_helper()

subroutine sll_m_time_propagator_pic_vm_1d2v_helper::delete_pic_vm_1d2v_helper ( class(sll_t_time_propagator_pic_vm_1d2v_helper), intent(inout)  self)
private

Destructor.

Parameters
[in,out]selftime propagator object

Definition at line 1593 of file sll_m_time_propagator_pic_vm_1d2v_helper.F90.

◆ disgrade_for_start()

subroutine sll_m_time_propagator_pic_vm_1d2v_helper::disgrade_for_start ( class(sll_t_time_propagator_pic_vm_1d2v_helper), intent(inout)  self,
real(kind=f64), intent(in)  dt,
real(kind=f64), dimension(:,:), intent(out)  efield_dofs 
)
private

DISGRADE as first guess DisgradE as first guess.

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

Definition at line 1851 of file sll_m_time_propagator_pic_vm_1d2v_helper.F90.

◆ initialize_file_pic_vm_1d2v_helper()

subroutine sll_m_time_propagator_pic_vm_1d2v_helper::initialize_file_pic_vm_1d2v_helper ( class(sll_t_time_propagator_pic_vm_1d2v_helper), 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  phi_dofs,
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,
class( sll_c_filter_base_1d ), intent(in), target  filter,
character(len=*), intent(in)  filename,
logical, intent(in), optional  build_particle_mass,
integer(kind=i32), intent(in), optional  boundary_particles,
real(kind=f64), intent(in), optional  force_sign,
class(sll_t_control_variates), intent(in), optional, target  control_variate,
integer(kind=i32), intent(in), optional  i_weight,
real(kind=f64), dimension(2), intent(in), optional  betar,
logical, intent(in), optional  jmean 
)
private

Constructor.

Parameters
[out]selftime propagator object
[in]maxwell_solverMaxwell solver
[in]kernel_smoother_0Kernel smoother
[in]kernel_smoother_1Kernel smoother
[in]particle_groupParticle group
[in]phi_dofsarray for the coefficients of phi
[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]boundary_particlesparticle boundary conditions
[in]force_signsign of particle force
[in]control_variateControl variate (if delta f)
[in]i_weightIndex of weight to be used by propagator
[in]betarreciprocal plasma beta
[in]jmeanlogical for mean value of current

Definition at line 1307 of file sll_m_time_propagator_pic_vm_1d2v_helper.F90.

Here is the call graph for this function:

◆ initialize_pic_vm_1d2v_helper()

subroutine sll_m_time_propagator_pic_vm_1d2v_helper::initialize_pic_vm_1d2v_helper ( class(sll_t_time_propagator_pic_vm_1d2v_helper), intent(inout)  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  phi_dofs,
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,
class( sll_c_filter_base_1d ), intent(in), target  filter,
logical, intent(in), optional  build_particle_mass,
integer(kind=i32), intent(in), optional  boundary_particles,
real(kind=f64), intent(in), optional  solver_tolerance,
real(kind=f64), intent(in), optional  iter_tolerance,
integer(kind=i32), intent(in), optional  max_iter,
real(kind=f64), intent(in), optional  force_sign,
class(sll_t_control_variates), intent(in), optional, target  control_variate,
integer(kind=i32), intent(in), optional  i_weight,
real(kind=f64), dimension(2), intent(in), optional  betar,
logical, intent(in), optional  jmean 
)
private

Constructor.

Parameters
[in,out]selftime propagator object
[in]maxwell_solverMaxwell solver
[in]kernel_smoother_0Kernel smoother
[in]kernel_smoother_1Kernel smoother
[in]particle_groupParticle group
[in]phi_dofsarray for the coefficients of phi
[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]boundary_particlesparticle boundary conditions
[in]solver_tolerancesolver tolerance
[in]iter_toleranceiteration tolerance
[in]max_itermaximal number of iterations
[in]force_signsign of particle force
[in]control_variateControl variate (if delta f)
[in]i_weightIndex of weight to be used by propagator
[in]betarreciprocal plasma beta
[in]jmeanlogical for mean value of current

Definition at line 1088 of file sll_m_time_propagator_pic_vm_1d2v_helper.F90.

◆ reinit_fields()

subroutine sll_m_time_propagator_pic_vm_1d2v_helper::reinit_fields ( class(sll_t_time_propagator_pic_vm_1d2v_helper), intent(inout)  self)
private

Computes the filtered dofs.

Parameters
[in,out]selftime propagator object

Definition at line 1970 of file sll_m_time_propagator_pic_vm_1d2v_helper.F90.

◆ subcycle_xv()

subroutine sll_m_time_propagator_pic_vm_1d2v_helper::subcycle_xv ( class(sll_t_time_propagator_pic_vm_1d2v_helper), intent(inout)  self,
real(kind=f64), intent(in)  dt,
real(kind=f64), intent(in)  qoverm,
real(kind=f64), dimension(:,:), intent(in)  efield_dofs,
real(kind=f64), dimension(1), intent(in)  wi,
real(kind=f64), dimension(1), intent(inout)  position,
real(kind=f64), dimension(2), intent(inout)  velocity,
integer(kind=i32), intent(inout)  sub_iter_counter 
)
private

Helper function for subcycle (using Picard iteration)

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

Definition at line 937 of file sll_m_time_propagator_pic_vm_1d2v_helper.F90.

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