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