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 7*1006886cSSatish Balay #define matsetvaluesnnnn_ MATSETVALUESNNNN 83b494cfeSSatish Balay #define matsetvalues0_ MATSETVALUES0 91b266c99SBarry Smith #define matsetvaluesnn1_ MATSETVALUESNN1 104d03fd2bSBarry Smith #define matsetvalues11_ MATSETVALUES11 114d03fd2bSBarry Smith #define matsetvalues1n_ MATSETVALUES1N 124d03fd2bSBarry Smith #define matsetvaluesn1_ MATSETVALUESN1 133b494cfeSSatish Balay #define matsetvaluesblocked0_ MATSETVALUESBLOCKED0 144d03fd2bSBarry Smith #define matsetvaluesblocked11_ MATSETVALUESBLOCKED11 154d03fd2bSBarry Smith #define matsetvaluesblocked111_ MATSETVALUESBLOCKED111 164d03fd2bSBarry Smith #define matsetvaluesblocked1n_ MATSETVALUESBLOCKED1N 174d03fd2bSBarry Smith #define matsetvaluesblockedn1_ MATSETVALUESBLOCKEDN1 184d03fd2bSBarry Smith #define matsetvaluesblockedlocal_ MATSETVALUESBLOCKEDLOCAL 193b494cfeSSatish Balay #define matsetvaluesblockedlocal0_ MATSETVALUESBLOCKEDLOCAL0 204d03fd2bSBarry Smith #define matsetvaluesblockedlocal11_ MATSETVALUESBLOCKEDLOCAL11 214d03fd2bSBarry Smith #define matsetvaluesblockedlocal111_ MATSETVALUESBLOCKEDLOCAL111 224d03fd2bSBarry Smith #define matsetvaluesblockedlocal1n_ MATSETVALUESBLOCKEDLOCAL1N 234d03fd2bSBarry Smith #define matsetvaluesblockedlocaln1_ MATSETVALUESBLOCKEDLOCALN1 244d03fd2bSBarry Smith #define matsetvalueslocal_ MATSETVALUESLOCAL 253b494cfeSSatish Balay #define matsetvalueslocal0_ MATSETVALUESLOCAL0 264d03fd2bSBarry Smith #define matsetvalueslocal11_ MATSETVALUESLOCAL11 274d03fd2bSBarry Smith #define matsetvalueslocal11nn_ MATSETVALUESLOCAL11NN 284d03fd2bSBarry Smith #define matsetvalueslocal111_ MATSETVALUESLOCAL111 294d03fd2bSBarry Smith #define matsetvalueslocal1n_ MATSETVALUESLOCAL1N 304d03fd2bSBarry Smith #define matsetvalueslocaln1_ MATSETVALUESLOCALN1 3187bcf4e0SBarry Smith #define matgetrowmin_ MATGETROWMIN 3287bcf4e0SBarry Smith #define matgetrowminabs_ MATGETROWMINABS 335928be6bSBarry Smith #define matgetrowmax_ MATGETROWMAX 345928be6bSBarry Smith #define matgetrowmaxabs_ MATGETROWMAXABS 357d6bfa3bSBarry Smith #define matdestroymatrices_ MATDESTROYMATRICES 365dffd610SBarry Smith #define matgetfactor_ MATGETFACTOR 3735bd34faSBarry Smith #define matfactorgetsolverpackage_ MATFACTORGETSOLVERPACKAGE 38f4e70085SSatish Balay #define matgetrowij_ MATGETROWIJ 39f4e70085SSatish Balay #define matrestorerowij_ MATRESTOREROWIJ 40f4e70085SSatish Balay #define matgetrow_ MATGETROW 41f4e70085SSatish Balay #define matrestorerow_ MATRESTOREROW 42f7e310deSShri Abhyankar #define matload_ MATLOAD 43f4e70085SSatish Balay #define matview_ MATVIEW 448c778c55SBarry Smith #define matseqaijgetarray_ MATSEQAIJGETARRAY 456778691eSSatish Balay #define matseqaijrestorearray_ MATSEQAIJRESTOREARRAY 468c778c55SBarry Smith #define matdensegetarray_ MATDENSEGETARRAY 478c778c55SBarry Smith #define matdenserestorearray_ MATDENSERESTOREARRAY 48f4e70085SSatish Balay #define matconvert_ MATCONVERT 49f4e70085SSatish Balay #define matgetsubmatrices_ MATGETSUBMATRICES 5017ede90eSSatish Balay #define matzerorowscolumns_ MATZEROROWSCOLUMNS 5117ede90eSSatish Balay #define matzerorowscolumnsis_ MATZEROROWSCOLUMNSIS 5217ede90eSSatish Balay #define matzerorowsstencil_ MATZEROROWSSTENCIL 53d25a37e1SJed Brown #define matzerorowscolumnsstencil_ MATZEROROWSCOLUMNSSTENCIL 54f4e70085SSatish Balay #define matzerorows_ MATZEROROWS 55f4e70085SSatish Balay #define matzerorowsis_ MATZEROROWSIS 56f4e70085SSatish Balay #define matzerorowslocal_ MATZEROROWSLOCAL 57f4e70085SSatish Balay #define matzerorowslocalis_ MATZEROROWSLOCALIS 5817ede90eSSatish Balay #define matzerorowscolumnslocal_ MATZEROROWSCOLUMNSLOCAL 5917ede90eSSatish Balay #define matzerorowscolumnslocalis_ MATZEROROWSCOLUMNSLOCALIS 601eea217eSSatish Balay #define matsetoptionsprefix_ MATSETOPTIONSPREFIX 61fcc9d04bSBarry Smith #define matcreatevecs_ MATCREATEVECS 62c9d5ca86SBarry Smith #define matnullspaceremove_ MATNULLSPACEREMOVE 635ba43861SSatish Balay #define matgetinfo_ MATGETINFO 6422688b47SSatish Balay #define matlufactor_ MATLUFACTOR 6522688b47SSatish Balay #define matilufactor_ MATILUFACTOR 6622688b47SSatish Balay #define matlufactorsymbolic_ MATLUFACTORSYMBOLIC 6722688b47SSatish Balay #define matlufactornumeric_ MATLUFACTORNUMERIC 6822688b47SSatish Balay #define matcholeskyfactor_ MATCHOLESKYFACTOR 6922688b47SSatish Balay #define matcholeskyfactorsymbolic_ MATCHOLESKYFACTORSYMBOLIC 7022688b47SSatish Balay #define matcholeskyfactornumeric_ MATCHOLESKYFACTORNUMERIC 7122688b47SSatish Balay #define matilufactorsymbolic_ MATILUFACTORSYMBOLIC 7222688b47SSatish Balay #define maticcfactorsymbolic_ MATICCFACTORSYMBOLIC 7322688b47SSatish Balay #define maticcfactor_ MATICCFACTOR 7422688b47SSatish Balay #define matfactorinfoinitialize_ MATFACTORINFOINITIALIZE 75b22b330cSBarry Smith #define matnullspacesetfunction_ MATNULLSPACESETFUNCTION 760905d9aaSJed Brown #define matfindnonzerorows_ MATFINDNONZEROROWS 77f4e70085SSatish Balay #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 784d03fd2bSBarry Smith #define matsetvalues_ matsetvalues 79*1006886cSSatish Balay #define matsetvaluesnnnn_ matsetvaluesnnnn 803b494cfeSSatish Balay #define matsetvalues0_ matsetvalues0 811b266c99SBarry Smith #define matsetvaluesnn1_ matsetvaluesnn1 824d03fd2bSBarry Smith #define matsetvalues11_ matsetvalues11 834d03fd2bSBarry Smith #define matsetvaluesn1_ matsetvaluesn1 844d03fd2bSBarry Smith #define matsetvalues1n_ matsetvalues1n 854d03fd2bSBarry Smith #define matsetvalueslocal_ matsetvalueslocal 863b494cfeSSatish Balay #define matsetvalueslocal0_ matsetvalueslocal0 874d03fd2bSBarry Smith #define matsetvalueslocal11_ matsetvalueslocal11 884d03fd2bSBarry Smith #define matsetvalueslocal11nn_ matsetvalueslocal11nn 894d03fd2bSBarry Smith #define matsetvalueslocal111_ matsetvalueslocal111 904d03fd2bSBarry Smith #define matsetvalueslocal1n_ matsetvalueslocal1n 914d03fd2bSBarry Smith #define matsetvalueslocaln1_ matsetvalueslocaln1 924d03fd2bSBarry Smith #define matsetvaluesblocked_ matsetvaluesblocked 933b494cfeSSatish Balay #define matsetvaluesblocked0_ matsetvaluesblocked0 944d03fd2bSBarry Smith #define matsetvaluesblocked11_ matsetvaluesblocked11 954d03fd2bSBarry Smith #define matsetvaluesblocked111_ matsetvaluesblocked111 964d03fd2bSBarry Smith #define matsetvaluesblocked1n_ matsetvaluesblocked1n 974d03fd2bSBarry Smith #define matsetvaluesblocked1n_ matsetvaluesblockedn1 984d03fd2bSBarry Smith #define matsetvaluesblockedlocal_ matsetvaluesblockedlocal 993b494cfeSSatish Balay #define matsetvaluesblockedlocal0_ matsetvaluesblockedlocal0 1004d03fd2bSBarry Smith #define matsetvaluesblockedlocal11_ matsetvaluesblockedlocal11 1014d03fd2bSBarry Smith #define matsetvaluesblockedlocal111_ matsetvaluesblockedlocal111 1024d03fd2bSBarry Smith #define matsetvaluesblockedlocal1n_ matsetvaluesblockedlocal1n 1034d03fd2bSBarry Smith #define matsetvaluesblockedlocal1n_ matsetvaluesblockedlocaln1 10487bcf4e0SBarry Smith #define matgetrowmin_ matgetrowmin 10587bcf4e0SBarry Smith #define matgetrowminabs_ matgetrowminabs 1065928be6bSBarry Smith #define matgetrowmax_ matgetrowmax 1075928be6bSBarry Smith #define matgetrowmaxabs_ matgetrowmaxabs 1085928be6bSBarry Smith #define matdestroymatrices_ matdestroymatrices 1095dffd610SBarry Smith #define matgetfactor_ matgetfactor 11035bd34faSBarry Smith #define matfactorgetsolverpackage_ matfactorgetsolverpackage 111fcc9d04bSBarry Smith #define matcreatevecs_ matcreatevecs 112f4e70085SSatish Balay #define matgetrowij_ matgetrowij 113f4e70085SSatish Balay #define matrestorerowij_ matrestorerowij 114f4e70085SSatish Balay #define matgetrow_ matgetrow 115f4e70085SSatish Balay #define matrestorerow_ matrestorerow 116f4e70085SSatish Balay #define matview_ matview 117f7e310deSShri Abhyankar #define matload_ matload 1188c778c55SBarry Smith #define matseqaijgetarray_ matseqaijgetarray 1198c778c55SBarry Smith #define matseqaijrestorearray_ matseqaijrestorearray 1208c778c55SBarry Smith #define matdensegetarray_ matdensegetarray 1218c778c55SBarry Smith #define matdenserestorearray_ matdenserestorearray 122f4e70085SSatish Balay #define matconvert_ matconvert 123f4e70085SSatish Balay #define matgetsubmatrices_ matgetsubmatrices 12417ede90eSSatish Balay #define matzerorowscolumns_ matzerorowscolumns 12517ede90eSSatish Balay #define matzerorowscolumnsis_ matzerorowscolumnsis 12617ede90eSSatish Balay #define matzerorowsstencil_ matzerorowsstencil 127d25a37e1SJed Brown #define matzerorowscolumnsstencil_ matzerorowscolumnsstencil 128f4e70085SSatish Balay #define matzerorows_ matzerorows 129f4e70085SSatish Balay #define matzerorowsis_ matzerorowsis 130f4e70085SSatish Balay #define matzerorowslocal_ matzerorowslocal 131f4e70085SSatish Balay #define matzerorowslocalis_ matzerorowslocalis 13217ede90eSSatish Balay #define matzerorowscolumnslocal_ matzerorowscolumnslocal 13317ede90eSSatish Balay #define matzerorowscolumnslocalis_ matzerorowscolumnslocalis 1341eea217eSSatish Balay #define matsetoptionsprefix_ matsetoptionsprefix 135812c3f48SMatthew Knepley #define matnullspaceremove_ matnullspaceremove 1365ba43861SSatish Balay #define matgetinfo_ matgetinfo 13722688b47SSatish Balay #define matlufactor_ matlufactor 13822688b47SSatish Balay #define matilufactor_ matilufactor 13922688b47SSatish Balay #define matlufactorsymbolic_ matlufactorsymbolic 14022688b47SSatish Balay #define matlufactornumeric_ matlufactornumeric 14122688b47SSatish Balay #define matcholeskyfactor_ matcholeskyfactor 14222688b47SSatish Balay #define matcholeskyfactorsymbolic_ matcholeskyfactorsymbolic 14322688b47SSatish Balay #define matcholeskyfactornumeric_ matcholeskyfactornumeric 14422688b47SSatish Balay #define matilufactorsymbolic_ matilufactorsymbolic 14522688b47SSatish Balay #define maticcfactorsymbolic_ maticcfactorsymbolic 14622688b47SSatish Balay #define maticcfactor_ maticcfactor 14722688b47SSatish Balay #define matfactorinfoinitialize_ matfactorinfoinitialize 148b22b330cSBarry Smith #define matnullspacesetfunction_ matnullspacesetfunction 1490905d9aaSJed Brown #define matfindnonzerorows_ matfindnonzerorows 150f4e70085SSatish Balay #endif 151f4e70085SSatish Balay 1524d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvaluesblocked_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ){ 1534d03fd2bSBarry Smith *ierr = MatSetValuesBlocked(*mat,*m,idxm,*n,idxn,v,*addv); 1544d03fd2bSBarry Smith } 1554d03fd2bSBarry Smith 1563b494cfeSSatish Balay PETSC_EXTERN void PETSC_STDCALL matsetvaluesblocked0_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ){ 1573b494cfeSSatish Balay matsetvaluesblocked_(mat,m,idxm,n,idxn,v,addv,ierr); 1583b494cfeSSatish Balay } 1593b494cfeSSatish Balay 1604d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvaluesblocked11_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ){ 1614d03fd2bSBarry Smith matsetvaluesblocked_(mat,m,idxm,n,idxn,v,addv,ierr); 1624d03fd2bSBarry Smith } 1634d03fd2bSBarry Smith 1644d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvaluesblocked111_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ){ 1654d03fd2bSBarry Smith matsetvaluesblocked_(mat,m,idxm,n,idxn,v,addv,ierr); 1664d03fd2bSBarry Smith } 1674d03fd2bSBarry Smith 1684d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvaluesblocked1n_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ){ 1694d03fd2bSBarry Smith matsetvaluesblocked_(mat,m,idxm,n,idxn,v,addv,ierr); 1704d03fd2bSBarry Smith } 1714d03fd2bSBarry Smith 1724d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvaluesblockedn1_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ){ 1734d03fd2bSBarry Smith matsetvaluesblocked_(mat,m,idxm,n,idxn,v,addv,ierr); 1744d03fd2bSBarry Smith } 1754d03fd2bSBarry Smith 1764d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvaluesblockedlocal_(Mat *mat,PetscInt *nrow, PetscInt irow[],PetscInt *ncol, PetscInt icol[], PetscScalar y[],InsertMode *addv, int *ierr ) 1774d03fd2bSBarry Smith { 1784d03fd2bSBarry Smith *ierr = MatSetValuesBlockedLocal(*mat,*nrow,irow,*ncol,icol,y,*addv); 1794d03fd2bSBarry Smith } 1804d03fd2bSBarry Smith 1813b494cfeSSatish Balay PETSC_EXTERN void PETSC_STDCALL matsetvaluesblockedlocal0_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ){ 1823b494cfeSSatish Balay matsetvaluesblockedlocal_(mat,m,idxm,n,idxn,v,addv,ierr); 1833b494cfeSSatish Balay } 1843b494cfeSSatish Balay 1854d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvaluesblockedlocal11_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ){ 1864d03fd2bSBarry Smith matsetvaluesblockedlocal_(mat,m,idxm,n,idxn,v,addv,ierr); 1874d03fd2bSBarry Smith } 1884d03fd2bSBarry Smith 1894d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvaluesblockedlocal111_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ){ 1904d03fd2bSBarry Smith matsetvaluesblockedlocal_(mat,m,idxm,n,idxn,v,addv,ierr); 1914d03fd2bSBarry Smith } 1924d03fd2bSBarry Smith 1934d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvaluesblockedlocal1n_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ){ 1944d03fd2bSBarry Smith matsetvaluesblockedlocal_(mat,m,idxm,n,idxn,v,addv,ierr); 1954d03fd2bSBarry Smith } 1964d03fd2bSBarry Smith 1974d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvaluesblockedlocaln1_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ){ 1984d03fd2bSBarry Smith matsetvaluesblockedlocal_(mat,m,idxm,n,idxn,v,addv,ierr); 1994d03fd2bSBarry Smith } 2004d03fd2bSBarry Smith 2014d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvalues_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ) 2024d03fd2bSBarry Smith { 2034d03fd2bSBarry Smith *ierr = MatSetValues(*mat,*m,idxm,*n,idxn,v,*addv); 2044d03fd2bSBarry Smith } 2054d03fd2bSBarry Smith 2061b266c99SBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvaluesnnnn_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ) 2071b266c99SBarry Smith { 2081b266c99SBarry Smith matsetvalues_(mat,m,idxm,n,idxn,v,addv,ierr); 2091b266c99SBarry Smith } 2101b266c99SBarry Smith 2113b494cfeSSatish Balay PETSC_EXTERN void PETSC_STDCALL matsetvalues0_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ) 2123b494cfeSSatish Balay { 2133b494cfeSSatish Balay matsetvalues_(mat,m,idxm,n,idxn,v,addv,ierr); 2143b494cfeSSatish Balay } 2153b494cfeSSatish Balay 2161b266c99SBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvaluesnn1_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ) 2171b266c99SBarry Smith { 2181b266c99SBarry Smith matsetvalues_(mat,m,idxm,n,idxn,v,addv,ierr); 2191b266c99SBarry Smith } 2201b266c99SBarry Smith 2214d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvalues11_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ) 2224d03fd2bSBarry Smith { 2234d03fd2bSBarry Smith matsetvalues_(mat,m,idxm,n,idxn,v,addv,ierr); 2244d03fd2bSBarry Smith } 2254d03fd2bSBarry Smith 2264d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvaluesn1_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ) 2274d03fd2bSBarry Smith { 2284d03fd2bSBarry Smith matsetvalues_(mat,m,idxm,n,idxn,v,addv,ierr); 2294d03fd2bSBarry Smith } 2304d03fd2bSBarry Smith 2314d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvalues1n_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ) 2324d03fd2bSBarry Smith { 2334d03fd2bSBarry Smith matsetvalues_(mat,m,idxm,n,idxn,v,addv,ierr); 2344d03fd2bSBarry Smith } 2354d03fd2bSBarry Smith 2364d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvalueslocal_(Mat *mat,PetscInt *nrow, PetscInt irow[],PetscInt *ncol, PetscInt icol[], PetscScalar y[],InsertMode *addv, int *ierr ) 2374d03fd2bSBarry Smith { 2384d03fd2bSBarry Smith *ierr = MatSetValuesLocal(*mat,*nrow,irow,*ncol,icol,y,*addv); 2394d03fd2bSBarry Smith } 2404d03fd2bSBarry Smith 2413b494cfeSSatish Balay PETSC_EXTERN void PETSC_STDCALL matsetvalueslocal0_(Mat *mat,PetscInt *nrow, PetscInt irow[],PetscInt *ncol, PetscInt icol[], PetscScalar y[],InsertMode *addv, int *ierr ) 2423b494cfeSSatish Balay { 2433b494cfeSSatish Balay matsetvalueslocal_(mat,nrow,irow,ncol,icol,y,addv,ierr); 2443b494cfeSSatish Balay } 2453b494cfeSSatish Balay 2464d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvalueslocal11_(Mat *mat,PetscInt *nrow, PetscInt irow[],PetscInt *ncol, PetscInt icol[], PetscScalar y[],InsertMode *addv, int *ierr ) 2474d03fd2bSBarry Smith { 2484d03fd2bSBarry Smith matsetvalueslocal_(mat,nrow,irow,ncol,icol,y,addv,ierr); 2494d03fd2bSBarry Smith } 2504d03fd2bSBarry Smith 2514d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvalueslocal11nn_(Mat *mat,PetscInt *nrow, PetscInt irow[],PetscInt *ncol, PetscInt icol[], PetscScalar y[],InsertMode *addv, int *ierr ) 2524d03fd2bSBarry Smith { 2534d03fd2bSBarry Smith matsetvalueslocal_(mat,nrow,irow,ncol,icol,y,addv,ierr); 2544d03fd2bSBarry Smith } 2554d03fd2bSBarry Smith 2564d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvalueslocal111_(Mat *mat,PetscInt *nrow, PetscInt irow[],PetscInt *ncol, PetscInt icol[], PetscScalar y[],InsertMode *addv, int *ierr ) 2574d03fd2bSBarry Smith { 2584d03fd2bSBarry Smith matsetvalueslocal_(mat,nrow,irow,ncol,icol,y,addv,ierr); 2594d03fd2bSBarry Smith } 2604d03fd2bSBarry Smith 2614d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvalueslocal1n_(Mat *mat,PetscInt *nrow, PetscInt irow[],PetscInt *ncol, PetscInt icol[], PetscScalar y[],InsertMode *addv, int *ierr ) 2624d03fd2bSBarry Smith { 2634d03fd2bSBarry Smith matsetvalueslocal_(mat,nrow,irow,ncol,icol,y,addv,ierr); 2644d03fd2bSBarry Smith } 2654d03fd2bSBarry Smith 2664d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvalueslocaln1_(Mat *mat,PetscInt *nrow, PetscInt irow[],PetscInt *ncol, PetscInt icol[], PetscScalar y[],InsertMode *addv, int *ierr ) 2674d03fd2bSBarry Smith { 2684d03fd2bSBarry Smith matsetvalueslocal_(mat,nrow,irow,ncol,icol,y,addv,ierr); 2694d03fd2bSBarry Smith } 2704d03fd2bSBarry Smith 27187bcf4e0SBarry Smith PETSC_EXTERN void PETSC_STDCALL matgetrowmin_(Mat *mat,Vec *v,PetscInt idx[], int *ierr ) 27287bcf4e0SBarry Smith { 27387bcf4e0SBarry Smith CHKFORTRANNULLINTEGER(idx); 27487bcf4e0SBarry Smith *ierr = MatGetRowMin(*mat,*v,idx); 27587bcf4e0SBarry Smith } 2764d03fd2bSBarry Smith 27787bcf4e0SBarry Smith PETSC_EXTERN void PETSC_STDCALL matgetrowminabs_(Mat *mat,Vec *v,PetscInt idx[], int *ierr ) 27887bcf4e0SBarry Smith { 27987bcf4e0SBarry Smith CHKFORTRANNULLINTEGER(idx); 28087bcf4e0SBarry Smith *ierr = MatGetRowMinAbs(*mat,*v,idx); 28187bcf4e0SBarry Smith } 28287bcf4e0SBarry Smith 2835928be6bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matgetrowmax_(Mat *mat,Vec *v,PetscInt idx[], int *ierr ) 2845928be6bSBarry Smith { 2855928be6bSBarry Smith CHKFORTRANNULLINTEGER(idx); 2865928be6bSBarry Smith *ierr = MatGetRowMax(*mat,*v,idx); 2875928be6bSBarry Smith } 2885928be6bSBarry Smith 2895928be6bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matgetrowmaxabs_(Mat *mat,Vec *v,PetscInt idx[], int *ierr ) 2905928be6bSBarry Smith { 2915928be6bSBarry Smith CHKFORTRANNULLINTEGER(idx); 2925928be6bSBarry Smith *ierr = MatGetRowMaxAbs(*mat,*v,idx); 2935928be6bSBarry Smith } 2945928be6bSBarry Smith 295b22b330cSBarry Smith static PetscErrorCode ournullfunction(MatNullSpace sp,Vec x,void *ctx) 296b22b330cSBarry Smith { 297b22b330cSBarry Smith PetscErrorCode ierr = 0; 298b22b330cSBarry Smith (*(void (PETSC_STDCALL *)(MatNullSpace*,Vec*,void*,PetscErrorCode*))(((PetscObject)sp)->fortran_func_pointers[0]))(&sp,&x,ctx,&ierr);CHKERRQ(ierr); 299b22b330cSBarry Smith return 0; 300b22b330cSBarry Smith } 301b22b330cSBarry Smith 3028cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matnullspacesetfunction_(MatNullSpace *sp, PetscErrorCode (*rem)(MatNullSpace,Vec,void*),void *ctx,PetscErrorCode *ierr) 303b22b330cSBarry Smith { 304b22b330cSBarry Smith PetscObjectAllocateFortranPointers(*sp,1); 305b22b330cSBarry Smith ((PetscObject)*sp)->fortran_func_pointers[0] = (PetscVoidFunction)rem; 30626fbe8dcSKarl Rupp 307b22b330cSBarry Smith *ierr = MatNullSpaceSetFunction(*sp,ournullfunction,ctx); 308b22b330cSBarry Smith } 309b22b330cSBarry Smith 310d2da0f5dSBarry Smith PETSC_EXTERN void PETSC_STDCALL matcreatevecs_(Mat *mat,Vec *right,Vec *left, int *ierr) 3117c54600cSBarry Smith { 3127c54600cSBarry Smith CHKFORTRANNULLOBJECT(right); 3137c54600cSBarry Smith CHKFORTRANNULLOBJECT(left); 3142a7a6963SBarry Smith *ierr = MatCreateVecs(*mat,right,left); 3157c54600cSBarry Smith } 3167c54600cSBarry Smith 3178cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matgetrowij_(Mat *B,PetscInt *shift,PetscBool *sym,PetscBool *blockcompressed,PetscInt *n,PetscInt *ia,size_t *iia, 318ace3abfcSBarry Smith PetscInt *ja,size_t *jja,PetscBool *done,PetscErrorCode *ierr) 319f4e70085SSatish Balay { 3201a83f524SJed Brown const PetscInt *IA,*JA; 3218f7157efSSatish Balay *ierr = MatGetRowIJ(*B,*shift,*sym,*blockcompressed,n,&IA,&JA,done);if (*ierr) return; 3221a83f524SJed Brown *iia = PetscIntAddressToFortran(ia,(PetscInt*)IA); 3231a83f524SJed Brown *jja = PetscIntAddressToFortran(ja,(PetscInt*)JA); 324f4e70085SSatish Balay } 325f4e70085SSatish Balay 3268cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matrestorerowij_(Mat *B,PetscInt *shift,PetscBool *sym,PetscBool *blockcompressed, PetscInt *n,PetscInt *ia,size_t *iia, 327ace3abfcSBarry Smith PetscInt *ja,size_t *jja,PetscBool *done,PetscErrorCode *ierr) 328f4e70085SSatish Balay { 3291a83f524SJed Brown const PetscInt *IA = PetscIntAddressFromFortran(ia,*iia),*JA = PetscIntAddressFromFortran(ja,*jja); 3308f7157efSSatish Balay *ierr = MatRestoreRowIJ(*B,*shift,*sym,*blockcompressed,n,&IA,&JA,done); 331f4e70085SSatish Balay } 332f4e70085SSatish Balay 333f4e70085SSatish Balay /* 334f4e70085SSatish Balay This is a poor way of storing the column and value pointers 335f4e70085SSatish Balay generated by MatGetRow() to be returned with MatRestoreRow() 336f4e70085SSatish Balay but there is not natural,good place else to store them. Hence 337f4e70085SSatish Balay Fortran programmers can only have one outstanding MatGetRows() 338f4e70085SSatish Balay at a time. 339f4e70085SSatish Balay */ 340f4e70085SSatish Balay static PetscErrorCode matgetrowactive = 0; 341f4e70085SSatish Balay static const PetscInt *my_ocols = 0; 342f4e70085SSatish Balay static const PetscScalar *my_ovals = 0; 343f4e70085SSatish Balay 3448cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matgetrow_(Mat *mat,PetscInt *row,PetscInt *ncols,PetscInt *cols,PetscScalar *vals,PetscErrorCode *ierr) 345f4e70085SSatish Balay { 346f4e70085SSatish Balay const PetscInt **oocols = &my_ocols; 347f4e70085SSatish Balay const PetscScalar **oovals = &my_ovals; 348f4e70085SSatish Balay 349f4e70085SSatish Balay if (matgetrowactive) { 350efca3c55SSatish Balay PetscError(PETSC_COMM_SELF,__LINE__,"MatGetRow_Fortran",__FILE__,PETSC_ERR_ARG_WRONGSTATE,PETSC_ERROR_INITIAL, 351f4e70085SSatish Balay "Cannot have two MatGetRow() active simultaneously\n\ 352f4e70085SSatish Balay call MatRestoreRow() before calling MatGetRow() a second time"); 353f4e70085SSatish Balay *ierr = 1; 354f4e70085SSatish Balay return; 355f4e70085SSatish Balay } 356f4e70085SSatish Balay 3570298fd71SBarry Smith CHKFORTRANNULLINTEGER(cols); if (!cols) oocols = NULL; 3580298fd71SBarry Smith CHKFORTRANNULLSCALAR(vals); if (!vals) oovals = NULL; 359f4e70085SSatish Balay 360f4e70085SSatish Balay *ierr = MatGetRow(*mat,*row,ncols,oocols,oovals); 361f4e70085SSatish Balay if (*ierr) return; 362f4e70085SSatish Balay 363f4e70085SSatish Balay if (oocols) { *ierr = PetscMemcpy(cols,my_ocols,(*ncols)*sizeof(PetscInt)); if (*ierr) return;} 364f4e70085SSatish Balay if (oovals) { *ierr = PetscMemcpy(vals,my_ovals,(*ncols)*sizeof(PetscScalar)); if (*ierr) return;} 365f4e70085SSatish Balay matgetrowactive = 1; 366f4e70085SSatish Balay } 367f4e70085SSatish Balay 3688cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matrestorerow_(Mat *mat,PetscInt *row,PetscInt *ncols,PetscInt *cols,PetscScalar *vals,PetscErrorCode *ierr) 369f4e70085SSatish Balay { 370f4e70085SSatish Balay const PetscInt **oocols = &my_ocols; 371f4e70085SSatish Balay const PetscScalar **oovals = &my_ovals; 372f4e70085SSatish Balay if (!matgetrowactive) { 373efca3c55SSatish Balay PetscError(PETSC_COMM_SELF,__LINE__,"MatRestoreRow_Fortran",__FILE__,PETSC_ERR_ARG_WRONGSTATE,PETSC_ERROR_INITIAL, 374f4e70085SSatish Balay "Must call MatGetRow() first"); 375f4e70085SSatish Balay *ierr = 1; 376f4e70085SSatish Balay return; 377f4e70085SSatish Balay } 3780298fd71SBarry Smith CHKFORTRANNULLINTEGER(cols); if (!cols) oocols = NULL; 3790298fd71SBarry Smith CHKFORTRANNULLSCALAR(vals); if (!vals) oovals = NULL; 380f4e70085SSatish Balay 381f4e70085SSatish Balay *ierr = MatRestoreRow(*mat,*row,ncols,oocols,oovals); 382f4e70085SSatish Balay matgetrowactive = 0; 383f4e70085SSatish Balay } 384f4e70085SSatish Balay 3858cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matview_(Mat *mat,PetscViewer *vin,PetscErrorCode *ierr) 386f4e70085SSatish Balay { 387f4e70085SSatish Balay PetscViewer v; 388f4e70085SSatish Balay PetscPatchDefaultViewers_Fortran(vin,v); 389f4e70085SSatish Balay *ierr = MatView(*mat,v); 390f4e70085SSatish Balay } 391f4e70085SSatish Balay 3928cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matload_(Mat *mat,PetscViewer *vin,PetscErrorCode *ierr) 393f7e310deSShri Abhyankar { 394f7e310deSShri Abhyankar PetscViewer v; 395f7e310deSShri Abhyankar PetscPatchDefaultViewers_Fortran(vin,v); 396112444f4SShri Abhyankar *ierr = MatLoad(*mat,v); 397f7e310deSShri Abhyankar } 398f7e310deSShri Abhyankar 3998cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matseqaijgetarray_(Mat *mat,PetscScalar *fa,size_t *ia,PetscErrorCode *ierr) 400f4e70085SSatish Balay { 401f4e70085SSatish Balay PetscScalar *mm; 402f4e70085SSatish Balay PetscInt m,n; 403f4e70085SSatish Balay 4048c778c55SBarry Smith *ierr = MatSeqAIJGetArray(*mat,&mm); if (*ierr) return; 405f4e70085SSatish Balay *ierr = MatGetSize(*mat,&m,&n); if (*ierr) return; 406f91d1997SBarry Smith *ierr = PetscScalarAddressToFortran((PetscObject)*mat,1,fa,mm,m*n,ia); if (*ierr) return; 407f4e70085SSatish Balay } 408f4e70085SSatish Balay 4098cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matseqaijrestorearray_(Mat *mat,PetscScalar *fa,size_t *ia,PetscErrorCode *ierr) 410f4e70085SSatish Balay { 411f4e70085SSatish Balay PetscScalar *lx; 412f4e70085SSatish Balay PetscInt m,n; 413f4e70085SSatish Balay 414f4e70085SSatish Balay *ierr = MatGetSize(*mat,&m,&n); if (*ierr) return; 415f4e70085SSatish Balay *ierr = PetscScalarAddressFromFortran((PetscObject)*mat,fa,*ia,m*n,&lx);if (*ierr) return; 4168c778c55SBarry Smith *ierr = MatSeqAIJRestoreArray(*mat,&lx);if (*ierr) return; 417f4e70085SSatish Balay } 418f4e70085SSatish Balay 4198cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matdensegetarray_(Mat *mat,PetscScalar *fa,size_t *ia,PetscErrorCode *ierr) 42073a71a0fSBarry Smith { 42173a71a0fSBarry Smith PetscScalar *mm; 42273a71a0fSBarry Smith PetscInt m,n; 42373a71a0fSBarry Smith 4248c778c55SBarry Smith *ierr = MatDenseGetArray(*mat,&mm); if (*ierr) return; 42573a71a0fSBarry Smith *ierr = MatGetSize(*mat,&m,&n); if (*ierr) return; 42673a71a0fSBarry Smith *ierr = PetscScalarAddressToFortran((PetscObject)*mat,1,fa,mm,m*n,ia); if (*ierr) return; 42773a71a0fSBarry Smith } 42873a71a0fSBarry Smith 4298cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matdenserestorearray_(Mat *mat,PetscScalar *fa,size_t *ia,PetscErrorCode *ierr) 43073a71a0fSBarry Smith { 43173a71a0fSBarry Smith PetscScalar *lx; 43273a71a0fSBarry Smith PetscInt m,n; 43373a71a0fSBarry Smith 43473a71a0fSBarry Smith *ierr = MatGetSize(*mat,&m,&n); if (*ierr) return; 43573a71a0fSBarry Smith *ierr = PetscScalarAddressFromFortran((PetscObject)*mat,fa,*ia,m*n,&lx);if (*ierr) return; 4368c778c55SBarry Smith *ierr = MatDenseRestoreArray(*mat,&lx);if (*ierr) return; 43773a71a0fSBarry Smith } 43873a71a0fSBarry Smith 4398cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matfactorgetsolverpackage_(Mat *mat,CHAR name PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) 44035bd34faSBarry Smith { 44135bd34faSBarry Smith const char *tname; 44235bd34faSBarry Smith 44335bd34faSBarry Smith *ierr = MatFactorGetSolverPackage(*mat,&tname);if (*ierr) return; 44435bd34faSBarry Smith if (name != PETSC_NULL_CHARACTER_Fortran) { 44535bd34faSBarry Smith *ierr = PetscStrncpy(name,tname,len);if (*ierr) return; 44635bd34faSBarry Smith } 44735bd34faSBarry Smith FIXRETURNCHAR(PETSC_TRUE,name,len); 44835bd34faSBarry Smith } 44935bd34faSBarry Smith 4508cc058d9SJed 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)) 4515dffd610SBarry Smith { 4525dffd610SBarry Smith char *t; 4535dffd610SBarry Smith FIXCHAR(outtype,len,t); 4549be81726SHong Zhang *ierr = MatGetFactor(*mat,t,*ftype,M); 4555dffd610SBarry Smith FREECHAR(outtype,t); 4565dffd610SBarry Smith } 4575dffd610SBarry Smith 4588cc058d9SJed 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)) 459f4e70085SSatish Balay { 460f4e70085SSatish Balay char *t; 461f4e70085SSatish Balay FIXCHAR(outtype,len,t); 462f4e70085SSatish Balay *ierr = MatConvert(*mat,t,*reuse,M); 463f4e70085SSatish Balay FREECHAR(outtype,t); 464f4e70085SSatish Balay } 465f4e70085SSatish Balay 466f4e70085SSatish Balay /* 467f4e70085SSatish Balay MatGetSubmatrices() is slightly different from C since the 468f4e70085SSatish Balay Fortran provides the array to hold the submatrix objects,while in C that 469f4e70085SSatish Balay array is allocated by the MatGetSubmatrices() 470f4e70085SSatish Balay */ 4718cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matgetsubmatrices_(Mat *mat,PetscInt *n,IS *isrow,IS *iscol,MatReuse *scall,Mat *smat,PetscErrorCode *ierr) 472f4e70085SSatish Balay { 473f4e70085SSatish Balay Mat *lsmat; 474f4e70085SSatish Balay PetscInt i; 475f4e70085SSatish Balay 476f4e70085SSatish Balay if (*scall == MAT_INITIAL_MATRIX) { 477f4e70085SSatish Balay *ierr = MatGetSubMatrices(*mat,*n,isrow,iscol,*scall,&lsmat); 478f4e70085SSatish Balay for (i=0; i<*n; i++) { 479f4e70085SSatish Balay smat[i] = lsmat[i]; 480f4e70085SSatish Balay } 481f4e70085SSatish Balay *ierr = PetscFree(lsmat); 482f4e70085SSatish Balay } else { 483f4e70085SSatish Balay *ierr = MatGetSubMatrices(*mat,*n,isrow,iscol,*scall,&smat); 484f4e70085SSatish Balay } 485f4e70085SSatish Balay } 486f4e70085SSatish Balay 4877d6bfa3bSBarry Smith /* 4887d6bfa3bSBarry Smith MatDestroyMatrices() is slightly different from C since the 4897d6bfa3bSBarry Smith Fortran provides the array to hold the submatrix objects,while in C that 4907d6bfa3bSBarry Smith array is allocated by the MatGetSubmatrices() 4917d6bfa3bSBarry Smith */ 4928cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matdestroymatrices_(Mat *mat,PetscInt *n,Mat *smat,PetscErrorCode *ierr) 4937d6bfa3bSBarry Smith { 4947d6bfa3bSBarry Smith PetscInt i; 4957d6bfa3bSBarry Smith 4967d6bfa3bSBarry Smith for (i=0; i<*n; i++) { 4976bf464f9SBarry Smith *ierr = MatDestroy(&smat[i]);if (*ierr) return; 4987d6bfa3bSBarry Smith } 4997d6bfa3bSBarry Smith } 5007d6bfa3bSBarry Smith 5018cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matzerorowscolumns_(Mat *mat,PetscInt *numRows,PetscInt *rows,PetscScalar *diag,Vec *x,Vec *b,PetscErrorCode *ierr) 50217ede90eSSatish Balay { 50317ede90eSSatish Balay CHKFORTRANNULLOBJECTDEREFERENCE(x); 50417ede90eSSatish Balay CHKFORTRANNULLOBJECTDEREFERENCE(b); 50517ede90eSSatish Balay *ierr = MatZeroRowsColumns(*mat,*numRows,rows,*diag,*x,*b); 50617ede90eSSatish Balay } 50717ede90eSSatish Balay 5088cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matzerorowscolumnsis_(Mat *mat,IS *is,PetscScalar *diag,Vec *x,Vec *b,PetscErrorCode *ierr) 50917ede90eSSatish Balay { 51017ede90eSSatish Balay CHKFORTRANNULLOBJECTDEREFERENCE(x); 51117ede90eSSatish Balay CHKFORTRANNULLOBJECTDEREFERENCE(b); 51217ede90eSSatish Balay *ierr = MatZeroRowsColumnsIS(*mat,*is,*diag,*x,*b); 51317ede90eSSatish Balay } 51417ede90eSSatish Balay 5158cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matzerorowsstencil_(Mat *mat,PetscInt *numRows,MatStencil *rows,PetscScalar *diag,Vec *x,Vec *b,PetscErrorCode *ierr) 51617ede90eSSatish Balay { 51717ede90eSSatish Balay CHKFORTRANNULLOBJECTDEREFERENCE(x); 51817ede90eSSatish Balay CHKFORTRANNULLOBJECTDEREFERENCE(b); 51917ede90eSSatish Balay *ierr = MatZeroRowsStencil(*mat,*numRows,rows,*diag,*x,*b); 52017ede90eSSatish Balay } 52117ede90eSSatish Balay 5228cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matzerorowscolumnsstencil_(Mat *mat,PetscInt *numRows,MatStencil *rows,PetscScalar *diag,Vec *x,Vec *b,PetscErrorCode *ierr) 523d25a37e1SJed Brown { 524d25a37e1SJed Brown CHKFORTRANNULLOBJECTDEREFERENCE(x); 525d25a37e1SJed Brown CHKFORTRANNULLOBJECTDEREFERENCE(b); 526d25a37e1SJed Brown *ierr = MatZeroRowsColumnsStencil(*mat,*numRows,rows,*diag,*x,*b); 527d25a37e1SJed Brown } 528d25a37e1SJed Brown 5298cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matzerorows_(Mat *mat,PetscInt *numRows,PetscInt *rows,PetscScalar *diag,Vec *x,Vec *b,PetscErrorCode *ierr) 530f4e70085SSatish Balay { 5312b40b63fSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(x); 5322b40b63fSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(b); 5332b40b63fSBarry Smith *ierr = MatZeroRows(*mat,*numRows,rows,*diag,*x,*b); 534f4e70085SSatish Balay } 535f4e70085SSatish Balay 5368cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matzerorowsis_(Mat *mat,IS *is,PetscScalar *diag,Vec *x,Vec *b,PetscErrorCode *ierr) 537f4e70085SSatish Balay { 5382b40b63fSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(x); 5392b40b63fSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(b); 5402b40b63fSBarry Smith *ierr = MatZeroRowsIS(*mat,*is,*diag,*x,*b); 541f4e70085SSatish Balay } 542f4e70085SSatish Balay 5438cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matzerorowslocal_(Mat *mat,PetscInt *numRows,PetscInt *rows,PetscScalar *diag,Vec *x,Vec *b,PetscErrorCode *ierr) 544f4e70085SSatish Balay { 5452b40b63fSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(x); 5462b40b63fSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(b); 5472b40b63fSBarry Smith *ierr = MatZeroRowsLocal(*mat,*numRows,rows,*diag,*x,*b); 548f4e70085SSatish Balay } 549f4e70085SSatish Balay 5508cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matzerorowslocalis_(Mat *mat,IS *is,PetscScalar *diag,Vec *x,Vec *b,PetscErrorCode *ierr) 551f4e70085SSatish Balay { 5522b40b63fSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(x); 5532b40b63fSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(b); 5542b40b63fSBarry Smith *ierr = MatZeroRowsLocalIS(*mat,*is,*diag,*x,*b); 555f4e70085SSatish Balay } 556f4e70085SSatish Balay 5578cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matzerorowscolumnslocal_(Mat *mat,PetscInt *numRows,PetscInt *rows,PetscScalar *diag,Vec *x,Vec *b,PetscErrorCode *ierr) 55817ede90eSSatish Balay { 55917ede90eSSatish Balay CHKFORTRANNULLOBJECTDEREFERENCE(x); 56017ede90eSSatish Balay CHKFORTRANNULLOBJECTDEREFERENCE(b); 56117ede90eSSatish Balay *ierr = MatZeroRowsColumnsLocal(*mat,*numRows,rows,*diag,*x,*b); 56217ede90eSSatish Balay } 56317ede90eSSatish Balay 5648cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matzerorowscolumnslocalis_(Mat *mat,IS *is,PetscScalar *diag,Vec *x,Vec *b,PetscErrorCode *ierr) 56517ede90eSSatish Balay { 56617ede90eSSatish Balay CHKFORTRANNULLOBJECTDEREFERENCE(x); 56717ede90eSSatish Balay CHKFORTRANNULLOBJECTDEREFERENCE(b); 56817ede90eSSatish Balay *ierr = MatZeroRowsColumnsLocalIS(*mat,*is,*diag,*x,*b); 56917ede90eSSatish Balay } 5701eea217eSSatish Balay 5718cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matsetoptionsprefix_(Mat *mat,CHAR prefix PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) 5721eea217eSSatish Balay { 5731eea217eSSatish Balay char *t; 5741eea217eSSatish Balay 5751eea217eSSatish Balay FIXCHAR(prefix,len,t); 5761eea217eSSatish Balay *ierr = MatSetOptionsPrefix(*mat,t); 5771eea217eSSatish Balay FREECHAR(prefix,t); 5781eea217eSSatish Balay } 5791eea217eSSatish Balay 580d0195637SJed Brown PETSC_EXTERN void PETSC_STDCALL matnullspaceremove_(MatNullSpace *sp,Vec *vec,PetscErrorCode *ierr) 581812c3f48SMatthew Knepley { 582d0195637SJed Brown *ierr = MatNullSpaceRemove(*sp,*vec); 583812c3f48SMatthew Knepley } 5841eea217eSSatish Balay 5854d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matgetinfo_(Mat *mat,MatInfoType *flag,MatInfo *info, int *ierr) 5865ba43861SSatish Balay { 5874d03fd2bSBarry Smith *ierr = MatGetInfo(*mat,*flag,info); 5885ba43861SSatish Balay } 5895ba43861SSatish Balay 5904d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matlufactor_(Mat *mat,IS *row,IS *col,const MatFactorInfo *info, int *ierr) 59122688b47SSatish Balay { 5924d03fd2bSBarry Smith *ierr = MatLUFactor(*mat,*row,*col,info); 59322688b47SSatish Balay } 59422688b47SSatish Balay 5954d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matilufactor_(Mat *mat,IS *row,IS *col,const MatFactorInfo *info, int *ierr) 59622688b47SSatish Balay { 5974d03fd2bSBarry Smith *ierr = MatILUFactor(*mat,*row,*col,info); 59822688b47SSatish Balay } 59922688b47SSatish Balay 6004d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matlufactorsymbolic_(Mat *fact,Mat *mat,IS *row,IS *col,const MatFactorInfo *info, int *ierr) 60122688b47SSatish Balay { 6024d03fd2bSBarry Smith *ierr = MatLUFactorSymbolic(*fact,*mat,*row,*col,info); 60322688b47SSatish Balay } 60422688b47SSatish Balay 6054d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matlufactornumeric_(Mat *fact,Mat *mat,const MatFactorInfo *info, int *ierr) 60622688b47SSatish Balay { 6074d03fd2bSBarry Smith *ierr = MatLUFactorNumeric(*fact,*mat,info); 60822688b47SSatish Balay } 60922688b47SSatish Balay 6104d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matcholeskyfactor_(Mat *mat,IS *perm,const MatFactorInfo *info, int *ierr) 61122688b47SSatish Balay { 6124d03fd2bSBarry Smith *ierr = MatCholeskyFactor(*mat,*perm,info); 61322688b47SSatish Balay } 61422688b47SSatish Balay 6154d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matcholeskyfactorsymbolic_(Mat *fact,Mat *mat,IS *perm,const MatFactorInfo *info, int *ierr) 61622688b47SSatish Balay { 6174d03fd2bSBarry Smith *ierr = MatCholeskyFactorSymbolic(*fact,*mat,*perm,info); 61822688b47SSatish Balay } 61922688b47SSatish Balay 6204d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matcholeskyfactornumeric_(Mat *fact,Mat *mat,const MatFactorInfo *info, int *ierr) 62122688b47SSatish Balay { 6224d03fd2bSBarry Smith *ierr = MatCholeskyFactorNumeric(*fact,*mat,info); 62322688b47SSatish Balay } 62422688b47SSatish Balay 6254d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matilufactorsymbolic_(Mat *fact,Mat *mat,IS *row,IS *col,const MatFactorInfo *info, int *ierr) 62622688b47SSatish Balay { 6274d03fd2bSBarry Smith *ierr = MatILUFactorSymbolic(*fact,*mat,*row,*col,info); 62822688b47SSatish Balay } 62922688b47SSatish Balay 6304d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL maticcfactorsymbolic_(Mat *fact,Mat *mat,IS *perm,const MatFactorInfo *info, int *ierr) 63122688b47SSatish Balay { 6324d03fd2bSBarry Smith *ierr = MatICCFactorSymbolic(*fact,*mat,*perm,info); 63322688b47SSatish Balay } 63422688b47SSatish Balay 6354d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL maticcfactor_(Mat *mat,IS *row,const MatFactorInfo *info, int *ierr) 63622688b47SSatish Balay { 6374d03fd2bSBarry Smith *ierr = MatICCFactor(*mat,*row,info); 63822688b47SSatish Balay } 63922688b47SSatish Balay 6404d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matfactorinfoinitialize_(MatFactorInfo *info, int *ierr) 64122688b47SSatish Balay { 6424d03fd2bSBarry Smith *ierr = MatFactorInfoInitialize(info); 64322688b47SSatish Balay } 644