12 #include "sll_assert.h" 
   13 #include "sll_memory.h" 
   14 #include "sll_working_precision.h" 
   33      sll_real64, 
allocatable :: lumped_mass(:) 
 
   53     sll_real64  :: lumped_mass(:) 
 
   54     sll_int32, 
intent( in )  :: n_total 
 
   56     self%inverse_mass_fft => inverse_mass_fft
 
   57     self%n_total = n_total
 
   59     allocate( self%lumped_mass(n_total) )
 
   60     self%lumped_mass = lumped_mass
 
   66     sll_real64, 
intent(in   ) :: rhs(:) 
 
   67     sll_real64, 
intent(  out) :: unknown(:) 
 
   69     sll_real64 :: scratch(self%n_total)
 
   71     scratch = rhs*self%lumped_mass
 
   72     call self%inverse_mass_fft%solve( scratch, unknown )
 
   73     unknown = unknown*self%lumped_mass
 
   79     logical, 
intent( in ) :: verbose
 
   81     self%verbose = verbose
 
   91     character(len=*), 
intent( in ) :: filename
 
   99     self%inverse_mass_fft => null()
 
module for abstract linear solver
module for a block linear solver
Module interface to solve Maxwell's equations with coordinate transformation in 3D The linear systems...
subroutine set_verbose(self, verbose)
subroutine read_from_file(self, filename)
subroutine solve_3d_trafo(self, rhs, unknown)
subroutine free_3d_trafo(self)
subroutine print_info(self)
subroutine create_3d_trafo(self, inverse_mass_fft, lumped_mass, n_total)
class for abstract linear solver
class for a linear solver_block