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