Actual source code: zvecnestf.c
1: #include <petsc/private/fortranimpl.h>
2: #include <petscvec.h>
4: #if defined(PETSC_HAVE_FORTRAN_CAPS)
5: #define vecnestgetsubvecs_ VECNESTGETSUBVECS
6: #define vecnestsetsubvecs_ VECNESTSETSUBVECS
7: #define veccreatenest_ VECCREATENEST
8: #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
9: #define vecnestgetsubvecs_ vecnestgetsubvecs
10: #define vecnestsetsubvecs_ vecnestsetsubvecs
11: #define veccreatenest_ veccreatenest
12: #endif
14: PETSC_EXTERN void vecnestgetsubvecs_(Vec *X, PetscInt *N, Vec *sx, PetscErrorCode *ierr)
15: {
16: Vec *tsx;
17: PetscInt i, n;
18: CHKFORTRANNULLINTEGER(N);
19: *ierr = VecNestGetSubVecs(*X, &n, &tsx);
20: if (*ierr) return;
21: if (N) *N = n;
22: CHKFORTRANNULLOBJECT(sx);
23: if (sx) {
24: for (i = 0; i < n; i++) sx[i] = tsx[i];
25: }
26: }
28: PETSC_EXTERN void vecnestsetsubvecs_(Vec *X, PetscInt *N, PetscInt *idxm, Vec *sx, PetscErrorCode *ierr)
29: {
30: *ierr = VecNestSetSubVecs(*X, *N, idxm, sx);
31: }
33: PETSC_EXTERN void veccreatenest_(MPI_Fint *comm, PetscInt *nb, IS is[], Vec x[], Vec *Y, int *ierr)
34: {
35: CHKFORTRANNULLOBJECT(is);
36: CHKFORTRANNULLOBJECT(x);
37: *ierr = VecCreateNest(MPI_Comm_f2c(*comm), *nb, is, x, Y);
38: }