xref: /petsc/src/sys/utils/ftn-kernels/fcopy.F90 (revision 934c28ddc29f2ef830f40fcfadab042dd386ea01)
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