8 #include "sll_working_precision.h"
28 sll_real64 :: delta_x(3)
29 sll_real64 :: domain(3,2)
31 sll_int32 :: spline_degree(3)
32 sll_int32 :: n_cells(3)
33 sll_int32 :: n_dofs(3)
47 procedure(
add_update),
deferred :: add_current_update_v_component1
48 procedure(
add_update),
deferred :: add_current_update_v_component2
49 procedure(
add_update),
deferred :: add_current_update_v_component3
50 procedure(
empty),
deferred :: free
57 subroutine add_single(self, position, marker_charge, degree, rho_dofs)
61 sll_real64,
intent( in ) :: position(3)
62 sll_real64,
intent( in ) :: marker_charge
63 sll_int32,
intent( in ) :: degree(3)
64 sll_real64,
intent( inout ) :: rho_dofs(:)
71 subroutine add_array(self, position, marker_charge, degree, particle_mass )
75 sll_real64,
intent( in ) :: position(3)
76 sll_real64,
intent( in ) :: marker_charge
77 sll_int32,
intent( in ) :: degree(3)
78 sll_real64,
intent( inout ) :: particle_mass(:, :)
85 subroutine add_array_mixed(self, position, marker_charge, degree1, degree2, particle_mass )
89 sll_real64,
intent( in ) :: position(3)
90 sll_real64,
intent( in ) :: marker_charge
91 sll_int32,
intent( in ) :: degree1(3), degree2(3)
92 sll_real64,
intent( inout ) :: particle_mass(:, :)
99 subroutine eval_single(self, position, degree, field_dofs, field_value)
103 sll_real64,
intent( in ) :: position(3)
104 sll_int32 ,
intent( in ) :: degree(3)
105 sll_real64,
intent( in ) :: field_dofs(:)
106 sll_real64,
intent( out ) :: field_value
112 subroutine eval_multiple(self, position, components, field_dofs, field_value)
116 sll_real64,
intent( in ) :: position(3)
117 sll_int32,
intent(in) :: components(:)
118 sll_real64,
intent( in ) :: field_dofs(:,:)
119 sll_real64,
intent(out) :: field_value(:)
125 subroutine add_current(self, position_old, position_new, xdot, j_dofs)
129 sll_real64,
intent( in ) :: position_old(3)
130 sll_real64,
intent( in ) :: position_new(3)
131 sll_real64,
intent( in ) :: xdot(3)
132 sll_real64,
intent( inout ) :: j_dofs(:)
143 sll_real64,
intent( in ) :: position_old(3)
144 sll_real64,
intent( in ) :: position_new(3)
145 sll_real64,
intent( in ) :: xdot(3)
146 sll_real64,
intent( in ) :: efield_dofs(:)
147 sll_real64,
intent( inout ) :: j_dofs(:)
148 sll_real64,
intent( out ) :: efield_val(3)
155 subroutine add_update (self, position_old, position_new, marker_charge, &
156 qoverm, bfield_dofs, vi, j_dofs)
160 sll_real64,
intent(in) :: position_old(3)
161 sll_real64,
intent(in) :: position_new
162 sll_real64,
intent(in) :: marker_charge
163 sll_real64,
intent(in) :: qoverm
164 sll_real64,
intent(in) :: bfield_dofs(:)
165 sll_real64,
intent(inout) :: vi(3)
166 sll_real64,
intent(inout) :: j_dofs(:)
Base class for kernel smoothers for accumulation and field evaluation in PIC.
integer(kind=i32), parameter sll_p_galerkin
integer(kind=i32), parameter sll_p_collocation
Module to select the kind parameter.
Basic type of a kernel smoother used for PIC simulations.
arbitrary degree 3d spline