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