1*c96caaccSSatish Balay! 2*c96caaccSSatish Balay! 3*c96caaccSSatish Balay! Fortran kernel for sparse matrix-vector product in the AIJ format 4*c96caaccSSatish Balay! 5*c96caaccSSatish Balay#include <petsc/finclude/petscsys.h> 6*c96caaccSSatish Balay! 7*c96caaccSSatish Balay subroutine FortranMultAddAIJ(n,x,ii,jj,a,y,z) 8*c96caaccSSatish Balay implicit none 9*c96caaccSSatish Balay PetscScalar x(0:*),a(0:*),y(*),z(*) 10*c96caaccSSatish Balay PetscInt n,ii(*),jj(0:*) 11*c96caaccSSatish Balay 12*c96caaccSSatish Balay PetscInt i,j,jstart,jend 13*c96caaccSSatish Balay PetscScalar sum 14*c96caaccSSatish Balay 15*c96caaccSSatish Balay jend = ii(1) 16*c96caaccSSatish Balay do 10,i=1,n 17*c96caaccSSatish Balay jstart = jend 18*c96caaccSSatish Balay jend = ii(i+1) 19*c96caaccSSatish Balay sum = y(i) 20*c96caaccSSatish Balay do 20 j=jstart,jend-1 21*c96caaccSSatish Balay sum = sum + a(j)*x(jj(j)) 22*c96caaccSSatish Balay 20 continue 23*c96caaccSSatish Balay z(i) = sum 24*c96caaccSSatish Balay 10 continue 25*c96caaccSSatish Balay 26*c96caaccSSatish Balay return 27*c96caaccSSatish Balay end 28*c96caaccSSatish Balay 29