xref: /petsc/src/mat/impls/aij/seq/crl/ftn-kernels/fmultcrl.F90 (revision c96caacc6f00ba95b366aeae86152d44f6880d6b)
1*c96caaccSSatish Balay!
2*c96caaccSSatish Balay!
3*c96caaccSSatish Balay!    Fortran kernel for sparse matrix-vector product in the AIJ/CRL format
4*c96caaccSSatish Balay!
5*c96caaccSSatish Balay#include <petsc/finclude/petscsys.h>
6*c96caaccSSatish Balay!
7*c96caaccSSatish Balay      subroutine FortranMultCRL(m,rmax,x,y,icols,acols)
8*c96caaccSSatish Balay      implicit none
9*c96caaccSSatish Balay      PetscInt m,rmax,icols(m,rmax)
10*c96caaccSSatish Balay      PetscScalar x(0:m-1),y(m)
11*c96caaccSSatish Balay      PetscScalar acols(m,rmax)
12*c96caaccSSatish Balay
13*c96caaccSSatish Balay      PetscInt    i,j
14*c96caaccSSatish Balay
15*c96caaccSSatish Balay      do 5 j=1,m
16*c96caaccSSatish Balay          y(j) = acols(j,1)*x(icols(j,1))
17*c96caaccSSatish Balay 5    continue
18*c96caaccSSatish Balay
19*c96caaccSSatish Balay      do 10,i=2,rmax
20*c96caaccSSatish Balay        do 20 j=1,m
21*c96caaccSSatish Balay          y(j) = y(j) + acols(j,i)*x(icols(j,i))
22*c96caaccSSatish Balay 20     continue
23*c96caaccSSatish Balay 10   continue
24*c96caaccSSatish Balay
25*c96caaccSSatish Balay      return
26*c96caaccSSatish Balay      end
27*c96caaccSSatish Balay
28