Actual source code: zvectorf.c
1: #include <petsc/private/ftnimpl.h>
2: #include <petscvec.h>
3: #include <petscviewer.h>
5: #if defined(PETSC_HAVE_FORTRAN_CAPS)
6: #define vecsetvalue_ VECSETVALUE
7: #define vecsetvaluelocal_ VECSETVALUELOCAL
8: #define vecgetownershipranges_ VECGETOWNERSHIPRANGES
9: #define vecrestoreownershipranges_ VECRESTOREOWNERSHIPRANGES
10: #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
11: #define vecsetvalue_ vecsetvalue
12: #define vecsetvaluelocal_ vecsetvaluelocal
13: #define vecgetownershipranges_ vecgetownershipranges
14: #define vecrestoreownershipranges_ vecrestoreownershipranges
15: #endif
17: PETSC_EXTERN void vecsetvalue_(Vec *v, PetscInt *i, PetscScalar *va, InsertMode *mode, PetscErrorCode *ierr)
18: {
19: /* cannot use VecSetValue() here since that uses PetscCall() which has a return in it */
20: *ierr = VecSetValues(*v, 1, i, va, *mode);
21: }
23: PETSC_EXTERN void vecsetvaluelocal_(Vec *v, PetscInt *i, PetscScalar *va, InsertMode *mode, PetscErrorCode *ierr)
24: {
25: /* cannot use VecSetValue() here since that uses PetscCall() which has a return in it */
26: *ierr = VecSetValuesLocal(*v, 1, i, va, *mode);
27: }
29: PETSC_EXTERN void vecgetownershipranges_(Vec *v, F90Array1d *ptr, PetscErrorCode *ierr PETSC_F90_2PTR_PROTO(ptrd))
30: {
31: PetscInt *fa;
32: PetscMPIInt size;
34: *ierr = VecGetOwnershipRanges(*v, (const PetscInt **)&fa);
35: if (*ierr) return;
36: MPI_Comm_size(PetscObjectComm((PetscObject)*v), &size);
37: *ierr = F90Array1dCreate(fa, MPIU_INT, 1, size + 1, ptr PETSC_F90_2PTR_PARAM(ptrd));
38: }
40: PETSC_EXTERN void vecrestoreownershipranges_(Vec *v, F90Array1d *ptr, PetscErrorCode *ierr PETSC_F90_2PTR_PROTO(ptrd))
41: {
42: *ierr = F90Array1dDestroy(ptr, MPIU_INT PETSC_F90_2PTR_PARAM(ptrd));
43: }