xref: /petsc/src/sys/utils/ftn-kernels/fcopy.F90 (revision edb0e59d3c097acd4a4005a4e51d4daa5c739255)
1c96caaccSSatish Balay!
2c96caaccSSatish Balay!
3c96caaccSSatish Balay!    Fortran kernel for the copy vector routine
4c96caaccSSatish Balay!
5c96caaccSSatish Balay#include <petsc/finclude/petscsys.h>
6c96caaccSSatish Balay!
70ccf82acSMartin Diehlpure subroutine FortranCopy(n, x, y)
8*fe66ebccSMartin Diehl  use, intrinsic :: ISO_C_binding
90ccf82acSMartin Diehl  implicit none(type, external)
100ccf82acSMartin Diehl  PetscScalar, intent(in) :: x(*)
110ccf82acSMartin Diehl  PetscScalar, intent(inout) :: y(*)
120ccf82acSMartin Diehl  PetscInt, intent(in) :: n
130ccf82acSMartin Diehl
14c96caaccSSatish Balay  PETSC_AssertAlignx(16, x(1))
15c96caaccSSatish Balay  PETSC_AssertAlignx(16, y(1))
160113e719SMartin Diehl
17d66e387eSMartin Diehl  y(1:n) = x(1:n)
180113e719SMartin Diehlend subroutine FortranCopy
19c96caaccSSatish Balay
200ccf82acSMartin Diehlpure subroutine FortranZero(n, x)
21*fe66ebccSMartin Diehl  use, intrinsic :: ISO_C_binding
220ccf82acSMartin Diehl  implicit none(type, external)
230ccf82acSMartin Diehl  PetscScalar, intent(inout) :: x(*)
240ccf82acSMartin Diehl  PetscInt, intent(in) :: n
250ccf82acSMartin Diehl
26c96caaccSSatish Balay  PETSC_AssertAlignx(16, x(1))
270113e719SMartin Diehl
28d66e387eSMartin Diehl  x(1:n) = 0.0
290113e719SMartin Diehlend subroutine FortranZero
30