10 #include "sll_working_precision.h" 
   24      sll_int32              :: no_weights = 1 
 
   35      procedure(
empty), 
deferred                 :: reset
 
   36      procedure(
empty), 
deferred                 :: solve
 
   43      procedure(
empty), 
deferred                 :: free
 
   60        sll_real64,                
intent( in )    :: position(self%dim) 
 
   61        sll_real64,                
intent( in )    :: marker_charge 
 
   71        sll_real64,                
intent( in )    :: position(self%dim) 
 
   72        sll_real64,                
intent( out)    :: func_value 
 
   82        sll_real64,                
intent( in )    :: position(self%dim) 
 
   83        sll_int32,                 
intent( in )    :: components(:) 
 
   84        sll_real64,                
intent( out)    :: func_value(:) 
 
  104        sll_int32,                 
intent( in ) :: component 
 
  127        sll_real64,                 
intent( in )    :: factor_present 
 
  128        sll_real64,                 
intent( in )    :: factor_analytic 
 
  139     sll_int32,                 
intent( in )    :: n_part 
 
  140     sll_real64,                
intent( in )    :: position(self%dim, n_part) 
 
  141     sll_real64,                
intent( in )    :: marker_charge(n_part) 
 
  146     do i_part = 1, n_part
 
  147        call self%add_charge_single( position(:,i_part), marker_charge(i_part))
 
  157     sll_real64,                
intent( in )    :: position(:, :) 
 
  158     sll_int32,                 
intent( in )    :: n_part 
 
  159     sll_real64,                
intent( out)    :: func_value(n_part) 
 
  164     do i_part = 1, n_part
 
  165        call self%evaluate_rho_single&
 
  166             (position(:, i_part), func_value(i_part))
 
  176     sll_real64,                
intent( in )    :: position(:,:) 
 
  177     sll_int32,                 
intent( in )    :: n_part 
 
  178     sll_real64,                
intent( out)    :: func_value(n_part) 
 
  183     do i_part = 1, n_part
 
  184        call self%evaluate_phi_single&
 
  185             (position(:, i_part), func_value(i_part))
 
  195     sll_real64,                
intent( in )    :: position(:,:) 
 
  196     sll_int32,                 
intent( in )    :: n_part 
 
  197     sll_int32,                 
intent( in )    :: components(:) 
 
  198     sll_real64,                
intent( out)    :: func_value(:,:) 
 
  203     do i_part = 1, n_part
 
  204        call self%evaluate_field_single&
 
  205             (position(:, i_part), components, func_value(:,i_part))
 
Base class for Poisson solver for particle methods.
subroutine add_charge_vector(self, n_part, position, marker_charge)
subroutine evaluate_rho_vector(self, position, n_part, func_value)
subroutine solve_fields(self)
Just compute the efield, by default it calls the combined procedure solve.
subroutine evaluate_field_vector(self, position, n_part, components, func_value)
subroutine evaluate_phi_vector(self, position, n_part, func_value)
subroutine solve_phi(self)
Just compute phi, by default it calls the combined procedure solve.
Module interface to solve Poisson equation in 2D.
Module to select the kind parameter.
Basic type of Poisson solver for PIC simulations.