1! 2! 3! Fortran kernel for the copy vector routine 4! 5#include <petsc/finclude/petscsys.h> 6! 7pure subroutine FortranCopy(n, x, y) 8 use, intrinsic :: ISO_C_binding 9 implicit none(type, external) 10 PetscScalar, intent(in) :: x(*) 11 PetscScalar, intent(inout) :: y(*) 12 PetscInt, intent(in) :: n 13 14 PETSC_AssertAlignx(16, x(1)) 15 PETSC_AssertAlignx(16, y(1)) 16 17 y(1:n) = x(1:n) 18end subroutine FortranCopy 19 20pure subroutine FortranZero(n, x) 21 use, intrinsic :: ISO_C_binding 22 implicit none(type, external) 23 PetscScalar, intent(inout) :: x(*) 24 PetscInt, intent(in) :: n 25 26 PETSC_AssertAlignx(16, x(1)) 27 28 x(1:n) = 0.0 29end subroutine FortranZero 30