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*3b494cfeSSatish Balay #define matsetvalues0_ MATSETVALUES0 84d03fd2bSBarry Smith #define matsetvalues11_ MATSETVALUES11 94d03fd2bSBarry Smith #define matsetvalues1n_ MATSETVALUES1N 104d03fd2bSBarry Smith #define matsetvaluesn1_ MATSETVALUESN1 11*3b494cfeSSatish Balay #define matsetvaluesblocked0_ MATSETVALUESBLOCKED0 124d03fd2bSBarry Smith #define matsetvaluesblocked11_ MATSETVALUESBLOCKED11 134d03fd2bSBarry Smith #define matsetvaluesblocked111_ MATSETVALUESBLOCKED111 144d03fd2bSBarry Smith #define matsetvaluesblocked1n_ MATSETVALUESBLOCKED1N 154d03fd2bSBarry Smith #define matsetvaluesblockedn1_ MATSETVALUESBLOCKEDN1 164d03fd2bSBarry Smith #define matsetvaluesblockedlocal_ MATSETVALUESBLOCKEDLOCAL 17*3b494cfeSSatish Balay #define matsetvaluesblockedlocal0_ MATSETVALUESBLOCKEDLOCAL0 184d03fd2bSBarry Smith #define matsetvaluesblockedlocal11_ MATSETVALUESBLOCKEDLOCAL11 194d03fd2bSBarry Smith #define matsetvaluesblockedlocal111_ MATSETVALUESBLOCKEDLOCAL111 204d03fd2bSBarry Smith #define matsetvaluesblockedlocal1n_ MATSETVALUESBLOCKEDLOCAL1N 214d03fd2bSBarry Smith #define matsetvaluesblockedlocaln1_ MATSETVALUESBLOCKEDLOCALN1 224d03fd2bSBarry Smith #define matsetvalueslocal_ MATSETVALUESLOCAL 23*3b494cfeSSatish Balay #define matsetvalueslocal0_ MATSETVALUESLOCAL0 244d03fd2bSBarry Smith #define matsetvalueslocal11_ MATSETVALUESLOCAL11 254d03fd2bSBarry Smith #define matsetvalueslocal11nn_ MATSETVALUESLOCAL11NN 264d03fd2bSBarry Smith #define matsetvalueslocal111_ MATSETVALUESLOCAL111 274d03fd2bSBarry Smith #define matsetvalueslocal1n_ MATSETVALUESLOCAL1N 284d03fd2bSBarry Smith #define matsetvalueslocaln1_ MATSETVALUESLOCALN1 2987bcf4e0SBarry Smith #define matgetrowmin_ MATGETROWMIN 3087bcf4e0SBarry Smith #define matgetrowminabs_ MATGETROWMINABS 315928be6bSBarry Smith #define matgetrowmax_ MATGETROWMAX 325928be6bSBarry Smith #define matgetrowmaxabs_ MATGETROWMAXABS 337d6bfa3bSBarry Smith #define matdestroymatrices_ MATDESTROYMATRICES 345dffd610SBarry Smith #define matgetfactor_ MATGETFACTOR 3535bd34faSBarry Smith #define matfactorgetsolverpackage_ MATFACTORGETSOLVERPACKAGE 36f4e70085SSatish Balay #define matgetrowij_ MATGETROWIJ 37f4e70085SSatish Balay #define matrestorerowij_ MATRESTOREROWIJ 38f4e70085SSatish Balay #define matgetrow_ MATGETROW 39f4e70085SSatish Balay #define matrestorerow_ MATRESTOREROW 40f7e310deSShri Abhyankar #define matload_ MATLOAD 41f4e70085SSatish Balay #define matview_ MATVIEW 428c778c55SBarry Smith #define matseqaijgetarray_ MATSEQAIJGETARRAY 436778691eSSatish Balay #define matseqaijrestorearray_ MATSEQAIJRESTOREARRAY 448c778c55SBarry Smith #define matdensegetarray_ MATDENSEGETARRAY 458c778c55SBarry Smith #define matdenserestorearray_ MATDENSERESTOREARRAY 46f4e70085SSatish Balay #define matconvert_ MATCONVERT 47f4e70085SSatish Balay #define matgetsubmatrices_ MATGETSUBMATRICES 4817ede90eSSatish Balay #define matzerorowscolumns_ MATZEROROWSCOLUMNS 4917ede90eSSatish Balay #define matzerorowscolumnsis_ MATZEROROWSCOLUMNSIS 5017ede90eSSatish Balay #define matzerorowsstencil_ MATZEROROWSSTENCIL 51d25a37e1SJed Brown #define matzerorowscolumnsstencil_ MATZEROROWSCOLUMNSSTENCIL 52f4e70085SSatish Balay #define matzerorows_ MATZEROROWS 53f4e70085SSatish Balay #define matzerorowsis_ MATZEROROWSIS 54f4e70085SSatish Balay #define matzerorowslocal_ MATZEROROWSLOCAL 55f4e70085SSatish Balay #define matzerorowslocalis_ MATZEROROWSLOCALIS 5617ede90eSSatish Balay #define matzerorowscolumnslocal_ MATZEROROWSCOLUMNSLOCAL 5717ede90eSSatish Balay #define matzerorowscolumnslocalis_ MATZEROROWSCOLUMNSLOCALIS 581eea217eSSatish Balay #define matsetoptionsprefix_ MATSETOPTIONSPREFIX 59fcc9d04bSBarry Smith #define matcreatevecs_ MATCREATEVECS 60c9d5ca86SBarry Smith #define matnullspaceremove_ MATNULLSPACEREMOVE 615ba43861SSatish Balay #define matgetinfo_ MATGETINFO 6222688b47SSatish Balay #define matlufactor_ MATLUFACTOR 6322688b47SSatish Balay #define matilufactor_ MATILUFACTOR 6422688b47SSatish Balay #define matlufactorsymbolic_ MATLUFACTORSYMBOLIC 6522688b47SSatish Balay #define matlufactornumeric_ MATLUFACTORNUMERIC 6622688b47SSatish Balay #define matcholeskyfactor_ MATCHOLESKYFACTOR 6722688b47SSatish Balay #define matcholeskyfactorsymbolic_ MATCHOLESKYFACTORSYMBOLIC 6822688b47SSatish Balay #define matcholeskyfactornumeric_ MATCHOLESKYFACTORNUMERIC 6922688b47SSatish Balay #define matilufactorsymbolic_ MATILUFACTORSYMBOLIC 7022688b47SSatish Balay #define maticcfactorsymbolic_ MATICCFACTORSYMBOLIC 7122688b47SSatish Balay #define maticcfactor_ MATICCFACTOR 7222688b47SSatish Balay #define matfactorinfoinitialize_ MATFACTORINFOINITIALIZE 73b22b330cSBarry Smith #define matnullspacesetfunction_ MATNULLSPACESETFUNCTION 740905d9aaSJed Brown #define matfindnonzerorows_ MATFINDNONZEROROWS 75f4e70085SSatish Balay #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 764d03fd2bSBarry Smith #define matsetvalues_ matsetvalues 77*3b494cfeSSatish Balay #define matsetvalues0_ matsetvalues0 784d03fd2bSBarry Smith #define matsetvalues11_ matsetvalues11 794d03fd2bSBarry Smith #define matsetvaluesn1_ matsetvaluesn1 804d03fd2bSBarry Smith #define matsetvalues1n_ matsetvalues1n 814d03fd2bSBarry Smith #define matsetvalueslocal_ matsetvalueslocal 82*3b494cfeSSatish Balay #define matsetvalueslocal0_ matsetvalueslocal0 834d03fd2bSBarry Smith #define matsetvalueslocal11_ matsetvalueslocal11 844d03fd2bSBarry Smith #define matsetvalueslocal11nn_ matsetvalueslocal11nn 854d03fd2bSBarry Smith #define matsetvalueslocal111_ matsetvalueslocal111 864d03fd2bSBarry Smith #define matsetvalueslocal1n_ matsetvalueslocal1n 874d03fd2bSBarry Smith #define matsetvalueslocaln1_ matsetvalueslocaln1 884d03fd2bSBarry Smith #define matsetvaluesblocked_ matsetvaluesblocked 89*3b494cfeSSatish Balay #define matsetvaluesblocked0_ matsetvaluesblocked0 904d03fd2bSBarry Smith #define matsetvaluesblocked11_ matsetvaluesblocked11 914d03fd2bSBarry Smith #define matsetvaluesblocked111_ matsetvaluesblocked111 924d03fd2bSBarry Smith #define matsetvaluesblocked1n_ matsetvaluesblocked1n 934d03fd2bSBarry Smith #define matsetvaluesblocked1n_ matsetvaluesblockedn1 944d03fd2bSBarry Smith #define matsetvaluesblockedlocal_ matsetvaluesblockedlocal 95*3b494cfeSSatish Balay #define matsetvaluesblockedlocal0_ matsetvaluesblockedlocal0 964d03fd2bSBarry Smith #define matsetvaluesblockedlocal11_ matsetvaluesblockedlocal11 974d03fd2bSBarry Smith #define matsetvaluesblockedlocal111_ matsetvaluesblockedlocal111 984d03fd2bSBarry Smith #define matsetvaluesblockedlocal1n_ matsetvaluesblockedlocal1n 994d03fd2bSBarry Smith #define matsetvaluesblockedlocal1n_ matsetvaluesblockedlocaln1 10087bcf4e0SBarry Smith #define matgetrowmin_ matgetrowmin 10187bcf4e0SBarry Smith #define matgetrowminabs_ matgetrowminabs 1025928be6bSBarry Smith #define matgetrowmax_ matgetrowmax 1035928be6bSBarry Smith #define matgetrowmaxabs_ matgetrowmaxabs 1045928be6bSBarry Smith #define matdestroymatrices_ matdestroymatrices 1055dffd610SBarry Smith #define matgetfactor_ matgetfactor 10635bd34faSBarry Smith #define matfactorgetsolverpackage_ matfactorgetsolverpackage 107fcc9d04bSBarry Smith #define matcreatevecs_ matcreatevecs 108f4e70085SSatish Balay #define matgetrowij_ matgetrowij 109f4e70085SSatish Balay #define matrestorerowij_ matrestorerowij 110f4e70085SSatish Balay #define matgetrow_ matgetrow 111f4e70085SSatish Balay #define matrestorerow_ matrestorerow 112f4e70085SSatish Balay #define matview_ matview 113f7e310deSShri Abhyankar #define matload_ matload 1148c778c55SBarry Smith #define matseqaijgetarray_ matseqaijgetarray 1158c778c55SBarry Smith #define matseqaijrestorearray_ matseqaijrestorearray 1168c778c55SBarry Smith #define matdensegetarray_ matdensegetarray 1178c778c55SBarry Smith #define matdenserestorearray_ matdenserestorearray 118f4e70085SSatish Balay #define matconvert_ matconvert 119f4e70085SSatish Balay #define matgetsubmatrices_ matgetsubmatrices 12017ede90eSSatish Balay #define matzerorowscolumns_ matzerorowscolumns 12117ede90eSSatish Balay #define matzerorowscolumnsis_ matzerorowscolumnsis 12217ede90eSSatish Balay #define matzerorowsstencil_ matzerorowsstencil 123d25a37e1SJed Brown #define matzerorowscolumnsstencil_ matzerorowscolumnsstencil 124f4e70085SSatish Balay #define matzerorows_ matzerorows 125f4e70085SSatish Balay #define matzerorowsis_ matzerorowsis 126f4e70085SSatish Balay #define matzerorowslocal_ matzerorowslocal 127f4e70085SSatish Balay #define matzerorowslocalis_ matzerorowslocalis 12817ede90eSSatish Balay #define matzerorowscolumnslocal_ matzerorowscolumnslocal 12917ede90eSSatish Balay #define matzerorowscolumnslocalis_ matzerorowscolumnslocalis 1301eea217eSSatish Balay #define matsetoptionsprefix_ matsetoptionsprefix 131812c3f48SMatthew Knepley #define matnullspaceremove_ matnullspaceremove 1325ba43861SSatish Balay #define matgetinfo_ matgetinfo 13322688b47SSatish Balay #define matlufactor_ matlufactor 13422688b47SSatish Balay #define matilufactor_ matilufactor 13522688b47SSatish Balay #define matlufactorsymbolic_ matlufactorsymbolic 13622688b47SSatish Balay #define matlufactornumeric_ matlufactornumeric 13722688b47SSatish Balay #define matcholeskyfactor_ matcholeskyfactor 13822688b47SSatish Balay #define matcholeskyfactorsymbolic_ matcholeskyfactorsymbolic 13922688b47SSatish Balay #define matcholeskyfactornumeric_ matcholeskyfactornumeric 14022688b47SSatish Balay #define matilufactorsymbolic_ matilufactorsymbolic 14122688b47SSatish Balay #define maticcfactorsymbolic_ maticcfactorsymbolic 14222688b47SSatish Balay #define maticcfactor_ maticcfactor 14322688b47SSatish Balay #define matfactorinfoinitialize_ matfactorinfoinitialize 144b22b330cSBarry Smith #define matnullspacesetfunction_ matnullspacesetfunction 1450905d9aaSJed Brown #define matfindnonzerorows_ matfindnonzerorows 146f4e70085SSatish Balay #endif 147f4e70085SSatish Balay 1484d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvaluesblocked_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ){ 1494d03fd2bSBarry Smith *ierr = MatSetValuesBlocked(*mat,*m,idxm,*n,idxn,v,*addv); 1504d03fd2bSBarry Smith } 1514d03fd2bSBarry Smith 152*3b494cfeSSatish Balay PETSC_EXTERN void PETSC_STDCALL matsetvaluesblocked0_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ){ 153*3b494cfeSSatish Balay matsetvaluesblocked_(mat,m,idxm,n,idxn,v,addv,ierr); 154*3b494cfeSSatish Balay } 155*3b494cfeSSatish Balay 1564d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvaluesblocked11_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ){ 1574d03fd2bSBarry Smith matsetvaluesblocked_(mat,m,idxm,n,idxn,v,addv,ierr); 1584d03fd2bSBarry Smith } 1594d03fd2bSBarry Smith 1604d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvaluesblocked111_(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 matsetvaluesblocked1n_(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 matsetvaluesblockedn1_(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 matsetvaluesblockedlocal_(Mat *mat,PetscInt *nrow, PetscInt irow[],PetscInt *ncol, PetscInt icol[], PetscScalar y[],InsertMode *addv, int *ierr ) 1734d03fd2bSBarry Smith { 1744d03fd2bSBarry Smith *ierr = MatSetValuesBlockedLocal(*mat,*nrow,irow,*ncol,icol,y,*addv); 1754d03fd2bSBarry Smith } 1764d03fd2bSBarry Smith 177*3b494cfeSSatish Balay PETSC_EXTERN void PETSC_STDCALL matsetvaluesblockedlocal0_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ){ 178*3b494cfeSSatish Balay matsetvaluesblockedlocal_(mat,m,idxm,n,idxn,v,addv,ierr); 179*3b494cfeSSatish Balay } 180*3b494cfeSSatish Balay 1814d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvaluesblockedlocal11_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ){ 1824d03fd2bSBarry Smith matsetvaluesblockedlocal_(mat,m,idxm,n,idxn,v,addv,ierr); 1834d03fd2bSBarry Smith } 1844d03fd2bSBarry Smith 1854d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvaluesblockedlocal111_(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 matsetvaluesblockedlocal1n_(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 matsetvaluesblockedlocaln1_(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 matsetvalues_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ) 1984d03fd2bSBarry Smith { 1994d03fd2bSBarry Smith *ierr = MatSetValues(*mat,*m,idxm,*n,idxn,v,*addv); 2004d03fd2bSBarry Smith } 2014d03fd2bSBarry Smith 202*3b494cfeSSatish Balay PETSC_EXTERN void PETSC_STDCALL matsetvalues0_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ) 203*3b494cfeSSatish Balay { 204*3b494cfeSSatish Balay matsetvalues_(mat,m,idxm,n,idxn,v,addv,ierr); 205*3b494cfeSSatish Balay } 206*3b494cfeSSatish Balay 2074d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvalues11_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ) 2084d03fd2bSBarry Smith { 2094d03fd2bSBarry Smith matsetvalues_(mat,m,idxm,n,idxn,v,addv,ierr); 2104d03fd2bSBarry Smith } 2114d03fd2bSBarry Smith 2124d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvaluesn1_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ) 2134d03fd2bSBarry Smith { 2144d03fd2bSBarry Smith matsetvalues_(mat,m,idxm,n,idxn,v,addv,ierr); 2154d03fd2bSBarry Smith } 2164d03fd2bSBarry Smith 2174d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvalues1n_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ) 2184d03fd2bSBarry Smith { 2194d03fd2bSBarry Smith matsetvalues_(mat,m,idxm,n,idxn,v,addv,ierr); 2204d03fd2bSBarry Smith } 2214d03fd2bSBarry Smith 2224d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvalueslocal_(Mat *mat,PetscInt *nrow, PetscInt irow[],PetscInt *ncol, PetscInt icol[], PetscScalar y[],InsertMode *addv, int *ierr ) 2234d03fd2bSBarry Smith { 2244d03fd2bSBarry Smith *ierr = MatSetValuesLocal(*mat,*nrow,irow,*ncol,icol,y,*addv); 2254d03fd2bSBarry Smith } 2264d03fd2bSBarry Smith 227*3b494cfeSSatish Balay PETSC_EXTERN void PETSC_STDCALL matsetvalueslocal0_(Mat *mat,PetscInt *nrow, PetscInt irow[],PetscInt *ncol, PetscInt icol[], PetscScalar y[],InsertMode *addv, int *ierr ) 228*3b494cfeSSatish Balay { 229*3b494cfeSSatish Balay matsetvalueslocal_(mat,nrow,irow,ncol,icol,y,addv,ierr); 230*3b494cfeSSatish Balay } 231*3b494cfeSSatish Balay 2324d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvalueslocal11_(Mat *mat,PetscInt *nrow, PetscInt irow[],PetscInt *ncol, PetscInt icol[], PetscScalar y[],InsertMode *addv, int *ierr ) 2334d03fd2bSBarry Smith { 2344d03fd2bSBarry Smith matsetvalueslocal_(mat,nrow,irow,ncol,icol,y,addv,ierr); 2354d03fd2bSBarry Smith } 2364d03fd2bSBarry Smith 2374d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvalueslocal11nn_(Mat *mat,PetscInt *nrow, PetscInt irow[],PetscInt *ncol, PetscInt icol[], PetscScalar y[],InsertMode *addv, int *ierr ) 2384d03fd2bSBarry Smith { 2394d03fd2bSBarry Smith matsetvalueslocal_(mat,nrow,irow,ncol,icol,y,addv,ierr); 2404d03fd2bSBarry Smith } 2414d03fd2bSBarry Smith 2424d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvalueslocal111_(Mat *mat,PetscInt *nrow, PetscInt irow[],PetscInt *ncol, PetscInt icol[], PetscScalar y[],InsertMode *addv, int *ierr ) 2434d03fd2bSBarry Smith { 2444d03fd2bSBarry Smith matsetvalueslocal_(mat,nrow,irow,ncol,icol,y,addv,ierr); 2454d03fd2bSBarry Smith } 2464d03fd2bSBarry Smith 2474d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvalueslocal1n_(Mat *mat,PetscInt *nrow, PetscInt irow[],PetscInt *ncol, PetscInt icol[], PetscScalar y[],InsertMode *addv, int *ierr ) 2484d03fd2bSBarry Smith { 2494d03fd2bSBarry Smith matsetvalueslocal_(mat,nrow,irow,ncol,icol,y,addv,ierr); 2504d03fd2bSBarry Smith } 2514d03fd2bSBarry Smith 2524d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvalueslocaln1_(Mat *mat,PetscInt *nrow, PetscInt irow[],PetscInt *ncol, PetscInt icol[], PetscScalar y[],InsertMode *addv, int *ierr ) 2534d03fd2bSBarry Smith { 2544d03fd2bSBarry Smith matsetvalueslocal_(mat,nrow,irow,ncol,icol,y,addv,ierr); 2554d03fd2bSBarry Smith } 2564d03fd2bSBarry Smith 25787bcf4e0SBarry Smith PETSC_EXTERN void PETSC_STDCALL matgetrowmin_(Mat *mat,Vec *v,PetscInt idx[], int *ierr ) 25887bcf4e0SBarry Smith { 25987bcf4e0SBarry Smith CHKFORTRANNULLINTEGER(idx); 26087bcf4e0SBarry Smith *ierr = MatGetRowMin(*mat,*v,idx); 26187bcf4e0SBarry Smith } 2624d03fd2bSBarry Smith 26387bcf4e0SBarry Smith PETSC_EXTERN void PETSC_STDCALL matgetrowminabs_(Mat *mat,Vec *v,PetscInt idx[], int *ierr ) 26487bcf4e0SBarry Smith { 26587bcf4e0SBarry Smith CHKFORTRANNULLINTEGER(idx); 26687bcf4e0SBarry Smith *ierr = MatGetRowMinAbs(*mat,*v,idx); 26787bcf4e0SBarry Smith } 26887bcf4e0SBarry Smith 2695928be6bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matgetrowmax_(Mat *mat,Vec *v,PetscInt idx[], int *ierr ) 2705928be6bSBarry Smith { 2715928be6bSBarry Smith CHKFORTRANNULLINTEGER(idx); 2725928be6bSBarry Smith *ierr = MatGetRowMax(*mat,*v,idx); 2735928be6bSBarry Smith } 2745928be6bSBarry Smith 2755928be6bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matgetrowmaxabs_(Mat *mat,Vec *v,PetscInt idx[], int *ierr ) 2765928be6bSBarry Smith { 2775928be6bSBarry Smith CHKFORTRANNULLINTEGER(idx); 2785928be6bSBarry Smith *ierr = MatGetRowMaxAbs(*mat,*v,idx); 2795928be6bSBarry Smith } 2805928be6bSBarry Smith 281b22b330cSBarry Smith static PetscErrorCode ournullfunction(MatNullSpace sp,Vec x,void *ctx) 282b22b330cSBarry Smith { 283b22b330cSBarry Smith PetscErrorCode ierr = 0; 284b22b330cSBarry Smith (*(void (PETSC_STDCALL *)(MatNullSpace*,Vec*,void*,PetscErrorCode*))(((PetscObject)sp)->fortran_func_pointers[0]))(&sp,&x,ctx,&ierr);CHKERRQ(ierr); 285b22b330cSBarry Smith return 0; 286b22b330cSBarry Smith } 287b22b330cSBarry Smith 2888cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matnullspacesetfunction_(MatNullSpace *sp, PetscErrorCode (*rem)(MatNullSpace,Vec,void*),void *ctx,PetscErrorCode *ierr) 289b22b330cSBarry Smith { 290b22b330cSBarry Smith PetscObjectAllocateFortranPointers(*sp,1); 291b22b330cSBarry Smith ((PetscObject)*sp)->fortran_func_pointers[0] = (PetscVoidFunction)rem; 29226fbe8dcSKarl Rupp 293b22b330cSBarry Smith *ierr = MatNullSpaceSetFunction(*sp,ournullfunction,ctx); 294b22b330cSBarry Smith } 295b22b330cSBarry Smith 296d2da0f5dSBarry Smith PETSC_EXTERN void PETSC_STDCALL matcreatevecs_(Mat *mat,Vec *right,Vec *left, int *ierr) 2977c54600cSBarry Smith { 2987c54600cSBarry Smith CHKFORTRANNULLOBJECT(right); 2997c54600cSBarry Smith CHKFORTRANNULLOBJECT(left); 3002a7a6963SBarry Smith *ierr = MatCreateVecs(*mat,right,left); 3017c54600cSBarry Smith } 3027c54600cSBarry Smith 3038cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matgetrowij_(Mat *B,PetscInt *shift,PetscBool *sym,PetscBool *blockcompressed,PetscInt *n,PetscInt *ia,size_t *iia, 304ace3abfcSBarry Smith PetscInt *ja,size_t *jja,PetscBool *done,PetscErrorCode *ierr) 305f4e70085SSatish Balay { 3061a83f524SJed Brown const PetscInt *IA,*JA; 3078f7157efSSatish Balay *ierr = MatGetRowIJ(*B,*shift,*sym,*blockcompressed,n,&IA,&JA,done);if (*ierr) return; 3081a83f524SJed Brown *iia = PetscIntAddressToFortran(ia,(PetscInt*)IA); 3091a83f524SJed Brown *jja = PetscIntAddressToFortran(ja,(PetscInt*)JA); 310f4e70085SSatish Balay } 311f4e70085SSatish Balay 3128cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matrestorerowij_(Mat *B,PetscInt *shift,PetscBool *sym,PetscBool *blockcompressed, PetscInt *n,PetscInt *ia,size_t *iia, 313ace3abfcSBarry Smith PetscInt *ja,size_t *jja,PetscBool *done,PetscErrorCode *ierr) 314f4e70085SSatish Balay { 3151a83f524SJed Brown const PetscInt *IA = PetscIntAddressFromFortran(ia,*iia),*JA = PetscIntAddressFromFortran(ja,*jja); 3168f7157efSSatish Balay *ierr = MatRestoreRowIJ(*B,*shift,*sym,*blockcompressed,n,&IA,&JA,done); 317f4e70085SSatish Balay } 318f4e70085SSatish Balay 319f4e70085SSatish Balay /* 320f4e70085SSatish Balay This is a poor way of storing the column and value pointers 321f4e70085SSatish Balay generated by MatGetRow() to be returned with MatRestoreRow() 322f4e70085SSatish Balay but there is not natural,good place else to store them. Hence 323f4e70085SSatish Balay Fortran programmers can only have one outstanding MatGetRows() 324f4e70085SSatish Balay at a time. 325f4e70085SSatish Balay */ 326f4e70085SSatish Balay static PetscErrorCode matgetrowactive = 0; 327f4e70085SSatish Balay static const PetscInt *my_ocols = 0; 328f4e70085SSatish Balay static const PetscScalar *my_ovals = 0; 329f4e70085SSatish Balay 3308cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matgetrow_(Mat *mat,PetscInt *row,PetscInt *ncols,PetscInt *cols,PetscScalar *vals,PetscErrorCode *ierr) 331f4e70085SSatish Balay { 332f4e70085SSatish Balay const PetscInt **oocols = &my_ocols; 333f4e70085SSatish Balay const PetscScalar **oovals = &my_ovals; 334f4e70085SSatish Balay 335f4e70085SSatish Balay if (matgetrowactive) { 336efca3c55SSatish Balay PetscError(PETSC_COMM_SELF,__LINE__,"MatGetRow_Fortran",__FILE__,PETSC_ERR_ARG_WRONGSTATE,PETSC_ERROR_INITIAL, 337f4e70085SSatish Balay "Cannot have two MatGetRow() active simultaneously\n\ 338f4e70085SSatish Balay call MatRestoreRow() before calling MatGetRow() a second time"); 339f4e70085SSatish Balay *ierr = 1; 340f4e70085SSatish Balay return; 341f4e70085SSatish Balay } 342f4e70085SSatish Balay 3430298fd71SBarry Smith CHKFORTRANNULLINTEGER(cols); if (!cols) oocols = NULL; 3440298fd71SBarry Smith CHKFORTRANNULLSCALAR(vals); if (!vals) oovals = NULL; 345f4e70085SSatish Balay 346f4e70085SSatish Balay *ierr = MatGetRow(*mat,*row,ncols,oocols,oovals); 347f4e70085SSatish Balay if (*ierr) return; 348f4e70085SSatish Balay 349f4e70085SSatish Balay if (oocols) { *ierr = PetscMemcpy(cols,my_ocols,(*ncols)*sizeof(PetscInt)); if (*ierr) return;} 350f4e70085SSatish Balay if (oovals) { *ierr = PetscMemcpy(vals,my_ovals,(*ncols)*sizeof(PetscScalar)); if (*ierr) return;} 351f4e70085SSatish Balay matgetrowactive = 1; 352f4e70085SSatish Balay } 353f4e70085SSatish Balay 3548cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matrestorerow_(Mat *mat,PetscInt *row,PetscInt *ncols,PetscInt *cols,PetscScalar *vals,PetscErrorCode *ierr) 355f4e70085SSatish Balay { 356f4e70085SSatish Balay const PetscInt **oocols = &my_ocols; 357f4e70085SSatish Balay const PetscScalar **oovals = &my_ovals; 358f4e70085SSatish Balay if (!matgetrowactive) { 359efca3c55SSatish Balay PetscError(PETSC_COMM_SELF,__LINE__,"MatRestoreRow_Fortran",__FILE__,PETSC_ERR_ARG_WRONGSTATE,PETSC_ERROR_INITIAL, 360f4e70085SSatish Balay "Must call MatGetRow() first"); 361f4e70085SSatish Balay *ierr = 1; 362f4e70085SSatish Balay return; 363f4e70085SSatish Balay } 3640298fd71SBarry Smith CHKFORTRANNULLINTEGER(cols); if (!cols) oocols = NULL; 3650298fd71SBarry Smith CHKFORTRANNULLSCALAR(vals); if (!vals) oovals = NULL; 366f4e70085SSatish Balay 367f4e70085SSatish Balay *ierr = MatRestoreRow(*mat,*row,ncols,oocols,oovals); 368f4e70085SSatish Balay matgetrowactive = 0; 369f4e70085SSatish Balay } 370f4e70085SSatish Balay 3718cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matview_(Mat *mat,PetscViewer *vin,PetscErrorCode *ierr) 372f4e70085SSatish Balay { 373f4e70085SSatish Balay PetscViewer v; 374f4e70085SSatish Balay PetscPatchDefaultViewers_Fortran(vin,v); 375f4e70085SSatish Balay *ierr = MatView(*mat,v); 376f4e70085SSatish Balay } 377f4e70085SSatish Balay 3788cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matload_(Mat *mat,PetscViewer *vin,PetscErrorCode *ierr) 379f7e310deSShri Abhyankar { 380f7e310deSShri Abhyankar PetscViewer v; 381f7e310deSShri Abhyankar PetscPatchDefaultViewers_Fortran(vin,v); 382112444f4SShri Abhyankar *ierr = MatLoad(*mat,v); 383f7e310deSShri Abhyankar } 384f7e310deSShri Abhyankar 3858cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matseqaijgetarray_(Mat *mat,PetscScalar *fa,size_t *ia,PetscErrorCode *ierr) 386f4e70085SSatish Balay { 387f4e70085SSatish Balay PetscScalar *mm; 388f4e70085SSatish Balay PetscInt m,n; 389f4e70085SSatish Balay 3908c778c55SBarry Smith *ierr = MatSeqAIJGetArray(*mat,&mm); if (*ierr) return; 391f4e70085SSatish Balay *ierr = MatGetSize(*mat,&m,&n); if (*ierr) return; 392f91d1997SBarry Smith *ierr = PetscScalarAddressToFortran((PetscObject)*mat,1,fa,mm,m*n,ia); if (*ierr) return; 393f4e70085SSatish Balay } 394f4e70085SSatish Balay 3958cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matseqaijrestorearray_(Mat *mat,PetscScalar *fa,size_t *ia,PetscErrorCode *ierr) 396f4e70085SSatish Balay { 397f4e70085SSatish Balay PetscScalar *lx; 398f4e70085SSatish Balay PetscInt m,n; 399f4e70085SSatish Balay 400f4e70085SSatish Balay *ierr = MatGetSize(*mat,&m,&n); if (*ierr) return; 401f4e70085SSatish Balay *ierr = PetscScalarAddressFromFortran((PetscObject)*mat,fa,*ia,m*n,&lx);if (*ierr) return; 4028c778c55SBarry Smith *ierr = MatSeqAIJRestoreArray(*mat,&lx);if (*ierr) return; 403f4e70085SSatish Balay } 404f4e70085SSatish Balay 4058cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matdensegetarray_(Mat *mat,PetscScalar *fa,size_t *ia,PetscErrorCode *ierr) 40673a71a0fSBarry Smith { 40773a71a0fSBarry Smith PetscScalar *mm; 40873a71a0fSBarry Smith PetscInt m,n; 40973a71a0fSBarry Smith 4108c778c55SBarry Smith *ierr = MatDenseGetArray(*mat,&mm); if (*ierr) return; 41173a71a0fSBarry Smith *ierr = MatGetSize(*mat,&m,&n); if (*ierr) return; 41273a71a0fSBarry Smith *ierr = PetscScalarAddressToFortran((PetscObject)*mat,1,fa,mm,m*n,ia); if (*ierr) return; 41373a71a0fSBarry Smith } 41473a71a0fSBarry Smith 4158cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matdenserestorearray_(Mat *mat,PetscScalar *fa,size_t *ia,PetscErrorCode *ierr) 41673a71a0fSBarry Smith { 41773a71a0fSBarry Smith PetscScalar *lx; 41873a71a0fSBarry Smith PetscInt m,n; 41973a71a0fSBarry Smith 42073a71a0fSBarry Smith *ierr = MatGetSize(*mat,&m,&n); if (*ierr) return; 42173a71a0fSBarry Smith *ierr = PetscScalarAddressFromFortran((PetscObject)*mat,fa,*ia,m*n,&lx);if (*ierr) return; 4228c778c55SBarry Smith *ierr = MatDenseRestoreArray(*mat,&lx);if (*ierr) return; 42373a71a0fSBarry Smith } 42473a71a0fSBarry Smith 4258cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matfactorgetsolverpackage_(Mat *mat,CHAR name PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) 42635bd34faSBarry Smith { 42735bd34faSBarry Smith const char *tname; 42835bd34faSBarry Smith 42935bd34faSBarry Smith *ierr = MatFactorGetSolverPackage(*mat,&tname);if (*ierr) return; 43035bd34faSBarry Smith if (name != PETSC_NULL_CHARACTER_Fortran) { 43135bd34faSBarry Smith *ierr = PetscStrncpy(name,tname,len);if (*ierr) return; 43235bd34faSBarry Smith } 43335bd34faSBarry Smith FIXRETURNCHAR(PETSC_TRUE,name,len); 43435bd34faSBarry Smith } 43535bd34faSBarry Smith 4368cc058d9SJed 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)) 4375dffd610SBarry Smith { 4385dffd610SBarry Smith char *t; 4395dffd610SBarry Smith FIXCHAR(outtype,len,t); 4409be81726SHong Zhang *ierr = MatGetFactor(*mat,t,*ftype,M); 4415dffd610SBarry Smith FREECHAR(outtype,t); 4425dffd610SBarry Smith } 4435dffd610SBarry Smith 4448cc058d9SJed 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)) 445f4e70085SSatish Balay { 446f4e70085SSatish Balay char *t; 447f4e70085SSatish Balay FIXCHAR(outtype,len,t); 448f4e70085SSatish Balay *ierr = MatConvert(*mat,t,*reuse,M); 449f4e70085SSatish Balay FREECHAR(outtype,t); 450f4e70085SSatish Balay } 451f4e70085SSatish Balay 452f4e70085SSatish Balay /* 453f4e70085SSatish Balay MatGetSubmatrices() is slightly different from C since the 454f4e70085SSatish Balay Fortran provides the array to hold the submatrix objects,while in C that 455f4e70085SSatish Balay array is allocated by the MatGetSubmatrices() 456f4e70085SSatish Balay */ 4578cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matgetsubmatrices_(Mat *mat,PetscInt *n,IS *isrow,IS *iscol,MatReuse *scall,Mat *smat,PetscErrorCode *ierr) 458f4e70085SSatish Balay { 459f4e70085SSatish Balay Mat *lsmat; 460f4e70085SSatish Balay PetscInt i; 461f4e70085SSatish Balay 462f4e70085SSatish Balay if (*scall == MAT_INITIAL_MATRIX) { 463f4e70085SSatish Balay *ierr = MatGetSubMatrices(*mat,*n,isrow,iscol,*scall,&lsmat); 464f4e70085SSatish Balay for (i=0; i<*n; i++) { 465f4e70085SSatish Balay smat[i] = lsmat[i]; 466f4e70085SSatish Balay } 467f4e70085SSatish Balay *ierr = PetscFree(lsmat); 468f4e70085SSatish Balay } else { 469f4e70085SSatish Balay *ierr = MatGetSubMatrices(*mat,*n,isrow,iscol,*scall,&smat); 470f4e70085SSatish Balay } 471f4e70085SSatish Balay } 472f4e70085SSatish Balay 4737d6bfa3bSBarry Smith /* 4747d6bfa3bSBarry Smith MatDestroyMatrices() is slightly different from C since the 4757d6bfa3bSBarry Smith Fortran provides the array to hold the submatrix objects,while in C that 4767d6bfa3bSBarry Smith array is allocated by the MatGetSubmatrices() 4777d6bfa3bSBarry Smith */ 4788cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matdestroymatrices_(Mat *mat,PetscInt *n,Mat *smat,PetscErrorCode *ierr) 4797d6bfa3bSBarry Smith { 4807d6bfa3bSBarry Smith PetscInt i; 4817d6bfa3bSBarry Smith 4827d6bfa3bSBarry Smith for (i=0; i<*n; i++) { 4836bf464f9SBarry Smith *ierr = MatDestroy(&smat[i]);if (*ierr) return; 4847d6bfa3bSBarry Smith } 4857d6bfa3bSBarry Smith } 4867d6bfa3bSBarry Smith 4878cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matzerorowscolumns_(Mat *mat,PetscInt *numRows,PetscInt *rows,PetscScalar *diag,Vec *x,Vec *b,PetscErrorCode *ierr) 48817ede90eSSatish Balay { 48917ede90eSSatish Balay CHKFORTRANNULLOBJECTDEREFERENCE(x); 49017ede90eSSatish Balay CHKFORTRANNULLOBJECTDEREFERENCE(b); 49117ede90eSSatish Balay *ierr = MatZeroRowsColumns(*mat,*numRows,rows,*diag,*x,*b); 49217ede90eSSatish Balay } 49317ede90eSSatish Balay 4948cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matzerorowscolumnsis_(Mat *mat,IS *is,PetscScalar *diag,Vec *x,Vec *b,PetscErrorCode *ierr) 49517ede90eSSatish Balay { 49617ede90eSSatish Balay CHKFORTRANNULLOBJECTDEREFERENCE(x); 49717ede90eSSatish Balay CHKFORTRANNULLOBJECTDEREFERENCE(b); 49817ede90eSSatish Balay *ierr = MatZeroRowsColumnsIS(*mat,*is,*diag,*x,*b); 49917ede90eSSatish Balay } 50017ede90eSSatish Balay 5018cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matzerorowsstencil_(Mat *mat,PetscInt *numRows,MatStencil *rows,PetscScalar *diag,Vec *x,Vec *b,PetscErrorCode *ierr) 50217ede90eSSatish Balay { 50317ede90eSSatish Balay CHKFORTRANNULLOBJECTDEREFERENCE(x); 50417ede90eSSatish Balay CHKFORTRANNULLOBJECTDEREFERENCE(b); 50517ede90eSSatish Balay *ierr = MatZeroRowsStencil(*mat,*numRows,rows,*diag,*x,*b); 50617ede90eSSatish Balay } 50717ede90eSSatish Balay 5088cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matzerorowscolumnsstencil_(Mat *mat,PetscInt *numRows,MatStencil *rows,PetscScalar *diag,Vec *x,Vec *b,PetscErrorCode *ierr) 509d25a37e1SJed Brown { 510d25a37e1SJed Brown CHKFORTRANNULLOBJECTDEREFERENCE(x); 511d25a37e1SJed Brown CHKFORTRANNULLOBJECTDEREFERENCE(b); 512d25a37e1SJed Brown *ierr = MatZeroRowsColumnsStencil(*mat,*numRows,rows,*diag,*x,*b); 513d25a37e1SJed Brown } 514d25a37e1SJed Brown 5158cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matzerorows_(Mat *mat,PetscInt *numRows,PetscInt *rows,PetscScalar *diag,Vec *x,Vec *b,PetscErrorCode *ierr) 516f4e70085SSatish Balay { 5172b40b63fSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(x); 5182b40b63fSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(b); 5192b40b63fSBarry Smith *ierr = MatZeroRows(*mat,*numRows,rows,*diag,*x,*b); 520f4e70085SSatish Balay } 521f4e70085SSatish Balay 5228cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matzerorowsis_(Mat *mat,IS *is,PetscScalar *diag,Vec *x,Vec *b,PetscErrorCode *ierr) 523f4e70085SSatish Balay { 5242b40b63fSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(x); 5252b40b63fSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(b); 5262b40b63fSBarry Smith *ierr = MatZeroRowsIS(*mat,*is,*diag,*x,*b); 527f4e70085SSatish Balay } 528f4e70085SSatish Balay 5298cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matzerorowslocal_(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 = MatZeroRowsLocal(*mat,*numRows,rows,*diag,*x,*b); 534f4e70085SSatish Balay } 535f4e70085SSatish Balay 5368cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matzerorowslocalis_(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 = MatZeroRowsLocalIS(*mat,*is,*diag,*x,*b); 541f4e70085SSatish Balay } 542f4e70085SSatish Balay 5438cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matzerorowscolumnslocal_(Mat *mat,PetscInt *numRows,PetscInt *rows,PetscScalar *diag,Vec *x,Vec *b,PetscErrorCode *ierr) 54417ede90eSSatish Balay { 54517ede90eSSatish Balay CHKFORTRANNULLOBJECTDEREFERENCE(x); 54617ede90eSSatish Balay CHKFORTRANNULLOBJECTDEREFERENCE(b); 54717ede90eSSatish Balay *ierr = MatZeroRowsColumnsLocal(*mat,*numRows,rows,*diag,*x,*b); 54817ede90eSSatish Balay } 54917ede90eSSatish Balay 5508cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matzerorowscolumnslocalis_(Mat *mat,IS *is,PetscScalar *diag,Vec *x,Vec *b,PetscErrorCode *ierr) 55117ede90eSSatish Balay { 55217ede90eSSatish Balay CHKFORTRANNULLOBJECTDEREFERENCE(x); 55317ede90eSSatish Balay CHKFORTRANNULLOBJECTDEREFERENCE(b); 55417ede90eSSatish Balay *ierr = MatZeroRowsColumnsLocalIS(*mat,*is,*diag,*x,*b); 55517ede90eSSatish Balay } 5561eea217eSSatish Balay 5578cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matsetoptionsprefix_(Mat *mat,CHAR prefix PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) 5581eea217eSSatish Balay { 5591eea217eSSatish Balay char *t; 5601eea217eSSatish Balay 5611eea217eSSatish Balay FIXCHAR(prefix,len,t); 5621eea217eSSatish Balay *ierr = MatSetOptionsPrefix(*mat,t); 5631eea217eSSatish Balay FREECHAR(prefix,t); 5641eea217eSSatish Balay } 5651eea217eSSatish Balay 566d0195637SJed Brown PETSC_EXTERN void PETSC_STDCALL matnullspaceremove_(MatNullSpace *sp,Vec *vec,PetscErrorCode *ierr) 567812c3f48SMatthew Knepley { 568d0195637SJed Brown *ierr = MatNullSpaceRemove(*sp,*vec); 569812c3f48SMatthew Knepley } 5701eea217eSSatish Balay 5714d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matgetinfo_(Mat *mat,MatInfoType *flag,MatInfo *info, int *ierr) 5725ba43861SSatish Balay { 5734d03fd2bSBarry Smith *ierr = MatGetInfo(*mat,*flag,info); 5745ba43861SSatish Balay } 5755ba43861SSatish Balay 5764d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matlufactor_(Mat *mat,IS *row,IS *col,const MatFactorInfo *info, int *ierr) 57722688b47SSatish Balay { 5784d03fd2bSBarry Smith *ierr = MatLUFactor(*mat,*row,*col,info); 57922688b47SSatish Balay } 58022688b47SSatish Balay 5814d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matilufactor_(Mat *mat,IS *row,IS *col,const MatFactorInfo *info, int *ierr) 58222688b47SSatish Balay { 5834d03fd2bSBarry Smith *ierr = MatILUFactor(*mat,*row,*col,info); 58422688b47SSatish Balay } 58522688b47SSatish Balay 5864d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matlufactorsymbolic_(Mat *fact,Mat *mat,IS *row,IS *col,const MatFactorInfo *info, int *ierr) 58722688b47SSatish Balay { 5884d03fd2bSBarry Smith *ierr = MatLUFactorSymbolic(*fact,*mat,*row,*col,info); 58922688b47SSatish Balay } 59022688b47SSatish Balay 5914d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matlufactornumeric_(Mat *fact,Mat *mat,const MatFactorInfo *info, int *ierr) 59222688b47SSatish Balay { 5934d03fd2bSBarry Smith *ierr = MatLUFactorNumeric(*fact,*mat,info); 59422688b47SSatish Balay } 59522688b47SSatish Balay 5964d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matcholeskyfactor_(Mat *mat,IS *perm,const MatFactorInfo *info, int *ierr) 59722688b47SSatish Balay { 5984d03fd2bSBarry Smith *ierr = MatCholeskyFactor(*mat,*perm,info); 59922688b47SSatish Balay } 60022688b47SSatish Balay 6014d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matcholeskyfactorsymbolic_(Mat *fact,Mat *mat,IS *perm,const MatFactorInfo *info, int *ierr) 60222688b47SSatish Balay { 6034d03fd2bSBarry Smith *ierr = MatCholeskyFactorSymbolic(*fact,*mat,*perm,info); 60422688b47SSatish Balay } 60522688b47SSatish Balay 6064d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matcholeskyfactornumeric_(Mat *fact,Mat *mat,const MatFactorInfo *info, int *ierr) 60722688b47SSatish Balay { 6084d03fd2bSBarry Smith *ierr = MatCholeskyFactorNumeric(*fact,*mat,info); 60922688b47SSatish Balay } 61022688b47SSatish Balay 6114d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matilufactorsymbolic_(Mat *fact,Mat *mat,IS *row,IS *col,const MatFactorInfo *info, int *ierr) 61222688b47SSatish Balay { 6134d03fd2bSBarry Smith *ierr = MatILUFactorSymbolic(*fact,*mat,*row,*col,info); 61422688b47SSatish Balay } 61522688b47SSatish Balay 6164d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL maticcfactorsymbolic_(Mat *fact,Mat *mat,IS *perm,const MatFactorInfo *info, int *ierr) 61722688b47SSatish Balay { 6184d03fd2bSBarry Smith *ierr = MatICCFactorSymbolic(*fact,*mat,*perm,info); 61922688b47SSatish Balay } 62022688b47SSatish Balay 6214d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL maticcfactor_(Mat *mat,IS *row,const MatFactorInfo *info, int *ierr) 62222688b47SSatish Balay { 6234d03fd2bSBarry Smith *ierr = MatICCFactor(*mat,*row,info); 62422688b47SSatish Balay } 62522688b47SSatish Balay 6264d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matfactorinfoinitialize_(MatFactorInfo *info, int *ierr) 62722688b47SSatish Balay { 6284d03fd2bSBarry Smith *ierr = MatFactorInfoInitialize(info); 62922688b47SSatish Balay } 630