matvecs.f90 Source File


Source Code

submodule(specialmatrices_diagonal) diagonal_matvecs
   implicit none(type, external)
contains
   module procedure spmv
   ! Utility function to compute the matrix-vector product.
   integer(ilp) :: i
   allocate (y, mold=x)
   do concurrent(i=1:size(x))
      y(i) = A%dv(i)*x(i)
   end do
   end procedure

   module procedure spmvs
   ! Utility function to compute multiple matrix-vector products.
   integer(ilp) :: i, j
   allocate (y, mold=x)
   do concurrent(i=1:size(x, 1), j=1:size(x, 2))
      y(i, j) = A%dv(i)*x(i, j)
   end do
   end procedure
end submodule