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_3d_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_3d_feec
 Particle mesh coupling in 3d based on (arbitrary degree) spline on a tensor product uniform mesh. More...
 
type  vector
 Evaluates the integral int_{poisition_old}^{position_new} field(x) d x and the integrated current. More...
 

Functions/Subroutines

subroutine add_charge_single_spline_3d_feec (self, position, marker_charge, degree, rho_dofs)
 Add charge of one particle. More...
 
subroutine add_charge_single_spline_pp_3d_feec (self, position, marker_charge, degree, rho_dofs)
 Add charge of one particle. More...
 
subroutine add_particle_mass_spline_3d_feec (self, position, marker_charge, degree, particle_mass)
 Add charge of one particle. More...
 
subroutine add_particle_mass_od_spline_3d_feec (self, position, marker_charge, degree1, degree2, particle_mass)
 Add charge of one particle. More...
 
subroutine evaluate_field_single_spline_3d_feec (self, position, degree, field_dofs, field_value)
 Evaluate field at at position position. More...
 
subroutine evaluate_field_single_spline_pp_3d_feec (self, position, degree, field_dofs_pp, field_value)
 Evaluate field at at position position. More...
 
subroutine evaluate_multiple_spline_3d_feec (self, position, components, field_dofs, field_value)
 Evaluate several fields at position position. More...
 
pure integer(kind=i32) function convert_index_3d_to_1d (index3d, n_cells)
 Convert 3d index to 1d index (first dimension without stride) More...
 
subroutine convert_x_to_xbox (self, position, xi, box)
 Identify the box in which the particle is located and its normalized position within the box. More...
 
subroutine convert_x_to_xbox_1d (self, component, position, xi, box)
 Identify the box in which the particle is located and its normalized position within the box (only along the dimension component) More...
 
subroutine box_index (self, box, comp)
 Sets the index of the splines that are involved in computations that concern splines from index box. More...
 
subroutine add_current_evaluate (self, position_old, position_new, xdot, efield_dofs, j_dofs, efield_val)
 Add current via line integral and evaluate spline. More...
 
subroutine point_add_eval (self, box_in, xbox, field_dofs, weight, j_dofs, field_value)
 Helper function for add_current_evaluate that takes care of the per-cell computations. More...
 
subroutine add_current_3d (self, position_old, position_new, xdot, j_dofs)
 Add current via line integral (when x changes along all three directions) More...
 
subroutine integrate_spline_3d (self, box_in, xbox, weight, j_dofs)
 Helper function for add_current_3d, takes care of the per box computations. More...
 
subroutine add_current_spline_3d_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_3d_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), version based on primitive function. More...
 
subroutine add_current_update_v_primitive_component2_spline_3d_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_p2 part in Hamiltonian splitting), version based on primitive function. More...
 
subroutine add_current_update_v_primitive_component3_spline_3d_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_p3 part in Hamiltonian splitting), version based on primitive function. More...
 
subroutine add_current_update_v_component1_spline_3d_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), version based on quadrature. More...
 
subroutine add_current_update_v_component2_spline_3d_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_p2 part in Hamiltonian splitting), version based on quadrature. More...
 
subroutine add_current_update_v_component3_spline_3d_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_p3 part in Hamiltonian splitting), version based on quadrature. More...
 
subroutine add_current_1d (self, component, r_old, index_old, r_new, index_new, marker_charge, bfield_dofs, start1, start2, stride, vi, j_dofs)
 Add current for one particle and update v (according to H_p1 part in Hamiltonian splitting) More...
 
subroutine update_jv (self, component, lower, upper, index, marker_charge, sign, bfield_dofs, start1, start2, stride, vi, j_dofs)
 Helper function for add_current_update_v. More...
 
subroutine init_spline_3d_feec (self, n_cells, domain, spline_degree, no_particles)
 Constructor. More...
 
subroutine free_spline_3d_feec (self)
 Destructor. More...
 
subroutine add_current_evaluate_int (self, position_old, position_new, vbar, bfield_dofs, j_dofs, bfield_val)
 Evaluates the integral int_{poisition_old}^{position_new} field(x) d x and the integrated current. More...
 
subroutine point_add_eval_subcyc (self, box_in, xbox, field_dofs, weight, j_dofs, field_value)
 Helper function for add_current_evaluate_int, takes care of per cell computations. More...
 

Function/Subroutine Documentation

◆ add_charge_single_spline_3d_feec()

subroutine sll_m_particle_mesh_coupling_spline_3d_feec::add_charge_single_spline_3d_feec ( class( sll_t_particle_mesh_coupling_spline_3d_feec ), intent(inout)  self,
real(kind=f64), dimension(3), intent(in)  position,
real(kind=f64), intent(in)  marker_charge,
integer(kind=i32), dimension(3), intent(in)  degree,
real(kind=f64), dimension(:), intent(inout)  rho_dofs 
)
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]rho_dofsCoefficient vector of the charge distribution

Definition at line 100 of file sll_m_particle_mesh_coupling_spline_3d_feec.F90.

Here is the call graph for this function:

◆ add_charge_single_spline_pp_3d_feec()

subroutine sll_m_particle_mesh_coupling_spline_3d_feec::add_charge_single_spline_pp_3d_feec ( class( sll_t_particle_mesh_coupling_spline_3d_feec ), intent(inout)  self,
real(kind=f64), dimension(3), intent(in)  position,
real(kind=f64), intent(in)  marker_charge,
integer(kind=i32), dimension(3), intent(in)  degree,
real(kind=f64), dimension(self%n_total), intent(inout)  rho_dofs 
)
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]rho_dofsCoefficient vector of the charge distribution

Definition at line 154 of file sll_m_particle_mesh_coupling_spline_3d_feec.F90.

Here is the call graph for this function:

◆ add_current_1d()

subroutine sll_m_particle_mesh_coupling_spline_3d_feec::add_current_1d ( class(sll_t_particle_mesh_coupling_spline_3d_feec), intent(inout)  self,
integer(kind=i32), intent(in)  component,
real(kind=f64), intent(in)  r_old,
integer(kind=i32), intent(in)  index_old,
real(kind=f64), intent(in)  r_new,
integer(kind=i32), intent(in)  index_new,
real(kind=f64), intent(in)  marker_charge,
real(kind=f64), dimension(self%n_total*3), intent(in)  bfield_dofs,
integer(kind=i32), intent(in)  start1,
integer(kind=i32), intent(in)  start2,
integer(kind=i32), intent(in)  stride,
real(kind=f64), dimension(2), intent(inout)  vi,
real(kind=f64), dimension(self%n_total), 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]marker_chargeParticle weight time charge
[in]bfield_dofsCoefficient of B-field expansion
[in]start1Index where B-field component starts that updates vi(1)
[in]start2Index where B-field component starts that updates vi(2)
[in]strideStride for index of B-field
[in,out]viVelocity of the particles to be updated
[in,out]j_dofsCoefficients of current expansion

Definition at line 1551 of file sll_m_particle_mesh_coupling_spline_3d_feec.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ add_current_3d()

subroutine sll_m_particle_mesh_coupling_spline_3d_feec::add_current_3d ( class( sll_t_particle_mesh_coupling_spline_3d_feec ), intent(inout)  self,
real(kind=f64), dimension(3), intent(in)  position_old,
real(kind=f64), dimension(3), intent(in)  position_new,
real(kind=f64), dimension(3), intent(in)  xdot,
real(kind=f64), dimension(:), intent(inout)  j_dofs 
)
private

Add current via line integral (when x changes along all three directions)

Parameters
[in,out]selfkernel smoother object
[in]position_oldPosition of the particle
[in]position_newPosition of the particle
[in]xdotvelocity
[in,out]j_dofscurrent dofs

Definition at line 665 of file sll_m_particle_mesh_coupling_spline_3d_feec.F90.

Here is the call graph for this function:

◆ add_current_evaluate()

subroutine sll_m_particle_mesh_coupling_spline_3d_feec::add_current_evaluate ( class( sll_t_particle_mesh_coupling_spline_3d_feec ), intent(inout)  self,
real(kind=f64), dimension(3), intent(in)  position_old,
real(kind=f64), dimension(3), intent(in)  position_new,
real(kind=f64), dimension(3), intent(in)  xdot,
real(kind=f64), dimension(:), intent(in)  efield_dofs,
real(kind=f64), dimension(:), intent(inout)  j_dofs,
real(kind=f64), dimension(3), intent(out)  efield_val 
)
private

Add current via line integral and evaluate spline.

Parameters
[in,out]selfkernel smoother object
[in]position_oldPosition of the particle
[in]position_newPosition of the particle
[in]xdotvelocity
[in]efield_dofselectric field dofs
[in,out]j_dofscurrent dofs
[out]efield_valelectric field value

Definition at line 487 of file sll_m_particle_mesh_coupling_spline_3d_feec.F90.

Here is the call graph for this function:

◆ add_current_evaluate_int()

subroutine sll_m_particle_mesh_coupling_spline_3d_feec::add_current_evaluate_int ( class( sll_t_particle_mesh_coupling_spline_3d_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), dimension(3), intent(in)  vbar,
real(kind=f64), dimension(:), intent(in)  bfield_dofs,
real(kind=f64), dimension(:), intent(inout)  j_dofs,
real(kind=f64), dimension(3), intent(out)  bfield_val 
)
private

Evaluates the integral int_{poisition_old}^{position_new} field(x) d x and the integrated current.

Parameters
[in,out]selfkernel smoother object
[in]position_oldPosition of the particle
[in]position_newPosition of the particle

Definition at line 1759 of file sll_m_particle_mesh_coupling_spline_3d_feec.F90.

Here is the call graph for this function:

◆ add_current_spline_3d_feec()

subroutine sll_m_particle_mesh_coupling_spline_3d_feec::add_current_spline_3d_feec ( class(sll_t_particle_mesh_coupling_spline_3d_feec), intent(inout)  self,
real(kind=f64), dimension(3), intent(in)  position_old,
real(kind=f64), dimension(3), intent(in)  position_new,
real(kind=f64), intent(in)  marker_charge,
real(kind=f64), intent(in)  qoverm,
real(kind=f64), dimension(self%n_total*3), intent(in)  bfield_dofs,
real(kind=f64), dimension(:), intent(inout)  vi,
real(kind=f64), dimension(self%n_total), 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 825 of file sll_m_particle_mesh_coupling_spline_3d_feec.F90.

Here is the call graph for this function:

◆ add_current_update_v_component1_spline_3d_feec()

subroutine sll_m_particle_mesh_coupling_spline_3d_feec::add_current_update_v_component1_spline_3d_feec ( class(sll_t_particle_mesh_coupling_spline_3d_feec), intent(inout)  self,
real(kind=f64), dimension(3), 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(:), intent(in)  bfield_dofs,
real(kind=f64), dimension(3), intent(inout)  vi,
real(kind=f64), dimension(:), intent(inout)  j_dofs 
)
private

Add current for one particle and update v (according to H_p1 part in Hamiltonian splitting), version based on quadrature.

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 1271 of file sll_m_particle_mesh_coupling_spline_3d_feec.F90.

Here is the call graph for this function:

◆ add_current_update_v_component2_spline_3d_feec()

subroutine sll_m_particle_mesh_coupling_spline_3d_feec::add_current_update_v_component2_spline_3d_feec ( class(sll_t_particle_mesh_coupling_spline_3d_feec), intent(inout)  self,
real(kind=f64), dimension(3), 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(:), intent(in)  bfield_dofs,
real(kind=f64), dimension(3), intent(inout)  vi,
real(kind=f64), dimension(:), intent(inout)  j_dofs 
)
private

Add current for one particle and update v (according to H_p2 part in Hamiltonian splitting), version based on quadrature.

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 1364 of file sll_m_particle_mesh_coupling_spline_3d_feec.F90.

Here is the call graph for this function:

◆ add_current_update_v_component3_spline_3d_feec()

subroutine sll_m_particle_mesh_coupling_spline_3d_feec::add_current_update_v_component3_spline_3d_feec ( class(sll_t_particle_mesh_coupling_spline_3d_feec), intent(inout)  self,
real(kind=f64), dimension(3), 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(:), intent(in)  bfield_dofs,
real(kind=f64), dimension(3), intent(inout)  vi,
real(kind=f64), dimension(:), intent(inout)  j_dofs 
)
private

Add current for one particle and update v (according to H_p3 part in Hamiltonian splitting), version based on quadrature.

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 1461 of file sll_m_particle_mesh_coupling_spline_3d_feec.F90.

Here is the call graph for this function:

◆ add_current_update_v_primitive_component1_spline_3d_feec()

subroutine sll_m_particle_mesh_coupling_spline_3d_feec::add_current_update_v_primitive_component1_spline_3d_feec ( class(sll_t_particle_mesh_coupling_spline_3d_feec), intent(inout)  self,
real(kind=f64), dimension(3), 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(:), intent(in)  bfield_dofs,
real(kind=f64), dimension(3), intent(inout)  vi,
real(kind=f64), dimension(:), intent(inout)  j_dofs 
)
private

Add current for one particle and update v (according to H_p1 part in Hamiltonian splitting), version based on primitive function.

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 905 of file sll_m_particle_mesh_coupling_spline_3d_feec.F90.

Here is the call graph for this function:

◆ add_current_update_v_primitive_component2_spline_3d_feec()

subroutine sll_m_particle_mesh_coupling_spline_3d_feec::add_current_update_v_primitive_component2_spline_3d_feec ( class(sll_t_particle_mesh_coupling_spline_3d_feec), intent(inout)  self,
real(kind=f64), dimension(3), 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(:), intent(in)  bfield_dofs,
real(kind=f64), dimension(3), intent(inout)  vi,
real(kind=f64), dimension(:), intent(inout)  j_dofs 
)
private

Add current for one particle and update v (according to H_p2 part in Hamiltonian splitting), version based on primitive function.

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 1029 of file sll_m_particle_mesh_coupling_spline_3d_feec.F90.

Here is the call graph for this function:

◆ add_current_update_v_primitive_component3_spline_3d_feec()

subroutine sll_m_particle_mesh_coupling_spline_3d_feec::add_current_update_v_primitive_component3_spline_3d_feec ( class(sll_t_particle_mesh_coupling_spline_3d_feec), intent(inout)  self,
real(kind=f64), dimension(3), 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(:), intent(in)  bfield_dofs,
real(kind=f64), dimension(3), intent(inout)  vi,
real(kind=f64), dimension(:), intent(inout)  j_dofs 
)
private

Add current for one particle and update v (according to H_p3 part in Hamiltonian splitting), version based on primitive function.

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 1151 of file sll_m_particle_mesh_coupling_spline_3d_feec.F90.

Here is the call graph for this function:

◆ add_particle_mass_od_spline_3d_feec()

subroutine sll_m_particle_mesh_coupling_spline_3d_feec::add_particle_mass_od_spline_3d_feec ( class( sll_t_particle_mesh_coupling_spline_3d_feec ), intent(inout)  self,
real(kind=f64), dimension(3), intent(in)  position,
real(kind=f64), intent(in)  marker_charge,
integer(kind=i32), dimension(3), intent(in)  degree1,
integer(kind=i32), dimension(3), intent(in)  degree2,
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]degree2Spline degree along each dimension
[in,out]particle_massCoefficient vector of the charge distribution

Definition at line 277 of file sll_m_particle_mesh_coupling_spline_3d_feec.F90.

Here is the call graph for this function:

◆ add_particle_mass_spline_3d_feec()

subroutine sll_m_particle_mesh_coupling_spline_3d_feec::add_particle_mass_spline_3d_feec ( class( sll_t_particle_mesh_coupling_spline_3d_feec ), intent(inout)  self,
real(kind=f64), dimension(3), intent(in)  position,
real(kind=f64), intent(in)  marker_charge,
integer(kind=i32), dimension(3), 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 207 of file sll_m_particle_mesh_coupling_spline_3d_feec.F90.

Here is the call graph for this function:

◆ box_index()

subroutine sll_m_particle_mesh_coupling_spline_3d_feec::box_index ( class(sll_t_particle_mesh_coupling_spline_3d_feec), intent(inout)  self,
integer(kind=i32), intent(in)  box,
integer(kind=i32), intent(in)  comp 
)
private

Sets the index of the splines that are involved in computations that concern splines from index box.

Parameters
[in,out]selfkernel smoother object

Definition at line 473 of file sll_m_particle_mesh_coupling_spline_3d_feec.F90.

Here is the caller graph for this function:

◆ convert_index_3d_to_1d()

pure integer(kind=i32) function sll_m_particle_mesh_coupling_spline_3d_feec::convert_index_3d_to_1d ( integer(kind=i32), dimension(3), intent(in)  index3d,
integer(kind=i32), dimension(3), intent(in)  n_cells 
)
private

Convert 3d index to 1d index (first dimension without stride)

Definition at line 435 of file sll_m_particle_mesh_coupling_spline_3d_feec.F90.

Here is the caller graph for this function:

◆ convert_x_to_xbox()

subroutine sll_m_particle_mesh_coupling_spline_3d_feec::convert_x_to_xbox ( class( sll_t_particle_mesh_coupling_spline_3d_feec ), intent(inout)  self,
real(kind=f64), dimension(3), intent(in)  position,
real(kind=f64), dimension(3), intent(out)  xi,
integer(kind=i32), dimension(3), intent(out)  box 
)
private

Identify the box in which the particle is located and its normalized position within the box.

Parameters
[in,out]selfkernel smoother object
[in]positionPosition of the particle
[out]xiPosition of the particle
[out]boxPosition of the particle

Definition at line 445 of file sll_m_particle_mesh_coupling_spline_3d_feec.F90.

Here is the caller graph for this function:

◆ convert_x_to_xbox_1d()

subroutine sll_m_particle_mesh_coupling_spline_3d_feec::convert_x_to_xbox_1d ( class( sll_t_particle_mesh_coupling_spline_3d_feec ), intent(inout)  self,
integer(kind=i32), intent(in)  component,
real(kind=f64), intent(in)  position,
real(kind=f64), intent(out)  xi,
integer(kind=i32), intent(out)  box 
)
private

Identify the box in which the particle is located and its normalized position within the box (only along the dimension component)

Parameters
[in,out]selfkernel smoother object
[in]componentdirection along which the position is given
[in]positionPosition of the particle
[out]xiPosition of the particle
[out]boxPosition of the particle

Definition at line 458 of file sll_m_particle_mesh_coupling_spline_3d_feec.F90.

Here is the caller graph for this function:

◆ evaluate_field_single_spline_3d_feec()

subroutine sll_m_particle_mesh_coupling_spline_3d_feec::evaluate_field_single_spline_3d_feec ( class (sll_t_particle_mesh_coupling_spline_3d_feec), intent(inout)  self,
real(kind=f64), dimension(3), intent(in)  position,
integer(kind=i32), dimension(3), intent(in)  degree,
real(kind=f64), dimension(:), 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 fields at given position

Definition at line 355 of file sll_m_particle_mesh_coupling_spline_3d_feec.F90.

Here is the call graph for this function:

◆ evaluate_field_single_spline_pp_3d_feec()

subroutine sll_m_particle_mesh_coupling_spline_3d_feec::evaluate_field_single_spline_pp_3d_feec ( class (sll_t_particle_mesh_coupling_spline_3d_feec), intent(inout)  self,
real(kind=f64), dimension(3), intent(in)  position,
integer(kind=i32), dimension(3), 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 fields at given position

Definition at line 403 of file sll_m_particle_mesh_coupling_spline_3d_feec.F90.

Here is the call graph for this function:

◆ evaluate_multiple_spline_3d_feec()

subroutine sll_m_particle_mesh_coupling_spline_3d_feec::evaluate_multiple_spline_3d_feec ( class (sll_t_particle_mesh_coupling_spline_3d_feec), intent(inout)  self,
real(kind=f64), dimension(3), 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 423 of file sll_m_particle_mesh_coupling_spline_3d_feec.F90.

◆ free_spline_3d_feec()

subroutine sll_m_particle_mesh_coupling_spline_3d_feec::free_spline_3d_feec ( class (sll_t_particle_mesh_coupling_spline_3d_feec), intent(inout)  self)
private

Destructor.

Parameters
[in,out]selfKernel smoother object

Definition at line 1730 of file sll_m_particle_mesh_coupling_spline_3d_feec.F90.

Here is the call graph for this function:

◆ init_spline_3d_feec()

subroutine sll_m_particle_mesh_coupling_spline_3d_feec::init_spline_3d_feec ( class (sll_t_particle_mesh_coupling_spline_3d_feec), intent(out)  self,
integer(kind=i32), dimension(3), intent(in)  n_cells,
real(kind=f64), dimension(3,2), intent(in)  domain,
integer(kind=i32), dimension(3), intent(in)  spline_degree,
integer(kind=i32), intent(in), optional  no_particles 
)
private

Constructor.

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

Definition at line 1658 of file sll_m_particle_mesh_coupling_spline_3d_feec.F90.

Here is the call graph for this function:

◆ integrate_spline_3d()

subroutine sll_m_particle_mesh_coupling_spline_3d_feec::integrate_spline_3d ( class( sll_t_particle_mesh_coupling_spline_3d_feec ), intent(inout)  self,
integer(kind=i32), dimension(3), intent(in)  box_in,
real(kind=f64), dimension(3), intent(in)  xbox,
real(kind=f64), dimension(3), intent(in)  weight,
real(kind=f64), dimension(:), intent(inout)  j_dofs 
)
private

Helper function for add_current_3d, takes care of the per box computations.

Parameters
[in,out]selfkernel smoother object

Definition at line 748 of file sll_m_particle_mesh_coupling_spline_3d_feec.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ point_add_eval()

subroutine sll_m_particle_mesh_coupling_spline_3d_feec::point_add_eval ( class( sll_t_particle_mesh_coupling_spline_3d_feec ), intent(inout)  self,
integer(kind=i32), dimension(3), intent(in)  box_in,
real(kind=f64), dimension(3), intent(in)  xbox,
real(kind=f64), dimension(:), intent(in)  field_dofs,
real(kind=f64), dimension(3), intent(in)  weight,
real(kind=f64), dimension(:), intent(inout)  j_dofs,
real(kind=f64), dimension(3), intent(out)  field_value 
)
private

Helper function for add_current_evaluate that takes care of the per-cell computations.

Parameters
[in,out]selfkernel smoother object

Definition at line 575 of file sll_m_particle_mesh_coupling_spline_3d_feec.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ point_add_eval_subcyc()

subroutine sll_m_particle_mesh_coupling_spline_3d_feec::point_add_eval_subcyc ( class( sll_t_particle_mesh_coupling_spline_3d_feec ), intent(inout)  self,
integer(kind=i32), dimension(3), intent(in)  box_in,
real(kind=f64), dimension(3), intent(in)  xbox,
real(kind=f64), dimension(:), intent(in)  field_dofs,
real(kind=f64), dimension(3), intent(in)  weight,
real(kind=f64), dimension(:), intent(inout)  j_dofs,
real(kind=f64), dimension(3), intent(out)  field_value 
)
private

Helper function for add_current_evaluate_int, takes care of per cell computations.

Parameters
[in,out]selfkernel smoother object

Definition at line 1848 of file sll_m_particle_mesh_coupling_spline_3d_feec.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ update_jv()

subroutine sll_m_particle_mesh_coupling_spline_3d_feec::update_jv ( class(sll_t_particle_mesh_coupling_spline_3d_feec), intent(inout)  self,
integer(kind=i32), intent(in)  component,
real(kind=f64), intent(in)  lower,
real(kind=f64), intent(in)  upper,
integer(kind=i32), intent(in)  index,
real(kind=f64), intent(in)  marker_charge,
real(kind=f64), intent(in)  sign,
real(kind=f64), dimension(self%n_total*3), intent(in)  bfield_dofs,
integer(kind=i32), intent(in)  start1,
integer(kind=i32), intent(in)  start2,
integer(kind=i32), intent(in)  stride,
real(kind=f64), dimension(2), intent(inout)  vi,
real(kind=f64), dimension(self%n_total), intent(inout)  j_dofs 
)
private

Helper function for add_current_update_v.

Parameters
[in,out]selftime splitting object

Definition at line 1604 of file sll_m_particle_mesh_coupling_spline_3d_feec.F90.

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