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.