2 #include "sll_working_precision.h"
28 sll_int32,
intent( in ) :: degree
29 sll_int32,
intent( in ) :: n_dofs
34 allocate( self%particle_mass( 2*self%degree+1, self%n_dofs) )
35 self%particle_mass = 0._f64
36 self%n_rows = self%n_dofs
37 self%n_cols = self%n_dofs
39 self%n_global_rows = self%n_rows
40 self%n_global_cols = self%n_cols
47 deallocate( self%particle_mass )
54 sll_real64,
intent( in ) :: x(:)
55 sll_real64,
intent( out ) :: y(:)
63 do j = 1, i+self%degree
64 y(i) = y(i) + self%sign * self%particle_mass( ind, i) * x(j)
69 do i= self%degree+1, self%n_dofs-self%degree
72 do j = i-self%degree, i+self%degree
73 y(i) = y(i) + self%sign * self%particle_mass( ind, i) * x(j)
78 do i= self%n_dofs-self%degree+1, self%n_dofs
81 do j = i-self%degree, self%n_dofs
82 y(i) = y(i) + self%sign * self%particle_mass( ind, i) * x(j)
subroutine create_linear_operator_particle_mass_cl_1d(self, degree, n_dofs)
subroutine dot_particle_mass_cl_1d(self, x, y)
subroutine print_info_particle_mass_cl_1d(self)
subroutine free_particle_mass_cl_1d(self)