1af0996ceSBarry Smith #include <petsc/private/fortranimpl.h> 2cee688dbSBarry Smith #include <petsc/private/f90impl.h> 3c6db04a5SJed Brown #include <petscmat.h> 4665c2dedSJed Brown #include <petscviewer.h> 5f4e70085SSatish Balay 6f4e70085SSatish Balay #if defined(PETSC_HAVE_FORTRAN_CAPS) 7f0a86a08SBarry Smith #define matgetvalues_ MATGETVALUES 8f0a86a08SBarry Smith #define matgetvalues0_ MATGETVALUES0 9f0a86a08SBarry Smith #define matgetvaluesnn1_ MATGETVALUESnn1 10f0a86a08SBarry Smith #define matgetvaluesnnnn_ MATGETVALUESnnnn 11f0a86a08SBarry Smith #define matgetvalues11_ MATGETVALUES11 1285835d77SBarry Smith #define matgetvalues11a_ MATGETVALUES11A 1385835d77SBarry Smith #define matgetvalues1n_ MATGETVALUES1N 1485835d77SBarry Smith #define matgetvaluesn1_ MATGETVALUESN1 1585835d77SBarry Smith #define matgetvalueslocal_ MATGETVALUESLOCAL 1685835d77SBarry Smith #define matgetvalueslocal0_ MATGETVALUESLOCAL0 1785835d77SBarry Smith #define matgetvalueslocalnn1_ MATGETVALUESLOCALNN1 1885835d77SBarry Smith #define matgetvalueslocalnnnn_ MATGETVALUESLOCALNNNN 1985835d77SBarry Smith #define matgetvalueslocal11_ MATGETVALUESLOCAL11 2085835d77SBarry Smith #define matgetvalueslocal11a_ MATGETVALUESLOCAL11A 2185835d77SBarry Smith #define matgetvalueslocal1n_ MATGETVALUESLOCAL1N 2285835d77SBarry Smith #define matgetvalueslocaln1_ MATGETVALUESLOCALN1 234d03fd2bSBarry Smith #define matsetvalues_ MATSETVALUES 241006886cSSatish Balay #define matsetvaluesnnnn_ MATSETVALUESNNNN 253b494cfeSSatish Balay #define matsetvalues0_ MATSETVALUES0 261b266c99SBarry Smith #define matsetvaluesnn1_ MATSETVALUESNN1 274d03fd2bSBarry Smith #define matsetvalues11_ MATSETVALUES11 284d03fd2bSBarry Smith #define matsetvalues1n_ MATSETVALUES1N 294d03fd2bSBarry Smith #define matsetvaluesn1_ MATSETVALUESN1 303b494cfeSSatish Balay #define matsetvaluesblocked0_ MATSETVALUESBLOCKED0 310aee3464SBarry Smith #define matsetvaluesblocked2_ MATSETVALUESBLOCKED2 324d03fd2bSBarry Smith #define matsetvaluesblocked11_ MATSETVALUESBLOCKED11 334d03fd2bSBarry Smith #define matsetvaluesblocked111_ MATSETVALUESBLOCKED111 344d03fd2bSBarry Smith #define matsetvaluesblocked1n_ MATSETVALUESBLOCKED1N 354d03fd2bSBarry Smith #define matsetvaluesblockedn1_ MATSETVALUESBLOCKEDN1 364d03fd2bSBarry Smith #define matsetvaluesblockedlocal_ MATSETVALUESBLOCKEDLOCAL 373b494cfeSSatish Balay #define matsetvaluesblockedlocal0_ MATSETVALUESBLOCKEDLOCAL0 384d03fd2bSBarry Smith #define matsetvaluesblockedlocal11_ MATSETVALUESBLOCKEDLOCAL11 394d03fd2bSBarry Smith #define matsetvaluesblockedlocal111_ MATSETVALUESBLOCKEDLOCAL111 404d03fd2bSBarry Smith #define matsetvaluesblockedlocal1n_ MATSETVALUESBLOCKEDLOCAL1N 414d03fd2bSBarry Smith #define matsetvaluesblockedlocaln1_ MATSETVALUESBLOCKEDLOCALN1 424d03fd2bSBarry Smith #define matsetvalueslocal_ MATSETVALUESLOCAL 433b494cfeSSatish Balay #define matsetvalueslocal0_ MATSETVALUESLOCAL0 444d03fd2bSBarry Smith #define matsetvalueslocal11_ MATSETVALUESLOCAL11 454d03fd2bSBarry Smith #define matsetvalueslocal11nn_ MATSETVALUESLOCAL11NN 464d03fd2bSBarry Smith #define matsetvalueslocal111_ MATSETVALUESLOCAL111 474d03fd2bSBarry Smith #define matsetvalueslocal1n_ MATSETVALUESLOCAL1N 484d03fd2bSBarry Smith #define matsetvalueslocaln1_ MATSETVALUESLOCALN1 497d6bfa3bSBarry Smith #define matdestroymatrices_ MATDESTROYMATRICES 50df750dc8SHong Zhang #define matdestroysubmatrices_ MATDESTROYSUBMATRICES 5135bd34faSBarry Smith #define matfactorgetsolverpackage_ MATFACTORGETSOLVERPACKAGE 52f4e70085SSatish Balay #define matgetrowij_ MATGETROWIJ 53f4e70085SSatish Balay #define matrestorerowij_ MATRESTOREROWIJ 54f4e70085SSatish Balay #define matgetrow_ MATGETROW 55f4e70085SSatish Balay #define matrestorerow_ MATRESTOREROW 568c778c55SBarry Smith #define matseqaijgetarray_ MATSEQAIJGETARRAY 576778691eSSatish Balay #define matseqaijrestorearray_ MATSEQAIJRESTOREARRAY 588c778c55SBarry Smith #define matdensegetarray_ MATDENSEGETARRAY 598572280aSBarry Smith #define matdensegetarrayread_ MATDENSEGETARRAYREAD 608c778c55SBarry Smith #define matdenserestorearray_ MATDENSERESTOREARRAY 618572280aSBarry Smith #define matdenserestorearrayread_ MATDENSERESTOREARRAYREAD 627dae84e0SHong Zhang #define matcreatesubmatrices_ MATCREATESUBMATRICES 6381ec7b92Smarius #define matcreatesubmatricesmpi_ MATCREATESUBMATRICESMPI 6417ede90eSSatish Balay #define matzerorowscolumns_ MATZEROROWSCOLUMNS 6517ede90eSSatish Balay #define matzerorowscolumnsis_ MATZEROROWSCOLUMNSIS 6617ede90eSSatish Balay #define matzerorowsstencil_ MATZEROROWSSTENCIL 67d25a37e1SJed Brown #define matzerorowscolumnsstencil_ MATZEROROWSCOLUMNSSTENCIL 68f4e70085SSatish Balay #define matzerorows_ MATZEROROWS 69f4e70085SSatish Balay #define matzerorowsis_ MATZEROROWSIS 70f4e70085SSatish Balay #define matzerorowslocal_ MATZEROROWSLOCAL 71d27e6124SSatish Balay #define matzerorowslocal0_ MATZEROROWSLOCAL0 72d27e6124SSatish Balay #define matzerorowslocal1_ MATZEROROWSLOCAL1 73f4e70085SSatish Balay #define matzerorowslocalis_ MATZEROROWSLOCALIS 7417ede90eSSatish Balay #define matzerorowscolumnslocal_ MATZEROROWSCOLUMNSLOCAL 7517ede90eSSatish Balay #define matzerorowscolumnslocalis_ MATZEROROWSCOLUMNSLOCALIS 76fcc9d04bSBarry Smith #define matcreatevecs_ MATCREATEVECS 77c9d5ca86SBarry Smith #define matnullspaceremove_ MATNULLSPACEREMOVE 785ba43861SSatish Balay #define matgetinfo_ MATGETINFO 7922688b47SSatish Balay #define matlufactor_ MATLUFACTOR 8022688b47SSatish Balay #define matilufactor_ MATILUFACTOR 8122688b47SSatish Balay #define matlufactorsymbolic_ MATLUFACTORSYMBOLIC 8222688b47SSatish Balay #define matlufactornumeric_ MATLUFACTORNUMERIC 8322688b47SSatish Balay #define matcholeskyfactor_ MATCHOLESKYFACTOR 8422688b47SSatish Balay #define matcholeskyfactorsymbolic_ MATCHOLESKYFACTORSYMBOLIC 8522688b47SSatish Balay #define matcholeskyfactornumeric_ MATCHOLESKYFACTORNUMERIC 8622688b47SSatish Balay #define matilufactorsymbolic_ MATILUFACTORSYMBOLIC 8722688b47SSatish Balay #define maticcfactorsymbolic_ MATICCFACTORSYMBOLIC 8822688b47SSatish Balay #define maticcfactor_ MATICCFACTOR 8922688b47SSatish Balay #define matfactorinfoinitialize_ MATFACTORINFOINITIALIZE 90b22b330cSBarry Smith #define matnullspacesetfunction_ MATNULLSPACESETFUNCTION 910905d9aaSJed Brown #define matfindnonzerorows_ MATFINDNONZEROROWS 9238135fcbSMartin Diehl #define matgetsize_ MATGETSIZE 933be0408cSBarry Smith #define matgetsize00_ MATGETSIZE00 943be0408cSBarry Smith #define matgetsize10_ MATGETSIZE10 953be0408cSBarry Smith #define matgetsize01_ MATGETSIZE01 9638135fcbSMartin Diehl #define matgetlocalsize_ MATGETLOCALSIZE 973be0408cSBarry Smith #define matgetlocalsize00_ MATGETLOCALSIZE00 983be0408cSBarry Smith #define matgetlocalsize10_ MATGETLOCALSIZE10 993be0408cSBarry Smith #define matgetlocalsize01_ MATGETLOCALSIZE01 100260663b8SBarry Smith #define matsetnullspace_ MATSETNULLSPACE 101260663b8SBarry Smith #define matgetownershiprange_ MATGETOWNERSHIPRANGE 10291f56e93SMartin Diehl #define matgetownershiprange00_ MATGETOWNERSHIPRANGE00 10391f56e93SMartin Diehl #define matgetownershiprange10_ MATGETOWNERSHIPRANGE10 10491f56e93SMartin Diehl #define matgetownershiprange01_ MATGETOWNERSHIPRANGE01 1055c16e969SSatish Balay #define matgetownershiprange11_ MATGETOWNERSHIPRANGE11 106c08c7cb9SBarry Smith #define matgetownershipis_ MATGETOWNERSHIPIS 107f4e70085SSatish Balay #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 1084d03fd2bSBarry Smith #define matsetvalues_ matsetvalues 1091006886cSSatish Balay #define matsetvaluesnnnn_ matsetvaluesnnnn 1103b494cfeSSatish Balay #define matsetvalues0_ matsetvalues0 1111b266c99SBarry Smith #define matsetvaluesnn1_ matsetvaluesnn1 1124d03fd2bSBarry Smith #define matsetvalues11_ matsetvalues11 1134d03fd2bSBarry Smith #define matsetvaluesn1_ matsetvaluesn1 1144d03fd2bSBarry Smith #define matsetvalues1n_ matsetvalues1n 1154d03fd2bSBarry Smith #define matsetvalueslocal_ matsetvalueslocal 1163b494cfeSSatish Balay #define matsetvalueslocal0_ matsetvalueslocal0 1174d03fd2bSBarry Smith #define matsetvalueslocal11_ matsetvalueslocal11 1184d03fd2bSBarry Smith #define matsetvalueslocal11nn_ matsetvalueslocal11nn 1194d03fd2bSBarry Smith #define matsetvalueslocal111_ matsetvalueslocal111 1204d03fd2bSBarry Smith #define matsetvalueslocal1n_ matsetvalueslocal1n 1214d03fd2bSBarry Smith #define matsetvalueslocaln1_ matsetvalueslocaln1 1224d03fd2bSBarry Smith #define matsetvaluesblocked_ matsetvaluesblocked 1233b494cfeSSatish Balay #define matsetvaluesblocked0_ matsetvaluesblocked0 1240aee3464SBarry Smith #define matsetvaluesblocked2_ matsetvaluesblocked2 1254d03fd2bSBarry Smith #define matsetvaluesblocked11_ matsetvaluesblocked11 1264d03fd2bSBarry Smith #define matsetvaluesblocked111_ matsetvaluesblocked111 1274d03fd2bSBarry Smith #define matsetvaluesblocked1n_ matsetvaluesblocked1n 12824aa916eSSatish Balay #define matsetvaluesblockedn1_ matsetvaluesblockedn1 1294d03fd2bSBarry Smith #define matsetvaluesblockedlocal_ matsetvaluesblockedlocal 1303b494cfeSSatish Balay #define matsetvaluesblockedlocal0_ matsetvaluesblockedlocal0 1314d03fd2bSBarry Smith #define matsetvaluesblockedlocal11_ matsetvaluesblockedlocal11 1324d03fd2bSBarry Smith #define matsetvaluesblockedlocal111_ matsetvaluesblockedlocal111 1334d03fd2bSBarry Smith #define matsetvaluesblockedlocal1n_ matsetvaluesblockedlocal1n 13424aa916eSSatish Balay #define matsetvaluesblockedlocaln1_ matsetvaluesblockedlocaln1 1355928be6bSBarry Smith #define matdestroymatrices_ matdestroymatrices 136df750dc8SHong Zhang #define matdestroysubmatrices_ matdestroysubmatrices 13735bd34faSBarry Smith #define matfactorgetsolverpackage_ matfactorgetsolverpackage 138fcc9d04bSBarry Smith #define matcreatevecs_ matcreatevecs 139f4e70085SSatish Balay #define matgetrowij_ matgetrowij 140f4e70085SSatish Balay #define matrestorerowij_ matrestorerowij 141f4e70085SSatish Balay #define matgetrow_ matgetrow 142f4e70085SSatish Balay #define matrestorerow_ matrestorerow 1438c778c55SBarry Smith #define matseqaijgetarray_ matseqaijgetarray 1448c778c55SBarry Smith #define matseqaijrestorearray_ matseqaijrestorearray 1458c778c55SBarry Smith #define matdensegetarray_ matdensegetarray 1468572280aSBarry Smith #define matdensegetarrayread_ matdensegetarrayread 1478c778c55SBarry Smith #define matdenserestorearray_ matdenserestorearray 1488572280aSBarry Smith #define matdenserestorearrayread_ matdenserestorearrayread 1497dae84e0SHong Zhang #define matcreatesubmatrices_ matcreatesubmatrices 15081ec7b92Smarius #define matcreatesubmatricesmpi_ matcreatesubmatricesmpi 15117ede90eSSatish Balay #define matzerorowscolumns_ matzerorowscolumns 15217ede90eSSatish Balay #define matzerorowscolumnsis_ matzerorowscolumnsis 15317ede90eSSatish Balay #define matzerorowsstencil_ matzerorowsstencil 154d25a37e1SJed Brown #define matzerorowscolumnsstencil_ matzerorowscolumnsstencil 155f4e70085SSatish Balay #define matzerorows_ matzerorows 156f4e70085SSatish Balay #define matzerorowsis_ matzerorowsis 157f4e70085SSatish Balay #define matzerorowslocal_ matzerorowslocal 158f4e70085SSatish Balay #define matzerorowslocalis_ matzerorowslocalis 15917ede90eSSatish Balay #define matzerorowscolumnslocal_ matzerorowscolumnslocal 16017ede90eSSatish Balay #define matzerorowscolumnslocalis_ matzerorowscolumnslocalis 161812c3f48SMatthew Knepley #define matnullspaceremove_ matnullspaceremove 1625ba43861SSatish Balay #define matgetinfo_ matgetinfo 16322688b47SSatish Balay #define matlufactor_ matlufactor 16422688b47SSatish Balay #define matilufactor_ matilufactor 16522688b47SSatish Balay #define matlufactorsymbolic_ matlufactorsymbolic 16622688b47SSatish Balay #define matlufactornumeric_ matlufactornumeric 16722688b47SSatish Balay #define matcholeskyfactor_ matcholeskyfactor 16822688b47SSatish Balay #define matcholeskyfactorsymbolic_ matcholeskyfactorsymbolic 16922688b47SSatish Balay #define matcholeskyfactornumeric_ matcholeskyfactornumeric 17022688b47SSatish Balay #define matilufactorsymbolic_ matilufactorsymbolic 17122688b47SSatish Balay #define maticcfactorsymbolic_ maticcfactorsymbolic 17222688b47SSatish Balay #define maticcfactor_ maticcfactor 17322688b47SSatish Balay #define matfactorinfoinitialize_ matfactorinfoinitialize 174b22b330cSBarry Smith #define matnullspacesetfunction_ matnullspacesetfunction 1750905d9aaSJed Brown #define matfindnonzerorows_ matfindnonzerorows 17638135fcbSMartin Diehl #define matgetsize_ matgetsize 1773be0408cSBarry Smith #define matgetsize00_ matgetsize00 1783be0408cSBarry Smith #define matgetsize10_ matgetsize10 1793be0408cSBarry Smith #define matgetsize01_ matgetsize01 18038135fcbSMartin Diehl #define matgetlocalsize_ matgetlocalsize 1813be0408cSBarry Smith #define matgetlocalsize00_ matgetlocalsize00 1823be0408cSBarry Smith #define matgetlocalsize10_ matgetlocalsize10 1833be0408cSBarry Smith #define matgetlocalsize01_ matgetlocalsize01 184f0a86a08SBarry Smith #define matgetvalues_ matgetvalues 185f0a86a08SBarry Smith #define matgetvalues0_ matgetvalues0 186f0a86a08SBarry Smith #define matgetvaluesnn1_ matgetvaluesnn1 187f0a86a08SBarry Smith #define matgetvaluesnnnn_ matgetvaluesnnnn 188f0a86a08SBarry Smith #define matgetvalues11_ matgetvalues11 18985835d77SBarry Smith #define matgetvalues11a_ matgetvalues11a 190f0a86a08SBarry Smith #define matgetvalues1n_ matgetvalues1n 191f0a86a08SBarry Smith #define matgetvaluesn1_ matgetvaluesn1 19285835d77SBarry Smith #define matgetvalueslocal_ matgetvalueslocal 19385835d77SBarry Smith #define matgetvalueslocal0_ matgetvalueslocal0 19485835d77SBarry Smith #define matgetvalueslocalnn1_ matgetvalueslocalnn1 19585835d77SBarry Smith #define matgetvalueslocalnnnn_ matgetvalueslocalnnnn 19685835d77SBarry Smith #define matgetvalueslocal11_ matgetvalueslocal11 19785835d77SBarry Smith #define matgetvalueslocal1n_ matgetvalueslocal1n 19885835d77SBarry Smith #define matgetvalueslocaln1_ matgetvalueslocaln1 199260663b8SBarry Smith #define matsetnullspace_ matsetnullspace 200260663b8SBarry Smith #define matgetownershiprange_ matgetownershiprange 20191f56e93SMartin Diehl #define matgetownershiprange00_ matgetownershiprange00 20291f56e93SMartin Diehl #define matgetownershiprange10_ matgetownershiprange10 20391f56e93SMartin Diehl #define matgetownershiprange01_ matgetownershiprange01 20491f56e93SMartin Diehl #define matgetownershiprange11_ matgetownershiprange11 205c08c7cb9SBarry Smith #define matgetownershipis_ matgetownershipis 206f4e70085SSatish Balay #endif 207f4e70085SSatish Balay 208f0a86a08SBarry Smith PETSC_EXTERN void matgetvalues_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], int *ierr) 209f0a86a08SBarry Smith { 210f0a86a08SBarry Smith *ierr = MatGetValues(*mat, *m, idxm, *n, idxn, v); 211f0a86a08SBarry Smith } 212f0a86a08SBarry Smith 213f0a86a08SBarry Smith PETSC_EXTERN void matgetvalues0_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], int *ierr) 214f0a86a08SBarry Smith { 215f0a86a08SBarry Smith matgetvalues_(mat, m, idxm, n, idxn, v, ierr); 216f0a86a08SBarry Smith } 217f0a86a08SBarry Smith 218f0a86a08SBarry Smith PETSC_EXTERN void matgetvaluesnn1_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], int *ierr) 219f0a86a08SBarry Smith { 220f0a86a08SBarry Smith matgetvalues_(mat, m, idxm, n, idxn, v, ierr); 221f0a86a08SBarry Smith } 222f0a86a08SBarry Smith 223f0a86a08SBarry Smith PETSC_EXTERN void matgetvaluesnnnn_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], int *ierr) 224f0a86a08SBarry Smith { 225f0a86a08SBarry Smith matgetvalues_(mat, m, idxm, n, idxn, v, ierr); 226f0a86a08SBarry Smith } 227f0a86a08SBarry Smith 228f0a86a08SBarry Smith PETSC_EXTERN void matgetvalues11_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], int *ierr) 229f0a86a08SBarry Smith { 230f0a86a08SBarry Smith matgetvalues_(mat, m, idxm, n, idxn, v, ierr); 231f0a86a08SBarry Smith } 232f0a86a08SBarry Smith 23385835d77SBarry Smith PETSC_EXTERN void matgetvalues11a_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], int *ierr) 23485835d77SBarry Smith { 23585835d77SBarry Smith matgetvalues_(mat, m, idxm, n, idxn, v, ierr); 23685835d77SBarry Smith } 23785835d77SBarry Smith 238f0a86a08SBarry Smith PETSC_EXTERN void matgetvalues1n_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], int *ierr) 239f0a86a08SBarry Smith { 240f0a86a08SBarry Smith matgetvalues_(mat, m, idxm, n, idxn, v, ierr); 241f0a86a08SBarry Smith } 242f0a86a08SBarry Smith 243f0a86a08SBarry Smith PETSC_EXTERN void matgetvaluesn1_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], int *ierr) 244f0a86a08SBarry Smith { 245f0a86a08SBarry Smith matgetvalues_(mat, m, idxm, n, idxn, v, ierr); 246f0a86a08SBarry Smith } 247f0a86a08SBarry Smith 24885835d77SBarry Smith PETSC_EXTERN void matgetvalueslocal_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], int *ierr) 24985835d77SBarry Smith { 25085835d77SBarry Smith *ierr = MatGetValuesLocal(*mat, *m, idxm, *n, idxn, v); 25185835d77SBarry Smith } 25285835d77SBarry Smith 25385835d77SBarry Smith PETSC_EXTERN void matgetvalueslocal0_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], int *ierr) 25485835d77SBarry Smith { 25585835d77SBarry Smith matgetvalueslocal_(mat, m, idxm, n, idxn, v, ierr); 25685835d77SBarry Smith } 25785835d77SBarry Smith 25885835d77SBarry Smith PETSC_EXTERN void matgetvalueslocalnn1_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], int *ierr) 25985835d77SBarry Smith { 26085835d77SBarry Smith matgetvalueslocal_(mat, m, idxm, n, idxn, v, ierr); 26185835d77SBarry Smith } 26285835d77SBarry Smith 26385835d77SBarry Smith PETSC_EXTERN void matgetvalueslocalnnnn_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], int *ierr) 26485835d77SBarry Smith { 26585835d77SBarry Smith matgetvalueslocal_(mat, m, idxm, n, idxn, v, ierr); 26685835d77SBarry Smith } 26785835d77SBarry Smith 26885835d77SBarry Smith PETSC_EXTERN void matgetvalueslocal11_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], int *ierr) 26985835d77SBarry Smith { 27085835d77SBarry Smith matgetvalueslocal_(mat, m, idxm, n, idxn, v, ierr); 27185835d77SBarry Smith } 27285835d77SBarry Smith 27385835d77SBarry Smith PETSC_EXTERN void matgetvalueslocal11a_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], int *ierr) 27485835d77SBarry Smith { 27585835d77SBarry Smith matgetvalueslocal_(mat, m, idxm, n, idxn, v, ierr); 27685835d77SBarry Smith } 27785835d77SBarry Smith 27885835d77SBarry Smith PETSC_EXTERN void matgetvalueslocal1n_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], int *ierr) 27985835d77SBarry Smith { 28085835d77SBarry Smith matgetvalueslocal_(mat, m, idxm, n, idxn, v, ierr); 28185835d77SBarry Smith } 28285835d77SBarry Smith 28385835d77SBarry Smith PETSC_EXTERN void matgetvalueslocaln1_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], int *ierr) 28485835d77SBarry Smith { 28585835d77SBarry Smith matgetvalueslocal_(mat, m, idxm, n, idxn, v, ierr); 28685835d77SBarry Smith } 28785835d77SBarry Smith 28819caf8f3SSatish Balay PETSC_EXTERN void matgetownershiprange_(Mat *mat, PetscInt *m, PetscInt *n, int *ierr) 289260663b8SBarry Smith { 290260663b8SBarry Smith CHKFORTRANNULLINTEGER(m); 291260663b8SBarry Smith CHKFORTRANNULLINTEGER(n); 292260663b8SBarry Smith *ierr = MatGetOwnershipRange(*mat, m, n); 293260663b8SBarry Smith } 294260663b8SBarry Smith 29519caf8f3SSatish Balay PETSC_EXTERN void matgetownershiprange00_(Mat *mat, PetscInt *m, PetscInt *n, int *ierr) 2965dd307cdSMartin Diehl { 2975dd307cdSMartin Diehl CHKFORTRANNULLINTEGER(m); 2985dd307cdSMartin Diehl CHKFORTRANNULLINTEGER(n); 2995dd307cdSMartin Diehl *ierr = MatGetOwnershipRange(*mat, m, n); 3005dd307cdSMartin Diehl } 3015dd307cdSMartin Diehl 30219caf8f3SSatish Balay PETSC_EXTERN void matgetownershiprange10_(Mat *mat, PetscInt *m, PetscInt *n, int *ierr) 3035dd307cdSMartin Diehl { 3045dd307cdSMartin Diehl CHKFORTRANNULLINTEGER(m); 3055dd307cdSMartin Diehl CHKFORTRANNULLINTEGER(n); 3065dd307cdSMartin Diehl *ierr = MatGetOwnershipRange(*mat, m, n); 3075dd307cdSMartin Diehl } 3085dd307cdSMartin Diehl 30919caf8f3SSatish Balay PETSC_EXTERN void matgetownershiprange01_(Mat *mat, PetscInt *m, PetscInt *n, int *ierr) 3105dd307cdSMartin Diehl { 3115dd307cdSMartin Diehl CHKFORTRANNULLINTEGER(m); 3125dd307cdSMartin Diehl CHKFORTRANNULLINTEGER(n); 3135dd307cdSMartin Diehl *ierr = MatGetOwnershipRange(*mat, m, n); 3145dd307cdSMartin Diehl } 3155dd307cdSMartin Diehl 31619caf8f3SSatish Balay PETSC_EXTERN void matgetownershiprange11_(Mat *mat, PetscInt *m, PetscInt *n, int *ierr) 3175dd307cdSMartin Diehl { 3185dd307cdSMartin Diehl CHKFORTRANNULLINTEGER(m); 3195dd307cdSMartin Diehl CHKFORTRANNULLINTEGER(n); 3205dd307cdSMartin Diehl *ierr = MatGetOwnershipRange(*mat, m, n); 3215dd307cdSMartin Diehl } 3225dd307cdSMartin Diehl 32319caf8f3SSatish Balay PETSC_EXTERN void matgetownershipis_(Mat *mat, IS *m, IS *n, int *ierr) 324c08c7cb9SBarry Smith { 325c08c7cb9SBarry Smith CHKFORTRANNULLOBJECT(m); 326c08c7cb9SBarry Smith CHKFORTRANNULLOBJECT(n); 327c08c7cb9SBarry Smith *ierr = MatGetOwnershipIS(*mat, m, n); 328c08c7cb9SBarry Smith } 329c08c7cb9SBarry Smith 33019caf8f3SSatish Balay PETSC_EXTERN void matgetsize_(Mat *mat, PetscInt *m, PetscInt *n, int *ierr) 3313be0408cSBarry Smith { 3323be0408cSBarry Smith CHKFORTRANNULLINTEGER(m); 3333be0408cSBarry Smith CHKFORTRANNULLINTEGER(n); 3343be0408cSBarry Smith *ierr = MatGetSize(*mat, m, n); 3353be0408cSBarry Smith } 3363be0408cSBarry Smith 33719caf8f3SSatish Balay PETSC_EXTERN void matgetsize00_(Mat *mat, PetscInt *m, PetscInt *n, int *ierr) 3383be0408cSBarry Smith { 3393be0408cSBarry Smith matgetsize_(mat, m, n, ierr); 3403be0408cSBarry Smith } 3413be0408cSBarry Smith 34219caf8f3SSatish Balay PETSC_EXTERN void matgetsize10_(Mat *mat, PetscInt *m, PetscInt *n, int *ierr) 3433be0408cSBarry Smith { 3443be0408cSBarry Smith matgetsize_(mat, m, n, ierr); 3453be0408cSBarry Smith } 3463be0408cSBarry Smith 34719caf8f3SSatish Balay PETSC_EXTERN void matgetsize01_(Mat *mat, PetscInt *m, PetscInt *n, int *ierr) 3483be0408cSBarry Smith { 3493be0408cSBarry Smith matgetsize_(mat, m, n, ierr); 3503be0408cSBarry Smith } 3513be0408cSBarry Smith 35219caf8f3SSatish Balay PETSC_EXTERN void matgetlocalsize_(Mat *mat, PetscInt *m, PetscInt *n, int *ierr) 3533be0408cSBarry Smith { 3543be0408cSBarry Smith CHKFORTRANNULLINTEGER(m); 3553be0408cSBarry Smith CHKFORTRANNULLINTEGER(n); 3563be0408cSBarry Smith *ierr = MatGetLocalSize(*mat, m, n); 3573be0408cSBarry Smith } 3583be0408cSBarry Smith 35919caf8f3SSatish Balay PETSC_EXTERN void matgetlocalsize00_(Mat *mat, PetscInt *m, PetscInt *n, int *ierr) 3603be0408cSBarry Smith { 3613be0408cSBarry Smith matgetlocalsize_(mat, m, n, ierr); 3623be0408cSBarry Smith } 3633be0408cSBarry Smith 36419caf8f3SSatish Balay PETSC_EXTERN void matgetlocalsize10_(Mat *mat, PetscInt *m, PetscInt *n, int *ierr) 3653be0408cSBarry Smith { 3663be0408cSBarry Smith matgetlocalsize_(mat, m, n, ierr); 3673be0408cSBarry Smith } 3683be0408cSBarry Smith 36919caf8f3SSatish Balay PETSC_EXTERN void matgetlocalsize01_(Mat *mat, PetscInt *m, PetscInt *n, int *ierr) 3703be0408cSBarry Smith { 3713be0408cSBarry Smith matgetlocalsize_(mat, m, n, ierr); 3723be0408cSBarry Smith } 3733be0408cSBarry Smith 37470a7d78aSStefano Zampini PETSC_EXTERN void matsetvaluesblocked_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], InsertMode *addv, int *ierr) 37570a7d78aSStefano Zampini { 3764d03fd2bSBarry Smith *ierr = MatSetValuesBlocked(*mat, *m, idxm, *n, idxn, v, *addv); 3774d03fd2bSBarry Smith } 3784d03fd2bSBarry Smith 37970a7d78aSStefano Zampini PETSC_EXTERN void matsetvaluesblocked2_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], F90Array2d *y, InsertMode *addv, int *ierr PETSC_F90_2PTR_PROTO(ptrd)) 38070a7d78aSStefano Zampini { 381cee688dbSBarry Smith PetscScalar *fa; 3825975b3b6SBarry Smith *ierr = F90Array2dAccess(y, MPIU_SCALAR, (void **)&fa PETSC_F90_2PTR_PARAM(ptrd)); 3835975b3b6SBarry Smith if (*ierr) return; 384cee688dbSBarry Smith matsetvaluesblocked_(mat, m, idxm, n, idxn, fa, addv, ierr); 385cee688dbSBarry Smith } 386cee688dbSBarry Smith 38770a7d78aSStefano Zampini PETSC_EXTERN void matsetvaluesblocked0_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], InsertMode *addv, int *ierr) 38870a7d78aSStefano Zampini { 3893b494cfeSSatish Balay matsetvaluesblocked_(mat, m, idxm, n, idxn, v, addv, ierr); 3903b494cfeSSatish Balay } 3913b494cfeSSatish Balay 39270a7d78aSStefano Zampini PETSC_EXTERN void matsetvaluesblocked11_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], InsertMode *addv, int *ierr) 39370a7d78aSStefano Zampini { 3944d03fd2bSBarry Smith matsetvaluesblocked_(mat, m, idxm, n, idxn, v, addv, ierr); 3954d03fd2bSBarry Smith } 3964d03fd2bSBarry Smith 39770a7d78aSStefano Zampini PETSC_EXTERN void matsetvaluesblocked111_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], InsertMode *addv, int *ierr) 39870a7d78aSStefano Zampini { 3994d03fd2bSBarry Smith matsetvaluesblocked_(mat, m, idxm, n, idxn, v, addv, ierr); 4004d03fd2bSBarry Smith } 4014d03fd2bSBarry Smith 40270a7d78aSStefano Zampini PETSC_EXTERN void matsetvaluesblocked1n_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], InsertMode *addv, int *ierr) 40370a7d78aSStefano Zampini { 4044d03fd2bSBarry Smith matsetvaluesblocked_(mat, m, idxm, n, idxn, v, addv, ierr); 4054d03fd2bSBarry Smith } 4064d03fd2bSBarry Smith 40770a7d78aSStefano Zampini PETSC_EXTERN void matsetvaluesblockedn1_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], InsertMode *addv, int *ierr) 40870a7d78aSStefano Zampini { 4094d03fd2bSBarry Smith matsetvaluesblocked_(mat, m, idxm, n, idxn, v, addv, ierr); 4104d03fd2bSBarry Smith } 4114d03fd2bSBarry Smith 41219caf8f3SSatish Balay PETSC_EXTERN void matsetvaluesblockedlocal_(Mat *mat, PetscInt *nrow, PetscInt irow[], PetscInt *ncol, PetscInt icol[], PetscScalar y[], InsertMode *addv, int *ierr) 4134d03fd2bSBarry Smith { 4144d03fd2bSBarry Smith *ierr = MatSetValuesBlockedLocal(*mat, *nrow, irow, *ncol, icol, y, *addv); 4154d03fd2bSBarry Smith } 4164d03fd2bSBarry Smith 41770a7d78aSStefano Zampini PETSC_EXTERN void matsetvaluesblockedlocal0_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], InsertMode *addv, int *ierr) 41870a7d78aSStefano Zampini { 4193b494cfeSSatish Balay matsetvaluesblockedlocal_(mat, m, idxm, n, idxn, v, addv, ierr); 4203b494cfeSSatish Balay } 4213b494cfeSSatish Balay 42270a7d78aSStefano Zampini PETSC_EXTERN void matsetvaluesblockedlocal11_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], InsertMode *addv, int *ierr) 42370a7d78aSStefano Zampini { 4244d03fd2bSBarry Smith matsetvaluesblockedlocal_(mat, m, idxm, n, idxn, v, addv, ierr); 4254d03fd2bSBarry Smith } 4264d03fd2bSBarry Smith 42770a7d78aSStefano Zampini PETSC_EXTERN void matsetvaluesblockedlocal111_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], InsertMode *addv, int *ierr) 42870a7d78aSStefano Zampini { 4294d03fd2bSBarry Smith matsetvaluesblockedlocal_(mat, m, idxm, n, idxn, v, addv, ierr); 4304d03fd2bSBarry Smith } 4314d03fd2bSBarry Smith 43270a7d78aSStefano Zampini PETSC_EXTERN void matsetvaluesblockedlocal1n_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], InsertMode *addv, int *ierr) 43370a7d78aSStefano Zampini { 4344d03fd2bSBarry Smith matsetvaluesblockedlocal_(mat, m, idxm, n, idxn, v, addv, ierr); 4354d03fd2bSBarry Smith } 4364d03fd2bSBarry Smith 43770a7d78aSStefano Zampini PETSC_EXTERN void matsetvaluesblockedlocaln1_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], InsertMode *addv, int *ierr) 43870a7d78aSStefano Zampini { 4394d03fd2bSBarry Smith matsetvaluesblockedlocal_(mat, m, idxm, n, idxn, v, addv, ierr); 4404d03fd2bSBarry Smith } 4414d03fd2bSBarry Smith 44219caf8f3SSatish Balay PETSC_EXTERN void matsetvalues_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], InsertMode *addv, int *ierr) 4434d03fd2bSBarry Smith { 4444d03fd2bSBarry Smith *ierr = MatSetValues(*mat, *m, idxm, *n, idxn, v, *addv); 4454d03fd2bSBarry Smith } 4464d03fd2bSBarry Smith 44719caf8f3SSatish Balay PETSC_EXTERN void matsetvaluesnnnn_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], InsertMode *addv, int *ierr) 4481b266c99SBarry Smith { 4491b266c99SBarry Smith matsetvalues_(mat, m, idxm, n, idxn, v, addv, ierr); 4501b266c99SBarry Smith } 4511b266c99SBarry Smith 45219caf8f3SSatish Balay PETSC_EXTERN void matsetvalues0_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], InsertMode *addv, int *ierr) 4533b494cfeSSatish Balay { 4543b494cfeSSatish Balay matsetvalues_(mat, m, idxm, n, idxn, v, addv, ierr); 4553b494cfeSSatish Balay } 4563b494cfeSSatish Balay 45719caf8f3SSatish Balay PETSC_EXTERN void matsetvaluesnn1_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], InsertMode *addv, int *ierr) 4581b266c99SBarry Smith { 4591b266c99SBarry Smith matsetvalues_(mat, m, idxm, n, idxn, v, addv, ierr); 4601b266c99SBarry Smith } 4611b266c99SBarry Smith 46219caf8f3SSatish Balay PETSC_EXTERN void matsetvalues11_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], InsertMode *addv, int *ierr) 4634d03fd2bSBarry Smith { 4644d03fd2bSBarry Smith matsetvalues_(mat, m, idxm, n, idxn, v, addv, ierr); 4654d03fd2bSBarry Smith } 4664d03fd2bSBarry Smith 46719caf8f3SSatish Balay PETSC_EXTERN void matsetvaluesn1_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], InsertMode *addv, int *ierr) 4684d03fd2bSBarry Smith { 4694d03fd2bSBarry Smith matsetvalues_(mat, m, idxm, n, idxn, v, addv, ierr); 4704d03fd2bSBarry Smith } 4714d03fd2bSBarry Smith 47219caf8f3SSatish Balay PETSC_EXTERN void matsetvalues1n_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], InsertMode *addv, int *ierr) 4734d03fd2bSBarry Smith { 4744d03fd2bSBarry Smith matsetvalues_(mat, m, idxm, n, idxn, v, addv, ierr); 4754d03fd2bSBarry Smith } 4764d03fd2bSBarry Smith 47719caf8f3SSatish Balay PETSC_EXTERN void matsetvalueslocal_(Mat *mat, PetscInt *nrow, PetscInt irow[], PetscInt *ncol, PetscInt icol[], PetscScalar y[], InsertMode *addv, int *ierr) 4784d03fd2bSBarry Smith { 4794d03fd2bSBarry Smith *ierr = MatSetValuesLocal(*mat, *nrow, irow, *ncol, icol, y, *addv); 4804d03fd2bSBarry Smith } 4814d03fd2bSBarry Smith 48219caf8f3SSatish Balay PETSC_EXTERN void matsetvalueslocal0_(Mat *mat, PetscInt *nrow, PetscInt irow[], PetscInt *ncol, PetscInt icol[], PetscScalar y[], InsertMode *addv, int *ierr) 4833b494cfeSSatish Balay { 4843b494cfeSSatish Balay matsetvalueslocal_(mat, nrow, irow, ncol, icol, y, addv, ierr); 4853b494cfeSSatish Balay } 4863b494cfeSSatish Balay 48719caf8f3SSatish Balay PETSC_EXTERN void matsetvalueslocal11_(Mat *mat, PetscInt *nrow, PetscInt irow[], PetscInt *ncol, PetscInt icol[], PetscScalar y[], InsertMode *addv, int *ierr) 4884d03fd2bSBarry Smith { 4894d03fd2bSBarry Smith matsetvalueslocal_(mat, nrow, irow, ncol, icol, y, addv, ierr); 4904d03fd2bSBarry Smith } 4914d03fd2bSBarry Smith 49219caf8f3SSatish Balay PETSC_EXTERN void matsetvalueslocal11nn_(Mat *mat, PetscInt *nrow, PetscInt irow[], PetscInt *ncol, PetscInt icol[], PetscScalar y[], InsertMode *addv, int *ierr) 4934d03fd2bSBarry Smith { 4944d03fd2bSBarry Smith matsetvalueslocal_(mat, nrow, irow, ncol, icol, y, addv, ierr); 4954d03fd2bSBarry Smith } 4964d03fd2bSBarry Smith 49719caf8f3SSatish Balay PETSC_EXTERN void matsetvalueslocal111_(Mat *mat, PetscInt *nrow, PetscInt irow[], PetscInt *ncol, PetscInt icol[], PetscScalar y[], InsertMode *addv, int *ierr) 4984d03fd2bSBarry Smith { 4994d03fd2bSBarry Smith matsetvalueslocal_(mat, nrow, irow, ncol, icol, y, addv, ierr); 5004d03fd2bSBarry Smith } 5014d03fd2bSBarry Smith 50219caf8f3SSatish Balay PETSC_EXTERN void matsetvalueslocal1n_(Mat *mat, PetscInt *nrow, PetscInt irow[], PetscInt *ncol, PetscInt icol[], PetscScalar y[], InsertMode *addv, int *ierr) 5034d03fd2bSBarry Smith { 5044d03fd2bSBarry Smith matsetvalueslocal_(mat, nrow, irow, ncol, icol, y, addv, ierr); 5054d03fd2bSBarry Smith } 5064d03fd2bSBarry Smith 50719caf8f3SSatish Balay PETSC_EXTERN void matsetvalueslocaln1_(Mat *mat, PetscInt *nrow, PetscInt irow[], PetscInt *ncol, PetscInt icol[], PetscScalar y[], InsertMode *addv, int *ierr) 5084d03fd2bSBarry Smith { 5094d03fd2bSBarry Smith matsetvalueslocal_(mat, nrow, irow, ncol, icol, y, addv, ierr); 5104d03fd2bSBarry Smith } 5114d03fd2bSBarry Smith 512b22b330cSBarry Smith static PetscErrorCode ournullfunction(MatNullSpace sp, Vec x, void *ctx) 513b22b330cSBarry Smith { 5149566063dSJacob Faibussowitsch PetscCallFortranVoidFunction((*(void (*)(MatNullSpace *, Vec *, void *, PetscErrorCode *))(((PetscObject)sp)->fortran_func_pointers[0]))(&sp, &x, ctx, &ierr)); 5153ba16761SJacob Faibussowitsch return PETSC_SUCCESS; 516b22b330cSBarry Smith } 517b22b330cSBarry Smith 51819caf8f3SSatish Balay PETSC_EXTERN void matnullspacesetfunction_(MatNullSpace *sp, PetscErrorCode (*rem)(MatNullSpace, Vec, void *), void *ctx, PetscErrorCode *ierr) 519b22b330cSBarry Smith { 520b22b330cSBarry Smith PetscObjectAllocateFortranPointers(*sp, 1); 5218434afd1SBarry Smith ((PetscObject)*sp)->fortran_func_pointers[0] = (PetscVoidFn *)rem; 52226fbe8dcSKarl Rupp 523b22b330cSBarry Smith *ierr = MatNullSpaceSetFunction(*sp, ournullfunction, ctx); 524b22b330cSBarry Smith } 525b22b330cSBarry Smith 52619caf8f3SSatish Balay PETSC_EXTERN void matcreatevecs_(Mat *mat, Vec *right, Vec *left, int *ierr) 5277c54600cSBarry Smith { 5287c54600cSBarry Smith CHKFORTRANNULLOBJECT(right); 5297c54600cSBarry Smith CHKFORTRANNULLOBJECT(left); 5302a7a6963SBarry Smith *ierr = MatCreateVecs(*mat, right, left); 5317c54600cSBarry Smith } 5327c54600cSBarry Smith 5335975b3b6SBarry Smith PETSC_EXTERN void matgetrowij_(Mat *B, PetscInt *shift, PetscBool *sym, PetscBool *blockcompressed, PetscInt *n, PetscInt *ia, size_t *iia, PetscInt *ja, size_t *jja, PetscBool *done, PetscErrorCode *ierr) 534f4e70085SSatish Balay { 5351a83f524SJed Brown const PetscInt *IA, *JA; 5365975b3b6SBarry Smith *ierr = MatGetRowIJ(*B, *shift, *sym, *blockcompressed, n, &IA, &JA, done); 5375975b3b6SBarry Smith if (*ierr) return; 5381a83f524SJed Brown *iia = PetscIntAddressToFortran(ia, (PetscInt *)IA); 5391a83f524SJed Brown *jja = PetscIntAddressToFortran(ja, (PetscInt *)JA); 540f4e70085SSatish Balay } 541f4e70085SSatish Balay 5425975b3b6SBarry Smith PETSC_EXTERN void matrestorerowij_(Mat *B, PetscInt *shift, PetscBool *sym, PetscBool *blockcompressed, PetscInt *n, PetscInt *ia, size_t *iia, PetscInt *ja, size_t *jja, PetscBool *done, PetscErrorCode *ierr) 543f4e70085SSatish Balay { 5441a83f524SJed Brown const PetscInt *IA = PetscIntAddressFromFortran(ia, *iia), *JA = PetscIntAddressFromFortran(ja, *jja); 5458f7157efSSatish Balay *ierr = MatRestoreRowIJ(*B, *shift, *sym, *blockcompressed, n, &IA, &JA, done); 546f4e70085SSatish Balay } 547f4e70085SSatish Balay 548f4e70085SSatish Balay /* 549f4e70085SSatish Balay This is a poor way of storing the column and value pointers 550f4e70085SSatish Balay generated by MatGetRow() to be returned with MatRestoreRow() 551f4e70085SSatish Balay but there is not natural,good place else to store them. Hence 552f4e70085SSatish Balay Fortran programmers can only have one outstanding MatGetRows() 553f4e70085SSatish Balay at a time. 554f4e70085SSatish Balay */ 5553ba16761SJacob Faibussowitsch static int matgetrowactive = 0; 556dfef5ea7SSatish Balay static const PetscInt *my_ocols = NULL; 557dfef5ea7SSatish Balay static const PetscScalar *my_ovals = NULL; 558f4e70085SSatish Balay 55919caf8f3SSatish Balay PETSC_EXTERN void matgetrow_(Mat *mat, PetscInt *row, PetscInt *ncols, PetscInt *cols, PetscScalar *vals, PetscErrorCode *ierr) 560f4e70085SSatish Balay { 561f4e70085SSatish Balay const PetscInt **oocols = &my_ocols; 562f4e70085SSatish Balay const PetscScalar **oovals = &my_ovals; 563f4e70085SSatish Balay 564f4e70085SSatish Balay if (matgetrowactive) { 5653ba16761SJacob Faibussowitsch *ierr = PetscError(PETSC_COMM_SELF, __LINE__, "MatGetRow_Fortran", __FILE__, PETSC_ERR_ARG_WRONGSTATE, PETSC_ERROR_INITIAL, "Cannot have two MatGetRow() active simultaneously\n\ 566f4e70085SSatish Balay call MatRestoreRow() before calling MatGetRow() a second time"); 5673ba16761SJacob Faibussowitsch *ierr = PETSC_ERR_ARG_WRONGSTATE; 568f4e70085SSatish Balay return; 569f4e70085SSatish Balay } 570f4e70085SSatish Balay 5713ba16761SJacob Faibussowitsch CHKFORTRANNULLINTEGER(cols); 5723ba16761SJacob Faibussowitsch if (!cols) oocols = NULL; 5733ba16761SJacob Faibussowitsch CHKFORTRANNULLSCALAR(vals); 5743ba16761SJacob Faibussowitsch if (!vals) oovals = NULL; 575f4e70085SSatish Balay 576f4e70085SSatish Balay *ierr = MatGetRow(*mat, *row, ncols, oocols, oovals); 577f4e70085SSatish Balay if (*ierr) return; 578f4e70085SSatish Balay 5793ba16761SJacob Faibussowitsch if (oocols) { 5803ba16761SJacob Faibussowitsch *ierr = PetscArraycpy(cols, my_ocols, *ncols); 5813ba16761SJacob Faibussowitsch if (*ierr) return; 5823ba16761SJacob Faibussowitsch } 5833ba16761SJacob Faibussowitsch if (oovals) { 5843ba16761SJacob Faibussowitsch *ierr = PetscArraycpy(vals, my_ovals, *ncols); 5853ba16761SJacob Faibussowitsch if (*ierr) return; 5863ba16761SJacob Faibussowitsch } 587f4e70085SSatish Balay matgetrowactive = 1; 588f4e70085SSatish Balay } 589f4e70085SSatish Balay 59019caf8f3SSatish Balay PETSC_EXTERN void matrestorerow_(Mat *mat, PetscInt *row, PetscInt *ncols, PetscInt *cols, PetscScalar *vals, PetscErrorCode *ierr) 591f4e70085SSatish Balay { 592f4e70085SSatish Balay const PetscInt **oocols = &my_ocols; 593f4e70085SSatish Balay const PetscScalar **oovals = &my_ovals; 5943ba16761SJacob Faibussowitsch 595f4e70085SSatish Balay if (!matgetrowactive) { 5963ba16761SJacob Faibussowitsch *ierr = PetscError(PETSC_COMM_SELF, __LINE__, "MatRestoreRow_Fortran", __FILE__, PETSC_ERR_ARG_WRONGSTATE, PETSC_ERROR_INITIAL, "Must call MatGetRow() first"); 5973ba16761SJacob Faibussowitsch *ierr = PETSC_ERR_ARG_WRONGSTATE; 598f4e70085SSatish Balay return; 599f4e70085SSatish Balay } 6003ba16761SJacob Faibussowitsch CHKFORTRANNULLINTEGER(cols); 6013ba16761SJacob Faibussowitsch if (!cols) oocols = NULL; 6023ba16761SJacob Faibussowitsch CHKFORTRANNULLSCALAR(vals); 6033ba16761SJacob Faibussowitsch if (!vals) oovals = NULL; 604f4e70085SSatish Balay 605f4e70085SSatish Balay *ierr = MatRestoreRow(*mat, *row, ncols, oocols, oovals); 606f4e70085SSatish Balay matgetrowactive = 0; 607f4e70085SSatish Balay } 608f4e70085SSatish Balay 60919caf8f3SSatish Balay PETSC_EXTERN void matseqaijgetarray_(Mat *mat, PetscScalar *fa, size_t *ia, PetscErrorCode *ierr) 610f4e70085SSatish Balay { 611f4e70085SSatish Balay PetscScalar *mm; 612f4e70085SSatish Balay PetscInt m, n; 613f4e70085SSatish Balay 6145975b3b6SBarry Smith *ierr = MatSeqAIJGetArray(*mat, &mm); 6155975b3b6SBarry Smith if (*ierr) return; 6165975b3b6SBarry Smith *ierr = MatGetSize(*mat, &m, &n); 6175975b3b6SBarry Smith if (*ierr) return; 6185975b3b6SBarry Smith *ierr = PetscScalarAddressToFortran((PetscObject)*mat, 1, fa, mm, m * n, ia); 6195975b3b6SBarry Smith if (*ierr) return; 620f4e70085SSatish Balay } 621f4e70085SSatish Balay 62219caf8f3SSatish Balay PETSC_EXTERN void matseqaijrestorearray_(Mat *mat, PetscScalar *fa, size_t *ia, PetscErrorCode *ierr) 623f4e70085SSatish Balay { 624f4e70085SSatish Balay PetscScalar *lx; 625f4e70085SSatish Balay PetscInt m, n; 626f4e70085SSatish Balay 6275975b3b6SBarry Smith *ierr = MatGetSize(*mat, &m, &n); 6285975b3b6SBarry Smith if (*ierr) return; 6295975b3b6SBarry Smith *ierr = PetscScalarAddressFromFortran((PetscObject)*mat, fa, *ia, m * n, &lx); 6305975b3b6SBarry Smith if (*ierr) return; 6315975b3b6SBarry Smith *ierr = MatSeqAIJRestoreArray(*mat, &lx); 6325975b3b6SBarry Smith if (*ierr) return; 633f4e70085SSatish Balay } 634f4e70085SSatish Balay 63519caf8f3SSatish Balay PETSC_EXTERN void matdensegetarray_(Mat *mat, PetscScalar *fa, size_t *ia, PetscErrorCode *ierr) 63673a71a0fSBarry Smith { 63773a71a0fSBarry Smith PetscScalar *mm; 63873a71a0fSBarry Smith PetscInt m, n; 63973a71a0fSBarry Smith 6405975b3b6SBarry Smith *ierr = MatDenseGetArray(*mat, &mm); 6415975b3b6SBarry Smith if (*ierr) return; 6425975b3b6SBarry Smith *ierr = MatGetSize(*mat, &m, &n); 6435975b3b6SBarry Smith if (*ierr) return; 6445975b3b6SBarry Smith *ierr = PetscScalarAddressToFortran((PetscObject)*mat, 1, fa, mm, m * n, ia); 6455975b3b6SBarry Smith if (*ierr) return; 64673a71a0fSBarry Smith } 64773a71a0fSBarry Smith 64819caf8f3SSatish Balay PETSC_EXTERN void matdenserestorearray_(Mat *mat, PetscScalar *fa, size_t *ia, PetscErrorCode *ierr) 64973a71a0fSBarry Smith { 65073a71a0fSBarry Smith PetscScalar *lx; 65173a71a0fSBarry Smith PetscInt m, n; 65273a71a0fSBarry Smith 6535975b3b6SBarry Smith *ierr = MatGetSize(*mat, &m, &n); 6545975b3b6SBarry Smith if (*ierr) return; 6555975b3b6SBarry Smith *ierr = PetscScalarAddressFromFortran((PetscObject)*mat, fa, *ia, m * n, &lx); 6565975b3b6SBarry Smith if (*ierr) return; 6575975b3b6SBarry Smith *ierr = MatDenseRestoreArray(*mat, &lx); 6585975b3b6SBarry Smith if (*ierr) return; 65973a71a0fSBarry Smith } 66073a71a0fSBarry Smith 66119caf8f3SSatish Balay PETSC_EXTERN void matdensegetarrayread_(Mat *mat, PetscScalar *fa, size_t *ia, PetscErrorCode *ierr) 6628572280aSBarry Smith { 6637067c7f7SBarry Smith const PetscScalar *mm; 6648572280aSBarry Smith PetscInt m, n; 6658572280aSBarry Smith 6665975b3b6SBarry Smith *ierr = MatDenseGetArrayRead(*mat, &mm); 6675975b3b6SBarry Smith if (*ierr) return; 6685975b3b6SBarry Smith *ierr = MatGetSize(*mat, &m, &n); 6695975b3b6SBarry Smith if (*ierr) return; 6705975b3b6SBarry Smith *ierr = PetscScalarAddressToFortran((PetscObject)*mat, 1, fa, (PetscScalar *)mm, m * n, ia); 6715975b3b6SBarry Smith if (*ierr) return; 6728572280aSBarry Smith } 6738572280aSBarry Smith 67419caf8f3SSatish Balay PETSC_EXTERN void matdenserestorearrayread_(Mat *mat, PetscScalar *fa, size_t *ia, PetscErrorCode *ierr) 6758572280aSBarry Smith { 6767067c7f7SBarry Smith const PetscScalar *lx; 6778572280aSBarry Smith PetscInt m, n; 6788572280aSBarry Smith 6795975b3b6SBarry Smith *ierr = MatGetSize(*mat, &m, &n); 6805975b3b6SBarry Smith if (*ierr) return; 6815975b3b6SBarry Smith *ierr = PetscScalarAddressFromFortran((PetscObject)*mat, fa, *ia, m * n, (PetscScalar **)&lx); 6825975b3b6SBarry Smith if (*ierr) return; 6835975b3b6SBarry Smith *ierr = MatDenseRestoreArrayRead(*mat, &lx); 6845975b3b6SBarry Smith if (*ierr) return; 6858572280aSBarry Smith } 6868572280aSBarry Smith 68719caf8f3SSatish Balay PETSC_EXTERN void matfactorgetsolverpackage_(Mat *mat, char *name, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len) 68835bd34faSBarry Smith { 68935bd34faSBarry Smith const char *tname; 69035bd34faSBarry Smith 6915975b3b6SBarry Smith *ierr = MatFactorGetSolverType(*mat, &tname); 6925975b3b6SBarry Smith if (*ierr) return; 69335bd34faSBarry Smith if (name != PETSC_NULL_CHARACTER_Fortran) { 6945975b3b6SBarry Smith *ierr = PetscStrncpy(name, tname, len); 6955975b3b6SBarry Smith if (*ierr) return; 69635bd34faSBarry Smith } 69735bd34faSBarry Smith FIXRETURNCHAR(PETSC_TRUE, name, len); 69835bd34faSBarry Smith } 69935bd34faSBarry Smith 700f4e70085SSatish Balay /* 7017dae84e0SHong Zhang MatCreateSubmatrices() is slightly different from C since the 702f4e70085SSatish Balay Fortran provides the array to hold the submatrix objects,while in C that 7037dae84e0SHong Zhang array is allocated by the MatCreateSubmatrices() 704f4e70085SSatish Balay */ 70519caf8f3SSatish Balay PETSC_EXTERN void matcreatesubmatrices_(Mat *mat, PetscInt *n, IS *isrow, IS *iscol, MatReuse *scall, Mat *smat, PetscErrorCode *ierr) 706f4e70085SSatish Balay { 707f4e70085SSatish Balay Mat *lsmat; 708f4e70085SSatish Balay PetscInt i; 709f4e70085SSatish Balay 710f4e70085SSatish Balay if (*scall == MAT_INITIAL_MATRIX) { 7117dae84e0SHong Zhang *ierr = MatCreateSubMatrices(*mat, *n, isrow, iscol, *scall, &lsmat); 71269d47153SPierre Jolivet for (i = 0; i <= *n; i++) { /* lsmat[*n] might be a dummy matrix for saving data structure */ 713f4e70085SSatish Balay smat[i] = lsmat[i]; 714f4e70085SSatish Balay } 715f4e70085SSatish Balay *ierr = PetscFree(lsmat); 716f4e70085SSatish Balay } else { 7177dae84e0SHong Zhang *ierr = MatCreateSubMatrices(*mat, *n, isrow, iscol, *scall, &smat); 718f4e70085SSatish Balay } 719f4e70085SSatish Balay } 720f4e70085SSatish Balay 7217d6bfa3bSBarry Smith /* 72281ec7b92Smarius MatCreateSubmatrices() is slightly different from C since the 72381ec7b92Smarius Fortran provides the array to hold the submatrix objects,while in C that 72481ec7b92Smarius array is allocated by the MatCreateSubmatrices() 72581ec7b92Smarius */ 72619caf8f3SSatish Balay PETSC_EXTERN void matcreatesubmatricesmpi_(Mat *mat, PetscInt *n, IS *isrow, IS *iscol, MatReuse *scall, Mat *smat, PetscErrorCode *ierr) 72781ec7b92Smarius { 72881ec7b92Smarius Mat *lsmat; 72981ec7b92Smarius PetscInt i; 73081ec7b92Smarius 73181ec7b92Smarius if (*scall == MAT_INITIAL_MATRIX) { 73281ec7b92Smarius *ierr = MatCreateSubMatricesMPI(*mat, *n, isrow, iscol, *scall, &lsmat); 73369d47153SPierre Jolivet for (i = 0; i <= *n; i++) { /* lsmat[*n] might be a dummy matrix for saving data structure */ 73481ec7b92Smarius smat[i] = lsmat[i]; 73581ec7b92Smarius } 73681ec7b92Smarius *ierr = PetscFree(lsmat); 73781ec7b92Smarius } else { 73881ec7b92Smarius *ierr = MatCreateSubMatricesMPI(*mat, *n, isrow, iscol, *scall, &smat); 73981ec7b92Smarius } 74081ec7b92Smarius } 74181ec7b92Smarius 74281ec7b92Smarius /* 7437d6bfa3bSBarry Smith MatDestroyMatrices() is slightly different from C since the 744de7ef04eSHong Zhang Fortran does not free the array of matrix objects, while in C that 745de7ef04eSHong Zhang the array is freed 746de7ef04eSHong Zhang */ 74719caf8f3SSatish Balay PETSC_EXTERN void matdestroymatrices_(PetscInt *n, Mat *smat, PetscErrorCode *ierr) 748de7ef04eSHong Zhang { 749de7ef04eSHong Zhang PetscInt i; 750de7ef04eSHong Zhang 751de7ef04eSHong Zhang for (i = 0; i < *n; i++) { 7521fb7b255SJunchao Zhang PETSC_FORTRAN_OBJECT_F_DESTROYED_TO_C_NULL(&smat[i]); 7535975b3b6SBarry Smith *ierr = MatDestroy(&smat[i]); 7545975b3b6SBarry Smith if (*ierr) return; 7551fb7b255SJunchao Zhang PETSC_FORTRAN_OBJECT_C_NULL_TO_F_DESTROYED(&smat[i]); 756de7ef04eSHong Zhang } 757de7ef04eSHong Zhang } 758de7ef04eSHong Zhang 759de7ef04eSHong Zhang /* 760de7ef04eSHong Zhang MatDestroySubMatrices() is slightly different from C since the 7617d6bfa3bSBarry Smith Fortran provides the array to hold the submatrix objects, while in C that 7627dae84e0SHong Zhang array is allocated by the MatCreateSubmatrices() 763*0764c050SBarry Smith 764*0764c050SBarry Smith An extra matrix may be stored at the end of the array, hence the check see 765*0764c050SBarry Smith MatDestroySubMatrices_Dummy() 7667d6bfa3bSBarry Smith */ 76719caf8f3SSatish Balay PETSC_EXTERN void matdestroysubmatrices_(PetscInt *n, Mat *smat, PetscErrorCode *ierr) 7687d6bfa3bSBarry Smith { 769de7ef04eSHong Zhang Mat *lsmat; 7707d6bfa3bSBarry Smith PetscInt i; 7717d6bfa3bSBarry Smith 772*0764c050SBarry Smith if (*n == 0) return; 773de7ef04eSHong Zhang *ierr = PetscMalloc1(*n + 1, &lsmat); 774*0764c050SBarry Smith if (!smat[*n]) smat[*n] = (Mat)-2; 775de7ef04eSHong Zhang for (i = 0; i <= *n; i++) { 7761fb7b255SJunchao Zhang PETSC_FORTRAN_OBJECT_F_DESTROYED_TO_C_NULL(&smat[i]); 777de7ef04eSHong Zhang lsmat[i] = smat[i]; 7787d6bfa3bSBarry Smith } 779de7ef04eSHong Zhang *ierr = MatDestroySubMatrices(*n, &lsmat); 7805975b3b6SBarry Smith for (i = 0; i <= *n; i++) { PETSC_FORTRAN_OBJECT_C_NULL_TO_F_DESTROYED(&smat[i]); } 7811fb7b255SJunchao Zhang } 7821fb7b255SJunchao Zhang 78319caf8f3SSatish Balay PETSC_EXTERN void matnullspaceremove_(MatNullSpace *sp, Vec *vec, PetscErrorCode *ierr) 784812c3f48SMatthew Knepley { 785a8f51744SPierre Jolivet CHKFORTRANNULLOBJECT(*sp); 786d0195637SJed Brown *ierr = MatNullSpaceRemove(*sp, *vec); 787812c3f48SMatthew Knepley } 7881eea217eSSatish Balay 78919caf8f3SSatish Balay PETSC_EXTERN void matgetinfo_(Mat *mat, MatInfoType *flag, MatInfo *info, int *ierr) 7905ba43861SSatish Balay { 7914d03fd2bSBarry Smith *ierr = MatGetInfo(*mat, *flag, info); 7925ba43861SSatish Balay } 7935ba43861SSatish Balay 79419caf8f3SSatish Balay PETSC_EXTERN void matlufactor_(Mat *mat, IS *row, IS *col, const MatFactorInfo *info, int *ierr) 79522688b47SSatish Balay { 79698e82671SJose E. Roman CHKFORTRANNULLOBJECT(row); 79798e82671SJose E. Roman CHKFORTRANNULLOBJECT(col); 79898e82671SJose E. Roman *ierr = MatLUFactor(*mat, row ? *row : NULL, col ? *col : NULL, info); 79922688b47SSatish Balay } 80022688b47SSatish Balay 80119caf8f3SSatish Balay PETSC_EXTERN void matilufactor_(Mat *mat, IS *row, IS *col, const MatFactorInfo *info, int *ierr) 80222688b47SSatish Balay { 80398e82671SJose E. Roman CHKFORTRANNULLOBJECT(row); 80498e82671SJose E. Roman CHKFORTRANNULLOBJECT(col); 80598e82671SJose E. Roman *ierr = MatILUFactor(*mat, row ? *row : NULL, col ? *col : NULL, info); 80622688b47SSatish Balay } 80722688b47SSatish Balay 80819caf8f3SSatish Balay PETSC_EXTERN void matlufactorsymbolic_(Mat *fact, Mat *mat, IS *row, IS *col, const MatFactorInfo *info, int *ierr) 80922688b47SSatish Balay { 81098e82671SJose E. Roman CHKFORTRANNULLOBJECT(row); 81198e82671SJose E. Roman CHKFORTRANNULLOBJECT(col); 81298e82671SJose E. Roman *ierr = MatLUFactorSymbolic(*fact, *mat, row ? *row : NULL, col ? *col : NULL, info); 81322688b47SSatish Balay } 81422688b47SSatish Balay 81519caf8f3SSatish Balay PETSC_EXTERN void matlufactornumeric_(Mat *fact, Mat *mat, const MatFactorInfo *info, int *ierr) 81622688b47SSatish Balay { 8174d03fd2bSBarry Smith *ierr = MatLUFactorNumeric(*fact, *mat, info); 81822688b47SSatish Balay } 81922688b47SSatish Balay 82019caf8f3SSatish Balay PETSC_EXTERN void matcholeskyfactor_(Mat *mat, IS *perm, const MatFactorInfo *info, int *ierr) 82122688b47SSatish Balay { 82298e82671SJose E. Roman CHKFORTRANNULLOBJECT(perm); 82398e82671SJose E. Roman *ierr = MatCholeskyFactor(*mat, perm ? *perm : NULL, info); 82422688b47SSatish Balay } 82522688b47SSatish Balay 82619caf8f3SSatish Balay PETSC_EXTERN void matcholeskyfactorsymbolic_(Mat *fact, Mat *mat, IS *perm, const MatFactorInfo *info, int *ierr) 82722688b47SSatish Balay { 82898e82671SJose E. Roman CHKFORTRANNULLOBJECT(perm); 82998e82671SJose E. Roman *ierr = MatCholeskyFactorSymbolic(*fact, *mat, perm ? *perm : NULL, info); 83022688b47SSatish Balay } 83122688b47SSatish Balay 83219caf8f3SSatish Balay PETSC_EXTERN void matcholeskyfactornumeric_(Mat *fact, Mat *mat, const MatFactorInfo *info, int *ierr) 83322688b47SSatish Balay { 8344d03fd2bSBarry Smith *ierr = MatCholeskyFactorNumeric(*fact, *mat, info); 83522688b47SSatish Balay } 83622688b47SSatish Balay 83719caf8f3SSatish Balay PETSC_EXTERN void matilufactorsymbolic_(Mat *fact, Mat *mat, IS *row, IS *col, const MatFactorInfo *info, int *ierr) 83822688b47SSatish Balay { 83998e82671SJose E. Roman CHKFORTRANNULLOBJECT(row); 84098e82671SJose E. Roman CHKFORTRANNULLOBJECT(col); 84198e82671SJose E. Roman *ierr = MatILUFactorSymbolic(*fact, *mat, row ? *row : NULL, col ? *col : NULL, info); 84222688b47SSatish Balay } 84322688b47SSatish Balay 84419caf8f3SSatish Balay PETSC_EXTERN void maticcfactorsymbolic_(Mat *fact, Mat *mat, IS *perm, const MatFactorInfo *info, int *ierr) 84522688b47SSatish Balay { 84698e82671SJose E. Roman CHKFORTRANNULLOBJECT(perm); 84798e82671SJose E. Roman *ierr = MatICCFactorSymbolic(*fact, *mat, perm ? *perm : NULL, info); 84822688b47SSatish Balay } 84922688b47SSatish Balay 85098e82671SJose E. Roman PETSC_EXTERN void maticcfactor_(Mat *mat, IS *perm, const MatFactorInfo *info, int *ierr) 85122688b47SSatish Balay { 85298e82671SJose E. Roman CHKFORTRANNULLOBJECT(perm); 85398e82671SJose E. Roman *ierr = MatICCFactor(*mat, perm ? *perm : NULL, info); 85422688b47SSatish Balay } 85522688b47SSatish Balay 85619caf8f3SSatish Balay PETSC_EXTERN void matfactorinfoinitialize_(MatFactorInfo *info, int *ierr) 85722688b47SSatish Balay { 8584d03fd2bSBarry Smith *ierr = MatFactorInfoInitialize(info); 85922688b47SSatish Balay } 86019caf8f3SSatish Balay PETSC_EXTERN void matzerorowslocal_(Mat *mat, PetscInt *numRows, PetscInt rows[], PetscScalar *diag, Vec *x, Vec *b, int *ierr) 861d27e6124SSatish Balay { 862d27e6124SSatish Balay *ierr = MatZeroRowsLocal(*mat, *numRows, rows, *diag, *x, *b); 863d27e6124SSatish Balay } 86419caf8f3SSatish Balay PETSC_EXTERN void matzerorowslocal0_(Mat *mat, PetscInt *numRows, PetscInt rows[], PetscScalar *diag, Vec *x, Vec *b, int *ierr) 865d27e6124SSatish Balay { 866d27e6124SSatish Balay matzerorowslocal_(mat, numRows, rows, diag, x, b, ierr); 867d27e6124SSatish Balay } 86819caf8f3SSatish Balay PETSC_EXTERN void matzerorowslocal1_(Mat *mat, PetscInt *numRows, PetscInt rows[], PetscScalar *diag, Vec *x, Vec *b, int *ierr) 869d27e6124SSatish Balay { 870d27e6124SSatish Balay matzerorowslocal_(mat, numRows, rows, diag, x, b, ierr); 871d27e6124SSatish Balay } 872