1 #include <petsc/private/fortranimpl.h> 2 #include <petscmat.h> 3 #include <petscviewer.h> 4 5 #if defined(PETSC_HAVE_FORTRAN_CAPS) 6 #define matnullspacegetvecs_ MATNULLSPACEGETVECS 7 #define matnullspaceview_ MATNULLSPACEVIEW 8 #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 9 #define matnullspacegetvecs_ matnullspacegetvecs 10 #define matnullspaceview_ matnullspaceview 11 #endif 12 13 PETSC_EXTERN void PETSC_STDCALL matnullspacegetvecs_(MatNullSpace *sp,PetscBool *HAS_CNST,PetscInt *N, Vec *VECS,PetscErrorCode *ierr) 14 { 15 PetscBool has_cnst; 16 PetscInt i,n; 17 const Vec *vecs; 18 19 CHKFORTRANNULLBOOL(HAS_CNST); 20 CHKFORTRANNULLINTEGER(N); 21 CHKFORTRANNULLOBJECT(VECS); 22 23 *ierr = MatNullSpaceGetVecs(*sp, &has_cnst, &n, &vecs); 24 25 if (HAS_CNST) { 26 *HAS_CNST = has_cnst; 27 } 28 if (N) { 29 *N = n; 30 } 31 if (VECS) { 32 for (i=0; i<n; i++) { 33 VECS[i] = vecs[i]; 34 } 35 } 36 } 37 38 PETSC_EXTERN void PETSC_STDCALL matnullspaceview_(MatNullSpace *sp,PetscViewer *vin,PetscErrorCode *ierr) 39 { 40 PetscViewer v; 41 PetscPatchDefaultViewers_Fortran(vin,v); 42 *ierr = MatNullSpaceView(*sp,v); 43 } 44 45