2 #include "sll_working_precision.h"
20 sll_int32 :: n_total0, n_total1
21 sll_real64 :: sign = 1.0_f64
40 self%particle_mass => particle_mass
41 self%maxwell_solver => maxwell_solver
43 self%n_total0 = maxwell_solver%n_total0
44 self%n_total1 = maxwell_solver%n_total1
46 self%n_rows = self%n_total0
47 self%n_cols = self%n_total0
49 self%n_global_rows = self%n_rows
50 self%n_global_cols = self%n_cols
57 self%maxwell_solver => null()
58 self%particle_mass => null()
65 sll_real64,
intent( in ) :: x(:)
66 sll_real64,
intent( out ) :: y(:)
69 sll_real64 :: f(self%n_total1+2*self%n_total0), g(self%n_total1+2*self%n_total0), z(self%n_total0)
71 call self%maxwell_solver%multiply_g( x, f )
72 call self%particle_mass%dot( f, g )
73 call self%maxwell_solver%multiply_gt( g, z )
74 call self%maxwell_solver%multiply_mass([0], x, y)
module for abstract linear operator
module for a block linear operator
subroutine create_linear_operator_schur_phiv_3d(self, maxwell_solver, particle_mass)
subroutine dot_schur_phiv_3d(self, x, y)
subroutine free_schur_phiv_3d(self)
subroutine print_info_schur_phiv_3d(self)
Module interface to solve Maxwell's equations in 3D.
class for abstract linear operator
class for a linear operator_block