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