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

Description

Kernel smoother for 2d with splines of arbitrary degree placed on a uniform mesh.

Author
Katharina Kormann, IPP

Spline with index i starts at point i

Derived types and interfaces

type  sll_t_particle_mesh_coupling_spline_smooth_1d
 Spline kernel smoother in1d. More...
 

Functions/Subroutines

subroutine add_charge_single_smoothened_spline_1d (self, position, marker_charge, rho_dofs)
 Evaluates the integral int_{poisition_old}^{position_new} field(x) d x. More...
 
subroutine add_current_update_v_smoothened_spline_1d (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 update_smoothened_single_spline_1d (self, position_normalized, box, marker_charge, qoverm, rho_dofs, bfield_dofs, vi)
 Integration over the prime function of the smoothing kernel S (for v update and j accumulation) More...
 
subroutine evaluate_int_prime_smoothened_single_spline_1d (self, position_normalized, box, field_dofs, field_int)
 Integration over the prime function of the smoothing kernel S (for evaluation only) More...
 
subroutine evaluate_int_simple_smoothened_spline_1d (self, lower, upper, index, sign, field_dofs, field_int)
 Helper function to evaluate the integrated efield in one interval (without smoothing kernel) (similar to update_jv). More...
 
subroutine evaluate_field_single_smoothened_spline_1d (self, position, field_dofs, field_value)
 Evaluate field with smoothing at at position position. More...
 
subroutine add_current_evaluate_smoothened_spline_1d (self, position_old, position_new, marker_charge, vbar, field_dofs, j_dofs, field)
 Add current for one particle and evaluate the field (according to iterative part in discrete gradient method) More...
 
subroutine evaluate_int_smoothened_spline_1d (self, position_old, position_new, vbar, field_dofs, field)
 Add current for one particle and evaluate the field (according to iterative part in discrete gradient method) More...
 
subroutine, public sll_s_new_particle_mesh_coupling_spline_smooth_1d_ptr (smoother, domain, n_cells, no_particles, spline_degree, smoothing_type)
 
subroutine, public sll_s_new_particle_mesh_coupling_spline_smooth_1d (smoother, domain, n_cells, no_particles, spline_degree, smoothing_type)
 
subroutine add_particle_mass_spline_smooth_1d (self, position, marker_charge, particle_mass)
 Add particle mass for one particle (upper triangular version) More...
 
subroutine add_particle_mass_full_spline_smooth_1d (self, position, marker_charge, particle_mass)
 Add particle mass for one particle (full matrix) WARNING: THIS FUNCTION SEEMS TO HAVE BUGS. More...
 
subroutine add_charge_box (self, position, rho_dofs)
 Add charge of one particle with smoothing. More...
 

Function/Subroutine Documentation

◆ add_charge_box()

subroutine sll_m_particle_mesh_coupling_spline_smooth_1d::add_charge_box ( class( sll_t_particle_mesh_coupling_spline_smooth_1d ), intent(inout)  self,
real(kind=f64), dimension(self%dim), intent(in)  position,
real(kind=f64), dimension(self%n_span+2), intent(inout)  rho_dofs 
)
private

Add charge of one particle with smoothing.

Parameters
[in,out]selfkernel smoother object
[in]positionPosition of the particle
[in,out]rho_dofsCoefficient vector of the charge distribution

Definition at line 734 of file sll_m_particle_mesh_coupling_spline_smooth_1d.F90.

Here is the caller graph for this function:

◆ add_charge_single_smoothened_spline_1d()

subroutine sll_m_particle_mesh_coupling_spline_smooth_1d::add_charge_single_smoothened_spline_1d ( class( sll_t_particle_mesh_coupling_spline_smooth_1d ), intent(inout)  self,
real(kind=f64), dimension(self%dim), intent(in)  position,
real(kind=f64), intent(in)  marker_charge,
real(kind=f64), dimension(self%n_dofs), intent(inout)  rho_dofs 
)
private

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

Add charge of one particle with smoothing

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

Definition at line 65 of file sll_m_particle_mesh_coupling_spline_smooth_1d.F90.

◆ add_current_evaluate_smoothened_spline_1d()

subroutine sll_m_particle_mesh_coupling_spline_smooth_1d::add_current_evaluate_smoothened_spline_1d ( class( sll_t_particle_mesh_coupling_spline_smooth_1d ), 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)  vbar,
real(kind=f64), dimension(self%n_dofs), intent(in)  field_dofs,
real(kind=f64), dimension(self%n_dofs), intent(inout)  j_dofs,
real(kind=f64), intent(out)  field 
)
private

Add current for one particle and evaluate the field (according to iterative part in discrete gradient method)

Parameters
[in,out]selfkernel smoother object
[in]position_oldPosition of the particle
[in]position_newPosition of the particle
[in]marker_chargeParticle weights time charge
[in]vbarParticle weights time charge
[in]field_dofsCoefficient vector of the current density
[in,out]j_dofsCoefficient vector of the current density

Definition at line 502 of file sll_m_particle_mesh_coupling_spline_smooth_1d.F90.

Here is the call graph for this function:

◆ add_current_update_v_smoothened_spline_1d()

subroutine sll_m_particle_mesh_coupling_spline_smooth_1d::add_current_update_v_smoothened_spline_1d ( class(sll_t_particle_mesh_coupling_spline_smooth_1d), 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(:), intent(in)  bfield_dofs,
real(kind=f64), dimension(:), 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)

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 140 of file sll_m_particle_mesh_coupling_spline_smooth_1d.F90.

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

◆ add_particle_mass_full_spline_smooth_1d()

subroutine sll_m_particle_mesh_coupling_spline_smooth_1d::add_particle_mass_full_spline_smooth_1d ( class( sll_t_particle_mesh_coupling_spline_smooth_1d ), intent(inout)  self,
real(kind=f64), dimension(self%dim), intent(in)  position,
real(kind=f64), intent(in)  marker_charge,
real(kind=f64), dimension(:,:), intent(inout)  particle_mass 
)
private

Add particle mass for one particle (full matrix) WARNING: THIS FUNCTION SEEMS TO HAVE BUGS.

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

Definition at line 693 of file sll_m_particle_mesh_coupling_spline_smooth_1d.F90.

Here is the call graph for this function:

◆ add_particle_mass_spline_smooth_1d()

subroutine sll_m_particle_mesh_coupling_spline_smooth_1d::add_particle_mass_spline_smooth_1d ( class( sll_t_particle_mesh_coupling_spline_smooth_1d ), intent(inout)  self,
real(kind=f64), dimension(self%dim), intent(in)  position,
real(kind=f64), intent(in)  marker_charge,
real(kind=f64), dimension(:,:), intent(inout)  particle_mass 
)
private

Add particle mass for one particle (upper triangular version)

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

Definition at line 655 of file sll_m_particle_mesh_coupling_spline_smooth_1d.F90.

Here is the call graph for this function:

◆ evaluate_field_single_smoothened_spline_1d()

subroutine sll_m_particle_mesh_coupling_spline_smooth_1d::evaluate_field_single_smoothened_spline_1d ( class (sll_t_particle_mesh_coupling_spline_smooth_1d), intent(inout)  self,
real(kind=f64), dimension(self%dim), intent(in)  position,
real(kind=f64), dimension(self%n_dofs), intent(in)  field_dofs,
real(kind=f64), intent(out)  field_value 
)
private

Evaluate field with smoothing at at position position.

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

Definition at line 441 of file sll_m_particle_mesh_coupling_spline_smooth_1d.F90.

◆ evaluate_int_prime_smoothened_single_spline_1d()

subroutine sll_m_particle_mesh_coupling_spline_smooth_1d::evaluate_int_prime_smoothened_single_spline_1d ( class( sll_t_particle_mesh_coupling_spline_smooth_1d ), intent(inout)  self,
real(kind=f64), dimension(self%dim), intent(in)  position_normalized,
integer(kind=i32), intent(in)  box,
real(kind=f64), dimension(self%n_dofs), intent(in)  field_dofs,
real(kind=f64), intent(inout)  field_int 
)
private

Integration over the prime function of the smoothing kernel S (for evaluation only)

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

Definition at line 321 of file sll_m_particle_mesh_coupling_spline_smooth_1d.F90.

Here is the caller graph for this function:

◆ evaluate_int_simple_smoothened_spline_1d()

subroutine sll_m_particle_mesh_coupling_spline_smooth_1d::evaluate_int_simple_smoothened_spline_1d ( class(sll_t_particle_mesh_coupling_spline_1d), intent(inout)  self,
real(kind=f64), intent(in)  lower,
real(kind=f64), intent(in)  upper,
integer(kind=i32), intent(in)  index,
real(kind=f64), intent(in)  sign,
real(kind=f64), dimension(self%n_dofs), intent(in)  field_dofs,
real(kind=f64), intent(inout)  field_int 
)
private

Helper function to evaluate the integrated efield in one interval (without smoothing kernel) (similar to update_jv).

Parameters
[in,out]selftime splitting object

Definition at line 396 of file sll_m_particle_mesh_coupling_spline_smooth_1d.F90.

Here is the caller graph for this function:

◆ evaluate_int_smoothened_spline_1d()

subroutine sll_m_particle_mesh_coupling_spline_smooth_1d::evaluate_int_smoothened_spline_1d ( class( sll_t_particle_mesh_coupling_spline_smooth_1d ), 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)  vbar,
real(kind=f64), dimension(self%n_dofs), intent(in)  field_dofs,
real(kind=f64), intent(out)  field 
)
private

Add current for one particle and evaluate the field (according to iterative part in discrete gradient method)

Parameters
[in,out]selfkernel smoother object
[in]position_oldPosition of the particle
[in]position_newPosition of the particle
[in]vbarParticle weights time charge
[in]field_dofsCoefficient vector of the current density

Definition at line 526 of file sll_m_particle_mesh_coupling_spline_smooth_1d.F90.

Here is the call graph for this function:

◆ sll_s_new_particle_mesh_coupling_spline_smooth_1d()

subroutine, public sll_m_particle_mesh_coupling_spline_smooth_1d::sll_s_new_particle_mesh_coupling_spline_smooth_1d ( class( sll_c_particle_mesh_coupling_1d), intent(out), allocatable  smoother,
real(kind=f64), dimension(2), intent(in)  domain,
integer(kind=i32), intent(in)  n_cells,
integer(kind=i32), intent(in)  no_particles,
integer(kind=i32), intent(in)  spline_degree,
integer(kind=i32), intent(in)  smoothing_type 
)
Parameters
[out]smootherkernel smoother object
[in]n_cellsnumber 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
[in]smoothing_typeDefine if Galerkin or collocation smoothing for right scaling in accumulation routines

Definition at line 632 of file sll_m_particle_mesh_coupling_spline_smooth_1d.F90.

◆ sll_s_new_particle_mesh_coupling_spline_smooth_1d_ptr()

subroutine, public sll_m_particle_mesh_coupling_spline_smooth_1d::sll_s_new_particle_mesh_coupling_spline_smooth_1d_ptr ( class( sll_c_particle_mesh_coupling_1d), intent(out), pointer  smoother,
real(kind=f64), dimension(2), intent(in)  domain,
integer(kind=i32), intent(in)  n_cells,
integer(kind=i32), intent(in)  no_particles,
integer(kind=i32), intent(in)  spline_degree,
integer(kind=i32), intent(in)  smoothing_type 
)
Parameters
[out]smootherkernel smoother object
[in]n_cellsnumber 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
[in]smoothing_typeDefine if Galerkin or collocation smoothing for right scaling in accumulation routines

Definition at line 608 of file sll_m_particle_mesh_coupling_spline_smooth_1d.F90.

◆ update_smoothened_single_spline_1d()

subroutine sll_m_particle_mesh_coupling_spline_smooth_1d::update_smoothened_single_spline_1d ( class( sll_t_particle_mesh_coupling_spline_smooth_1d ), intent(inout)  self,
real(kind=f64), dimension(self%dim), intent(in)  position_normalized,
integer(kind=i32), intent(in)  box,
real(kind=f64), intent(in)  marker_charge,
real(kind=f64), intent(in)  qoverm,
real(kind=f64), dimension(self%n_dofs), intent(inout)  rho_dofs,
real(kind=f64), dimension(self%n_dofs), intent(in)  bfield_dofs,
real(kind=f64), intent(inout)  vi 
)
private

Integration over the prime function of the smoothing kernel S (for v update and j accumulation)

Parameters
[in,out]selfkernel smoother object
[in]position_normalizedPosition of the particle
[in]marker_chargeParticle weights time charge
[in,out]rho_dofsCoefficient vector of the charge distribution

Definition at line 237 of file sll_m_particle_mesh_coupling_spline_smooth_1d.F90.

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