1af0996ceSBarry Smith #include <petsc/private/fortranimpl.h> 2c6db04a5SJed Brown #include <petscmat.h> 3665c2dedSJed Brown #include <petscviewer.h> 4f4e70085SSatish Balay 5f4e70085SSatish Balay #if defined(PETSC_HAVE_FORTRAN_CAPS) 64d03fd2bSBarry Smith #define matsetvalues_ MATSETVALUES 73b494cfeSSatish Balay #define matsetvalues0_ MATSETVALUES0 8*1b266c99SBarry Smith #define matsetvaluesnn1_ MATSETVALUESNN1 94d03fd2bSBarry Smith #define matsetvalues11_ MATSETVALUES11 104d03fd2bSBarry Smith #define matsetvalues1n_ MATSETVALUES1N 114d03fd2bSBarry Smith #define matsetvaluesn1_ MATSETVALUESN1 123b494cfeSSatish Balay #define matsetvaluesblocked0_ MATSETVALUESBLOCKED0 134d03fd2bSBarry Smith #define matsetvaluesblocked11_ MATSETVALUESBLOCKED11 144d03fd2bSBarry Smith #define matsetvaluesblocked111_ MATSETVALUESBLOCKED111 154d03fd2bSBarry Smith #define matsetvaluesblocked1n_ MATSETVALUESBLOCKED1N 164d03fd2bSBarry Smith #define matsetvaluesblockedn1_ MATSETVALUESBLOCKEDN1 174d03fd2bSBarry Smith #define matsetvaluesblockedlocal_ MATSETVALUESBLOCKEDLOCAL 183b494cfeSSatish Balay #define matsetvaluesblockedlocal0_ MATSETVALUESBLOCKEDLOCAL0 194d03fd2bSBarry Smith #define matsetvaluesblockedlocal11_ MATSETVALUESBLOCKEDLOCAL11 204d03fd2bSBarry Smith #define matsetvaluesblockedlocal111_ MATSETVALUESBLOCKEDLOCAL111 214d03fd2bSBarry Smith #define matsetvaluesblockedlocal1n_ MATSETVALUESBLOCKEDLOCAL1N 224d03fd2bSBarry Smith #define matsetvaluesblockedlocaln1_ MATSETVALUESBLOCKEDLOCALN1 234d03fd2bSBarry Smith #define matsetvalueslocal_ MATSETVALUESLOCAL 243b494cfeSSatish Balay #define matsetvalueslocal0_ MATSETVALUESLOCAL0 254d03fd2bSBarry Smith #define matsetvalueslocal11_ MATSETVALUESLOCAL11 264d03fd2bSBarry Smith #define matsetvalueslocal11nn_ MATSETVALUESLOCAL11NN 274d03fd2bSBarry Smith #define matsetvalueslocal111_ MATSETVALUESLOCAL111 284d03fd2bSBarry Smith #define matsetvalueslocal1n_ MATSETVALUESLOCAL1N 294d03fd2bSBarry Smith #define matsetvalueslocaln1_ MATSETVALUESLOCALN1 3087bcf4e0SBarry Smith #define matgetrowmin_ MATGETROWMIN 3187bcf4e0SBarry Smith #define matgetrowminabs_ MATGETROWMINABS 325928be6bSBarry Smith #define matgetrowmax_ MATGETROWMAX 335928be6bSBarry Smith #define matgetrowmaxabs_ MATGETROWMAXABS 347d6bfa3bSBarry Smith #define matdestroymatrices_ MATDESTROYMATRICES 355dffd610SBarry Smith #define matgetfactor_ MATGETFACTOR 3635bd34faSBarry Smith #define matfactorgetsolverpackage_ MATFACTORGETSOLVERPACKAGE 37f4e70085SSatish Balay #define matgetrowij_ MATGETROWIJ 38f4e70085SSatish Balay #define matrestorerowij_ MATRESTOREROWIJ 39f4e70085SSatish Balay #define matgetrow_ MATGETROW 40f4e70085SSatish Balay #define matrestorerow_ MATRESTOREROW 41f7e310deSShri Abhyankar #define matload_ MATLOAD 42f4e70085SSatish Balay #define matview_ MATVIEW 438c778c55SBarry Smith #define matseqaijgetarray_ MATSEQAIJGETARRAY 446778691eSSatish Balay #define matseqaijrestorearray_ MATSEQAIJRESTOREARRAY 458c778c55SBarry Smith #define matdensegetarray_ MATDENSEGETARRAY 468c778c55SBarry Smith #define matdenserestorearray_ MATDENSERESTOREARRAY 47f4e70085SSatish Balay #define matconvert_ MATCONVERT 48f4e70085SSatish Balay #define matgetsubmatrices_ MATGETSUBMATRICES 4917ede90eSSatish Balay #define matzerorowscolumns_ MATZEROROWSCOLUMNS 5017ede90eSSatish Balay #define matzerorowscolumnsis_ MATZEROROWSCOLUMNSIS 5117ede90eSSatish Balay #define matzerorowsstencil_ MATZEROROWSSTENCIL 52d25a37e1SJed Brown #define matzerorowscolumnsstencil_ MATZEROROWSCOLUMNSSTENCIL 53f4e70085SSatish Balay #define matzerorows_ MATZEROROWS 54f4e70085SSatish Balay #define matzerorowsis_ MATZEROROWSIS 55f4e70085SSatish Balay #define matzerorowslocal_ MATZEROROWSLOCAL 56f4e70085SSatish Balay #define matzerorowslocalis_ MATZEROROWSLOCALIS 5717ede90eSSatish Balay #define matzerorowscolumnslocal_ MATZEROROWSCOLUMNSLOCAL 5817ede90eSSatish Balay #define matzerorowscolumnslocalis_ MATZEROROWSCOLUMNSLOCALIS 591eea217eSSatish Balay #define matsetoptionsprefix_ MATSETOPTIONSPREFIX 60fcc9d04bSBarry Smith #define matcreatevecs_ MATCREATEVECS 61c9d5ca86SBarry Smith #define matnullspaceremove_ MATNULLSPACEREMOVE 625ba43861SSatish Balay #define matgetinfo_ MATGETINFO 6322688b47SSatish Balay #define matlufactor_ MATLUFACTOR 6422688b47SSatish Balay #define matilufactor_ MATILUFACTOR 6522688b47SSatish Balay #define matlufactorsymbolic_ MATLUFACTORSYMBOLIC 6622688b47SSatish Balay #define matlufactornumeric_ MATLUFACTORNUMERIC 6722688b47SSatish Balay #define matcholeskyfactor_ MATCHOLESKYFACTOR 6822688b47SSatish Balay #define matcholeskyfactorsymbolic_ MATCHOLESKYFACTORSYMBOLIC 6922688b47SSatish Balay #define matcholeskyfactornumeric_ MATCHOLESKYFACTORNUMERIC 7022688b47SSatish Balay #define matilufactorsymbolic_ MATILUFACTORSYMBOLIC 7122688b47SSatish Balay #define maticcfactorsymbolic_ MATICCFACTORSYMBOLIC 7222688b47SSatish Balay #define maticcfactor_ MATICCFACTOR 7322688b47SSatish Balay #define matfactorinfoinitialize_ MATFACTORINFOINITIALIZE 74b22b330cSBarry Smith #define matnullspacesetfunction_ MATNULLSPACESETFUNCTION 750905d9aaSJed Brown #define matfindnonzerorows_ MATFINDNONZEROROWS 76f4e70085SSatish Balay #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 774d03fd2bSBarry Smith #define matsetvalues_ matsetvalues 783b494cfeSSatish Balay #define matsetvalues0_ matsetvalues0 79*1b266c99SBarry Smith #define matsetvaluesnn1_ matsetvaluesnn1 804d03fd2bSBarry Smith #define matsetvalues11_ matsetvalues11 814d03fd2bSBarry Smith #define matsetvaluesn1_ matsetvaluesn1 824d03fd2bSBarry Smith #define matsetvalues1n_ matsetvalues1n 834d03fd2bSBarry Smith #define matsetvalueslocal_ matsetvalueslocal 843b494cfeSSatish Balay #define matsetvalueslocal0_ matsetvalueslocal0 854d03fd2bSBarry Smith #define matsetvalueslocal11_ matsetvalueslocal11 864d03fd2bSBarry Smith #define matsetvalueslocal11nn_ matsetvalueslocal11nn 874d03fd2bSBarry Smith #define matsetvalueslocal111_ matsetvalueslocal111 884d03fd2bSBarry Smith #define matsetvalueslocal1n_ matsetvalueslocal1n 894d03fd2bSBarry Smith #define matsetvalueslocaln1_ matsetvalueslocaln1 904d03fd2bSBarry Smith #define matsetvaluesblocked_ matsetvaluesblocked 913b494cfeSSatish Balay #define matsetvaluesblocked0_ matsetvaluesblocked0 924d03fd2bSBarry Smith #define matsetvaluesblocked11_ matsetvaluesblocked11 934d03fd2bSBarry Smith #define matsetvaluesblocked111_ matsetvaluesblocked111 944d03fd2bSBarry Smith #define matsetvaluesblocked1n_ matsetvaluesblocked1n 954d03fd2bSBarry Smith #define matsetvaluesblocked1n_ matsetvaluesblockedn1 964d03fd2bSBarry Smith #define matsetvaluesblockedlocal_ matsetvaluesblockedlocal 973b494cfeSSatish Balay #define matsetvaluesblockedlocal0_ matsetvaluesblockedlocal0 984d03fd2bSBarry Smith #define matsetvaluesblockedlocal11_ matsetvaluesblockedlocal11 994d03fd2bSBarry Smith #define matsetvaluesblockedlocal111_ matsetvaluesblockedlocal111 1004d03fd2bSBarry Smith #define matsetvaluesblockedlocal1n_ matsetvaluesblockedlocal1n 1014d03fd2bSBarry Smith #define matsetvaluesblockedlocal1n_ matsetvaluesblockedlocaln1 10287bcf4e0SBarry Smith #define matgetrowmin_ matgetrowmin 10387bcf4e0SBarry Smith #define matgetrowminabs_ matgetrowminabs 1045928be6bSBarry Smith #define matgetrowmax_ matgetrowmax 1055928be6bSBarry Smith #define matgetrowmaxabs_ matgetrowmaxabs 1065928be6bSBarry Smith #define matdestroymatrices_ matdestroymatrices 1075dffd610SBarry Smith #define matgetfactor_ matgetfactor 10835bd34faSBarry Smith #define matfactorgetsolverpackage_ matfactorgetsolverpackage 109fcc9d04bSBarry Smith #define matcreatevecs_ matcreatevecs 110f4e70085SSatish Balay #define matgetrowij_ matgetrowij 111f4e70085SSatish Balay #define matrestorerowij_ matrestorerowij 112f4e70085SSatish Balay #define matgetrow_ matgetrow 113f4e70085SSatish Balay #define matrestorerow_ matrestorerow 114f4e70085SSatish Balay #define matview_ matview 115f7e310deSShri Abhyankar #define matload_ matload 1168c778c55SBarry Smith #define matseqaijgetarray_ matseqaijgetarray 1178c778c55SBarry Smith #define matseqaijrestorearray_ matseqaijrestorearray 1188c778c55SBarry Smith #define matdensegetarray_ matdensegetarray 1198c778c55SBarry Smith #define matdenserestorearray_ matdenserestorearray 120f4e70085SSatish Balay #define matconvert_ matconvert 121f4e70085SSatish Balay #define matgetsubmatrices_ matgetsubmatrices 12217ede90eSSatish Balay #define matzerorowscolumns_ matzerorowscolumns 12317ede90eSSatish Balay #define matzerorowscolumnsis_ matzerorowscolumnsis 12417ede90eSSatish Balay #define matzerorowsstencil_ matzerorowsstencil 125d25a37e1SJed Brown #define matzerorowscolumnsstencil_ matzerorowscolumnsstencil 126f4e70085SSatish Balay #define matzerorows_ matzerorows 127f4e70085SSatish Balay #define matzerorowsis_ matzerorowsis 128f4e70085SSatish Balay #define matzerorowslocal_ matzerorowslocal 129f4e70085SSatish Balay #define matzerorowslocalis_ matzerorowslocalis 13017ede90eSSatish Balay #define matzerorowscolumnslocal_ matzerorowscolumnslocal 13117ede90eSSatish Balay #define matzerorowscolumnslocalis_ matzerorowscolumnslocalis 1321eea217eSSatish Balay #define matsetoptionsprefix_ matsetoptionsprefix 133812c3f48SMatthew Knepley #define matnullspaceremove_ matnullspaceremove 1345ba43861SSatish Balay #define matgetinfo_ matgetinfo 13522688b47SSatish Balay #define matlufactor_ matlufactor 13622688b47SSatish Balay #define matilufactor_ matilufactor 13722688b47SSatish Balay #define matlufactorsymbolic_ matlufactorsymbolic 13822688b47SSatish Balay #define matlufactornumeric_ matlufactornumeric 13922688b47SSatish Balay #define matcholeskyfactor_ matcholeskyfactor 14022688b47SSatish Balay #define matcholeskyfactorsymbolic_ matcholeskyfactorsymbolic 14122688b47SSatish Balay #define matcholeskyfactornumeric_ matcholeskyfactornumeric 14222688b47SSatish Balay #define matilufactorsymbolic_ matilufactorsymbolic 14322688b47SSatish Balay #define maticcfactorsymbolic_ maticcfactorsymbolic 14422688b47SSatish Balay #define maticcfactor_ maticcfactor 14522688b47SSatish Balay #define matfactorinfoinitialize_ matfactorinfoinitialize 146b22b330cSBarry Smith #define matnullspacesetfunction_ matnullspacesetfunction 1470905d9aaSJed Brown #define matfindnonzerorows_ matfindnonzerorows 148f4e70085SSatish Balay #endif 149f4e70085SSatish Balay 1504d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvaluesblocked_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ){ 1514d03fd2bSBarry Smith *ierr = MatSetValuesBlocked(*mat,*m,idxm,*n,idxn,v,*addv); 1524d03fd2bSBarry Smith } 1534d03fd2bSBarry Smith 1543b494cfeSSatish Balay PETSC_EXTERN void PETSC_STDCALL matsetvaluesblocked0_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ){ 1553b494cfeSSatish Balay matsetvaluesblocked_(mat,m,idxm,n,idxn,v,addv,ierr); 1563b494cfeSSatish Balay } 1573b494cfeSSatish Balay 1584d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvaluesblocked11_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ){ 1594d03fd2bSBarry Smith matsetvaluesblocked_(mat,m,idxm,n,idxn,v,addv,ierr); 1604d03fd2bSBarry Smith } 1614d03fd2bSBarry Smith 1624d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvaluesblocked111_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ){ 1634d03fd2bSBarry Smith matsetvaluesblocked_(mat,m,idxm,n,idxn,v,addv,ierr); 1644d03fd2bSBarry Smith } 1654d03fd2bSBarry Smith 1664d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvaluesblocked1n_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ){ 1674d03fd2bSBarry Smith matsetvaluesblocked_(mat,m,idxm,n,idxn,v,addv,ierr); 1684d03fd2bSBarry Smith } 1694d03fd2bSBarry Smith 1704d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvaluesblockedn1_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ){ 1714d03fd2bSBarry Smith matsetvaluesblocked_(mat,m,idxm,n,idxn,v,addv,ierr); 1724d03fd2bSBarry Smith } 1734d03fd2bSBarry Smith 1744d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvaluesblockedlocal_(Mat *mat,PetscInt *nrow, PetscInt irow[],PetscInt *ncol, PetscInt icol[], PetscScalar y[],InsertMode *addv, int *ierr ) 1754d03fd2bSBarry Smith { 1764d03fd2bSBarry Smith *ierr = MatSetValuesBlockedLocal(*mat,*nrow,irow,*ncol,icol,y,*addv); 1774d03fd2bSBarry Smith } 1784d03fd2bSBarry Smith 1793b494cfeSSatish Balay PETSC_EXTERN void PETSC_STDCALL matsetvaluesblockedlocal0_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ){ 1803b494cfeSSatish Balay matsetvaluesblockedlocal_(mat,m,idxm,n,idxn,v,addv,ierr); 1813b494cfeSSatish Balay } 1823b494cfeSSatish Balay 1834d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvaluesblockedlocal11_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ){ 1844d03fd2bSBarry Smith matsetvaluesblockedlocal_(mat,m,idxm,n,idxn,v,addv,ierr); 1854d03fd2bSBarry Smith } 1864d03fd2bSBarry Smith 1874d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvaluesblockedlocal111_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ){ 1884d03fd2bSBarry Smith matsetvaluesblockedlocal_(mat,m,idxm,n,idxn,v,addv,ierr); 1894d03fd2bSBarry Smith } 1904d03fd2bSBarry Smith 1914d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvaluesblockedlocal1n_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ){ 1924d03fd2bSBarry Smith matsetvaluesblockedlocal_(mat,m,idxm,n,idxn,v,addv,ierr); 1934d03fd2bSBarry Smith } 1944d03fd2bSBarry Smith 1954d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvaluesblockedlocaln1_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ){ 1964d03fd2bSBarry Smith matsetvaluesblockedlocal_(mat,m,idxm,n,idxn,v,addv,ierr); 1974d03fd2bSBarry Smith } 1984d03fd2bSBarry Smith 1994d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvalues_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ) 2004d03fd2bSBarry Smith { 2014d03fd2bSBarry Smith *ierr = MatSetValues(*mat,*m,idxm,*n,idxn,v,*addv); 2024d03fd2bSBarry Smith } 2034d03fd2bSBarry Smith 204*1b266c99SBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvaluesnnnn_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ) 205*1b266c99SBarry Smith { 206*1b266c99SBarry Smith matsetvalues_(mat,m,idxm,n,idxn,v,addv,ierr); 207*1b266c99SBarry Smith } 208*1b266c99SBarry Smith 2093b494cfeSSatish Balay PETSC_EXTERN void PETSC_STDCALL matsetvalues0_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ) 2103b494cfeSSatish Balay { 2113b494cfeSSatish Balay matsetvalues_(mat,m,idxm,n,idxn,v,addv,ierr); 2123b494cfeSSatish Balay } 2133b494cfeSSatish Balay 214*1b266c99SBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvaluesnn1_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ) 215*1b266c99SBarry Smith { 216*1b266c99SBarry Smith matsetvalues_(mat,m,idxm,n,idxn,v,addv,ierr); 217*1b266c99SBarry Smith } 218*1b266c99SBarry Smith 2194d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvalues11_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ) 2204d03fd2bSBarry Smith { 2214d03fd2bSBarry Smith matsetvalues_(mat,m,idxm,n,idxn,v,addv,ierr); 2224d03fd2bSBarry Smith } 2234d03fd2bSBarry Smith 2244d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvaluesn1_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ) 2254d03fd2bSBarry Smith { 2264d03fd2bSBarry Smith matsetvalues_(mat,m,idxm,n,idxn,v,addv,ierr); 2274d03fd2bSBarry Smith } 2284d03fd2bSBarry Smith 2294d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvalues1n_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ) 2304d03fd2bSBarry Smith { 2314d03fd2bSBarry Smith matsetvalues_(mat,m,idxm,n,idxn,v,addv,ierr); 2324d03fd2bSBarry Smith } 2334d03fd2bSBarry Smith 2344d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvalueslocal_(Mat *mat,PetscInt *nrow, PetscInt irow[],PetscInt *ncol, PetscInt icol[], PetscScalar y[],InsertMode *addv, int *ierr ) 2354d03fd2bSBarry Smith { 2364d03fd2bSBarry Smith *ierr = MatSetValuesLocal(*mat,*nrow,irow,*ncol,icol,y,*addv); 2374d03fd2bSBarry Smith } 2384d03fd2bSBarry Smith 2393b494cfeSSatish Balay PETSC_EXTERN void PETSC_STDCALL matsetvalueslocal0_(Mat *mat,PetscInt *nrow, PetscInt irow[],PetscInt *ncol, PetscInt icol[], PetscScalar y[],InsertMode *addv, int *ierr ) 2403b494cfeSSatish Balay { 2413b494cfeSSatish Balay matsetvalueslocal_(mat,nrow,irow,ncol,icol,y,addv,ierr); 2423b494cfeSSatish Balay } 2433b494cfeSSatish Balay 2444d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvalueslocal11_(Mat *mat,PetscInt *nrow, PetscInt irow[],PetscInt *ncol, PetscInt icol[], PetscScalar y[],InsertMode *addv, int *ierr ) 2454d03fd2bSBarry Smith { 2464d03fd2bSBarry Smith matsetvalueslocal_(mat,nrow,irow,ncol,icol,y,addv,ierr); 2474d03fd2bSBarry Smith } 2484d03fd2bSBarry Smith 2494d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvalueslocal11nn_(Mat *mat,PetscInt *nrow, PetscInt irow[],PetscInt *ncol, PetscInt icol[], PetscScalar y[],InsertMode *addv, int *ierr ) 2504d03fd2bSBarry Smith { 2514d03fd2bSBarry Smith matsetvalueslocal_(mat,nrow,irow,ncol,icol,y,addv,ierr); 2524d03fd2bSBarry Smith } 2534d03fd2bSBarry Smith 2544d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvalueslocal111_(Mat *mat,PetscInt *nrow, PetscInt irow[],PetscInt *ncol, PetscInt icol[], PetscScalar y[],InsertMode *addv, int *ierr ) 2554d03fd2bSBarry Smith { 2564d03fd2bSBarry Smith matsetvalueslocal_(mat,nrow,irow,ncol,icol,y,addv,ierr); 2574d03fd2bSBarry Smith } 2584d03fd2bSBarry Smith 2594d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvalueslocal1n_(Mat *mat,PetscInt *nrow, PetscInt irow[],PetscInt *ncol, PetscInt icol[], PetscScalar y[],InsertMode *addv, int *ierr ) 2604d03fd2bSBarry Smith { 2614d03fd2bSBarry Smith matsetvalueslocal_(mat,nrow,irow,ncol,icol,y,addv,ierr); 2624d03fd2bSBarry Smith } 2634d03fd2bSBarry Smith 2644d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvalueslocaln1_(Mat *mat,PetscInt *nrow, PetscInt irow[],PetscInt *ncol, PetscInt icol[], PetscScalar y[],InsertMode *addv, int *ierr ) 2654d03fd2bSBarry Smith { 2664d03fd2bSBarry Smith matsetvalueslocal_(mat,nrow,irow,ncol,icol,y,addv,ierr); 2674d03fd2bSBarry Smith } 2684d03fd2bSBarry Smith 26987bcf4e0SBarry Smith PETSC_EXTERN void PETSC_STDCALL matgetrowmin_(Mat *mat,Vec *v,PetscInt idx[], int *ierr ) 27087bcf4e0SBarry Smith { 27187bcf4e0SBarry Smith CHKFORTRANNULLINTEGER(idx); 27287bcf4e0SBarry Smith *ierr = MatGetRowMin(*mat,*v,idx); 27387bcf4e0SBarry Smith } 2744d03fd2bSBarry Smith 27587bcf4e0SBarry Smith PETSC_EXTERN void PETSC_STDCALL matgetrowminabs_(Mat *mat,Vec *v,PetscInt idx[], int *ierr ) 27687bcf4e0SBarry Smith { 27787bcf4e0SBarry Smith CHKFORTRANNULLINTEGER(idx); 27887bcf4e0SBarry Smith *ierr = MatGetRowMinAbs(*mat,*v,idx); 27987bcf4e0SBarry Smith } 28087bcf4e0SBarry Smith 2815928be6bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matgetrowmax_(Mat *mat,Vec *v,PetscInt idx[], int *ierr ) 2825928be6bSBarry Smith { 2835928be6bSBarry Smith CHKFORTRANNULLINTEGER(idx); 2845928be6bSBarry Smith *ierr = MatGetRowMax(*mat,*v,idx); 2855928be6bSBarry Smith } 2865928be6bSBarry Smith 2875928be6bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matgetrowmaxabs_(Mat *mat,Vec *v,PetscInt idx[], int *ierr ) 2885928be6bSBarry Smith { 2895928be6bSBarry Smith CHKFORTRANNULLINTEGER(idx); 2905928be6bSBarry Smith *ierr = MatGetRowMaxAbs(*mat,*v,idx); 2915928be6bSBarry Smith } 2925928be6bSBarry Smith 293b22b330cSBarry Smith static PetscErrorCode ournullfunction(MatNullSpace sp,Vec x,void *ctx) 294b22b330cSBarry Smith { 295b22b330cSBarry Smith PetscErrorCode ierr = 0; 296b22b330cSBarry Smith (*(void (PETSC_STDCALL *)(MatNullSpace*,Vec*,void*,PetscErrorCode*))(((PetscObject)sp)->fortran_func_pointers[0]))(&sp,&x,ctx,&ierr);CHKERRQ(ierr); 297b22b330cSBarry Smith return 0; 298b22b330cSBarry Smith } 299b22b330cSBarry Smith 3008cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matnullspacesetfunction_(MatNullSpace *sp, PetscErrorCode (*rem)(MatNullSpace,Vec,void*),void *ctx,PetscErrorCode *ierr) 301b22b330cSBarry Smith { 302b22b330cSBarry Smith PetscObjectAllocateFortranPointers(*sp,1); 303b22b330cSBarry Smith ((PetscObject)*sp)->fortran_func_pointers[0] = (PetscVoidFunction)rem; 30426fbe8dcSKarl Rupp 305b22b330cSBarry Smith *ierr = MatNullSpaceSetFunction(*sp,ournullfunction,ctx); 306b22b330cSBarry Smith } 307b22b330cSBarry Smith 308d2da0f5dSBarry Smith PETSC_EXTERN void PETSC_STDCALL matcreatevecs_(Mat *mat,Vec *right,Vec *left, int *ierr) 3097c54600cSBarry Smith { 3107c54600cSBarry Smith CHKFORTRANNULLOBJECT(right); 3117c54600cSBarry Smith CHKFORTRANNULLOBJECT(left); 3122a7a6963SBarry Smith *ierr = MatCreateVecs(*mat,right,left); 3137c54600cSBarry Smith } 3147c54600cSBarry Smith 3158cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matgetrowij_(Mat *B,PetscInt *shift,PetscBool *sym,PetscBool *blockcompressed,PetscInt *n,PetscInt *ia,size_t *iia, 316ace3abfcSBarry Smith PetscInt *ja,size_t *jja,PetscBool *done,PetscErrorCode *ierr) 317f4e70085SSatish Balay { 3181a83f524SJed Brown const PetscInt *IA,*JA; 3198f7157efSSatish Balay *ierr = MatGetRowIJ(*B,*shift,*sym,*blockcompressed,n,&IA,&JA,done);if (*ierr) return; 3201a83f524SJed Brown *iia = PetscIntAddressToFortran(ia,(PetscInt*)IA); 3211a83f524SJed Brown *jja = PetscIntAddressToFortran(ja,(PetscInt*)JA); 322f4e70085SSatish Balay } 323f4e70085SSatish Balay 3248cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matrestorerowij_(Mat *B,PetscInt *shift,PetscBool *sym,PetscBool *blockcompressed, PetscInt *n,PetscInt *ia,size_t *iia, 325ace3abfcSBarry Smith PetscInt *ja,size_t *jja,PetscBool *done,PetscErrorCode *ierr) 326f4e70085SSatish Balay { 3271a83f524SJed Brown const PetscInt *IA = PetscIntAddressFromFortran(ia,*iia),*JA = PetscIntAddressFromFortran(ja,*jja); 3288f7157efSSatish Balay *ierr = MatRestoreRowIJ(*B,*shift,*sym,*blockcompressed,n,&IA,&JA,done); 329f4e70085SSatish Balay } 330f4e70085SSatish Balay 331f4e70085SSatish Balay /* 332f4e70085SSatish Balay This is a poor way of storing the column and value pointers 333f4e70085SSatish Balay generated by MatGetRow() to be returned with MatRestoreRow() 334f4e70085SSatish Balay but there is not natural,good place else to store them. Hence 335f4e70085SSatish Balay Fortran programmers can only have one outstanding MatGetRows() 336f4e70085SSatish Balay at a time. 337f4e70085SSatish Balay */ 338f4e70085SSatish Balay static PetscErrorCode matgetrowactive = 0; 339f4e70085SSatish Balay static const PetscInt *my_ocols = 0; 340f4e70085SSatish Balay static const PetscScalar *my_ovals = 0; 341f4e70085SSatish Balay 3428cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matgetrow_(Mat *mat,PetscInt *row,PetscInt *ncols,PetscInt *cols,PetscScalar *vals,PetscErrorCode *ierr) 343f4e70085SSatish Balay { 344f4e70085SSatish Balay const PetscInt **oocols = &my_ocols; 345f4e70085SSatish Balay const PetscScalar **oovals = &my_ovals; 346f4e70085SSatish Balay 347f4e70085SSatish Balay if (matgetrowactive) { 348efca3c55SSatish Balay PetscError(PETSC_COMM_SELF,__LINE__,"MatGetRow_Fortran",__FILE__,PETSC_ERR_ARG_WRONGSTATE,PETSC_ERROR_INITIAL, 349f4e70085SSatish Balay "Cannot have two MatGetRow() active simultaneously\n\ 350f4e70085SSatish Balay call MatRestoreRow() before calling MatGetRow() a second time"); 351f4e70085SSatish Balay *ierr = 1; 352f4e70085SSatish Balay return; 353f4e70085SSatish Balay } 354f4e70085SSatish Balay 3550298fd71SBarry Smith CHKFORTRANNULLINTEGER(cols); if (!cols) oocols = NULL; 3560298fd71SBarry Smith CHKFORTRANNULLSCALAR(vals); if (!vals) oovals = NULL; 357f4e70085SSatish Balay 358f4e70085SSatish Balay *ierr = MatGetRow(*mat,*row,ncols,oocols,oovals); 359f4e70085SSatish Balay if (*ierr) return; 360f4e70085SSatish Balay 361f4e70085SSatish Balay if (oocols) { *ierr = PetscMemcpy(cols,my_ocols,(*ncols)*sizeof(PetscInt)); if (*ierr) return;} 362f4e70085SSatish Balay if (oovals) { *ierr = PetscMemcpy(vals,my_ovals,(*ncols)*sizeof(PetscScalar)); if (*ierr) return;} 363f4e70085SSatish Balay matgetrowactive = 1; 364f4e70085SSatish Balay } 365f4e70085SSatish Balay 3668cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matrestorerow_(Mat *mat,PetscInt *row,PetscInt *ncols,PetscInt *cols,PetscScalar *vals,PetscErrorCode *ierr) 367f4e70085SSatish Balay { 368f4e70085SSatish Balay const PetscInt **oocols = &my_ocols; 369f4e70085SSatish Balay const PetscScalar **oovals = &my_ovals; 370f4e70085SSatish Balay if (!matgetrowactive) { 371efca3c55SSatish Balay PetscError(PETSC_COMM_SELF,__LINE__,"MatRestoreRow_Fortran",__FILE__,PETSC_ERR_ARG_WRONGSTATE,PETSC_ERROR_INITIAL, 372f4e70085SSatish Balay "Must call MatGetRow() first"); 373f4e70085SSatish Balay *ierr = 1; 374f4e70085SSatish Balay return; 375f4e70085SSatish Balay } 3760298fd71SBarry Smith CHKFORTRANNULLINTEGER(cols); if (!cols) oocols = NULL; 3770298fd71SBarry Smith CHKFORTRANNULLSCALAR(vals); if (!vals) oovals = NULL; 378f4e70085SSatish Balay 379f4e70085SSatish Balay *ierr = MatRestoreRow(*mat,*row,ncols,oocols,oovals); 380f4e70085SSatish Balay matgetrowactive = 0; 381f4e70085SSatish Balay } 382f4e70085SSatish Balay 3838cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matview_(Mat *mat,PetscViewer *vin,PetscErrorCode *ierr) 384f4e70085SSatish Balay { 385f4e70085SSatish Balay PetscViewer v; 386f4e70085SSatish Balay PetscPatchDefaultViewers_Fortran(vin,v); 387f4e70085SSatish Balay *ierr = MatView(*mat,v); 388f4e70085SSatish Balay } 389f4e70085SSatish Balay 3908cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matload_(Mat *mat,PetscViewer *vin,PetscErrorCode *ierr) 391f7e310deSShri Abhyankar { 392f7e310deSShri Abhyankar PetscViewer v; 393f7e310deSShri Abhyankar PetscPatchDefaultViewers_Fortran(vin,v); 394112444f4SShri Abhyankar *ierr = MatLoad(*mat,v); 395f7e310deSShri Abhyankar } 396f7e310deSShri Abhyankar 3978cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matseqaijgetarray_(Mat *mat,PetscScalar *fa,size_t *ia,PetscErrorCode *ierr) 398f4e70085SSatish Balay { 399f4e70085SSatish Balay PetscScalar *mm; 400f4e70085SSatish Balay PetscInt m,n; 401f4e70085SSatish Balay 4028c778c55SBarry Smith *ierr = MatSeqAIJGetArray(*mat,&mm); if (*ierr) return; 403f4e70085SSatish Balay *ierr = MatGetSize(*mat,&m,&n); if (*ierr) return; 404f91d1997SBarry Smith *ierr = PetscScalarAddressToFortran((PetscObject)*mat,1,fa,mm,m*n,ia); if (*ierr) return; 405f4e70085SSatish Balay } 406f4e70085SSatish Balay 4078cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matseqaijrestorearray_(Mat *mat,PetscScalar *fa,size_t *ia,PetscErrorCode *ierr) 408f4e70085SSatish Balay { 409f4e70085SSatish Balay PetscScalar *lx; 410f4e70085SSatish Balay PetscInt m,n; 411f4e70085SSatish Balay 412f4e70085SSatish Balay *ierr = MatGetSize(*mat,&m,&n); if (*ierr) return; 413f4e70085SSatish Balay *ierr = PetscScalarAddressFromFortran((PetscObject)*mat,fa,*ia,m*n,&lx);if (*ierr) return; 4148c778c55SBarry Smith *ierr = MatSeqAIJRestoreArray(*mat,&lx);if (*ierr) return; 415f4e70085SSatish Balay } 416f4e70085SSatish Balay 4178cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matdensegetarray_(Mat *mat,PetscScalar *fa,size_t *ia,PetscErrorCode *ierr) 41873a71a0fSBarry Smith { 41973a71a0fSBarry Smith PetscScalar *mm; 42073a71a0fSBarry Smith PetscInt m,n; 42173a71a0fSBarry Smith 4228c778c55SBarry Smith *ierr = MatDenseGetArray(*mat,&mm); if (*ierr) return; 42373a71a0fSBarry Smith *ierr = MatGetSize(*mat,&m,&n); if (*ierr) return; 42473a71a0fSBarry Smith *ierr = PetscScalarAddressToFortran((PetscObject)*mat,1,fa,mm,m*n,ia); if (*ierr) return; 42573a71a0fSBarry Smith } 42673a71a0fSBarry Smith 4278cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matdenserestorearray_(Mat *mat,PetscScalar *fa,size_t *ia,PetscErrorCode *ierr) 42873a71a0fSBarry Smith { 42973a71a0fSBarry Smith PetscScalar *lx; 43073a71a0fSBarry Smith PetscInt m,n; 43173a71a0fSBarry Smith 43273a71a0fSBarry Smith *ierr = MatGetSize(*mat,&m,&n); if (*ierr) return; 43373a71a0fSBarry Smith *ierr = PetscScalarAddressFromFortran((PetscObject)*mat,fa,*ia,m*n,&lx);if (*ierr) return; 4348c778c55SBarry Smith *ierr = MatDenseRestoreArray(*mat,&lx);if (*ierr) return; 43573a71a0fSBarry Smith } 43673a71a0fSBarry Smith 4378cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matfactorgetsolverpackage_(Mat *mat,CHAR name PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) 43835bd34faSBarry Smith { 43935bd34faSBarry Smith const char *tname; 44035bd34faSBarry Smith 44135bd34faSBarry Smith *ierr = MatFactorGetSolverPackage(*mat,&tname);if (*ierr) return; 44235bd34faSBarry Smith if (name != PETSC_NULL_CHARACTER_Fortran) { 44335bd34faSBarry Smith *ierr = PetscStrncpy(name,tname,len);if (*ierr) return; 44435bd34faSBarry Smith } 44535bd34faSBarry Smith FIXRETURNCHAR(PETSC_TRUE,name,len); 44635bd34faSBarry Smith } 44735bd34faSBarry Smith 4488cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matgetfactor_(Mat *mat,CHAR outtype PETSC_MIXED_LEN(len),MatFactorType *ftype,Mat *M,PetscErrorCode *ierr PETSC_END_LEN(len)) 4495dffd610SBarry Smith { 4505dffd610SBarry Smith char *t; 4515dffd610SBarry Smith FIXCHAR(outtype,len,t); 4529be81726SHong Zhang *ierr = MatGetFactor(*mat,t,*ftype,M); 4535dffd610SBarry Smith FREECHAR(outtype,t); 4545dffd610SBarry Smith } 4555dffd610SBarry Smith 4568cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matconvert_(Mat *mat,CHAR outtype PETSC_MIXED_LEN(len),MatReuse *reuse,Mat *M,PetscErrorCode *ierr PETSC_END_LEN(len)) 457f4e70085SSatish Balay { 458f4e70085SSatish Balay char *t; 459f4e70085SSatish Balay FIXCHAR(outtype,len,t); 460f4e70085SSatish Balay *ierr = MatConvert(*mat,t,*reuse,M); 461f4e70085SSatish Balay FREECHAR(outtype,t); 462f4e70085SSatish Balay } 463f4e70085SSatish Balay 464f4e70085SSatish Balay /* 465f4e70085SSatish Balay MatGetSubmatrices() is slightly different from C since the 466f4e70085SSatish Balay Fortran provides the array to hold the submatrix objects,while in C that 467f4e70085SSatish Balay array is allocated by the MatGetSubmatrices() 468f4e70085SSatish Balay */ 4698cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matgetsubmatrices_(Mat *mat,PetscInt *n,IS *isrow,IS *iscol,MatReuse *scall,Mat *smat,PetscErrorCode *ierr) 470f4e70085SSatish Balay { 471f4e70085SSatish Balay Mat *lsmat; 472f4e70085SSatish Balay PetscInt i; 473f4e70085SSatish Balay 474f4e70085SSatish Balay if (*scall == MAT_INITIAL_MATRIX) { 475f4e70085SSatish Balay *ierr = MatGetSubMatrices(*mat,*n,isrow,iscol,*scall,&lsmat); 476f4e70085SSatish Balay for (i=0; i<*n; i++) { 477f4e70085SSatish Balay smat[i] = lsmat[i]; 478f4e70085SSatish Balay } 479f4e70085SSatish Balay *ierr = PetscFree(lsmat); 480f4e70085SSatish Balay } else { 481f4e70085SSatish Balay *ierr = MatGetSubMatrices(*mat,*n,isrow,iscol,*scall,&smat); 482f4e70085SSatish Balay } 483f4e70085SSatish Balay } 484f4e70085SSatish Balay 4857d6bfa3bSBarry Smith /* 4867d6bfa3bSBarry Smith MatDestroyMatrices() is slightly different from C since the 4877d6bfa3bSBarry Smith Fortran provides the array to hold the submatrix objects,while in C that 4887d6bfa3bSBarry Smith array is allocated by the MatGetSubmatrices() 4897d6bfa3bSBarry Smith */ 4908cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matdestroymatrices_(Mat *mat,PetscInt *n,Mat *smat,PetscErrorCode *ierr) 4917d6bfa3bSBarry Smith { 4927d6bfa3bSBarry Smith PetscInt i; 4937d6bfa3bSBarry Smith 4947d6bfa3bSBarry Smith for (i=0; i<*n; i++) { 4956bf464f9SBarry Smith *ierr = MatDestroy(&smat[i]);if (*ierr) return; 4967d6bfa3bSBarry Smith } 4977d6bfa3bSBarry Smith } 4987d6bfa3bSBarry Smith 4998cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matzerorowscolumns_(Mat *mat,PetscInt *numRows,PetscInt *rows,PetscScalar *diag,Vec *x,Vec *b,PetscErrorCode *ierr) 50017ede90eSSatish Balay { 50117ede90eSSatish Balay CHKFORTRANNULLOBJECTDEREFERENCE(x); 50217ede90eSSatish Balay CHKFORTRANNULLOBJECTDEREFERENCE(b); 50317ede90eSSatish Balay *ierr = MatZeroRowsColumns(*mat,*numRows,rows,*diag,*x,*b); 50417ede90eSSatish Balay } 50517ede90eSSatish Balay 5068cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matzerorowscolumnsis_(Mat *mat,IS *is,PetscScalar *diag,Vec *x,Vec *b,PetscErrorCode *ierr) 50717ede90eSSatish Balay { 50817ede90eSSatish Balay CHKFORTRANNULLOBJECTDEREFERENCE(x); 50917ede90eSSatish Balay CHKFORTRANNULLOBJECTDEREFERENCE(b); 51017ede90eSSatish Balay *ierr = MatZeroRowsColumnsIS(*mat,*is,*diag,*x,*b); 51117ede90eSSatish Balay } 51217ede90eSSatish Balay 5138cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matzerorowsstencil_(Mat *mat,PetscInt *numRows,MatStencil *rows,PetscScalar *diag,Vec *x,Vec *b,PetscErrorCode *ierr) 51417ede90eSSatish Balay { 51517ede90eSSatish Balay CHKFORTRANNULLOBJECTDEREFERENCE(x); 51617ede90eSSatish Balay CHKFORTRANNULLOBJECTDEREFERENCE(b); 51717ede90eSSatish Balay *ierr = MatZeroRowsStencil(*mat,*numRows,rows,*diag,*x,*b); 51817ede90eSSatish Balay } 51917ede90eSSatish Balay 5208cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matzerorowscolumnsstencil_(Mat *mat,PetscInt *numRows,MatStencil *rows,PetscScalar *diag,Vec *x,Vec *b,PetscErrorCode *ierr) 521d25a37e1SJed Brown { 522d25a37e1SJed Brown CHKFORTRANNULLOBJECTDEREFERENCE(x); 523d25a37e1SJed Brown CHKFORTRANNULLOBJECTDEREFERENCE(b); 524d25a37e1SJed Brown *ierr = MatZeroRowsColumnsStencil(*mat,*numRows,rows,*diag,*x,*b); 525d25a37e1SJed Brown } 526d25a37e1SJed Brown 5278cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matzerorows_(Mat *mat,PetscInt *numRows,PetscInt *rows,PetscScalar *diag,Vec *x,Vec *b,PetscErrorCode *ierr) 528f4e70085SSatish Balay { 5292b40b63fSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(x); 5302b40b63fSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(b); 5312b40b63fSBarry Smith *ierr = MatZeroRows(*mat,*numRows,rows,*diag,*x,*b); 532f4e70085SSatish Balay } 533f4e70085SSatish Balay 5348cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matzerorowsis_(Mat *mat,IS *is,PetscScalar *diag,Vec *x,Vec *b,PetscErrorCode *ierr) 535f4e70085SSatish Balay { 5362b40b63fSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(x); 5372b40b63fSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(b); 5382b40b63fSBarry Smith *ierr = MatZeroRowsIS(*mat,*is,*diag,*x,*b); 539f4e70085SSatish Balay } 540f4e70085SSatish Balay 5418cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matzerorowslocal_(Mat *mat,PetscInt *numRows,PetscInt *rows,PetscScalar *diag,Vec *x,Vec *b,PetscErrorCode *ierr) 542f4e70085SSatish Balay { 5432b40b63fSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(x); 5442b40b63fSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(b); 5452b40b63fSBarry Smith *ierr = MatZeroRowsLocal(*mat,*numRows,rows,*diag,*x,*b); 546f4e70085SSatish Balay } 547f4e70085SSatish Balay 5488cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matzerorowslocalis_(Mat *mat,IS *is,PetscScalar *diag,Vec *x,Vec *b,PetscErrorCode *ierr) 549f4e70085SSatish Balay { 5502b40b63fSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(x); 5512b40b63fSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(b); 5522b40b63fSBarry Smith *ierr = MatZeroRowsLocalIS(*mat,*is,*diag,*x,*b); 553f4e70085SSatish Balay } 554f4e70085SSatish Balay 5558cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matzerorowscolumnslocal_(Mat *mat,PetscInt *numRows,PetscInt *rows,PetscScalar *diag,Vec *x,Vec *b,PetscErrorCode *ierr) 55617ede90eSSatish Balay { 55717ede90eSSatish Balay CHKFORTRANNULLOBJECTDEREFERENCE(x); 55817ede90eSSatish Balay CHKFORTRANNULLOBJECTDEREFERENCE(b); 55917ede90eSSatish Balay *ierr = MatZeroRowsColumnsLocal(*mat,*numRows,rows,*diag,*x,*b); 56017ede90eSSatish Balay } 56117ede90eSSatish Balay 5628cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matzerorowscolumnslocalis_(Mat *mat,IS *is,PetscScalar *diag,Vec *x,Vec *b,PetscErrorCode *ierr) 56317ede90eSSatish Balay { 56417ede90eSSatish Balay CHKFORTRANNULLOBJECTDEREFERENCE(x); 56517ede90eSSatish Balay CHKFORTRANNULLOBJECTDEREFERENCE(b); 56617ede90eSSatish Balay *ierr = MatZeroRowsColumnsLocalIS(*mat,*is,*diag,*x,*b); 56717ede90eSSatish Balay } 5681eea217eSSatish Balay 5698cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matsetoptionsprefix_(Mat *mat,CHAR prefix PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) 5701eea217eSSatish Balay { 5711eea217eSSatish Balay char *t; 5721eea217eSSatish Balay 5731eea217eSSatish Balay FIXCHAR(prefix,len,t); 5741eea217eSSatish Balay *ierr = MatSetOptionsPrefix(*mat,t); 5751eea217eSSatish Balay FREECHAR(prefix,t); 5761eea217eSSatish Balay } 5771eea217eSSatish Balay 578d0195637SJed Brown PETSC_EXTERN void PETSC_STDCALL matnullspaceremove_(MatNullSpace *sp,Vec *vec,PetscErrorCode *ierr) 579812c3f48SMatthew Knepley { 580d0195637SJed Brown *ierr = MatNullSpaceRemove(*sp,*vec); 581812c3f48SMatthew Knepley } 5821eea217eSSatish Balay 5834d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matgetinfo_(Mat *mat,MatInfoType *flag,MatInfo *info, int *ierr) 5845ba43861SSatish Balay { 5854d03fd2bSBarry Smith *ierr = MatGetInfo(*mat,*flag,info); 5865ba43861SSatish Balay } 5875ba43861SSatish Balay 5884d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matlufactor_(Mat *mat,IS *row,IS *col,const MatFactorInfo *info, int *ierr) 58922688b47SSatish Balay { 5904d03fd2bSBarry Smith *ierr = MatLUFactor(*mat,*row,*col,info); 59122688b47SSatish Balay } 59222688b47SSatish Balay 5934d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matilufactor_(Mat *mat,IS *row,IS *col,const MatFactorInfo *info, int *ierr) 59422688b47SSatish Balay { 5954d03fd2bSBarry Smith *ierr = MatILUFactor(*mat,*row,*col,info); 59622688b47SSatish Balay } 59722688b47SSatish Balay 5984d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matlufactorsymbolic_(Mat *fact,Mat *mat,IS *row,IS *col,const MatFactorInfo *info, int *ierr) 59922688b47SSatish Balay { 6004d03fd2bSBarry Smith *ierr = MatLUFactorSymbolic(*fact,*mat,*row,*col,info); 60122688b47SSatish Balay } 60222688b47SSatish Balay 6034d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matlufactornumeric_(Mat *fact,Mat *mat,const MatFactorInfo *info, int *ierr) 60422688b47SSatish Balay { 6054d03fd2bSBarry Smith *ierr = MatLUFactorNumeric(*fact,*mat,info); 60622688b47SSatish Balay } 60722688b47SSatish Balay 6084d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matcholeskyfactor_(Mat *mat,IS *perm,const MatFactorInfo *info, int *ierr) 60922688b47SSatish Balay { 6104d03fd2bSBarry Smith *ierr = MatCholeskyFactor(*mat,*perm,info); 61122688b47SSatish Balay } 61222688b47SSatish Balay 6134d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matcholeskyfactorsymbolic_(Mat *fact,Mat *mat,IS *perm,const MatFactorInfo *info, int *ierr) 61422688b47SSatish Balay { 6154d03fd2bSBarry Smith *ierr = MatCholeskyFactorSymbolic(*fact,*mat,*perm,info); 61622688b47SSatish Balay } 61722688b47SSatish Balay 6184d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matcholeskyfactornumeric_(Mat *fact,Mat *mat,const MatFactorInfo *info, int *ierr) 61922688b47SSatish Balay { 6204d03fd2bSBarry Smith *ierr = MatCholeskyFactorNumeric(*fact,*mat,info); 62122688b47SSatish Balay } 62222688b47SSatish Balay 6234d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matilufactorsymbolic_(Mat *fact,Mat *mat,IS *row,IS *col,const MatFactorInfo *info, int *ierr) 62422688b47SSatish Balay { 6254d03fd2bSBarry Smith *ierr = MatILUFactorSymbolic(*fact,*mat,*row,*col,info); 62622688b47SSatish Balay } 62722688b47SSatish Balay 6284d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL maticcfactorsymbolic_(Mat *fact,Mat *mat,IS *perm,const MatFactorInfo *info, int *ierr) 62922688b47SSatish Balay { 6304d03fd2bSBarry Smith *ierr = MatICCFactorSymbolic(*fact,*mat,*perm,info); 63122688b47SSatish Balay } 63222688b47SSatish Balay 6334d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL maticcfactor_(Mat *mat,IS *row,const MatFactorInfo *info, int *ierr) 63422688b47SSatish Balay { 6354d03fd2bSBarry Smith *ierr = MatICCFactor(*mat,*row,info); 63622688b47SSatish Balay } 63722688b47SSatish Balay 6384d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matfactorinfoinitialize_(MatFactorInfo *info, int *ierr) 63922688b47SSatish Balay { 6404d03fd2bSBarry Smith *ierr = MatFactorInfoInitialize(info); 64122688b47SSatish Balay } 642