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

Description

Particle mesh coupling for 3d with splines of arbitrary degree placed on a uniform tensor product mesh.

Author
Katharina Kormann, IPP

Spline with index i starts at point i

Derived types and interfaces

type  sll_t_particle_mesh_coupling_spline_2d_feec
 Particle mesh coupling in 3d based on (arbitrary degree) spline on a tensor product uniform mesh. More...
 

Functions/Subroutines

subroutine add_charge_single_spline_2d_feec (self, position, marker_charge, degree, rho_dofs)
 Destructor. More...
 
subroutine add_particle_mass_spline_2d_feec (self, position, marker_charge, degree, particle_mass)
 Add charge of one particle. More...
 
pure integer(kind=i32) function convert_index_2d_to_1d (index2d, n_grid)
 
subroutine convert_x_to_xbox (self, position, xi, box)
 
subroutine add_current_spline_2d_feec (self, position_old, position_new, marker_charge, qoverm, bfield_dofs, vi, j_dofs)
 Add current for one particle. More...
 
subroutine add_current_update_v_primitive_component1_spline_2d_feec (self, position_old, position_new, marker_charge, qoverm, bfield_dofs, vi, j_dofs)
 Add current for one particle and update v (according to H_p1 part in Hamiltonian splitting) More...
 
subroutine add_current_update_v_primitive_component2_spline_2d_feec (self, position_old, position_new, marker_charge, qoverm, bfield_dofs, vi, j_dofs)
 
subroutine evaluate_field_single_spline_2d_feec (self, position, degree, field_dofs, field_value)
 Evaluate field at at position position. More...
 
subroutine evaluate_field_single_spline_pp_2d_feec (self, position, degree, field_dofs_pp, field_value)
 Evaluate field at at position position. More...
 
subroutine evaluate_multiple_spline_2d_feec (self, position, components, field_dofs, field_value)
 Evaluate several fields at position position. More...
 
subroutine init_spline_2d_feec (self, n_grid, domain, no_particles, spline_degree)
 Constructor. More...
 
subroutine free_spline_2d_feec (self)
 Destructor. More...
 

Function/Subroutine Documentation

◆ add_charge_single_spline_2d_feec()

subroutine sll_m_particle_mesh_coupling_spline_2d_feec::add_charge_single_spline_2d_feec ( class( sll_t_particle_mesh_coupling_spline_2d_feec ), intent(inout)  self,
real(kind=f64), dimension(self%dim), intent(in)  position,
real(kind=f64), intent(in)  marker_charge,
integer(kind=i32), dimension(2), intent(in)  degree,
real(kind=f64), dimension(self%n_dofs), intent(inout)  rho_dofs 
)
private

Destructor.

Add charge of one particle

Parameters
[in,out]selfkernel smoother object
[in]positionPosition of the particle
[in]marker_chargeParticle weights time charge
[in]degreeSpline degree along each dimension
[in,out]rho_dofsCoefficient vector of the charge distribution

Definition at line 96 of file sll_m_particle_mesh_coupling_spline_2d_feec.F90.

Here is the call graph for this function:

◆ add_current_spline_2d_feec()

subroutine sll_m_particle_mesh_coupling_spline_2d_feec::add_current_spline_2d_feec ( class(sll_t_particle_mesh_coupling_spline_2d_feec), intent(inout)  self,
real(kind=f64), dimension(self%dim), intent(in)  position_old,
real(kind=f64), dimension(self%dim), intent(in)  position_new,
real(kind=f64), intent(in)  marker_charge,
real(kind=f64), intent(in)  qoverm,
real(kind=f64), dimension(self%n_dofs*3), intent(in)  bfield_dofs,
real(kind=f64), dimension(:), intent(inout)  vi,
real(kind=f64), dimension(self%n_dofs), intent(inout)  j_dofs 
)
private

Add current for one particle.

Parameters
[in,out]selfkernel smoother object
[in]position_oldPosition at time t
[in]position_newPosition at time t + \Delta t
[in]marker_chargeParticle weight time charge
[in]qovermcharge to mass ration
[in]bfield_dofsCoefficient of B-field expansion
[in,out]viVelocity of the particles
[in,out]j_dofsCoefficients of current expansion

Definition at line 280 of file sll_m_particle_mesh_coupling_spline_2d_feec.F90.

Here is the call graph for this function:

◆ add_current_update_v_primitive_component1_spline_2d_feec()

subroutine sll_m_particle_mesh_coupling_spline_2d_feec::add_current_update_v_primitive_component1_spline_2d_feec ( class(sll_t_particle_mesh_coupling_spline_2d_feec), intent(inout)  self,
real(kind=f64), dimension(self%dim), intent(in)  position_old,
real(kind=f64), intent(in)  position_new,
real(kind=f64), intent(in)  marker_charge,
real(kind=f64), intent(in)  qoverm,
real(kind=f64), dimension(self%n_dofs*3), intent(in)  bfield_dofs,
real(kind=f64), dimension(:), intent(inout)  vi,
real(kind=f64), dimension(self%n_dofs), intent(inout)  j_dofs 
)
private

Add current for one particle and update v (according to H_p1 part in Hamiltonian splitting)

Parameters
[in,out]selfkernel smoother object
[in]position_oldPosition at time t
[in]position_newPosition at time t + \Delta t
[in]marker_chargeParticle weight time charge
[in]qovermcharge to mass ration
[in]bfield_dofsCoefficient of B-field expansion
[in,out]viVelocity of the particles
[in,out]j_dofsCoefficients of current expansion

Definition at line 352 of file sll_m_particle_mesh_coupling_spline_2d_feec.F90.

Here is the call graph for this function:

◆ add_current_update_v_primitive_component2_spline_2d_feec()

subroutine sll_m_particle_mesh_coupling_spline_2d_feec::add_current_update_v_primitive_component2_spline_2d_feec ( class(sll_t_particle_mesh_coupling_spline_2d_feec), intent(inout)  self,
real(kind=f64), dimension(self%dim), intent(in)  position_old,
real(kind=f64), intent(in)  position_new,
real(kind=f64), intent(in)  marker_charge,
real(kind=f64), intent(in)  qoverm,
real(kind=f64), dimension(self%n_dofs*3), intent(in)  bfield_dofs,
real(kind=f64), dimension(:), intent(inout)  vi,
real(kind=f64), dimension(self%n_dofs), intent(inout)  j_dofs 
)
private
Parameters
[in,out]selfkernel smoother object
[in]position_oldPosition at time t
[in]position_newPosition at time t + \Delta t
[in]marker_chargeParticle weight time charge
[in]qovermcharge to mass ration
[in]bfield_dofsCoefficient of B-field expansion
[in,out]viVelocity of the particles
[in,out]j_dofsCoefficients of current expansion

Definition at line 469 of file sll_m_particle_mesh_coupling_spline_2d_feec.F90.

Here is the call graph for this function:

◆ add_particle_mass_spline_2d_feec()

subroutine sll_m_particle_mesh_coupling_spline_2d_feec::add_particle_mass_spline_2d_feec ( class( sll_t_particle_mesh_coupling_spline_2d_feec ), intent(inout)  self,
real(kind=f64), dimension(self%dim), intent(in)  position,
real(kind=f64), intent(in)  marker_charge,
integer(kind=i32), dimension(2), intent(in)  degree,
real(kind=f64), dimension(:,:), intent(inout)  particle_mass 
)
private

Add charge of one particle.

Parameters
[in,out]selfkernel smoother object
[in]positionPosition of the particle
[in]marker_chargeParticle weights time charge
[in]degreeSpline degree along each dimension
[in,out]particle_massCoefficient vector of the charge distribution

Definition at line 135 of file sll_m_particle_mesh_coupling_spline_2d_feec.F90.

Here is the call graph for this function:

◆ convert_index_2d_to_1d()

pure integer(kind=i32) function sll_m_particle_mesh_coupling_spline_2d_feec::convert_index_2d_to_1d ( integer(kind=i32), dimension(2), intent(in)  index2d,
integer(kind=i32), dimension(2), intent(in)  n_grid 
)
private

Definition at line 255 of file sll_m_particle_mesh_coupling_spline_2d_feec.F90.

Here is the caller graph for this function:

◆ convert_x_to_xbox()

subroutine sll_m_particle_mesh_coupling_spline_2d_feec::convert_x_to_xbox ( class( sll_t_particle_mesh_coupling_spline_2d_feec ), intent(inout)  self,
real(kind=f64), dimension(self%dim), intent(in)  position,
real(kind=f64), dimension(self%dim), intent(out)  xi,
integer(kind=i32), dimension(self%dim), intent(out)  box 
)
private
Parameters
[in,out]selfkernel smoother object
[in]positionPosition of the particle
[out]xiPosition of the particle
[out]boxPosition of the particle

Definition at line 265 of file sll_m_particle_mesh_coupling_spline_2d_feec.F90.

Here is the caller graph for this function:

◆ evaluate_field_single_spline_2d_feec()

subroutine sll_m_particle_mesh_coupling_spline_2d_feec::evaluate_field_single_spline_2d_feec ( class (sll_t_particle_mesh_coupling_spline_2d_feec), intent(inout)  self,
real(kind=f64), dimension(self%dim), intent(in)  position,
integer(kind=i32), dimension(self%dim), intent(in)  degree,
real(kind=f64), dimension(self%n_dofs), intent(in)  field_dofs,
real(kind=f64), intent(out)  field_value 
)
private

Evaluate field at at position position.

Parameters
[in,out]selfKernel smoother object
[in]positionPosition of the particle
[in]degreeSpline degree of the various components
[in]field_dofsCoefficient vector for the field DoFs
[out]field_valueValue(s) of the electric fields at given position

Definition at line 581 of file sll_m_particle_mesh_coupling_spline_2d_feec.F90.

Here is the call graph for this function:

◆ evaluate_field_single_spline_pp_2d_feec()

subroutine sll_m_particle_mesh_coupling_spline_2d_feec::evaluate_field_single_spline_pp_2d_feec ( class (sll_t_particle_mesh_coupling_spline_2d_feec), intent(inout)  self,
real(kind=f64), dimension(self%dim), intent(in)  position,
integer(kind=i32), dimension(self%dim), intent(in)  degree,
real(kind=f64), dimension(:,:), intent(in)  field_dofs_pp,
real(kind=f64), intent(out)  field_value 
)
private

Evaluate field at at position position.

Parameters
[in,out]selfKernel smoother object
[in]positionPosition of the particle
[in]degreeSpline degree of the various components
[in]field_dofs_ppCoefficient vector for the field DoFs
[out]field_valueValue(s) of the electric fields at given position

Definition at line 619 of file sll_m_particle_mesh_coupling_spline_2d_feec.F90.

Here is the call graph for this function:

◆ evaluate_multiple_spline_2d_feec()

subroutine sll_m_particle_mesh_coupling_spline_2d_feec::evaluate_multiple_spline_2d_feec ( class (sll_t_particle_mesh_coupling_spline_2d_feec), intent(inout)  self,
real(kind=f64), dimension(self%dim), intent(in)  position,
integer(kind=i32), dimension(:), intent(in)  components,
real(kind=f64), dimension(:,:), intent(in)  field_dofs,
real(kind=f64), dimension(:), intent(out)  field_value 
)
private

Evaluate several fields at position position.

Parameters
[in,out]selfKernel smoother object
[in]positionPosition of the particle
[in]componentsComponents of field_dofs that shall be updated
[in]field_dofsCoefficient vector for the field DoFs
[out]field_valueValue(s) of the electric fields at given position

Definition at line 639 of file sll_m_particle_mesh_coupling_spline_2d_feec.F90.

◆ free_spline_2d_feec()

subroutine sll_m_particle_mesh_coupling_spline_2d_feec::free_spline_2d_feec ( class (sll_t_particle_mesh_coupling_spline_2d_feec), intent(inout)  self)
private

Destructor.

Parameters
[in,out]selfKernel smoother object

Definition at line 704 of file sll_m_particle_mesh_coupling_spline_2d_feec.F90.

◆ init_spline_2d_feec()

subroutine sll_m_particle_mesh_coupling_spline_2d_feec::init_spline_2d_feec ( class (sll_t_particle_mesh_coupling_spline_2d_feec), intent(out)  self,
integer(kind=i32), dimension(2), intent(in)  n_grid,
real(kind=f64), dimension(2,2), intent(in)  domain,
integer(kind=i32), intent(in)  no_particles,
integer(kind=i32), intent(in)  spline_degree 
)
private

Constructor.

Parameters
[out]selfKernel smoother object
[in]n_gridnumber of DoFs (spline coefficients)
[in]domainx_min and x_max of the domain
[in]no_particlesnumber of particles
[in]spline_degreeDegree of smoothing kernel spline

Definition at line 651 of file sll_m_particle_mesh_coupling_spline_2d_feec.F90.

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