Semi-Lagrangian Library
Modular library for kinetic and gyrokinetic simulations of plasmas in fusion energy devices.
|
Kernel smoother for 2d with splines of arbitrary degree placed on a uniform mesh.
Spline with index i starts at point i
Derived types and interfaces | |
type | sll_t_particle_mesh_coupling_spline_2d |
Spline kernel smoother in 2d. More... | |
Functions/Subroutines | |
subroutine | compute_shape_factor_spline_2d (self, position, indices) |
Helper function computing shape factor. More... | |
subroutine | add_charge_single_spline_pp_2d (self, position, marker_charge, rho_dofs) |
Add charge of single particle. More... | |
subroutine | add_charge_single_spline_2d (self, position, marker_charge, rho_dofs) |
Add charge of single particle. More... | |
subroutine | add_current_spline_2d (self, position_old, position_new, marker_charge, j_dofs) |
Add current with integration over x. More... | |
subroutine | add_current_evaluate_spline_2d (self, position_old, position_new, marker_charge, vbar, field_dofs, j_dofs, field) |
Add current with integration over x. More... | |
subroutine | add_current_update_v_spline_2d (self, position_old, position_new, marker_charge, qoverm, bfield_dofs, vi, j_dofs) |
Add current and update v for single particle. More... | |
subroutine | add_particle_mass_spline_2d (self, position, marker_charge, particle_mass) |
subroutine | add_current_update_v_spline_pp_2d (self, position_old, position_new, marker_charge, qoverm, bfield_dofs, vi, j_dofs) |
Add current and update v for single particle. More... | |
subroutine | evaluate_field_single_spline_pp_2d (self, position, field_dofs_pp, field_value) |
Evaluate field at at position position using horner scheme. More... | |
subroutine | evaluate_field_single_spline_2d (self, position, field_dofs, field_value) |
Evaluate field with given dofs at position position. More... | |
subroutine | evaluate_multiple_spline_2d (self, position, components, field_dofs, field_value) |
Evaluate multiple fields at position position. More... | |
subroutine | free_spline_2d (self) |
Destructor. More... | |
subroutine | init_spline_2d (self, domain, n_grid, no_particles, spline_degree, smoothing_type) |
subroutine, public | sll_s_new_particle_mesh_coupling_spline_2d_ptr (smoother, domain, n_grid, no_particles, spline_degree, smoothing_type) |
Constructor for abstract type (pointer) More... | |
subroutine, public | sll_s_new_particle_mesh_coupling_spline_2d (smoother, domain, n_grid, no_particles, spline_degree, smoothing_type) |
Constructor for abstract type (allocatable) More... | |
integer(kind=i32) function | index_1dto2d_column_major (self, index1d) |
|
private |
Add charge of single particle.
[in,out] | self | kernel smoother object |
[in] | position | Particle position |
[in] | marker_charge | Particle weight times charge |
[in,out] | rho_dofs | spline coefficient of accumulated density |
Definition at line 133 of file sll_m_particle_mesh_coupling_spline_2d.F90.
|
private |
Add charge of single particle.
[in,out] | self | kernel smoother object |
[in] | position | Particle position |
[in] | marker_charge | Particle weight times charge |
[in,out] | rho_dofs | spline coefficient of accumulated density |
Definition at line 99 of file sll_m_particle_mesh_coupling_spline_2d.F90.
|
private |
Add current with integration over x.
[in,out] | self | kernel smoother object |
[in] | position_old | Position of the particle |
[in] | position_new | Position of the particle |
[in] | marker_charge | Particle weight times charge |
[in] | vbar | Particle weights time charge |
[in] | field_dofs | Coefficient vector of the current density |
[in,out] | j_dofs | Coefficient vector of the charge distribution |
[out] | field | Efield |
Definition at line 176 of file sll_m_particle_mesh_coupling_spline_2d.F90.
|
private |
Add current with integration over x.
[in,out] | self | kernel smoother object |
[in] | position_old | Position of the particle |
[in] | position_new | Position of the particle |
[in] | marker_charge | Particle weights time charge |
[in,out] | j_dofs | Coefficient vector of the current density |
Definition at line 161 of file sll_m_particle_mesh_coupling_spline_2d.F90.
|
private |
Add current and update v for single particle.
[in,out] | self | kernel smoother object |
[in] | position_old | Position at time t |
[in] | position_new | Position at time t+\Delta t |
[in] | marker_charge | Particle weight time charge |
[in] | qoverm | Charge over mass ratio |
[in] | bfield_dofs | Coefficient of B-field expansion |
[in,out] | vi | Velocity of the particle |
[in,out] | j_dofs | Coefficient of current expansion |
Definition at line 192 of file sll_m_particle_mesh_coupling_spline_2d.F90.
|
private |
Add current and update v for single particle.
[in,out] | self | kernel smoother object |
[in] | position_old | Position at time t |
[in] | position_new | Position at time t+\Delta t |
[in] | marker_charge | Particle weight time charge |
[in] | qoverm | Charge over mass ratio |
[in] | bfield_dofs | Coefficient of B-field expansion |
[in,out] | vi | Velocity of the particle |
[in,out] | j_dofs | Coefficient of current expansion |
Definition at line 220 of file sll_m_particle_mesh_coupling_spline_2d.F90.
|
private |
[in,out] | self | Kernel smoother object |
[in] | position | Position of the particle |
[in] | marker_charge | Particle weight times charge |
[in,out] | particle_mass | Coefficient vector of the charge distribution |
Definition at line 207 of file sll_m_particle_mesh_coupling_spline_2d.F90.
|
private |
Helper function computing shape factor.
[in,out] | self | kernel smoother object |
Definition at line 76 of file sll_m_particle_mesh_coupling_spline_2d.F90.
|
private |
Evaluate field with given dofs at position position.
[in,out] | self | kernel smoother object |
[in] | position | Position where to evaluate |
[in] | field_dofs | Degrees of freedom in kernel representation. |
[out] | field_value | Value of the field |
Definition at line 300 of file sll_m_particle_mesh_coupling_spline_2d.F90.
|
private |
Evaluate field at at position position using horner scheme.
[in,out] | self | kernel smoother object |
[in] | position | Position where to evaluate |
[in] | field_dofs_pp | Degrees of freedom in kernel representation. |
[out] | field_value | Value of the field |
Definition at line 279 of file sll_m_particle_mesh_coupling_spline_2d.F90.
|
private |
Evaluate multiple fields at position position.
[in,out] | self | kernel smoother object |
[in] | position | Position where to evaluate |
[in] | components | Components of the field that shall be evaluated |
[in] | field_dofs | Degrees of freedom in kernel representation. |
[out] | field_value | Value of the field |
Definition at line 332 of file sll_m_particle_mesh_coupling_spline_2d.F90.
|
private |
Destructor.
[in,out] | self | Kernel smoother object |
Definition at line 365 of file sll_m_particle_mesh_coupling_spline_2d.F90.
|
private |
[in] | self | Kernel smoother object. |
[in,out] | index1d | 2d array with indices along each of the two directions (start counting with zero). |
Definition at line 464 of file sll_m_particle_mesh_coupling_spline_2d.F90.
|
private |
[in] | n_grid | no. of spline coefficients |
[in] | domain | lower and upper bounds of the domain |
[in] | no_particles | no. of particles |
[in] | spline_degree | Degree of smoothing kernel spline |
[in] | smoothing_type | Define if Galerkin or collocation smoothing for right scaling in accumulation routines |
Definition at line 377 of file sll_m_particle_mesh_coupling_spline_2d.F90.
subroutine, public sll_m_particle_mesh_coupling_spline_2d::sll_s_new_particle_mesh_coupling_spline_2d | ( | class( sll_c_particle_mesh_coupling_1d), intent(out), allocatable | smoother, |
real(kind=f64), dimension(2,2), intent(in) | domain, | ||
integer(kind=i32), dimension(2), intent(in) | n_grid, | ||
integer(kind=i32), intent(in) | no_particles, | ||
integer(kind=i32), intent(in) | spline_degree, | ||
integer(kind=i32), intent(in) | smoothing_type | ||
) |
Constructor for abstract type (allocatable)
[out] | smoother | kernel smoother object |
[in] | n_grid | no. of spline coefficients |
[in] | domain | lower and upper bounds of the domain |
[in] | no_particles | no. of particles |
[in] | spline_degree | Degree of smoothing kernel spline |
[in] | smoothing_type | Define if Galerkin or collocation smoothing for right scaling in accumulation routines |
Definition at line 442 of file sll_m_particle_mesh_coupling_spline_2d.F90.
subroutine, public sll_m_particle_mesh_coupling_spline_2d::sll_s_new_particle_mesh_coupling_spline_2d_ptr | ( | class( sll_c_particle_mesh_coupling_1d), intent(out), pointer | smoother, |
real(kind=f64), dimension(2,2), intent(in) | domain, | ||
integer(kind=i32), dimension(2), intent(in) | n_grid, | ||
integer(kind=i32), intent(in) | no_particles, | ||
integer(kind=i32), intent(in) | spline_degree, | ||
integer(kind=i32), intent(in) | smoothing_type | ||
) |
Constructor for abstract type (pointer)
[in] | n_grid | no. of spline coefficients |
[in] | domain | lower and upper bounds of the domain |
[in] | no_particles | no. of particles |
[in] | spline_degree | Degree of smoothing kernel spline |
[in] | smoothing_type | Define if Galerkin or collocation smoothing for right scaling in accumulation routines |
Definition at line 421 of file sll_m_particle_mesh_coupling_spline_2d.F90.