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

Description

Particle pusher based on Hamiltonian splitting for 3d3v Vlasov-Maxwell with coordinate transformation.

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_3d3v_hs_trafo
 Hamiltonian splitting type for Vlasov-Maxwell 3d3v with coordinate transformation. More...
 

Functions/Subroutines

subroutine strang_splitting_pic_vm_3d3v_hs_trafo (self, dt, number_steps)
 Finalization. More...
 
subroutine lie_splitting_pic_vm_3d3v_hs_trafo (self, dt, number_steps)
 Lie splitting. More...
 
subroutine lie_splitting_back_pic_vm_3d3v_hs_trafo (self, dt, number_steps)
 Lie splitting (oposite ordering) More...
 
subroutine operatorhp_pic_vm_3d3v_hs_trafo (self, dt)
 Push H_p: Equations to be solved $\Xi^{n+1}=\Xi^n+ \Delta t DF^{-1}(\overline{\Xi})\overline{V}$, $V^{n+1}=V^{n}+ \Delta t \mathbb {W}_{\frac{q}{m}} DF^{-\top}(\overline{\Xi}\right) \tBB(\overline{\Xi},b^n) DF^{-1}(\overline{\Xi})\overline{V}$, $M_1 e^{n+1}= M_1 e^n-\int^{t^{n+1}}_{t^n} \mathbb{Lambda}^1(\Xi(\tau))^\top d\tau \mathbb{W}_q DF^{-1}(\overline{\Xi})\overline{V}$. More...
 
subroutine operatorhb_pic_vm_3d3v_hs_trafo (self, dt)
 Push H_B: Equations to be solved $M_1 e^{n+1}=M_1 e^n+\Delta t C^\top M_2 b^n$. More...
 
subroutine operatorhe_pic_vm_3d3v_hs_trafo (self, dt)
 Push H_E: Equations to be solved $V^{n+1}=V^n+\Delta t\mathbb{W}_{\frac{q}{m}} DF^{-\top}(\Xi^n) \mathbb{Lambda}^1(\Xi^n) e^n$ $b^{n+1}=b^n-\Delta t C e^n$. More...
 
subroutine initialize_pic_vm_3d3v_hs_trafo (self, maxwell_solver, particle_mesh_coupling, particle_group, phi_dofs, efield_dofs, bfield_dofs, x_min, Lx, map, boundary_particles, iter_tolerance, max_iter, betar, electrostatic, rhob, control_variate)
 Constructor. More...
 
subroutine initialize_file_pic_vm_3d3v_hs_trafo (self, maxwell_solver, particle_mesh_coupling, particle_group, phi_dofs, efield_dofs, bfield_dofs, x_min, Lx, map, filename, boundary_particles, betar, electrostatic, rhob, control_variate)
 Constructor. More...
 
subroutine delete_pic_vm_3d3v_hs_trafo (self)
 Destructor. More...
 

Function/Subroutine Documentation

◆ delete_pic_vm_3d3v_hs_trafo()

subroutine sll_m_time_propagator_pic_vm_3d3v_hs_trafo::delete_pic_vm_3d3v_hs_trafo ( class(sll_t_time_propagator_pic_vm_3d3v_hs_trafo), intent(inout)  self)
private

Destructor.

Parameters
[in,out]selftime propagator object

Definition at line 713 of file sll_m_time_propagator_pic_vm_3d3v_hs_trafo.F90.

◆ initialize_file_pic_vm_3d3v_hs_trafo()

subroutine sll_m_time_propagator_pic_vm_3d3v_hs_trafo::initialize_file_pic_vm_3d3v_hs_trafo ( class(sll_t_time_propagator_pic_vm_3d3v_hs_trafo), intent(out)  self,
class(sll_c_maxwell_3d_base), intent(in), target  maxwell_solver,
class(sll_c_particle_mesh_coupling_3d), intent(in), target  particle_mesh_coupling,
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), dimension(3), intent(in)  x_min,
real(kind=f64), dimension(3), intent(in)  Lx,
type(sll_t_mapping_3d), intent(inout), target  map,
character(len=*), intent(in)  filename,
integer(kind=i32), intent(in), optional  boundary_particles,
real(kind=f64), dimension(2), intent(in), optional  betar,
logical, optional  electrostatic,
real(kind=f64), dimension(:), intent(in), optional, target  rhob,
class(sll_t_control_variates), intent(in), optional, target  control_variate 
)
private

Constructor.

Parameters
[out]selftime propagator object
[in]maxwell_solverMaxwell solver
[in]particle_mesh_couplingParticle mesh coupling
[in]particle_groupParticle group
[in]phi_dofsarray for the coefficients of the scalar potential
[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,out]mapCoordinate transformation
[in]filenamefile name
[in]boundary_particlesparticle boundary conditions
[in]betarreciprocal plasma beta
electrostatictrue for electrostatic simulation
[in]rhobcharge at the boundary
[in]control_variateControl variate (if delta f)

Definition at line 542 of file sll_m_time_propagator_pic_vm_3d3v_hs_trafo.F90.

◆ initialize_pic_vm_3d3v_hs_trafo()

subroutine sll_m_time_propagator_pic_vm_3d3v_hs_trafo::initialize_pic_vm_3d3v_hs_trafo ( class(sll_t_time_propagator_pic_vm_3d3v_hs_trafo), intent(out)  self,
class(sll_c_maxwell_3d_base), intent(in), target  maxwell_solver,
class(sll_c_particle_mesh_coupling_3d), intent(in), target  particle_mesh_coupling,
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), dimension(3), intent(in)  x_min,
real(kind=f64), dimension(3), intent(in)  Lx,
type(sll_t_mapping_3d), intent(inout), target  map,
integer(kind=i32), intent(in), optional  boundary_particles,
real(kind=f64), intent(in), optional  iter_tolerance,
integer(kind=i32), intent(in), optional  max_iter,
real(kind=f64), dimension(2), intent(in), optional  betar,
logical, intent(in), optional  electrostatic,
real(kind=f64), dimension(:), intent(in), optional, target  rhob,
class(sll_t_control_variates), intent(in), optional, target  control_variate 
)
private

Constructor.

Parameters
[out]selftime propagator object
[in]maxwell_solverMaxwell solver
[in]particle_mesh_couplingParticle mesh coupling
[in]particle_groupParticle group
[in]phi_dofsarray for the coefficients of the scalar potential
[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,out]mapCoordinate transformation
[in]boundary_particlesparticle boundary conditions
[in]iter_toleranceiteration tolerance
[in]max_itermaximal number of iterations
[in]betarreciprocal plasma beta
[in]electrostatictrue for electrostatic simulation
[in]rhobcharge at the boundary
[in]control_variateControl variate (if delta f)

Definition at line 446 of file sll_m_time_propagator_pic_vm_3d3v_hs_trafo.F90.

◆ lie_splitting_back_pic_vm_3d3v_hs_trafo()

subroutine sll_m_time_propagator_pic_vm_3d3v_hs_trafo::lie_splitting_back_pic_vm_3d3v_hs_trafo ( class(sll_t_time_propagator_pic_vm_3d3v_hs_trafo), intent(inout)  self,
real(kind=f64), intent(in)  dt,
integer(kind=i32), intent(in)  number_steps 
)
private

Lie splitting (oposite ordering)

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

Definition at line 169 of file sll_m_time_propagator_pic_vm_3d3v_hs_trafo.F90.

◆ lie_splitting_pic_vm_3d3v_hs_trafo()

subroutine sll_m_time_propagator_pic_vm_3d3v_hs_trafo::lie_splitting_pic_vm_3d3v_hs_trafo ( class(sll_t_time_propagator_pic_vm_3d3v_hs_trafo), intent(inout)  self,
real(kind=f64), intent(in)  dt,
integer(kind=i32), intent(in)  number_steps 
)
private

Lie splitting.

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

Definition at line 145 of file sll_m_time_propagator_pic_vm_3d3v_hs_trafo.F90.

◆ operatorhb_pic_vm_3d3v_hs_trafo()

subroutine sll_m_time_propagator_pic_vm_3d3v_hs_trafo::operatorhb_pic_vm_3d3v_hs_trafo ( class(sll_t_time_propagator_pic_vm_3d3v_hs_trafo), intent(inout)  self,
real(kind=f64), intent(in)  dt 
)
private

Push H_B: Equations to be solved $M_1 e^{n+1}=M_1 e^n+\Delta t C^\top M_2 b^n$.

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

Definition at line 362 of file sll_m_time_propagator_pic_vm_3d3v_hs_trafo.F90.

◆ operatorhe_pic_vm_3d3v_hs_trafo()

subroutine sll_m_time_propagator_pic_vm_3d3v_hs_trafo::operatorhe_pic_vm_3d3v_hs_trafo ( class(sll_t_time_propagator_pic_vm_3d3v_hs_trafo), intent(inout)  self,
real(kind=f64), intent(in)  dt 
)
private

Push H_E: Equations to be solved $V^{n+1}=V^n+\Delta t\mathbb{W}_{\frac{q}{m}} DF^{-\top}(\Xi^n) \mathbb{Lambda}^1(\Xi^n) e^n$ $b^{n+1}=b^n-\Delta t C e^n$.

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

Definition at line 375 of file sll_m_time_propagator_pic_vm_3d3v_hs_trafo.F90.

◆ operatorhp_pic_vm_3d3v_hs_trafo()

subroutine sll_m_time_propagator_pic_vm_3d3v_hs_trafo::operatorhp_pic_vm_3d3v_hs_trafo ( class(sll_t_time_propagator_pic_vm_3d3v_hs_trafo), intent(inout)  self,
real(kind=f64), intent(in)  dt 
)
private

Push H_p: Equations to be solved $\Xi^{n+1}=\Xi^n+ \Delta t DF^{-1}(\overline{\Xi})\overline{V}$, $V^{n+1}=V^{n}+ \Delta t \mathbb {W}_{\frac{q}{m}} DF^{-\top}(\overline{\Xi}\right) \tBB(\overline{\Xi},b^n) DF^{-1}(\overline{\Xi})\overline{V}$, $M_1 e^{n+1}= M_1 e^n-\int^{t^{n+1}}_{t^n} \mathbb{Lambda}^1(\Xi(\tau))^\top d\tau \mathbb{W}_q DF^{-1}(\overline{\Xi})\overline{V}$.

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

Definition at line 197 of file sll_m_time_propagator_pic_vm_3d3v_hs_trafo.F90.

Here is the call graph for this function:

◆ strang_splitting_pic_vm_3d3v_hs_trafo()

subroutine sll_m_time_propagator_pic_vm_3d3v_hs_trafo::strang_splitting_pic_vm_3d3v_hs_trafo ( class(sll_t_time_propagator_pic_vm_3d3v_hs_trafo), intent(inout)  self,
real(kind=f64), intent(in)  dt,
integer(kind=i32), intent(in)  number_steps 
)
private

Finalization.

Strang splitting

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

Definition at line 119 of file sll_m_time_propagator_pic_vm_3d3v_hs_trafo.F90.

    Report Typos and Errors