Actual source code: zmatnullf.c
1: #include <petsc/private/fortranimpl.h>
2: #include <petscmat.h>
3: #include <petscviewer.h>
5: #if defined(PETSC_HAVE_FORTRAN_CAPS)
6: #define matnullspacecreate0_ MATNULLSPACECREATE0
7: #define matnullspacecreate1_ MATNULLSPACECREATE1
8: #define matnullspacegetvecs_ MATNULLSPACEGETVECS
9: #define matnullspaceview_ MATNULLSPACEVIEW
10: #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
11: #define matnullspacecreate0_ matnullspacecreate0
12: #define matnullspacecreate1_ matnullspacecreate1
13: #define matnullspacegetvecs_ matnullspacegetvecs
14: #define matnullspaceview_ matnullspaceview
15: #endif
17: PETSC_EXTERN void matnullspacecreate0_(MPI_Fint *comm, PetscBool *has_cnst, PetscInt *n, Vec vecs[], MatNullSpace *SP, PetscErrorCode *ierr)
18: {
19: *ierr = MatNullSpaceCreate(MPI_Comm_f2c(*(comm)), *has_cnst, *n, vecs, SP);
20: }
22: PETSC_EXTERN void matnullspacecreate1_(MPI_Fint *comm, PetscBool *has_cnst, PetscInt *n, Vec vecs[], MatNullSpace *SP, PetscErrorCode *ierr)
23: {
24: *ierr = MatNullSpaceCreate(MPI_Comm_f2c(*(comm)), *has_cnst, *n, vecs, SP);
25: }
27: PETSC_EXTERN void matnullspacegetvecs_(MatNullSpace *sp, PetscBool *HAS_CNST, PetscInt *N, Vec *VECS, PetscErrorCode *ierr)
28: {
29: PetscBool has_cnst;
30: PetscInt i, n;
31: const Vec *vecs;
33: CHKFORTRANNULLBOOL(HAS_CNST);
34: CHKFORTRANNULLINTEGER(N);
35: CHKFORTRANNULLOBJECT(VECS);
37: *ierr = MatNullSpaceGetVecs(*sp, &has_cnst, &n, &vecs);
39: if (HAS_CNST) { *HAS_CNST = has_cnst; }
40: if (N) { *N = n; }
41: if (VECS) {
42: for (i = 0; i < n; i++) { VECS[i] = vecs[i]; }
43: }
44: }
46: PETSC_EXTERN void matnullspaceview_(MatNullSpace *sp, PetscViewer *vin, PetscErrorCode *ierr)
47: {
48: PetscViewer v;
49: PetscPatchDefaultViewers_Fortran(vin, v);
50: *ierr = MatNullSpaceView(*sp, v);
51: }