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