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) 6*4d03fd2bSBarry Smith #define matsetvalues_ MATSETVALUES 7*4d03fd2bSBarry Smith #define matsetvalues11_ MATSETVALUES11 8*4d03fd2bSBarry Smith #define matsetvalues1n_ MATSETVALUES1N 9*4d03fd2bSBarry Smith #define matsetvaluesn1_ MATSETVALUESN1 10*4d03fd2bSBarry Smith #define matsetvaluesblocked_ MATSETVALUESBLOCKED 11*4d03fd2bSBarry Smith #define matsetvaluesblocked11_ MATSETVALUESBLOCKED11 12*4d03fd2bSBarry Smith #define matsetvaluesblocked111_ MATSETVALUESBLOCKED111 13*4d03fd2bSBarry Smith #define matsetvaluesblocked1n_ MATSETVALUESBLOCKED1N 14*4d03fd2bSBarry Smith #define matsetvaluesblockedn1_ MATSETVALUESBLOCKEDN1 15*4d03fd2bSBarry Smith #define matsetvaluesblockedlocal_ MATSETVALUESBLOCKEDLOCAL 16*4d03fd2bSBarry Smith #define matsetvaluesblockedlocal11_ MATSETVALUESBLOCKEDLOCAL11 17*4d03fd2bSBarry Smith #define matsetvaluesblockedlocal111_ MATSETVALUESBLOCKEDLOCAL111 18*4d03fd2bSBarry Smith #define matsetvaluesblockedlocal1n_ MATSETVALUESBLOCKEDLOCAL1N 19*4d03fd2bSBarry Smith #define matsetvaluesblockedlocaln1_ MATSETVALUESBLOCKEDLOCALN1 20*4d03fd2bSBarry Smith #define matsetvalueslocal_ MATSETVALUESLOCAL 21*4d03fd2bSBarry Smith #define matsetvalueslocal11_ MATSETVALUESLOCAL11 22*4d03fd2bSBarry Smith #define matsetvalueslocal11nn_ MATSETVALUESLOCAL11NN 23*4d03fd2bSBarry Smith #define matsetvalueslocal111_ MATSETVALUESLOCAL111 24*4d03fd2bSBarry Smith #define matsetvalueslocal1n_ MATSETVALUESLOCAL1N 25*4d03fd2bSBarry Smith #define matsetvalueslocaln1_ MATSETVALUESLOCALN1 2687bcf4e0SBarry Smith #define matgetrowmin_ MATGETROWMIN 2787bcf4e0SBarry Smith #define matgetrowminabs_ MATGETROWMINABS 285928be6bSBarry Smith #define matgetrowmax_ MATGETROWMAX 295928be6bSBarry Smith #define matgetrowmaxabs_ MATGETROWMAXABS 307d6bfa3bSBarry Smith #define matdestroymatrices_ MATDESTROYMATRICES 315dffd610SBarry Smith #define matgetfactor_ MATGETFACTOR 3235bd34faSBarry Smith #define matfactorgetsolverpackage_ MATFACTORGETSOLVERPACKAGE 33f4e70085SSatish Balay #define matgetrowij_ MATGETROWIJ 34f4e70085SSatish Balay #define matrestorerowij_ MATRESTOREROWIJ 35f4e70085SSatish Balay #define matgetrow_ MATGETROW 36f4e70085SSatish Balay #define matrestorerow_ MATRESTOREROW 37f7e310deSShri Abhyankar #define matload_ MATLOAD 38f4e70085SSatish Balay #define matview_ MATVIEW 398c778c55SBarry Smith #define matseqaijgetarray_ MATSEQAIJGETARRAY 406778691eSSatish Balay #define matseqaijrestorearray_ MATSEQAIJRESTOREARRAY 418c778c55SBarry Smith #define matdensegetarray_ MATDENSEGETARRAY 428c778c55SBarry Smith #define matdenserestorearray_ MATDENSERESTOREARRAY 43f4e70085SSatish Balay #define matconvert_ MATCONVERT 44f4e70085SSatish Balay #define matgetsubmatrices_ MATGETSUBMATRICES 4517ede90eSSatish Balay #define matzerorowscolumns_ MATZEROROWSCOLUMNS 4617ede90eSSatish Balay #define matzerorowscolumnsis_ MATZEROROWSCOLUMNSIS 4717ede90eSSatish Balay #define matzerorowsstencil_ MATZEROROWSSTENCIL 48d25a37e1SJed Brown #define matzerorowscolumnsstencil_ MATZEROROWSCOLUMNSSTENCIL 49f4e70085SSatish Balay #define matzerorows_ MATZEROROWS 50f4e70085SSatish Balay #define matzerorowsis_ MATZEROROWSIS 51f4e70085SSatish Balay #define matzerorowslocal_ MATZEROROWSLOCAL 52f4e70085SSatish Balay #define matzerorowslocalis_ MATZEROROWSLOCALIS 5317ede90eSSatish Balay #define matzerorowscolumnslocal_ MATZEROROWSCOLUMNSLOCAL 5417ede90eSSatish Balay #define matzerorowscolumnslocalis_ MATZEROROWSCOLUMNSLOCALIS 551eea217eSSatish Balay #define matsetoptionsprefix_ MATSETOPTIONSPREFIX 56fcc9d04bSBarry Smith #define matcreatevecs_ MATCREATEVECS 57c9d5ca86SBarry Smith #define matnullspaceremove_ MATNULLSPACEREMOVE 585ba43861SSatish Balay #define matgetinfo_ MATGETINFO 5922688b47SSatish Balay #define matlufactor_ MATLUFACTOR 6022688b47SSatish Balay #define matilufactor_ MATILUFACTOR 6122688b47SSatish Balay #define matlufactorsymbolic_ MATLUFACTORSYMBOLIC 6222688b47SSatish Balay #define matlufactornumeric_ MATLUFACTORNUMERIC 6322688b47SSatish Balay #define matcholeskyfactor_ MATCHOLESKYFACTOR 6422688b47SSatish Balay #define matcholeskyfactorsymbolic_ MATCHOLESKYFACTORSYMBOLIC 6522688b47SSatish Balay #define matcholeskyfactornumeric_ MATCHOLESKYFACTORNUMERIC 6622688b47SSatish Balay #define matilufactorsymbolic_ MATILUFACTORSYMBOLIC 6722688b47SSatish Balay #define maticcfactorsymbolic_ MATICCFACTORSYMBOLIC 6822688b47SSatish Balay #define maticcfactor_ MATICCFACTOR 6922688b47SSatish Balay #define matfactorinfoinitialize_ MATFACTORINFOINITIALIZE 70b22b330cSBarry Smith #define matnullspacesetfunction_ MATNULLSPACESETFUNCTION 710905d9aaSJed Brown #define matfindnonzerorows_ MATFINDNONZEROROWS 72f4e70085SSatish Balay #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 73*4d03fd2bSBarry Smith #define matsetvalues_ matsetvalues 74*4d03fd2bSBarry Smith #define matsetvalues11_ matsetvalues11 75*4d03fd2bSBarry Smith #define matsetvaluesn1_ matsetvaluesn1 76*4d03fd2bSBarry Smith #define matsetvalues1n_ matsetvalues1n 77*4d03fd2bSBarry Smith #define matsetvalueslocal_ matsetvalueslocal 78*4d03fd2bSBarry Smith #define matsetvalueslocal11_ matsetvalueslocal11 79*4d03fd2bSBarry Smith #define matsetvalueslocal11nn_ matsetvalueslocal11nn 80*4d03fd2bSBarry Smith #define matsetvalueslocal111_ matsetvalueslocal111 81*4d03fd2bSBarry Smith #define matsetvalueslocal1n_ matsetvalueslocal1n 82*4d03fd2bSBarry Smith #define matsetvalueslocaln1_ matsetvalueslocaln1 83*4d03fd2bSBarry Smith #define matsetvaluesblocked_ matsetvaluesblocked 84*4d03fd2bSBarry Smith #define matsetvaluesblocked11_ matsetvaluesblocked11 85*4d03fd2bSBarry Smith #define matsetvaluesblocked111_ matsetvaluesblocked111 86*4d03fd2bSBarry Smith #define matsetvaluesblocked1n_ matsetvaluesblocked1n 87*4d03fd2bSBarry Smith #define matsetvaluesblocked1n_ matsetvaluesblockedn1 88*4d03fd2bSBarry Smith #define matsetvaluesblockedlocal_ matsetvaluesblockedlocal 89*4d03fd2bSBarry Smith #define matsetvaluesblockedlocal11_ matsetvaluesblockedlocal11 90*4d03fd2bSBarry Smith #define matsetvaluesblockedlocal111_ matsetvaluesblockedlocal111 91*4d03fd2bSBarry Smith #define matsetvaluesblockedlocal1n_ matsetvaluesblockedlocal1n 92*4d03fd2bSBarry Smith #define matsetvaluesblockedlocal1n_ matsetvaluesblockedlocaln1 93*4d03fd2bSBarry Smith #define matsetvalueslocal_ matsetvalueslocal 9487bcf4e0SBarry Smith #define matgetrowmin_ matgetrowmin 9587bcf4e0SBarry Smith #define matgetrowminabs_ matgetrowminabs 965928be6bSBarry Smith #define matgetrowmax_ matgetrowmax 975928be6bSBarry Smith #define matgetrowmaxabs_ matgetrowmaxabs 985928be6bSBarry Smith #define matdestroymatrices_ matdestroymatrices 995dffd610SBarry Smith #define matgetfactor_ matgetfactor 10035bd34faSBarry Smith #define matfactorgetsolverpackage_ matfactorgetsolverpackage 101fcc9d04bSBarry Smith #define matcreatevecs_ matcreatevecs 102f4e70085SSatish Balay #define matgetrowij_ matgetrowij 103f4e70085SSatish Balay #define matrestorerowij_ matrestorerowij 104f4e70085SSatish Balay #define matgetrow_ matgetrow 105f4e70085SSatish Balay #define matrestorerow_ matrestorerow 106f4e70085SSatish Balay #define matview_ matview 107f7e310deSShri Abhyankar #define matload_ matload 1088c778c55SBarry Smith #define matseqaijgetarray_ matseqaijgetarray 1098c778c55SBarry Smith #define matseqaijrestorearray_ matseqaijrestorearray 1108c778c55SBarry Smith #define matdensegetarray_ matdensegetarray 1118c778c55SBarry Smith #define matdenserestorearray_ matdenserestorearray 112f4e70085SSatish Balay #define matconvert_ matconvert 113f4e70085SSatish Balay #define matgetsubmatrices_ matgetsubmatrices 11417ede90eSSatish Balay #define matzerorowscolumns_ matzerorowscolumns 11517ede90eSSatish Balay #define matzerorowscolumnsis_ matzerorowscolumnsis 11617ede90eSSatish Balay #define matzerorowsstencil_ matzerorowsstencil 117d25a37e1SJed Brown #define matzerorowscolumnsstencil_ matzerorowscolumnsstencil 118f4e70085SSatish Balay #define matzerorows_ matzerorows 119f4e70085SSatish Balay #define matzerorowsis_ matzerorowsis 120f4e70085SSatish Balay #define matzerorowslocal_ matzerorowslocal 121f4e70085SSatish Balay #define matzerorowslocalis_ matzerorowslocalis 12217ede90eSSatish Balay #define matzerorowscolumnslocal_ matzerorowscolumnslocal 12317ede90eSSatish Balay #define matzerorowscolumnslocalis_ matzerorowscolumnslocalis 1241eea217eSSatish Balay #define matsetoptionsprefix_ matsetoptionsprefix 125812c3f48SMatthew Knepley #define matnullspaceremove_ matnullspaceremove 1265ba43861SSatish Balay #define matgetinfo_ matgetinfo 12722688b47SSatish Balay #define matlufactor_ matlufactor 12822688b47SSatish Balay #define matilufactor_ matilufactor 12922688b47SSatish Balay #define matlufactorsymbolic_ matlufactorsymbolic 13022688b47SSatish Balay #define matlufactornumeric_ matlufactornumeric 13122688b47SSatish Balay #define matcholeskyfactor_ matcholeskyfactor 13222688b47SSatish Balay #define matcholeskyfactorsymbolic_ matcholeskyfactorsymbolic 13322688b47SSatish Balay #define matcholeskyfactornumeric_ matcholeskyfactornumeric 13422688b47SSatish Balay #define matilufactorsymbolic_ matilufactorsymbolic 13522688b47SSatish Balay #define maticcfactorsymbolic_ maticcfactorsymbolic 13622688b47SSatish Balay #define maticcfactor_ maticcfactor 13722688b47SSatish Balay #define matfactorinfoinitialize_ matfactorinfoinitialize 138b22b330cSBarry Smith #define matnullspacesetfunction_ matnullspacesetfunction 1390905d9aaSJed Brown #define matfindnonzerorows_ matfindnonzerorows 140f4e70085SSatish Balay #endif 141f4e70085SSatish Balay 142*4d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvaluesblocked_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ){ 143*4d03fd2bSBarry Smith *ierr = MatSetValuesBlocked(*mat,*m,idxm,*n,idxn,v,*addv); 144*4d03fd2bSBarry Smith } 145*4d03fd2bSBarry Smith 146*4d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvaluesblocked11_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ){ 147*4d03fd2bSBarry Smith matsetvaluesblocked_(mat,m,idxm,n,idxn,v,addv,ierr); 148*4d03fd2bSBarry Smith } 149*4d03fd2bSBarry Smith 150*4d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvaluesblocked111_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ){ 151*4d03fd2bSBarry Smith matsetvaluesblocked_(mat,m,idxm,n,idxn,v,addv,ierr); 152*4d03fd2bSBarry Smith } 153*4d03fd2bSBarry Smith 154*4d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvaluesblocked1n_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ){ 155*4d03fd2bSBarry Smith matsetvaluesblocked_(mat,m,idxm,n,idxn,v,addv,ierr); 156*4d03fd2bSBarry Smith } 157*4d03fd2bSBarry Smith 158*4d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvaluesblockedn1_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ){ 159*4d03fd2bSBarry Smith matsetvaluesblocked_(mat,m,idxm,n,idxn,v,addv,ierr); 160*4d03fd2bSBarry Smith } 161*4d03fd2bSBarry Smith 162*4d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvaluesblockedlocal_(Mat *mat,PetscInt *nrow, PetscInt irow[],PetscInt *ncol, PetscInt icol[], PetscScalar y[],InsertMode *addv, int *ierr ) 163*4d03fd2bSBarry Smith { 164*4d03fd2bSBarry Smith *ierr = MatSetValuesBlockedLocal(*mat,*nrow,irow,*ncol,icol,y,*addv); 165*4d03fd2bSBarry Smith } 166*4d03fd2bSBarry Smith 167*4d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvaluesblockedlocal11_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ){ 168*4d03fd2bSBarry Smith matsetvaluesblockedlocal_(mat,m,idxm,n,idxn,v,addv,ierr); 169*4d03fd2bSBarry Smith } 170*4d03fd2bSBarry Smith 171*4d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvaluesblockedlocal111_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ){ 172*4d03fd2bSBarry Smith matsetvaluesblockedlocal_(mat,m,idxm,n,idxn,v,addv,ierr); 173*4d03fd2bSBarry Smith } 174*4d03fd2bSBarry Smith 175*4d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvaluesblockedlocal1n_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ){ 176*4d03fd2bSBarry Smith matsetvaluesblockedlocal_(mat,m,idxm,n,idxn,v,addv,ierr); 177*4d03fd2bSBarry Smith } 178*4d03fd2bSBarry Smith 179*4d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvaluesblockedlocaln1_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ){ 180*4d03fd2bSBarry Smith matsetvaluesblockedlocal_(mat,m,idxm,n,idxn,v,addv,ierr); 181*4d03fd2bSBarry Smith } 182*4d03fd2bSBarry Smith 183*4d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvalues_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ) 184*4d03fd2bSBarry Smith { 185*4d03fd2bSBarry Smith *ierr = MatSetValues(*mat,*m,idxm,*n,idxn,v,*addv); 186*4d03fd2bSBarry Smith } 187*4d03fd2bSBarry Smith 188*4d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvalues11_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ) 189*4d03fd2bSBarry Smith { 190*4d03fd2bSBarry Smith matsetvalues_(mat,m,idxm,n,idxn,v,addv,ierr); 191*4d03fd2bSBarry Smith } 192*4d03fd2bSBarry Smith 193*4d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvaluesn1_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ) 194*4d03fd2bSBarry Smith { 195*4d03fd2bSBarry Smith matsetvalues_(mat,m,idxm,n,idxn,v,addv,ierr); 196*4d03fd2bSBarry Smith } 197*4d03fd2bSBarry Smith 198*4d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvalues1n_(Mat *mat,PetscInt *m, PetscInt idxm[],PetscInt *n, PetscInt idxn[], PetscScalar v[],InsertMode *addv, int *ierr ) 199*4d03fd2bSBarry Smith { 200*4d03fd2bSBarry Smith matsetvalues_(mat,m,idxm,n,idxn,v,addv,ierr); 201*4d03fd2bSBarry Smith } 202*4d03fd2bSBarry Smith 203*4d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvalueslocal_(Mat *mat,PetscInt *nrow, PetscInt irow[],PetscInt *ncol, PetscInt icol[], PetscScalar y[],InsertMode *addv, int *ierr ) 204*4d03fd2bSBarry Smith { 205*4d03fd2bSBarry Smith *ierr = MatSetValuesLocal(*mat,*nrow,irow,*ncol,icol,y,*addv); 206*4d03fd2bSBarry Smith } 207*4d03fd2bSBarry Smith 208*4d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvalueslocal11_(Mat *mat,PetscInt *nrow, PetscInt irow[],PetscInt *ncol, PetscInt icol[], PetscScalar y[],InsertMode *addv, int *ierr ) 209*4d03fd2bSBarry Smith { 210*4d03fd2bSBarry Smith matsetvalueslocal_(mat,nrow,irow,ncol,icol,y,addv,ierr); 211*4d03fd2bSBarry Smith } 212*4d03fd2bSBarry Smith 213*4d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvalueslocal11nn_(Mat *mat,PetscInt *nrow, PetscInt irow[],PetscInt *ncol, PetscInt icol[], PetscScalar y[],InsertMode *addv, int *ierr ) 214*4d03fd2bSBarry Smith { 215*4d03fd2bSBarry Smith matsetvalueslocal_(mat,nrow,irow,ncol,icol,y,addv,ierr); 216*4d03fd2bSBarry Smith } 217*4d03fd2bSBarry Smith 218*4d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvalueslocal111_(Mat *mat,PetscInt *nrow, PetscInt irow[],PetscInt *ncol, PetscInt icol[], PetscScalar y[],InsertMode *addv, int *ierr ) 219*4d03fd2bSBarry Smith { 220*4d03fd2bSBarry Smith matsetvalueslocal_(mat,nrow,irow,ncol,icol,y,addv,ierr); 221*4d03fd2bSBarry Smith } 222*4d03fd2bSBarry Smith 223*4d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvalueslocal1n_(Mat *mat,PetscInt *nrow, PetscInt irow[],PetscInt *ncol, PetscInt icol[], PetscScalar y[],InsertMode *addv, int *ierr ) 224*4d03fd2bSBarry Smith { 225*4d03fd2bSBarry Smith matsetvalueslocal_(mat,nrow,irow,ncol,icol,y,addv,ierr); 226*4d03fd2bSBarry Smith } 227*4d03fd2bSBarry Smith 228*4d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matsetvalueslocaln1_(Mat *mat,PetscInt *nrow, PetscInt irow[],PetscInt *ncol, PetscInt icol[], PetscScalar y[],InsertMode *addv, int *ierr ) 229*4d03fd2bSBarry Smith { 230*4d03fd2bSBarry Smith matsetvalueslocal_(mat,nrow,irow,ncol,icol,y,addv,ierr); 231*4d03fd2bSBarry Smith } 232*4d03fd2bSBarry Smith 23387bcf4e0SBarry Smith PETSC_EXTERN void PETSC_STDCALL matgetrowmin_(Mat *mat,Vec *v,PetscInt idx[], int *ierr ) 23487bcf4e0SBarry Smith { 23587bcf4e0SBarry Smith CHKFORTRANNULLINTEGER(idx); 23687bcf4e0SBarry Smith *ierr = MatGetRowMin(*mat,*v,idx); 23787bcf4e0SBarry Smith } 238*4d03fd2bSBarry Smith 23987bcf4e0SBarry Smith PETSC_EXTERN void PETSC_STDCALL matgetrowminabs_(Mat *mat,Vec *v,PetscInt idx[], int *ierr ) 24087bcf4e0SBarry Smith { 24187bcf4e0SBarry Smith CHKFORTRANNULLINTEGER(idx); 24287bcf4e0SBarry Smith *ierr = MatGetRowMinAbs(*mat,*v,idx); 24387bcf4e0SBarry Smith } 24487bcf4e0SBarry Smith 2455928be6bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matgetrowmax_(Mat *mat,Vec *v,PetscInt idx[], int *ierr ) 2465928be6bSBarry Smith { 2475928be6bSBarry Smith CHKFORTRANNULLINTEGER(idx); 2485928be6bSBarry Smith *ierr = MatGetRowMax(*mat,*v,idx); 2495928be6bSBarry Smith } 2505928be6bSBarry Smith 2515928be6bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matgetrowmaxabs_(Mat *mat,Vec *v,PetscInt idx[], int *ierr ) 2525928be6bSBarry Smith { 2535928be6bSBarry Smith CHKFORTRANNULLINTEGER(idx); 2545928be6bSBarry Smith *ierr = MatGetRowMaxAbs(*mat,*v,idx); 2555928be6bSBarry Smith } 2565928be6bSBarry Smith 257b22b330cSBarry Smith static PetscErrorCode ournullfunction(MatNullSpace sp,Vec x,void *ctx) 258b22b330cSBarry Smith { 259b22b330cSBarry Smith PetscErrorCode ierr = 0; 260b22b330cSBarry Smith (*(void (PETSC_STDCALL *)(MatNullSpace*,Vec*,void*,PetscErrorCode*))(((PetscObject)sp)->fortran_func_pointers[0]))(&sp,&x,ctx,&ierr);CHKERRQ(ierr); 261b22b330cSBarry Smith return 0; 262b22b330cSBarry Smith } 263b22b330cSBarry Smith 2648cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matnullspacesetfunction_(MatNullSpace *sp, PetscErrorCode (*rem)(MatNullSpace,Vec,void*),void *ctx,PetscErrorCode *ierr) 265b22b330cSBarry Smith { 266b22b330cSBarry Smith PetscObjectAllocateFortranPointers(*sp,1); 267b22b330cSBarry Smith ((PetscObject)*sp)->fortran_func_pointers[0] = (PetscVoidFunction)rem; 26826fbe8dcSKarl Rupp 269b22b330cSBarry Smith *ierr = MatNullSpaceSetFunction(*sp,ournullfunction,ctx); 270b22b330cSBarry Smith } 271b22b330cSBarry Smith 272d2da0f5dSBarry Smith PETSC_EXTERN void PETSC_STDCALL matcreatevecs_(Mat *mat,Vec *right,Vec *left, int *ierr) 2737c54600cSBarry Smith { 2747c54600cSBarry Smith CHKFORTRANNULLOBJECT(right); 2757c54600cSBarry Smith CHKFORTRANNULLOBJECT(left); 2762a7a6963SBarry Smith *ierr = MatCreateVecs(*mat,right,left); 2777c54600cSBarry Smith } 2787c54600cSBarry Smith 2798cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matgetrowij_(Mat *B,PetscInt *shift,PetscBool *sym,PetscBool *blockcompressed,PetscInt *n,PetscInt *ia,size_t *iia, 280ace3abfcSBarry Smith PetscInt *ja,size_t *jja,PetscBool *done,PetscErrorCode *ierr) 281f4e70085SSatish Balay { 2821a83f524SJed Brown const PetscInt *IA,*JA; 2838f7157efSSatish Balay *ierr = MatGetRowIJ(*B,*shift,*sym,*blockcompressed,n,&IA,&JA,done);if (*ierr) return; 2841a83f524SJed Brown *iia = PetscIntAddressToFortran(ia,(PetscInt*)IA); 2851a83f524SJed Brown *jja = PetscIntAddressToFortran(ja,(PetscInt*)JA); 286f4e70085SSatish Balay } 287f4e70085SSatish Balay 2888cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matrestorerowij_(Mat *B,PetscInt *shift,PetscBool *sym,PetscBool *blockcompressed, PetscInt *n,PetscInt *ia,size_t *iia, 289ace3abfcSBarry Smith PetscInt *ja,size_t *jja,PetscBool *done,PetscErrorCode *ierr) 290f4e70085SSatish Balay { 2911a83f524SJed Brown const PetscInt *IA = PetscIntAddressFromFortran(ia,*iia),*JA = PetscIntAddressFromFortran(ja,*jja); 2928f7157efSSatish Balay *ierr = MatRestoreRowIJ(*B,*shift,*sym,*blockcompressed,n,&IA,&JA,done); 293f4e70085SSatish Balay } 294f4e70085SSatish Balay 295f4e70085SSatish Balay /* 296f4e70085SSatish Balay This is a poor way of storing the column and value pointers 297f4e70085SSatish Balay generated by MatGetRow() to be returned with MatRestoreRow() 298f4e70085SSatish Balay but there is not natural,good place else to store them. Hence 299f4e70085SSatish Balay Fortran programmers can only have one outstanding MatGetRows() 300f4e70085SSatish Balay at a time. 301f4e70085SSatish Balay */ 302f4e70085SSatish Balay static PetscErrorCode matgetrowactive = 0; 303f4e70085SSatish Balay static const PetscInt *my_ocols = 0; 304f4e70085SSatish Balay static const PetscScalar *my_ovals = 0; 305f4e70085SSatish Balay 3068cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matgetrow_(Mat *mat,PetscInt *row,PetscInt *ncols,PetscInt *cols,PetscScalar *vals,PetscErrorCode *ierr) 307f4e70085SSatish Balay { 308f4e70085SSatish Balay const PetscInt **oocols = &my_ocols; 309f4e70085SSatish Balay const PetscScalar **oovals = &my_ovals; 310f4e70085SSatish Balay 311f4e70085SSatish Balay if (matgetrowactive) { 312efca3c55SSatish Balay PetscError(PETSC_COMM_SELF,__LINE__,"MatGetRow_Fortran",__FILE__,PETSC_ERR_ARG_WRONGSTATE,PETSC_ERROR_INITIAL, 313f4e70085SSatish Balay "Cannot have two MatGetRow() active simultaneously\n\ 314f4e70085SSatish Balay call MatRestoreRow() before calling MatGetRow() a second time"); 315f4e70085SSatish Balay *ierr = 1; 316f4e70085SSatish Balay return; 317f4e70085SSatish Balay } 318f4e70085SSatish Balay 3190298fd71SBarry Smith CHKFORTRANNULLINTEGER(cols); if (!cols) oocols = NULL; 3200298fd71SBarry Smith CHKFORTRANNULLSCALAR(vals); if (!vals) oovals = NULL; 321f4e70085SSatish Balay 322f4e70085SSatish Balay *ierr = MatGetRow(*mat,*row,ncols,oocols,oovals); 323f4e70085SSatish Balay if (*ierr) return; 324f4e70085SSatish Balay 325f4e70085SSatish Balay if (oocols) { *ierr = PetscMemcpy(cols,my_ocols,(*ncols)*sizeof(PetscInt)); if (*ierr) return;} 326f4e70085SSatish Balay if (oovals) { *ierr = PetscMemcpy(vals,my_ovals,(*ncols)*sizeof(PetscScalar)); if (*ierr) return;} 327f4e70085SSatish Balay matgetrowactive = 1; 328f4e70085SSatish Balay } 329f4e70085SSatish Balay 3308cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matrestorerow_(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 if (!matgetrowactive) { 335efca3c55SSatish Balay PetscError(PETSC_COMM_SELF,__LINE__,"MatRestoreRow_Fortran",__FILE__,PETSC_ERR_ARG_WRONGSTATE,PETSC_ERROR_INITIAL, 336f4e70085SSatish Balay "Must call MatGetRow() first"); 337f4e70085SSatish Balay *ierr = 1; 338f4e70085SSatish Balay return; 339f4e70085SSatish Balay } 3400298fd71SBarry Smith CHKFORTRANNULLINTEGER(cols); if (!cols) oocols = NULL; 3410298fd71SBarry Smith CHKFORTRANNULLSCALAR(vals); if (!vals) oovals = NULL; 342f4e70085SSatish Balay 343f4e70085SSatish Balay *ierr = MatRestoreRow(*mat,*row,ncols,oocols,oovals); 344f4e70085SSatish Balay matgetrowactive = 0; 345f4e70085SSatish Balay } 346f4e70085SSatish Balay 3478cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matview_(Mat *mat,PetscViewer *vin,PetscErrorCode *ierr) 348f4e70085SSatish Balay { 349f4e70085SSatish Balay PetscViewer v; 350f4e70085SSatish Balay PetscPatchDefaultViewers_Fortran(vin,v); 351f4e70085SSatish Balay *ierr = MatView(*mat,v); 352f4e70085SSatish Balay } 353f4e70085SSatish Balay 3548cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matload_(Mat *mat,PetscViewer *vin,PetscErrorCode *ierr) 355f7e310deSShri Abhyankar { 356f7e310deSShri Abhyankar PetscViewer v; 357f7e310deSShri Abhyankar PetscPatchDefaultViewers_Fortran(vin,v); 358112444f4SShri Abhyankar *ierr = MatLoad(*mat,v); 359f7e310deSShri Abhyankar } 360f7e310deSShri Abhyankar 3618cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matseqaijgetarray_(Mat *mat,PetscScalar *fa,size_t *ia,PetscErrorCode *ierr) 362f4e70085SSatish Balay { 363f4e70085SSatish Balay PetscScalar *mm; 364f4e70085SSatish Balay PetscInt m,n; 365f4e70085SSatish Balay 3668c778c55SBarry Smith *ierr = MatSeqAIJGetArray(*mat,&mm); if (*ierr) return; 367f4e70085SSatish Balay *ierr = MatGetSize(*mat,&m,&n); if (*ierr) return; 368f91d1997SBarry Smith *ierr = PetscScalarAddressToFortran((PetscObject)*mat,1,fa,mm,m*n,ia); if (*ierr) return; 369f4e70085SSatish Balay } 370f4e70085SSatish Balay 3718cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matseqaijrestorearray_(Mat *mat,PetscScalar *fa,size_t *ia,PetscErrorCode *ierr) 372f4e70085SSatish Balay { 373f4e70085SSatish Balay PetscScalar *lx; 374f4e70085SSatish Balay PetscInt m,n; 375f4e70085SSatish Balay 376f4e70085SSatish Balay *ierr = MatGetSize(*mat,&m,&n); if (*ierr) return; 377f4e70085SSatish Balay *ierr = PetscScalarAddressFromFortran((PetscObject)*mat,fa,*ia,m*n,&lx);if (*ierr) return; 3788c778c55SBarry Smith *ierr = MatSeqAIJRestoreArray(*mat,&lx);if (*ierr) return; 379f4e70085SSatish Balay } 380f4e70085SSatish Balay 3818cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matdensegetarray_(Mat *mat,PetscScalar *fa,size_t *ia,PetscErrorCode *ierr) 38273a71a0fSBarry Smith { 38373a71a0fSBarry Smith PetscScalar *mm; 38473a71a0fSBarry Smith PetscInt m,n; 38573a71a0fSBarry Smith 3868c778c55SBarry Smith *ierr = MatDenseGetArray(*mat,&mm); if (*ierr) return; 38773a71a0fSBarry Smith *ierr = MatGetSize(*mat,&m,&n); if (*ierr) return; 38873a71a0fSBarry Smith *ierr = PetscScalarAddressToFortran((PetscObject)*mat,1,fa,mm,m*n,ia); if (*ierr) return; 38973a71a0fSBarry Smith } 39073a71a0fSBarry Smith 3918cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matdenserestorearray_(Mat *mat,PetscScalar *fa,size_t *ia,PetscErrorCode *ierr) 39273a71a0fSBarry Smith { 39373a71a0fSBarry Smith PetscScalar *lx; 39473a71a0fSBarry Smith PetscInt m,n; 39573a71a0fSBarry Smith 39673a71a0fSBarry Smith *ierr = MatGetSize(*mat,&m,&n); if (*ierr) return; 39773a71a0fSBarry Smith *ierr = PetscScalarAddressFromFortran((PetscObject)*mat,fa,*ia,m*n,&lx);if (*ierr) return; 3988c778c55SBarry Smith *ierr = MatDenseRestoreArray(*mat,&lx);if (*ierr) return; 39973a71a0fSBarry Smith } 40073a71a0fSBarry Smith 4018cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matfactorgetsolverpackage_(Mat *mat,CHAR name PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) 40235bd34faSBarry Smith { 40335bd34faSBarry Smith const char *tname; 40435bd34faSBarry Smith 40535bd34faSBarry Smith *ierr = MatFactorGetSolverPackage(*mat,&tname);if (*ierr) return; 40635bd34faSBarry Smith if (name != PETSC_NULL_CHARACTER_Fortran) { 40735bd34faSBarry Smith *ierr = PetscStrncpy(name,tname,len);if (*ierr) return; 40835bd34faSBarry Smith } 40935bd34faSBarry Smith FIXRETURNCHAR(PETSC_TRUE,name,len); 41035bd34faSBarry Smith } 41135bd34faSBarry Smith 4128cc058d9SJed 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)) 4135dffd610SBarry Smith { 4145dffd610SBarry Smith char *t; 4155dffd610SBarry Smith FIXCHAR(outtype,len,t); 4169be81726SHong Zhang *ierr = MatGetFactor(*mat,t,*ftype,M); 4175dffd610SBarry Smith FREECHAR(outtype,t); 4185dffd610SBarry Smith } 4195dffd610SBarry Smith 4208cc058d9SJed 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)) 421f4e70085SSatish Balay { 422f4e70085SSatish Balay char *t; 423f4e70085SSatish Balay FIXCHAR(outtype,len,t); 424f4e70085SSatish Balay *ierr = MatConvert(*mat,t,*reuse,M); 425f4e70085SSatish Balay FREECHAR(outtype,t); 426f4e70085SSatish Balay } 427f4e70085SSatish Balay 428f4e70085SSatish Balay /* 429f4e70085SSatish Balay MatGetSubmatrices() is slightly different from C since the 430f4e70085SSatish Balay Fortran provides the array to hold the submatrix objects,while in C that 431f4e70085SSatish Balay array is allocated by the MatGetSubmatrices() 432f4e70085SSatish Balay */ 4338cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matgetsubmatrices_(Mat *mat,PetscInt *n,IS *isrow,IS *iscol,MatReuse *scall,Mat *smat,PetscErrorCode *ierr) 434f4e70085SSatish Balay { 435f4e70085SSatish Balay Mat *lsmat; 436f4e70085SSatish Balay PetscInt i; 437f4e70085SSatish Balay 438f4e70085SSatish Balay if (*scall == MAT_INITIAL_MATRIX) { 439f4e70085SSatish Balay *ierr = MatGetSubMatrices(*mat,*n,isrow,iscol,*scall,&lsmat); 440f4e70085SSatish Balay for (i=0; i<*n; i++) { 441f4e70085SSatish Balay smat[i] = lsmat[i]; 442f4e70085SSatish Balay } 443f4e70085SSatish Balay *ierr = PetscFree(lsmat); 444f4e70085SSatish Balay } else { 445f4e70085SSatish Balay *ierr = MatGetSubMatrices(*mat,*n,isrow,iscol,*scall,&smat); 446f4e70085SSatish Balay } 447f4e70085SSatish Balay } 448f4e70085SSatish Balay 4497d6bfa3bSBarry Smith /* 4507d6bfa3bSBarry Smith MatDestroyMatrices() is slightly different from C since the 4517d6bfa3bSBarry Smith Fortran provides the array to hold the submatrix objects,while in C that 4527d6bfa3bSBarry Smith array is allocated by the MatGetSubmatrices() 4537d6bfa3bSBarry Smith */ 4548cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matdestroymatrices_(Mat *mat,PetscInt *n,Mat *smat,PetscErrorCode *ierr) 4557d6bfa3bSBarry Smith { 4567d6bfa3bSBarry Smith PetscInt i; 4577d6bfa3bSBarry Smith 4587d6bfa3bSBarry Smith for (i=0; i<*n; i++) { 4596bf464f9SBarry Smith *ierr = MatDestroy(&smat[i]);if (*ierr) return; 4607d6bfa3bSBarry Smith } 4617d6bfa3bSBarry Smith } 4627d6bfa3bSBarry Smith 4638cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matzerorowscolumns_(Mat *mat,PetscInt *numRows,PetscInt *rows,PetscScalar *diag,Vec *x,Vec *b,PetscErrorCode *ierr) 46417ede90eSSatish Balay { 46517ede90eSSatish Balay CHKFORTRANNULLOBJECTDEREFERENCE(x); 46617ede90eSSatish Balay CHKFORTRANNULLOBJECTDEREFERENCE(b); 46717ede90eSSatish Balay *ierr = MatZeroRowsColumns(*mat,*numRows,rows,*diag,*x,*b); 46817ede90eSSatish Balay } 46917ede90eSSatish Balay 4708cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matzerorowscolumnsis_(Mat *mat,IS *is,PetscScalar *diag,Vec *x,Vec *b,PetscErrorCode *ierr) 47117ede90eSSatish Balay { 47217ede90eSSatish Balay CHKFORTRANNULLOBJECTDEREFERENCE(x); 47317ede90eSSatish Balay CHKFORTRANNULLOBJECTDEREFERENCE(b); 47417ede90eSSatish Balay *ierr = MatZeroRowsColumnsIS(*mat,*is,*diag,*x,*b); 47517ede90eSSatish Balay } 47617ede90eSSatish Balay 4778cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matzerorowsstencil_(Mat *mat,PetscInt *numRows,MatStencil *rows,PetscScalar *diag,Vec *x,Vec *b,PetscErrorCode *ierr) 47817ede90eSSatish Balay { 47917ede90eSSatish Balay CHKFORTRANNULLOBJECTDEREFERENCE(x); 48017ede90eSSatish Balay CHKFORTRANNULLOBJECTDEREFERENCE(b); 48117ede90eSSatish Balay *ierr = MatZeroRowsStencil(*mat,*numRows,rows,*diag,*x,*b); 48217ede90eSSatish Balay } 48317ede90eSSatish Balay 4848cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matzerorowscolumnsstencil_(Mat *mat,PetscInt *numRows,MatStencil *rows,PetscScalar *diag,Vec *x,Vec *b,PetscErrorCode *ierr) 485d25a37e1SJed Brown { 486d25a37e1SJed Brown CHKFORTRANNULLOBJECTDEREFERENCE(x); 487d25a37e1SJed Brown CHKFORTRANNULLOBJECTDEREFERENCE(b); 488d25a37e1SJed Brown *ierr = MatZeroRowsColumnsStencil(*mat,*numRows,rows,*diag,*x,*b); 489d25a37e1SJed Brown } 490d25a37e1SJed Brown 4918cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matzerorows_(Mat *mat,PetscInt *numRows,PetscInt *rows,PetscScalar *diag,Vec *x,Vec *b,PetscErrorCode *ierr) 492f4e70085SSatish Balay { 4932b40b63fSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(x); 4942b40b63fSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(b); 4952b40b63fSBarry Smith *ierr = MatZeroRows(*mat,*numRows,rows,*diag,*x,*b); 496f4e70085SSatish Balay } 497f4e70085SSatish Balay 4988cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matzerorowsis_(Mat *mat,IS *is,PetscScalar *diag,Vec *x,Vec *b,PetscErrorCode *ierr) 499f4e70085SSatish Balay { 5002b40b63fSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(x); 5012b40b63fSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(b); 5022b40b63fSBarry Smith *ierr = MatZeroRowsIS(*mat,*is,*diag,*x,*b); 503f4e70085SSatish Balay } 504f4e70085SSatish Balay 5058cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matzerorowslocal_(Mat *mat,PetscInt *numRows,PetscInt *rows,PetscScalar *diag,Vec *x,Vec *b,PetscErrorCode *ierr) 506f4e70085SSatish Balay { 5072b40b63fSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(x); 5082b40b63fSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(b); 5092b40b63fSBarry Smith *ierr = MatZeroRowsLocal(*mat,*numRows,rows,*diag,*x,*b); 510f4e70085SSatish Balay } 511f4e70085SSatish Balay 5128cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matzerorowslocalis_(Mat *mat,IS *is,PetscScalar *diag,Vec *x,Vec *b,PetscErrorCode *ierr) 513f4e70085SSatish Balay { 5142b40b63fSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(x); 5152b40b63fSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(b); 5162b40b63fSBarry Smith *ierr = MatZeroRowsLocalIS(*mat,*is,*diag,*x,*b); 517f4e70085SSatish Balay } 518f4e70085SSatish Balay 5198cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matzerorowscolumnslocal_(Mat *mat,PetscInt *numRows,PetscInt *rows,PetscScalar *diag,Vec *x,Vec *b,PetscErrorCode *ierr) 52017ede90eSSatish Balay { 52117ede90eSSatish Balay CHKFORTRANNULLOBJECTDEREFERENCE(x); 52217ede90eSSatish Balay CHKFORTRANNULLOBJECTDEREFERENCE(b); 52317ede90eSSatish Balay *ierr = MatZeroRowsColumnsLocal(*mat,*numRows,rows,*diag,*x,*b); 52417ede90eSSatish Balay } 52517ede90eSSatish Balay 5268cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matzerorowscolumnslocalis_(Mat *mat,IS *is,PetscScalar *diag,Vec *x,Vec *b,PetscErrorCode *ierr) 52717ede90eSSatish Balay { 52817ede90eSSatish Balay CHKFORTRANNULLOBJECTDEREFERENCE(x); 52917ede90eSSatish Balay CHKFORTRANNULLOBJECTDEREFERENCE(b); 53017ede90eSSatish Balay *ierr = MatZeroRowsColumnsLocalIS(*mat,*is,*diag,*x,*b); 53117ede90eSSatish Balay } 5321eea217eSSatish Balay 5338cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matsetoptionsprefix_(Mat *mat,CHAR prefix PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) 5341eea217eSSatish Balay { 5351eea217eSSatish Balay char *t; 5361eea217eSSatish Balay 5371eea217eSSatish Balay FIXCHAR(prefix,len,t); 5381eea217eSSatish Balay *ierr = MatSetOptionsPrefix(*mat,t); 5391eea217eSSatish Balay FREECHAR(prefix,t); 5401eea217eSSatish Balay } 5411eea217eSSatish Balay 542d0195637SJed Brown PETSC_EXTERN void PETSC_STDCALL matnullspaceremove_(MatNullSpace *sp,Vec *vec,PetscErrorCode *ierr) 543812c3f48SMatthew Knepley { 544d0195637SJed Brown *ierr = MatNullSpaceRemove(*sp,*vec); 545812c3f48SMatthew Knepley } 5461eea217eSSatish Balay 547*4d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matgetinfo_(Mat *mat,MatInfoType *flag,MatInfo *info, int *ierr) 5485ba43861SSatish Balay { 549*4d03fd2bSBarry Smith *ierr = MatGetInfo(*mat,*flag,info); 5505ba43861SSatish Balay } 5515ba43861SSatish Balay 552*4d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matlufactor_(Mat *mat,IS *row,IS *col,const MatFactorInfo *info, int *ierr) 55322688b47SSatish Balay { 554*4d03fd2bSBarry Smith *ierr = MatLUFactor(*mat,*row,*col,info); 55522688b47SSatish Balay } 55622688b47SSatish Balay 557*4d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matilufactor_(Mat *mat,IS *row,IS *col,const MatFactorInfo *info, int *ierr) 55822688b47SSatish Balay { 559*4d03fd2bSBarry Smith *ierr = MatILUFactor(*mat,*row,*col,info); 56022688b47SSatish Balay } 56122688b47SSatish Balay 562*4d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matlufactorsymbolic_(Mat *fact,Mat *mat,IS *row,IS *col,const MatFactorInfo *info, int *ierr) 56322688b47SSatish Balay { 564*4d03fd2bSBarry Smith *ierr = MatLUFactorSymbolic(*fact,*mat,*row,*col,info); 56522688b47SSatish Balay } 56622688b47SSatish Balay 567*4d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matlufactornumeric_(Mat *fact,Mat *mat,const MatFactorInfo *info, int *ierr) 56822688b47SSatish Balay { 569*4d03fd2bSBarry Smith *ierr = MatLUFactorNumeric(*fact,*mat,info); 57022688b47SSatish Balay } 57122688b47SSatish Balay 572*4d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matcholeskyfactor_(Mat *mat,IS *perm,const MatFactorInfo *info, int *ierr) 57322688b47SSatish Balay { 574*4d03fd2bSBarry Smith *ierr = MatCholeskyFactor(*mat,*perm,info); 57522688b47SSatish Balay } 57622688b47SSatish Balay 577*4d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matcholeskyfactorsymbolic_(Mat *fact,Mat *mat,IS *perm,const MatFactorInfo *info, int *ierr) 57822688b47SSatish Balay { 579*4d03fd2bSBarry Smith *ierr = MatCholeskyFactorSymbolic(*fact,*mat,*perm,info); 58022688b47SSatish Balay } 58122688b47SSatish Balay 582*4d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matcholeskyfactornumeric_(Mat *fact,Mat *mat,const MatFactorInfo *info, int *ierr) 58322688b47SSatish Balay { 584*4d03fd2bSBarry Smith *ierr = MatCholeskyFactorNumeric(*fact,*mat,info); 58522688b47SSatish Balay } 58622688b47SSatish Balay 587*4d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matilufactorsymbolic_(Mat *fact,Mat *mat,IS *row,IS *col,const MatFactorInfo *info, int *ierr) 58822688b47SSatish Balay { 589*4d03fd2bSBarry Smith *ierr = MatILUFactorSymbolic(*fact,*mat,*row,*col,info); 59022688b47SSatish Balay } 59122688b47SSatish Balay 592*4d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL maticcfactorsymbolic_(Mat *fact,Mat *mat,IS *perm,const MatFactorInfo *info, int *ierr) 59322688b47SSatish Balay { 594*4d03fd2bSBarry Smith *ierr = MatICCFactorSymbolic(*fact,*mat,*perm,info); 59522688b47SSatish Balay } 59622688b47SSatish Balay 597*4d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL maticcfactor_(Mat *mat,IS *row,const MatFactorInfo *info, int *ierr) 59822688b47SSatish Balay { 599*4d03fd2bSBarry Smith *ierr = MatICCFactor(*mat,*row,info); 60022688b47SSatish Balay } 60122688b47SSatish Balay 602*4d03fd2bSBarry Smith PETSC_EXTERN void PETSC_STDCALL matfactorinfoinitialize_(MatFactorInfo *info, int *ierr) 60322688b47SSatish Balay { 604*4d03fd2bSBarry Smith *ierr = MatFactorInfoInitialize(info); 60522688b47SSatish Balay } 606