xref: /petsc/src/mat/interface/ftn-custom/zmatrixf.c (revision 1b266c996c0ee2177e49587321b28ae9c622ce9a)
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