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 4987bcf4e0SBarry Smith #define matgetrowmin_ MATGETROWMIN 5087bcf4e0SBarry Smith #define matgetrowminabs_ MATGETROWMINABS 515928be6bSBarry Smith #define matgetrowmax_ MATGETROWMAX 525928be6bSBarry Smith #define matgetrowmaxabs_ MATGETROWMAXABS 537d6bfa3bSBarry Smith #define matdestroymatrices_ MATDESTROYMATRICES 54df750dc8SHong Zhang #define matdestroysubmatrices_ MATDESTROYSUBMATRICES 555dffd610SBarry Smith #define matgetfactor_ MATGETFACTOR 5635bd34faSBarry Smith #define matfactorgetsolverpackage_ MATFACTORGETSOLVERPACKAGE 57f4e70085SSatish Balay #define matgetrowij_ MATGETROWIJ 58f4e70085SSatish Balay #define matrestorerowij_ MATRESTOREROWIJ 59f4e70085SSatish Balay #define matgetrow_ MATGETROW 60f4e70085SSatish Balay #define matrestorerow_ MATRESTOREROW 61f7e310deSShri Abhyankar #define matload_ MATLOAD 62f4e70085SSatish Balay #define matview_ MATVIEW 638c778c55SBarry Smith #define matseqaijgetarray_ MATSEQAIJGETARRAY 646778691eSSatish Balay #define matseqaijrestorearray_ MATSEQAIJRESTOREARRAY 658c778c55SBarry Smith #define matdensegetarray_ MATDENSEGETARRAY 668572280aSBarry Smith #define matdensegetarrayread_ MATDENSEGETARRAYREAD 678c778c55SBarry Smith #define matdenserestorearray_ MATDENSERESTOREARRAY 688572280aSBarry Smith #define matdenserestorearrayread_ MATDENSERESTOREARRAYREAD 69f4e70085SSatish Balay #define matconvert_ MATCONVERT 707dae84e0SHong Zhang #define matcreatesubmatrices_ MATCREATESUBMATRICES 7181ec7b92Smarius #define matcreatesubmatricesmpi_ MATCREATESUBMATRICESMPI 7217ede90eSSatish Balay #define matzerorowscolumns_ MATZEROROWSCOLUMNS 7317ede90eSSatish Balay #define matzerorowscolumnsis_ MATZEROROWSCOLUMNSIS 7417ede90eSSatish Balay #define matzerorowsstencil_ MATZEROROWSSTENCIL 75d25a37e1SJed Brown #define matzerorowscolumnsstencil_ MATZEROROWSCOLUMNSSTENCIL 76f4e70085SSatish Balay #define matzerorows_ MATZEROROWS 77f4e70085SSatish Balay #define matzerorowsis_ MATZEROROWSIS 78f4e70085SSatish Balay #define matzerorowslocal_ MATZEROROWSLOCAL 79d27e6124SSatish Balay #define matzerorowslocal0_ MATZEROROWSLOCAL0 80d27e6124SSatish Balay #define matzerorowslocal1_ MATZEROROWSLOCAL1 81f4e70085SSatish Balay #define matzerorowslocalis_ MATZEROROWSLOCALIS 8217ede90eSSatish Balay #define matzerorowscolumnslocal_ MATZEROROWSCOLUMNSLOCAL 8317ede90eSSatish Balay #define matzerorowscolumnslocalis_ MATZEROROWSCOLUMNSLOCALIS 841eea217eSSatish Balay #define matsetoptionsprefix_ MATSETOPTIONSPREFIX 85fcc9d04bSBarry Smith #define matcreatevecs_ MATCREATEVECS 86c9d5ca86SBarry Smith #define matnullspaceremove_ MATNULLSPACEREMOVE 875ba43861SSatish Balay #define matgetinfo_ MATGETINFO 8822688b47SSatish Balay #define matlufactor_ MATLUFACTOR 8922688b47SSatish Balay #define matilufactor_ MATILUFACTOR 9022688b47SSatish Balay #define matlufactorsymbolic_ MATLUFACTORSYMBOLIC 9122688b47SSatish Balay #define matlufactornumeric_ MATLUFACTORNUMERIC 9222688b47SSatish Balay #define matcholeskyfactor_ MATCHOLESKYFACTOR 9322688b47SSatish Balay #define matcholeskyfactorsymbolic_ MATCHOLESKYFACTORSYMBOLIC 9422688b47SSatish Balay #define matcholeskyfactornumeric_ MATCHOLESKYFACTORNUMERIC 9522688b47SSatish Balay #define matilufactorsymbolic_ MATILUFACTORSYMBOLIC 9622688b47SSatish Balay #define maticcfactorsymbolic_ MATICCFACTORSYMBOLIC 9722688b47SSatish Balay #define maticcfactor_ MATICCFACTOR 9822688b47SSatish Balay #define matfactorinfoinitialize_ MATFACTORINFOINITIALIZE 99b22b330cSBarry Smith #define matnullspacesetfunction_ MATNULLSPACESETFUNCTION 1000905d9aaSJed Brown #define matfindnonzerorows_ MATFINDNONZEROROWS 10138135fcbSMartin Diehl #define matgetsize_ MATGETSIZE 1023be0408cSBarry Smith #define matgetsize00_ MATGETSIZE00 1033be0408cSBarry Smith #define matgetsize10_ MATGETSIZE10 1043be0408cSBarry Smith #define matgetsize01_ MATGETSIZE01 10538135fcbSMartin Diehl #define matgetlocalsize_ MATGETLOCALSIZE 1063be0408cSBarry Smith #define matgetlocalsize00_ MATGETLOCALSIZE00 1073be0408cSBarry Smith #define matgetlocalsize10_ MATGETLOCALSIZE10 1083be0408cSBarry Smith #define matgetlocalsize01_ MATGETLOCALSIZE01 109260663b8SBarry Smith #define matsetnullspace_ MATSETNULLSPACE 110260663b8SBarry Smith #define matgetownershiprange_ MATGETOWNERSHIPRANGE 11191f56e93SMartin Diehl #define matgetownershiprange00_ MATGETOWNERSHIPRANGE00 11291f56e93SMartin Diehl #define matgetownershiprange10_ MATGETOWNERSHIPRANGE10 11391f56e93SMartin Diehl #define matgetownershiprange01_ MATGETOWNERSHIPRANGE01 1145c16e969SSatish Balay #define matgetownershiprange11_ MATGETOWNERSHIPRANGE11 115c08c7cb9SBarry Smith #define matgetownershipis_ MATGETOWNERSHIPIS 116afc39838SBarry Smith #define matgetownershiprangecolumn_ MATGETOWNERSHIPRANGECOLUMN 117fe2efc57SMark #define matviewfromoptions_ MATVIEWFROMOPTIONS 1181fb7b255SJunchao Zhang #define matdestroy_ MATDESTROY 11977433607SBarry Smith #define matcreatefromoptions_ MATCREATEFROMOPTIONS 120f4e70085SSatish Balay #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 1214d03fd2bSBarry Smith #define matsetvalues_ matsetvalues 1221006886cSSatish Balay #define matsetvaluesnnnn_ matsetvaluesnnnn 1233b494cfeSSatish Balay #define matsetvalues0_ matsetvalues0 1241b266c99SBarry Smith #define matsetvaluesnn1_ matsetvaluesnn1 1254d03fd2bSBarry Smith #define matsetvalues11_ matsetvalues11 1264d03fd2bSBarry Smith #define matsetvaluesn1_ matsetvaluesn1 1274d03fd2bSBarry Smith #define matsetvalues1n_ matsetvalues1n 1284d03fd2bSBarry Smith #define matsetvalueslocal_ matsetvalueslocal 1293b494cfeSSatish Balay #define matsetvalueslocal0_ matsetvalueslocal0 1304d03fd2bSBarry Smith #define matsetvalueslocal11_ matsetvalueslocal11 1314d03fd2bSBarry Smith #define matsetvalueslocal11nn_ matsetvalueslocal11nn 1324d03fd2bSBarry Smith #define matsetvalueslocal111_ matsetvalueslocal111 1334d03fd2bSBarry Smith #define matsetvalueslocal1n_ matsetvalueslocal1n 1344d03fd2bSBarry Smith #define matsetvalueslocaln1_ matsetvalueslocaln1 1354d03fd2bSBarry Smith #define matsetvaluesblocked_ matsetvaluesblocked 1363b494cfeSSatish Balay #define matsetvaluesblocked0_ matsetvaluesblocked0 1370aee3464SBarry Smith #define matsetvaluesblocked2_ matsetvaluesblocked2 1384d03fd2bSBarry Smith #define matsetvaluesblocked11_ matsetvaluesblocked11 1394d03fd2bSBarry Smith #define matsetvaluesblocked111_ matsetvaluesblocked111 1404d03fd2bSBarry Smith #define matsetvaluesblocked1n_ matsetvaluesblocked1n 14124aa916eSSatish Balay #define matsetvaluesblockedn1_ matsetvaluesblockedn1 1424d03fd2bSBarry Smith #define matsetvaluesblockedlocal_ matsetvaluesblockedlocal 1433b494cfeSSatish Balay #define matsetvaluesblockedlocal0_ matsetvaluesblockedlocal0 1444d03fd2bSBarry Smith #define matsetvaluesblockedlocal11_ matsetvaluesblockedlocal11 1454d03fd2bSBarry Smith #define matsetvaluesblockedlocal111_ matsetvaluesblockedlocal111 1464d03fd2bSBarry Smith #define matsetvaluesblockedlocal1n_ matsetvaluesblockedlocal1n 14724aa916eSSatish Balay #define matsetvaluesblockedlocaln1_ matsetvaluesblockedlocaln1 14887bcf4e0SBarry Smith #define matgetrowmin_ matgetrowmin 14987bcf4e0SBarry Smith #define matgetrowminabs_ matgetrowminabs 1505928be6bSBarry Smith #define matgetrowmax_ matgetrowmax 1515928be6bSBarry Smith #define matgetrowmaxabs_ matgetrowmaxabs 1525928be6bSBarry Smith #define matdestroymatrices_ matdestroymatrices 153df750dc8SHong Zhang #define matdestroysubmatrices_ matdestroysubmatrices 1545dffd610SBarry Smith #define matgetfactor_ matgetfactor 15535bd34faSBarry Smith #define matfactorgetsolverpackage_ matfactorgetsolverpackage 156fcc9d04bSBarry Smith #define matcreatevecs_ matcreatevecs 157f4e70085SSatish Balay #define matgetrowij_ matgetrowij 158f4e70085SSatish Balay #define matrestorerowij_ matrestorerowij 159f4e70085SSatish Balay #define matgetrow_ matgetrow 160f4e70085SSatish Balay #define matrestorerow_ matrestorerow 161f4e70085SSatish Balay #define matview_ matview 162f7e310deSShri Abhyankar #define matload_ matload 1638c778c55SBarry Smith #define matseqaijgetarray_ matseqaijgetarray 1648c778c55SBarry Smith #define matseqaijrestorearray_ matseqaijrestorearray 1658c778c55SBarry Smith #define matdensegetarray_ matdensegetarray 1668572280aSBarry Smith #define matdensegetarrayread_ matdensegetarrayread 1678c778c55SBarry Smith #define matdenserestorearray_ matdenserestorearray 1688572280aSBarry Smith #define matdenserestorearrayread_ matdenserestorearrayread 169f4e70085SSatish Balay #define matconvert_ matconvert 1707dae84e0SHong Zhang #define matcreatesubmatrices_ matcreatesubmatrices 17181ec7b92Smarius #define matcreatesubmatricesmpi_ matcreatesubmatricesmpi 17217ede90eSSatish Balay #define matzerorowscolumns_ matzerorowscolumns 17317ede90eSSatish Balay #define matzerorowscolumnsis_ matzerorowscolumnsis 17417ede90eSSatish Balay #define matzerorowsstencil_ matzerorowsstencil 175d25a37e1SJed Brown #define matzerorowscolumnsstencil_ matzerorowscolumnsstencil 176f4e70085SSatish Balay #define matzerorows_ matzerorows 177f4e70085SSatish Balay #define matzerorowsis_ matzerorowsis 178f4e70085SSatish Balay #define matzerorowslocal_ matzerorowslocal 179f4e70085SSatish Balay #define matzerorowslocalis_ matzerorowslocalis 18017ede90eSSatish Balay #define matzerorowscolumnslocal_ matzerorowscolumnslocal 18117ede90eSSatish Balay #define matzerorowscolumnslocalis_ matzerorowscolumnslocalis 1821eea217eSSatish Balay #define matsetoptionsprefix_ matsetoptionsprefix 183812c3f48SMatthew Knepley #define matnullspaceremove_ matnullspaceremove 1845ba43861SSatish Balay #define matgetinfo_ matgetinfo 18522688b47SSatish Balay #define matlufactor_ matlufactor 18622688b47SSatish Balay #define matilufactor_ matilufactor 18722688b47SSatish Balay #define matlufactorsymbolic_ matlufactorsymbolic 18822688b47SSatish Balay #define matlufactornumeric_ matlufactornumeric 18922688b47SSatish Balay #define matcholeskyfactor_ matcholeskyfactor 19022688b47SSatish Balay #define matcholeskyfactorsymbolic_ matcholeskyfactorsymbolic 19122688b47SSatish Balay #define matcholeskyfactornumeric_ matcholeskyfactornumeric 19222688b47SSatish Balay #define matilufactorsymbolic_ matilufactorsymbolic 19322688b47SSatish Balay #define maticcfactorsymbolic_ maticcfactorsymbolic 19422688b47SSatish Balay #define maticcfactor_ maticcfactor 19522688b47SSatish Balay #define matfactorinfoinitialize_ matfactorinfoinitialize 196b22b330cSBarry Smith #define matnullspacesetfunction_ matnullspacesetfunction 1970905d9aaSJed Brown #define matfindnonzerorows_ matfindnonzerorows 19838135fcbSMartin Diehl #define matgetsize_ matgetsize 1993be0408cSBarry Smith #define matgetsize00_ matgetsize00 2003be0408cSBarry Smith #define matgetsize10_ matgetsize10 2013be0408cSBarry Smith #define matgetsize01_ matgetsize01 20238135fcbSMartin Diehl #define matgetlocalsize_ matgetlocalsize 2033be0408cSBarry Smith #define matgetlocalsize00_ matgetlocalsize00 2043be0408cSBarry Smith #define matgetlocalsize10_ matgetlocalsize10 2053be0408cSBarry Smith #define matgetlocalsize01_ matgetlocalsize01 206f0a86a08SBarry Smith #define matgetvalues_ matgetvalues 207f0a86a08SBarry Smith #define matgetvalues0_ matgetvalues0 208f0a86a08SBarry Smith #define matgetvaluesnn1_ matgetvaluesnn1 209f0a86a08SBarry Smith #define matgetvaluesnnnn_ matgetvaluesnnnn 210f0a86a08SBarry Smith #define matgetvalues11_ matgetvalues11 21185835d77SBarry Smith #define matgetvalues11a_ matgetvalues11a 212f0a86a08SBarry Smith #define matgetvalues1n_ matgetvalues1n 213f0a86a08SBarry Smith #define matgetvaluesn1_ matgetvaluesn1 21485835d77SBarry Smith #define matgetvalueslocal_ matgetvalueslocal 21585835d77SBarry Smith #define matgetvalueslocal0_ matgetvalueslocal0 21685835d77SBarry Smith #define matgetvalueslocalnn1_ matgetvalueslocalnn1 21785835d77SBarry Smith #define matgetvalueslocalnnnn_ matgetvalueslocalnnnn 21885835d77SBarry Smith #define matgetvalueslocal11_ matgetvalueslocal11 21985835d77SBarry Smith #define matgetvalueslocal1n_ matgetvalueslocal1n 22085835d77SBarry Smith #define matgetvalueslocaln1_ matgetvalueslocaln1 221260663b8SBarry Smith #define matsetnullspace_ matsetnullspace 222260663b8SBarry Smith #define matgetownershiprange_ matgetownershiprange 22391f56e93SMartin Diehl #define matgetownershiprange00_ matgetownershiprange00 22491f56e93SMartin Diehl #define matgetownershiprange10_ matgetownershiprange10 22591f56e93SMartin Diehl #define matgetownershiprange01_ matgetownershiprange01 22691f56e93SMartin Diehl #define matgetownershiprange11_ matgetownershiprange11 227c08c7cb9SBarry Smith #define matgetownershipis_ matgetownershipis 228afc39838SBarry Smith #define matgetownershiprangecolumn_ matgetownershiprangecolumn 229fe2efc57SMark #define matviewfromoptions_ matviewfromoptions 2301fb7b255SJunchao Zhang #define matdestroy_ matdestroy 23177433607SBarry Smith #define matcreatefromoptions_ matcreatefromoptions 232f4e70085SSatish Balay #endif 233f4e70085SSatish Balay 23477433607SBarry Smith PETSC_EXTERN void matcreatefromoptions_(MPI_Fint *comm, char *prefix, PetscInt *bs, PetscInt *m, PetscInt *n, PetscInt *M, PetscInt *N, Mat *A, int *ierr, PETSC_FORTRAN_CHARLEN_T len) 23577433607SBarry Smith { 23677433607SBarry Smith char *fprefix; 23777433607SBarry Smith FIXCHAR(prefix, len, fprefix); 23877433607SBarry Smith *ierr = MatCreateFromOptions(MPI_Comm_f2c(*(comm)), fprefix, *bs, *m, *n, *M, *N, A); 23977433607SBarry Smith if (*ierr) return; 24077433607SBarry Smith FREECHAR(prefix, fprefix); 24177433607SBarry Smith } 24277433607SBarry Smith 243f0a86a08SBarry Smith PETSC_EXTERN void matgetvalues_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], int *ierr) 244f0a86a08SBarry Smith { 245f0a86a08SBarry Smith *ierr = MatGetValues(*mat, *m, idxm, *n, idxn, v); 246f0a86a08SBarry Smith } 247f0a86a08SBarry Smith 248f0a86a08SBarry Smith PETSC_EXTERN void matgetvalues0_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], int *ierr) 249f0a86a08SBarry Smith { 250f0a86a08SBarry Smith matgetvalues_(mat, m, idxm, n, idxn, v, ierr); 251f0a86a08SBarry Smith } 252f0a86a08SBarry Smith 253f0a86a08SBarry Smith PETSC_EXTERN void matgetvaluesnn1_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], int *ierr) 254f0a86a08SBarry Smith { 255f0a86a08SBarry Smith matgetvalues_(mat, m, idxm, n, idxn, v, ierr); 256f0a86a08SBarry Smith } 257f0a86a08SBarry Smith 258f0a86a08SBarry Smith PETSC_EXTERN void matgetvaluesnnnn_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], int *ierr) 259f0a86a08SBarry Smith { 260f0a86a08SBarry Smith matgetvalues_(mat, m, idxm, n, idxn, v, ierr); 261f0a86a08SBarry Smith } 262f0a86a08SBarry Smith 263f0a86a08SBarry Smith PETSC_EXTERN void matgetvalues11_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], int *ierr) 264f0a86a08SBarry Smith { 265f0a86a08SBarry Smith matgetvalues_(mat, m, idxm, n, idxn, v, ierr); 266f0a86a08SBarry Smith } 267f0a86a08SBarry Smith 26885835d77SBarry Smith PETSC_EXTERN void matgetvalues11a_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], int *ierr) 26985835d77SBarry Smith { 27085835d77SBarry Smith matgetvalues_(mat, m, idxm, n, idxn, v, ierr); 27185835d77SBarry Smith } 27285835d77SBarry Smith 273f0a86a08SBarry Smith PETSC_EXTERN void matgetvalues1n_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], int *ierr) 274f0a86a08SBarry Smith { 275f0a86a08SBarry Smith matgetvalues_(mat, m, idxm, n, idxn, v, ierr); 276f0a86a08SBarry Smith } 277f0a86a08SBarry Smith 278f0a86a08SBarry Smith PETSC_EXTERN void matgetvaluesn1_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], int *ierr) 279f0a86a08SBarry Smith { 280f0a86a08SBarry Smith matgetvalues_(mat, m, idxm, n, idxn, v, ierr); 281f0a86a08SBarry Smith } 282f0a86a08SBarry Smith 28385835d77SBarry Smith PETSC_EXTERN void matgetvalueslocal_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], int *ierr) 28485835d77SBarry Smith { 28585835d77SBarry Smith *ierr = MatGetValuesLocal(*mat, *m, idxm, *n, idxn, v); 28685835d77SBarry Smith } 28785835d77SBarry Smith 28885835d77SBarry Smith PETSC_EXTERN void matgetvalueslocal0_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], int *ierr) 28985835d77SBarry Smith { 29085835d77SBarry Smith matgetvalueslocal_(mat, m, idxm, n, idxn, v, ierr); 29185835d77SBarry Smith } 29285835d77SBarry Smith 29385835d77SBarry Smith PETSC_EXTERN void matgetvalueslocalnn1_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], int *ierr) 29485835d77SBarry Smith { 29585835d77SBarry Smith matgetvalueslocal_(mat, m, idxm, n, idxn, v, ierr); 29685835d77SBarry Smith } 29785835d77SBarry Smith 29885835d77SBarry Smith PETSC_EXTERN void matgetvalueslocalnnnn_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], int *ierr) 29985835d77SBarry Smith { 30085835d77SBarry Smith matgetvalueslocal_(mat, m, idxm, n, idxn, v, ierr); 30185835d77SBarry Smith } 30285835d77SBarry Smith 30385835d77SBarry Smith PETSC_EXTERN void matgetvalueslocal11_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], int *ierr) 30485835d77SBarry Smith { 30585835d77SBarry Smith matgetvalueslocal_(mat, m, idxm, n, idxn, v, ierr); 30685835d77SBarry Smith } 30785835d77SBarry Smith 30885835d77SBarry Smith PETSC_EXTERN void matgetvalueslocal11a_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], int *ierr) 30985835d77SBarry Smith { 31085835d77SBarry Smith matgetvalueslocal_(mat, m, idxm, n, idxn, v, ierr); 31185835d77SBarry Smith } 31285835d77SBarry Smith 31385835d77SBarry Smith PETSC_EXTERN void matgetvalueslocal1n_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], int *ierr) 31485835d77SBarry Smith { 31585835d77SBarry Smith matgetvalueslocal_(mat, m, idxm, n, idxn, v, ierr); 31685835d77SBarry Smith } 31785835d77SBarry Smith 31885835d77SBarry Smith PETSC_EXTERN void matgetvalueslocaln1_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], int *ierr) 31985835d77SBarry Smith { 32085835d77SBarry Smith matgetvalueslocal_(mat, m, idxm, n, idxn, v, ierr); 32185835d77SBarry Smith } 32285835d77SBarry Smith 32319caf8f3SSatish Balay PETSC_EXTERN void matgetownershiprange_(Mat *mat, PetscInt *m, PetscInt *n, int *ierr) 324260663b8SBarry Smith { 325260663b8SBarry Smith CHKFORTRANNULLINTEGER(m); 326260663b8SBarry Smith CHKFORTRANNULLINTEGER(n); 327260663b8SBarry Smith *ierr = MatGetOwnershipRange(*mat, m, n); 328260663b8SBarry Smith } 329260663b8SBarry Smith 33019caf8f3SSatish Balay PETSC_EXTERN void matgetownershiprange00_(Mat *mat, PetscInt *m, PetscInt *n, int *ierr) 3315dd307cdSMartin Diehl { 3325dd307cdSMartin Diehl CHKFORTRANNULLINTEGER(m); 3335dd307cdSMartin Diehl CHKFORTRANNULLINTEGER(n); 3345dd307cdSMartin Diehl *ierr = MatGetOwnershipRange(*mat, m, n); 3355dd307cdSMartin Diehl } 3365dd307cdSMartin Diehl 33719caf8f3SSatish Balay PETSC_EXTERN void matgetownershiprange10_(Mat *mat, PetscInt *m, PetscInt *n, int *ierr) 3385dd307cdSMartin Diehl { 3395dd307cdSMartin Diehl CHKFORTRANNULLINTEGER(m); 3405dd307cdSMartin Diehl CHKFORTRANNULLINTEGER(n); 3415dd307cdSMartin Diehl *ierr = MatGetOwnershipRange(*mat, m, n); 3425dd307cdSMartin Diehl } 3435dd307cdSMartin Diehl 34419caf8f3SSatish Balay PETSC_EXTERN void matgetownershiprange01_(Mat *mat, PetscInt *m, PetscInt *n, int *ierr) 3455dd307cdSMartin Diehl { 3465dd307cdSMartin Diehl CHKFORTRANNULLINTEGER(m); 3475dd307cdSMartin Diehl CHKFORTRANNULLINTEGER(n); 3485dd307cdSMartin Diehl *ierr = MatGetOwnershipRange(*mat, m, n); 3495dd307cdSMartin Diehl } 3505dd307cdSMartin Diehl 35119caf8f3SSatish Balay PETSC_EXTERN void matgetownershiprange11_(Mat *mat, PetscInt *m, PetscInt *n, int *ierr) 3525dd307cdSMartin Diehl { 3535dd307cdSMartin Diehl CHKFORTRANNULLINTEGER(m); 3545dd307cdSMartin Diehl CHKFORTRANNULLINTEGER(n); 3555dd307cdSMartin Diehl *ierr = MatGetOwnershipRange(*mat, m, n); 3565dd307cdSMartin Diehl } 3575dd307cdSMartin Diehl 35819caf8f3SSatish Balay PETSC_EXTERN void matgetownershipis_(Mat *mat, IS *m, IS *n, int *ierr) 359c08c7cb9SBarry Smith { 360c08c7cb9SBarry Smith CHKFORTRANNULLOBJECT(m); 361c08c7cb9SBarry Smith CHKFORTRANNULLOBJECT(n); 362c08c7cb9SBarry Smith *ierr = MatGetOwnershipIS(*mat, m, n); 363c08c7cb9SBarry Smith } 364c08c7cb9SBarry Smith 36519caf8f3SSatish Balay PETSC_EXTERN void matgetownershiprangecolumn_(Mat *mat, PetscInt *m, PetscInt *n, int *ierr) 366afc39838SBarry Smith { 367afc39838SBarry Smith CHKFORTRANNULLINTEGER(m); 368afc39838SBarry Smith CHKFORTRANNULLINTEGER(n); 369afc39838SBarry Smith *ierr = MatGetOwnershipRangeColumn(*mat, m, n); 370afc39838SBarry Smith } 371afc39838SBarry Smith 37219caf8f3SSatish Balay PETSC_EXTERN void matgetsize_(Mat *mat, PetscInt *m, PetscInt *n, int *ierr) 3733be0408cSBarry Smith { 3743be0408cSBarry Smith CHKFORTRANNULLINTEGER(m); 3753be0408cSBarry Smith CHKFORTRANNULLINTEGER(n); 3763be0408cSBarry Smith *ierr = MatGetSize(*mat, m, n); 3773be0408cSBarry Smith } 3783be0408cSBarry Smith 37919caf8f3SSatish Balay PETSC_EXTERN void matgetsize00_(Mat *mat, PetscInt *m, PetscInt *n, int *ierr) 3803be0408cSBarry Smith { 3813be0408cSBarry Smith matgetsize_(mat, m, n, ierr); 3823be0408cSBarry Smith } 3833be0408cSBarry Smith 38419caf8f3SSatish Balay PETSC_EXTERN void matgetsize10_(Mat *mat, PetscInt *m, PetscInt *n, int *ierr) 3853be0408cSBarry Smith { 3863be0408cSBarry Smith matgetsize_(mat, m, n, ierr); 3873be0408cSBarry Smith } 3883be0408cSBarry Smith 38919caf8f3SSatish Balay PETSC_EXTERN void matgetsize01_(Mat *mat, PetscInt *m, PetscInt *n, int *ierr) 3903be0408cSBarry Smith { 3913be0408cSBarry Smith matgetsize_(mat, m, n, ierr); 3923be0408cSBarry Smith } 3933be0408cSBarry Smith 39419caf8f3SSatish Balay PETSC_EXTERN void matgetlocalsize_(Mat *mat, PetscInt *m, PetscInt *n, int *ierr) 3953be0408cSBarry Smith { 3963be0408cSBarry Smith CHKFORTRANNULLINTEGER(m); 3973be0408cSBarry Smith CHKFORTRANNULLINTEGER(n); 3983be0408cSBarry Smith *ierr = MatGetLocalSize(*mat, m, n); 3993be0408cSBarry Smith } 4003be0408cSBarry Smith 40119caf8f3SSatish Balay PETSC_EXTERN void matgetlocalsize00_(Mat *mat, PetscInt *m, PetscInt *n, int *ierr) 4023be0408cSBarry Smith { 4033be0408cSBarry Smith matgetlocalsize_(mat, m, n, ierr); 4043be0408cSBarry Smith } 4053be0408cSBarry Smith 40619caf8f3SSatish Balay PETSC_EXTERN void matgetlocalsize10_(Mat *mat, PetscInt *m, PetscInt *n, int *ierr) 4073be0408cSBarry Smith { 4083be0408cSBarry Smith matgetlocalsize_(mat, m, n, ierr); 4093be0408cSBarry Smith } 4103be0408cSBarry Smith 41119caf8f3SSatish Balay PETSC_EXTERN void matgetlocalsize01_(Mat *mat, PetscInt *m, PetscInt *n, int *ierr) 4123be0408cSBarry Smith { 4133be0408cSBarry Smith matgetlocalsize_(mat, m, n, ierr); 4143be0408cSBarry Smith } 4153be0408cSBarry Smith 41670a7d78aSStefano Zampini PETSC_EXTERN void matsetvaluesblocked_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], InsertMode *addv, int *ierr) 41770a7d78aSStefano Zampini { 4184d03fd2bSBarry Smith *ierr = MatSetValuesBlocked(*mat, *m, idxm, *n, idxn, v, *addv); 4194d03fd2bSBarry Smith } 4204d03fd2bSBarry Smith 42170a7d78aSStefano 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)) 42270a7d78aSStefano Zampini { 423cee688dbSBarry Smith PetscScalar *fa; 4245975b3b6SBarry Smith *ierr = F90Array2dAccess(y, MPIU_SCALAR, (void **)&fa PETSC_F90_2PTR_PARAM(ptrd)); 4255975b3b6SBarry Smith if (*ierr) return; 426cee688dbSBarry Smith matsetvaluesblocked_(mat, m, idxm, n, idxn, fa, addv, ierr); 427cee688dbSBarry Smith } 428cee688dbSBarry Smith 42970a7d78aSStefano Zampini PETSC_EXTERN void matsetvaluesblocked0_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], InsertMode *addv, int *ierr) 43070a7d78aSStefano Zampini { 4313b494cfeSSatish Balay matsetvaluesblocked_(mat, m, idxm, n, idxn, v, addv, ierr); 4323b494cfeSSatish Balay } 4333b494cfeSSatish Balay 43470a7d78aSStefano Zampini PETSC_EXTERN void matsetvaluesblocked11_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], InsertMode *addv, int *ierr) 43570a7d78aSStefano Zampini { 4364d03fd2bSBarry Smith matsetvaluesblocked_(mat, m, idxm, n, idxn, v, addv, ierr); 4374d03fd2bSBarry Smith } 4384d03fd2bSBarry Smith 43970a7d78aSStefano Zampini PETSC_EXTERN void matsetvaluesblocked111_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], InsertMode *addv, int *ierr) 44070a7d78aSStefano Zampini { 4414d03fd2bSBarry Smith matsetvaluesblocked_(mat, m, idxm, n, idxn, v, addv, ierr); 4424d03fd2bSBarry Smith } 4434d03fd2bSBarry Smith 44470a7d78aSStefano Zampini PETSC_EXTERN void matsetvaluesblocked1n_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], InsertMode *addv, int *ierr) 44570a7d78aSStefano Zampini { 4464d03fd2bSBarry Smith matsetvaluesblocked_(mat, m, idxm, n, idxn, v, addv, ierr); 4474d03fd2bSBarry Smith } 4484d03fd2bSBarry Smith 44970a7d78aSStefano Zampini PETSC_EXTERN void matsetvaluesblockedn1_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], InsertMode *addv, int *ierr) 45070a7d78aSStefano Zampini { 4514d03fd2bSBarry Smith matsetvaluesblocked_(mat, m, idxm, n, idxn, v, addv, ierr); 4524d03fd2bSBarry Smith } 4534d03fd2bSBarry Smith 45419caf8f3SSatish Balay PETSC_EXTERN void matsetvaluesblockedlocal_(Mat *mat, PetscInt *nrow, PetscInt irow[], PetscInt *ncol, PetscInt icol[], PetscScalar y[], InsertMode *addv, int *ierr) 4554d03fd2bSBarry Smith { 4564d03fd2bSBarry Smith *ierr = MatSetValuesBlockedLocal(*mat, *nrow, irow, *ncol, icol, y, *addv); 4574d03fd2bSBarry Smith } 4584d03fd2bSBarry Smith 45970a7d78aSStefano Zampini PETSC_EXTERN void matsetvaluesblockedlocal0_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], InsertMode *addv, int *ierr) 46070a7d78aSStefano Zampini { 4613b494cfeSSatish Balay matsetvaluesblockedlocal_(mat, m, idxm, n, idxn, v, addv, ierr); 4623b494cfeSSatish Balay } 4633b494cfeSSatish Balay 46470a7d78aSStefano Zampini PETSC_EXTERN void matsetvaluesblockedlocal11_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], InsertMode *addv, int *ierr) 46570a7d78aSStefano Zampini { 4664d03fd2bSBarry Smith matsetvaluesblockedlocal_(mat, m, idxm, n, idxn, v, addv, ierr); 4674d03fd2bSBarry Smith } 4684d03fd2bSBarry Smith 46970a7d78aSStefano Zampini PETSC_EXTERN void matsetvaluesblockedlocal111_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], InsertMode *addv, int *ierr) 47070a7d78aSStefano Zampini { 4714d03fd2bSBarry Smith matsetvaluesblockedlocal_(mat, m, idxm, n, idxn, v, addv, ierr); 4724d03fd2bSBarry Smith } 4734d03fd2bSBarry Smith 47470a7d78aSStefano Zampini PETSC_EXTERN void matsetvaluesblockedlocal1n_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], InsertMode *addv, int *ierr) 47570a7d78aSStefano Zampini { 4764d03fd2bSBarry Smith matsetvaluesblockedlocal_(mat, m, idxm, n, idxn, v, addv, ierr); 4774d03fd2bSBarry Smith } 4784d03fd2bSBarry Smith 47970a7d78aSStefano Zampini PETSC_EXTERN void matsetvaluesblockedlocaln1_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], InsertMode *addv, int *ierr) 48070a7d78aSStefano Zampini { 4814d03fd2bSBarry Smith matsetvaluesblockedlocal_(mat, m, idxm, n, idxn, v, addv, ierr); 4824d03fd2bSBarry Smith } 4834d03fd2bSBarry Smith 48419caf8f3SSatish Balay PETSC_EXTERN void matsetvalues_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], InsertMode *addv, int *ierr) 4854d03fd2bSBarry Smith { 4864d03fd2bSBarry Smith *ierr = MatSetValues(*mat, *m, idxm, *n, idxn, v, *addv); 4874d03fd2bSBarry Smith } 4884d03fd2bSBarry Smith 48919caf8f3SSatish Balay PETSC_EXTERN void matsetvaluesnnnn_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], InsertMode *addv, int *ierr) 4901b266c99SBarry Smith { 4911b266c99SBarry Smith matsetvalues_(mat, m, idxm, n, idxn, v, addv, ierr); 4921b266c99SBarry Smith } 4931b266c99SBarry Smith 49419caf8f3SSatish Balay PETSC_EXTERN void matsetvalues0_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], InsertMode *addv, int *ierr) 4953b494cfeSSatish Balay { 4963b494cfeSSatish Balay matsetvalues_(mat, m, idxm, n, idxn, v, addv, ierr); 4973b494cfeSSatish Balay } 4983b494cfeSSatish Balay 49919caf8f3SSatish Balay PETSC_EXTERN void matsetvaluesnn1_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], InsertMode *addv, int *ierr) 5001b266c99SBarry Smith { 5011b266c99SBarry Smith matsetvalues_(mat, m, idxm, n, idxn, v, addv, ierr); 5021b266c99SBarry Smith } 5031b266c99SBarry Smith 50419caf8f3SSatish Balay PETSC_EXTERN void matsetvalues11_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], InsertMode *addv, int *ierr) 5054d03fd2bSBarry Smith { 5064d03fd2bSBarry Smith matsetvalues_(mat, m, idxm, n, idxn, v, addv, ierr); 5074d03fd2bSBarry Smith } 5084d03fd2bSBarry Smith 50919caf8f3SSatish Balay PETSC_EXTERN void matsetvaluesn1_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], InsertMode *addv, int *ierr) 5104d03fd2bSBarry Smith { 5114d03fd2bSBarry Smith matsetvalues_(mat, m, idxm, n, idxn, v, addv, ierr); 5124d03fd2bSBarry Smith } 5134d03fd2bSBarry Smith 51419caf8f3SSatish Balay PETSC_EXTERN void matsetvalues1n_(Mat *mat, PetscInt *m, PetscInt idxm[], PetscInt *n, PetscInt idxn[], PetscScalar v[], InsertMode *addv, int *ierr) 5154d03fd2bSBarry Smith { 5164d03fd2bSBarry Smith matsetvalues_(mat, m, idxm, n, idxn, v, addv, ierr); 5174d03fd2bSBarry Smith } 5184d03fd2bSBarry Smith 51919caf8f3SSatish Balay PETSC_EXTERN void matsetvalueslocal_(Mat *mat, PetscInt *nrow, PetscInt irow[], PetscInt *ncol, PetscInt icol[], PetscScalar y[], InsertMode *addv, int *ierr) 5204d03fd2bSBarry Smith { 5214d03fd2bSBarry Smith *ierr = MatSetValuesLocal(*mat, *nrow, irow, *ncol, icol, y, *addv); 5224d03fd2bSBarry Smith } 5234d03fd2bSBarry Smith 52419caf8f3SSatish Balay PETSC_EXTERN void matsetvalueslocal0_(Mat *mat, PetscInt *nrow, PetscInt irow[], PetscInt *ncol, PetscInt icol[], PetscScalar y[], InsertMode *addv, int *ierr) 5253b494cfeSSatish Balay { 5263b494cfeSSatish Balay matsetvalueslocal_(mat, nrow, irow, ncol, icol, y, addv, ierr); 5273b494cfeSSatish Balay } 5283b494cfeSSatish Balay 52919caf8f3SSatish Balay PETSC_EXTERN void matsetvalueslocal11_(Mat *mat, PetscInt *nrow, PetscInt irow[], PetscInt *ncol, PetscInt icol[], PetscScalar y[], InsertMode *addv, int *ierr) 5304d03fd2bSBarry Smith { 5314d03fd2bSBarry Smith matsetvalueslocal_(mat, nrow, irow, ncol, icol, y, addv, ierr); 5324d03fd2bSBarry Smith } 5334d03fd2bSBarry Smith 53419caf8f3SSatish Balay PETSC_EXTERN void matsetvalueslocal11nn_(Mat *mat, PetscInt *nrow, PetscInt irow[], PetscInt *ncol, PetscInt icol[], PetscScalar y[], InsertMode *addv, int *ierr) 5354d03fd2bSBarry Smith { 5364d03fd2bSBarry Smith matsetvalueslocal_(mat, nrow, irow, ncol, icol, y, addv, ierr); 5374d03fd2bSBarry Smith } 5384d03fd2bSBarry Smith 53919caf8f3SSatish Balay PETSC_EXTERN void matsetvalueslocal111_(Mat *mat, PetscInt *nrow, PetscInt irow[], PetscInt *ncol, PetscInt icol[], PetscScalar y[], InsertMode *addv, int *ierr) 5404d03fd2bSBarry Smith { 5414d03fd2bSBarry Smith matsetvalueslocal_(mat, nrow, irow, ncol, icol, y, addv, ierr); 5424d03fd2bSBarry Smith } 5434d03fd2bSBarry Smith 54419caf8f3SSatish Balay PETSC_EXTERN void matsetvalueslocal1n_(Mat *mat, PetscInt *nrow, PetscInt irow[], PetscInt *ncol, PetscInt icol[], PetscScalar y[], InsertMode *addv, int *ierr) 5454d03fd2bSBarry Smith { 5464d03fd2bSBarry Smith matsetvalueslocal_(mat, nrow, irow, ncol, icol, y, addv, ierr); 5474d03fd2bSBarry Smith } 5484d03fd2bSBarry Smith 54919caf8f3SSatish Balay PETSC_EXTERN void matsetvalueslocaln1_(Mat *mat, PetscInt *nrow, PetscInt irow[], PetscInt *ncol, PetscInt icol[], PetscScalar y[], InsertMode *addv, int *ierr) 5504d03fd2bSBarry Smith { 5514d03fd2bSBarry Smith matsetvalueslocal_(mat, nrow, irow, ncol, icol, y, addv, ierr); 5524d03fd2bSBarry Smith } 5534d03fd2bSBarry Smith 55419caf8f3SSatish Balay PETSC_EXTERN void matgetrowmin_(Mat *mat, Vec *v, PetscInt idx[], int *ierr) 55587bcf4e0SBarry Smith { 55687bcf4e0SBarry Smith CHKFORTRANNULLINTEGER(idx); 55787bcf4e0SBarry Smith *ierr = MatGetRowMin(*mat, *v, idx); 55887bcf4e0SBarry Smith } 5594d03fd2bSBarry Smith 56019caf8f3SSatish Balay PETSC_EXTERN void matgetrowminabs_(Mat *mat, Vec *v, PetscInt idx[], int *ierr) 56187bcf4e0SBarry Smith { 56287bcf4e0SBarry Smith CHKFORTRANNULLINTEGER(idx); 56387bcf4e0SBarry Smith *ierr = MatGetRowMinAbs(*mat, *v, idx); 56487bcf4e0SBarry Smith } 56587bcf4e0SBarry Smith 56619caf8f3SSatish Balay PETSC_EXTERN void matgetrowmax_(Mat *mat, Vec *v, PetscInt idx[], int *ierr) 5675928be6bSBarry Smith { 5685928be6bSBarry Smith CHKFORTRANNULLINTEGER(idx); 5695928be6bSBarry Smith *ierr = MatGetRowMax(*mat, *v, idx); 5705928be6bSBarry Smith } 5715928be6bSBarry Smith 57219caf8f3SSatish Balay PETSC_EXTERN void matgetrowmaxabs_(Mat *mat, Vec *v, PetscInt idx[], int *ierr) 5735928be6bSBarry Smith { 5745928be6bSBarry Smith CHKFORTRANNULLINTEGER(idx); 5755928be6bSBarry Smith *ierr = MatGetRowMaxAbs(*mat, *v, idx); 5765928be6bSBarry Smith } 5775928be6bSBarry Smith 578b22b330cSBarry Smith static PetscErrorCode ournullfunction(MatNullSpace sp, Vec x, void *ctx) 579b22b330cSBarry Smith { 5809566063dSJacob Faibussowitsch PetscCallFortranVoidFunction((*(void (*)(MatNullSpace *, Vec *, void *, PetscErrorCode *))(((PetscObject)sp)->fortran_func_pointers[0]))(&sp, &x, ctx, &ierr)); 5813ba16761SJacob Faibussowitsch return PETSC_SUCCESS; 582b22b330cSBarry Smith } 583b22b330cSBarry Smith 58419caf8f3SSatish Balay PETSC_EXTERN void matnullspacesetfunction_(MatNullSpace *sp, PetscErrorCode (*rem)(MatNullSpace, Vec, void *), void *ctx, PetscErrorCode *ierr) 585b22b330cSBarry Smith { 586b22b330cSBarry Smith PetscObjectAllocateFortranPointers(*sp, 1); 587b22b330cSBarry Smith ((PetscObject)*sp)->fortran_func_pointers[0] = (PetscVoidFunction)rem; 58826fbe8dcSKarl Rupp 589b22b330cSBarry Smith *ierr = MatNullSpaceSetFunction(*sp, ournullfunction, ctx); 590b22b330cSBarry Smith } 591b22b330cSBarry Smith 59219caf8f3SSatish Balay PETSC_EXTERN void matcreatevecs_(Mat *mat, Vec *right, Vec *left, int *ierr) 5937c54600cSBarry Smith { 5947c54600cSBarry Smith CHKFORTRANNULLOBJECT(right); 5957c54600cSBarry Smith CHKFORTRANNULLOBJECT(left); 5962a7a6963SBarry Smith *ierr = MatCreateVecs(*mat, right, left); 5977c54600cSBarry Smith } 5987c54600cSBarry Smith 5995975b3b6SBarry 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) 600f4e70085SSatish Balay { 6011a83f524SJed Brown const PetscInt *IA, *JA; 6025975b3b6SBarry Smith *ierr = MatGetRowIJ(*B, *shift, *sym, *blockcompressed, n, &IA, &JA, done); 6035975b3b6SBarry Smith if (*ierr) return; 6041a83f524SJed Brown *iia = PetscIntAddressToFortran(ia, (PetscInt *)IA); 6051a83f524SJed Brown *jja = PetscIntAddressToFortran(ja, (PetscInt *)JA); 606f4e70085SSatish Balay } 607f4e70085SSatish Balay 6085975b3b6SBarry 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) 609f4e70085SSatish Balay { 6101a83f524SJed Brown const PetscInt *IA = PetscIntAddressFromFortran(ia, *iia), *JA = PetscIntAddressFromFortran(ja, *jja); 6118f7157efSSatish Balay *ierr = MatRestoreRowIJ(*B, *shift, *sym, *blockcompressed, n, &IA, &JA, done); 612f4e70085SSatish Balay } 613f4e70085SSatish Balay 614f4e70085SSatish Balay /* 615f4e70085SSatish Balay This is a poor way of storing the column and value pointers 616f4e70085SSatish Balay generated by MatGetRow() to be returned with MatRestoreRow() 617f4e70085SSatish Balay but there is not natural,good place else to store them. Hence 618f4e70085SSatish Balay Fortran programmers can only have one outstanding MatGetRows() 619f4e70085SSatish Balay at a time. 620f4e70085SSatish Balay */ 6213ba16761SJacob Faibussowitsch static int matgetrowactive = 0; 622*dfef5ea7SSatish Balay static const PetscInt *my_ocols = NULL; 623*dfef5ea7SSatish Balay static const PetscScalar *my_ovals = NULL; 624f4e70085SSatish Balay 62519caf8f3SSatish Balay PETSC_EXTERN void matgetrow_(Mat *mat, PetscInt *row, PetscInt *ncols, PetscInt *cols, PetscScalar *vals, PetscErrorCode *ierr) 626f4e70085SSatish Balay { 627f4e70085SSatish Balay const PetscInt **oocols = &my_ocols; 628f4e70085SSatish Balay const PetscScalar **oovals = &my_ovals; 629f4e70085SSatish Balay 630f4e70085SSatish Balay if (matgetrowactive) { 6313ba16761SJacob Faibussowitsch *ierr = PetscError(PETSC_COMM_SELF, __LINE__, "MatGetRow_Fortran", __FILE__, PETSC_ERR_ARG_WRONGSTATE, PETSC_ERROR_INITIAL, "Cannot have two MatGetRow() active simultaneously\n\ 632f4e70085SSatish Balay call MatRestoreRow() before calling MatGetRow() a second time"); 6333ba16761SJacob Faibussowitsch *ierr = PETSC_ERR_ARG_WRONGSTATE; 634f4e70085SSatish Balay return; 635f4e70085SSatish Balay } 636f4e70085SSatish Balay 6373ba16761SJacob Faibussowitsch CHKFORTRANNULLINTEGER(cols); 6383ba16761SJacob Faibussowitsch if (!cols) oocols = NULL; 6393ba16761SJacob Faibussowitsch CHKFORTRANNULLSCALAR(vals); 6403ba16761SJacob Faibussowitsch if (!vals) oovals = NULL; 641f4e70085SSatish Balay 642f4e70085SSatish Balay *ierr = MatGetRow(*mat, *row, ncols, oocols, oovals); 643f4e70085SSatish Balay if (*ierr) return; 644f4e70085SSatish Balay 6453ba16761SJacob Faibussowitsch if (oocols) { 6463ba16761SJacob Faibussowitsch *ierr = PetscArraycpy(cols, my_ocols, *ncols); 6473ba16761SJacob Faibussowitsch if (*ierr) return; 6483ba16761SJacob Faibussowitsch } 6493ba16761SJacob Faibussowitsch if (oovals) { 6503ba16761SJacob Faibussowitsch *ierr = PetscArraycpy(vals, my_ovals, *ncols); 6513ba16761SJacob Faibussowitsch if (*ierr) return; 6523ba16761SJacob Faibussowitsch } 653f4e70085SSatish Balay matgetrowactive = 1; 654f4e70085SSatish Balay } 655f4e70085SSatish Balay 65619caf8f3SSatish Balay PETSC_EXTERN void matrestorerow_(Mat *mat, PetscInt *row, PetscInt *ncols, PetscInt *cols, PetscScalar *vals, PetscErrorCode *ierr) 657f4e70085SSatish Balay { 658f4e70085SSatish Balay const PetscInt **oocols = &my_ocols; 659f4e70085SSatish Balay const PetscScalar **oovals = &my_ovals; 6603ba16761SJacob Faibussowitsch 661f4e70085SSatish Balay if (!matgetrowactive) { 6623ba16761SJacob Faibussowitsch *ierr = PetscError(PETSC_COMM_SELF, __LINE__, "MatRestoreRow_Fortran", __FILE__, PETSC_ERR_ARG_WRONGSTATE, PETSC_ERROR_INITIAL, "Must call MatGetRow() first"); 6633ba16761SJacob Faibussowitsch *ierr = PETSC_ERR_ARG_WRONGSTATE; 664f4e70085SSatish Balay return; 665f4e70085SSatish Balay } 6663ba16761SJacob Faibussowitsch CHKFORTRANNULLINTEGER(cols); 6673ba16761SJacob Faibussowitsch if (!cols) oocols = NULL; 6683ba16761SJacob Faibussowitsch CHKFORTRANNULLSCALAR(vals); 6693ba16761SJacob Faibussowitsch if (!vals) oovals = NULL; 670f4e70085SSatish Balay 671f4e70085SSatish Balay *ierr = MatRestoreRow(*mat, *row, ncols, oocols, oovals); 672f4e70085SSatish Balay matgetrowactive = 0; 673f4e70085SSatish Balay } 674f4e70085SSatish Balay 67519caf8f3SSatish Balay PETSC_EXTERN void matview_(Mat *mat, PetscViewer *vin, PetscErrorCode *ierr) 676f4e70085SSatish Balay { 677f4e70085SSatish Balay PetscViewer v; 678f4e70085SSatish Balay PetscPatchDefaultViewers_Fortran(vin, v); 679f4e70085SSatish Balay *ierr = MatView(*mat, v); 680f4e70085SSatish Balay } 681f4e70085SSatish Balay 68219caf8f3SSatish Balay PETSC_EXTERN void matload_(Mat *mat, PetscViewer *vin, PetscErrorCode *ierr) 683f7e310deSShri Abhyankar { 684f7e310deSShri Abhyankar PetscViewer v; 685f7e310deSShri Abhyankar PetscPatchDefaultViewers_Fortran(vin, v); 686112444f4SShri Abhyankar *ierr = MatLoad(*mat, v); 687f7e310deSShri Abhyankar } 688f7e310deSShri Abhyankar 68919caf8f3SSatish Balay PETSC_EXTERN void matseqaijgetarray_(Mat *mat, PetscScalar *fa, size_t *ia, PetscErrorCode *ierr) 690f4e70085SSatish Balay { 691f4e70085SSatish Balay PetscScalar *mm; 692f4e70085SSatish Balay PetscInt m, n; 693f4e70085SSatish Balay 6945975b3b6SBarry Smith *ierr = MatSeqAIJGetArray(*mat, &mm); 6955975b3b6SBarry Smith if (*ierr) return; 6965975b3b6SBarry Smith *ierr = MatGetSize(*mat, &m, &n); 6975975b3b6SBarry Smith if (*ierr) return; 6985975b3b6SBarry Smith *ierr = PetscScalarAddressToFortran((PetscObject)*mat, 1, fa, mm, m * n, ia); 6995975b3b6SBarry Smith if (*ierr) return; 700f4e70085SSatish Balay } 701f4e70085SSatish Balay 70219caf8f3SSatish Balay PETSC_EXTERN void matseqaijrestorearray_(Mat *mat, PetscScalar *fa, size_t *ia, PetscErrorCode *ierr) 703f4e70085SSatish Balay { 704f4e70085SSatish Balay PetscScalar *lx; 705f4e70085SSatish Balay PetscInt m, n; 706f4e70085SSatish Balay 7075975b3b6SBarry Smith *ierr = MatGetSize(*mat, &m, &n); 7085975b3b6SBarry Smith if (*ierr) return; 7095975b3b6SBarry Smith *ierr = PetscScalarAddressFromFortran((PetscObject)*mat, fa, *ia, m * n, &lx); 7105975b3b6SBarry Smith if (*ierr) return; 7115975b3b6SBarry Smith *ierr = MatSeqAIJRestoreArray(*mat, &lx); 7125975b3b6SBarry Smith if (*ierr) return; 713f4e70085SSatish Balay } 714f4e70085SSatish Balay 71519caf8f3SSatish Balay PETSC_EXTERN void matdensegetarray_(Mat *mat, PetscScalar *fa, size_t *ia, PetscErrorCode *ierr) 71673a71a0fSBarry Smith { 71773a71a0fSBarry Smith PetscScalar *mm; 71873a71a0fSBarry Smith PetscInt m, n; 71973a71a0fSBarry Smith 7205975b3b6SBarry Smith *ierr = MatDenseGetArray(*mat, &mm); 7215975b3b6SBarry Smith if (*ierr) return; 7225975b3b6SBarry Smith *ierr = MatGetSize(*mat, &m, &n); 7235975b3b6SBarry Smith if (*ierr) return; 7245975b3b6SBarry Smith *ierr = PetscScalarAddressToFortran((PetscObject)*mat, 1, fa, mm, m * n, ia); 7255975b3b6SBarry Smith if (*ierr) return; 72673a71a0fSBarry Smith } 72773a71a0fSBarry Smith 72819caf8f3SSatish Balay PETSC_EXTERN void matdenserestorearray_(Mat *mat, PetscScalar *fa, size_t *ia, PetscErrorCode *ierr) 72973a71a0fSBarry Smith { 73073a71a0fSBarry Smith PetscScalar *lx; 73173a71a0fSBarry Smith PetscInt m, n; 73273a71a0fSBarry Smith 7335975b3b6SBarry Smith *ierr = MatGetSize(*mat, &m, &n); 7345975b3b6SBarry Smith if (*ierr) return; 7355975b3b6SBarry Smith *ierr = PetscScalarAddressFromFortran((PetscObject)*mat, fa, *ia, m * n, &lx); 7365975b3b6SBarry Smith if (*ierr) return; 7375975b3b6SBarry Smith *ierr = MatDenseRestoreArray(*mat, &lx); 7385975b3b6SBarry Smith if (*ierr) return; 73973a71a0fSBarry Smith } 74073a71a0fSBarry Smith 74119caf8f3SSatish Balay PETSC_EXTERN void matdensegetarrayread_(Mat *mat, PetscScalar *fa, size_t *ia, PetscErrorCode *ierr) 7428572280aSBarry Smith { 7437067c7f7SBarry Smith const PetscScalar *mm; 7448572280aSBarry Smith PetscInt m, n; 7458572280aSBarry Smith 7465975b3b6SBarry Smith *ierr = MatDenseGetArrayRead(*mat, &mm); 7475975b3b6SBarry Smith if (*ierr) return; 7485975b3b6SBarry Smith *ierr = MatGetSize(*mat, &m, &n); 7495975b3b6SBarry Smith if (*ierr) return; 7505975b3b6SBarry Smith *ierr = PetscScalarAddressToFortran((PetscObject)*mat, 1, fa, (PetscScalar *)mm, m * n, ia); 7515975b3b6SBarry Smith if (*ierr) return; 7528572280aSBarry Smith } 7538572280aSBarry Smith 75419caf8f3SSatish Balay PETSC_EXTERN void matdenserestorearrayread_(Mat *mat, PetscScalar *fa, size_t *ia, PetscErrorCode *ierr) 7558572280aSBarry Smith { 7567067c7f7SBarry Smith const PetscScalar *lx; 7578572280aSBarry Smith PetscInt m, n; 7588572280aSBarry Smith 7595975b3b6SBarry Smith *ierr = MatGetSize(*mat, &m, &n); 7605975b3b6SBarry Smith if (*ierr) return; 7615975b3b6SBarry Smith *ierr = PetscScalarAddressFromFortran((PetscObject)*mat, fa, *ia, m * n, (PetscScalar **)&lx); 7625975b3b6SBarry Smith if (*ierr) return; 7635975b3b6SBarry Smith *ierr = MatDenseRestoreArrayRead(*mat, &lx); 7645975b3b6SBarry Smith if (*ierr) return; 7658572280aSBarry Smith } 7668572280aSBarry Smith 76719caf8f3SSatish Balay PETSC_EXTERN void matfactorgetsolverpackage_(Mat *mat, char *name, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len) 76835bd34faSBarry Smith { 76935bd34faSBarry Smith const char *tname; 77035bd34faSBarry Smith 7715975b3b6SBarry Smith *ierr = MatFactorGetSolverType(*mat, &tname); 7725975b3b6SBarry Smith if (*ierr) return; 77335bd34faSBarry Smith if (name != PETSC_NULL_CHARACTER_Fortran) { 7745975b3b6SBarry Smith *ierr = PetscStrncpy(name, tname, len); 7755975b3b6SBarry Smith if (*ierr) return; 77635bd34faSBarry Smith } 77735bd34faSBarry Smith FIXRETURNCHAR(PETSC_TRUE, name, len); 77835bd34faSBarry Smith } 77935bd34faSBarry Smith 78019caf8f3SSatish Balay PETSC_EXTERN void matgetfactor_(Mat *mat, char *outtype, MatFactorType *ftype, Mat *M, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len) 7815dffd610SBarry Smith { 7825dffd610SBarry Smith char *t; 7835dffd610SBarry Smith FIXCHAR(outtype, len, t); 7845975b3b6SBarry Smith *ierr = MatGetFactor(*mat, t, *ftype, M); 7855975b3b6SBarry Smith if (*ierr) return; 7865dffd610SBarry Smith FREECHAR(outtype, t); 7875dffd610SBarry Smith } 7885dffd610SBarry Smith 78919caf8f3SSatish Balay PETSC_EXTERN void matconvert_(Mat *mat, char *outtype, MatReuse *reuse, Mat *M, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len) 790f4e70085SSatish Balay { 791f4e70085SSatish Balay char *t; 792f4e70085SSatish Balay FIXCHAR(outtype, len, t); 7935975b3b6SBarry Smith *ierr = MatConvert(*mat, t, *reuse, M); 7945975b3b6SBarry Smith if (*ierr) return; 795f4e70085SSatish Balay FREECHAR(outtype, t); 796f4e70085SSatish Balay } 797f4e70085SSatish Balay 798f4e70085SSatish Balay /* 7997dae84e0SHong Zhang MatCreateSubmatrices() is slightly different from C since the 800f4e70085SSatish Balay Fortran provides the array to hold the submatrix objects,while in C that 8017dae84e0SHong Zhang array is allocated by the MatCreateSubmatrices() 802f4e70085SSatish Balay */ 80319caf8f3SSatish Balay PETSC_EXTERN void matcreatesubmatrices_(Mat *mat, PetscInt *n, IS *isrow, IS *iscol, MatReuse *scall, Mat *smat, PetscErrorCode *ierr) 804f4e70085SSatish Balay { 805f4e70085SSatish Balay Mat *lsmat; 806f4e70085SSatish Balay PetscInt i; 807f4e70085SSatish Balay 808f4e70085SSatish Balay if (*scall == MAT_INITIAL_MATRIX) { 8097dae84e0SHong Zhang *ierr = MatCreateSubMatrices(*mat, *n, isrow, iscol, *scall, &lsmat); 81069d47153SPierre Jolivet for (i = 0; i <= *n; i++) { /* lsmat[*n] might be a dummy matrix for saving data structure */ 811f4e70085SSatish Balay smat[i] = lsmat[i]; 812f4e70085SSatish Balay } 813f4e70085SSatish Balay *ierr = PetscFree(lsmat); 814f4e70085SSatish Balay } else { 8157dae84e0SHong Zhang *ierr = MatCreateSubMatrices(*mat, *n, isrow, iscol, *scall, &smat); 816f4e70085SSatish Balay } 817f4e70085SSatish Balay } 818f4e70085SSatish Balay 8197d6bfa3bSBarry Smith /* 82081ec7b92Smarius MatCreateSubmatrices() is slightly different from C since the 82181ec7b92Smarius Fortran provides the array to hold the submatrix objects,while in C that 82281ec7b92Smarius array is allocated by the MatCreateSubmatrices() 82381ec7b92Smarius */ 82419caf8f3SSatish Balay PETSC_EXTERN void matcreatesubmatricesmpi_(Mat *mat, PetscInt *n, IS *isrow, IS *iscol, MatReuse *scall, Mat *smat, PetscErrorCode *ierr) 82581ec7b92Smarius { 82681ec7b92Smarius Mat *lsmat; 82781ec7b92Smarius PetscInt i; 82881ec7b92Smarius 82981ec7b92Smarius if (*scall == MAT_INITIAL_MATRIX) { 83081ec7b92Smarius *ierr = MatCreateSubMatricesMPI(*mat, *n, isrow, iscol, *scall, &lsmat); 83169d47153SPierre Jolivet for (i = 0; i <= *n; i++) { /* lsmat[*n] might be a dummy matrix for saving data structure */ 83281ec7b92Smarius smat[i] = lsmat[i]; 83381ec7b92Smarius } 83481ec7b92Smarius *ierr = PetscFree(lsmat); 83581ec7b92Smarius } else { 83681ec7b92Smarius *ierr = MatCreateSubMatricesMPI(*mat, *n, isrow, iscol, *scall, &smat); 83781ec7b92Smarius } 83881ec7b92Smarius } 83981ec7b92Smarius 84081ec7b92Smarius /* 8417d6bfa3bSBarry Smith MatDestroyMatrices() is slightly different from C since the 842de7ef04eSHong Zhang Fortran does not free the array of matrix objects, while in C that 843de7ef04eSHong Zhang the array is freed 844de7ef04eSHong Zhang */ 84519caf8f3SSatish Balay PETSC_EXTERN void matdestroymatrices_(PetscInt *n, Mat *smat, PetscErrorCode *ierr) 846de7ef04eSHong Zhang { 847de7ef04eSHong Zhang PetscInt i; 848de7ef04eSHong Zhang 849de7ef04eSHong Zhang for (i = 0; i < *n; i++) { 8501fb7b255SJunchao Zhang PETSC_FORTRAN_OBJECT_F_DESTROYED_TO_C_NULL(&smat[i]); 8515975b3b6SBarry Smith *ierr = MatDestroy(&smat[i]); 8525975b3b6SBarry Smith if (*ierr) return; 8531fb7b255SJunchao Zhang PETSC_FORTRAN_OBJECT_C_NULL_TO_F_DESTROYED(&smat[i]); 854de7ef04eSHong Zhang } 855de7ef04eSHong Zhang } 856de7ef04eSHong Zhang 857de7ef04eSHong Zhang /* 858de7ef04eSHong Zhang MatDestroySubMatrices() is slightly different from C since the 8597d6bfa3bSBarry Smith Fortran provides the array to hold the submatrix objects, while in C that 8607dae84e0SHong Zhang array is allocated by the MatCreateSubmatrices() 8617d6bfa3bSBarry Smith */ 86219caf8f3SSatish Balay PETSC_EXTERN void matdestroysubmatrices_(PetscInt *n, Mat *smat, PetscErrorCode *ierr) 8637d6bfa3bSBarry Smith { 864de7ef04eSHong Zhang Mat *lsmat; 8657d6bfa3bSBarry Smith PetscInt i; 8667d6bfa3bSBarry Smith 867de7ef04eSHong Zhang *ierr = PetscMalloc1(*n + 1, &lsmat); 868de7ef04eSHong Zhang for (i = 0; i <= *n; i++) { 8691fb7b255SJunchao Zhang PETSC_FORTRAN_OBJECT_F_DESTROYED_TO_C_NULL(&smat[i]); 870de7ef04eSHong Zhang lsmat[i] = smat[i]; 8717d6bfa3bSBarry Smith } 872de7ef04eSHong Zhang *ierr = MatDestroySubMatrices(*n, &lsmat); 8735975b3b6SBarry Smith for (i = 0; i <= *n; i++) { PETSC_FORTRAN_OBJECT_C_NULL_TO_F_DESTROYED(&smat[i]); } 8741fb7b255SJunchao Zhang } 8751fb7b255SJunchao Zhang 8761fb7b255SJunchao Zhang PETSC_EXTERN void matdestroy_(Mat *x, int *ierr) 8771fb7b255SJunchao Zhang { 8781fb7b255SJunchao Zhang PETSC_FORTRAN_OBJECT_F_DESTROYED_TO_C_NULL(x); 8795975b3b6SBarry Smith *ierr = MatDestroy(x); 8805975b3b6SBarry Smith if (*ierr) return; 8811fb7b255SJunchao Zhang PETSC_FORTRAN_OBJECT_C_NULL_TO_F_DESTROYED(x); 882df750dc8SHong Zhang } 883df750dc8SHong Zhang 88419caf8f3SSatish Balay PETSC_EXTERN void matsetoptionsprefix_(Mat *mat, char *prefix, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len) 8851eea217eSSatish Balay { 8861eea217eSSatish Balay char *t; 8871eea217eSSatish Balay 8881eea217eSSatish Balay FIXCHAR(prefix, len, t); 8895975b3b6SBarry Smith *ierr = MatSetOptionsPrefix(*mat, t); 8905975b3b6SBarry Smith if (*ierr) return; 8911eea217eSSatish Balay FREECHAR(prefix, t); 8921eea217eSSatish Balay } 8931eea217eSSatish Balay 89419caf8f3SSatish Balay PETSC_EXTERN void matnullspaceremove_(MatNullSpace *sp, Vec *vec, PetscErrorCode *ierr) 895812c3f48SMatthew Knepley { 896a8f51744SPierre Jolivet CHKFORTRANNULLOBJECT(*sp); 897d0195637SJed Brown *ierr = MatNullSpaceRemove(*sp, *vec); 898812c3f48SMatthew Knepley } 8991eea217eSSatish Balay 90019caf8f3SSatish Balay PETSC_EXTERN void matgetinfo_(Mat *mat, MatInfoType *flag, MatInfo *info, int *ierr) 9015ba43861SSatish Balay { 9024d03fd2bSBarry Smith *ierr = MatGetInfo(*mat, *flag, info); 9035ba43861SSatish Balay } 9045ba43861SSatish Balay 90519caf8f3SSatish Balay PETSC_EXTERN void matlufactor_(Mat *mat, IS *row, IS *col, const MatFactorInfo *info, int *ierr) 90622688b47SSatish Balay { 9074d03fd2bSBarry Smith *ierr = MatLUFactor(*mat, *row, *col, info); 90822688b47SSatish Balay } 90922688b47SSatish Balay 91019caf8f3SSatish Balay PETSC_EXTERN void matilufactor_(Mat *mat, IS *row, IS *col, const MatFactorInfo *info, int *ierr) 91122688b47SSatish Balay { 9124d03fd2bSBarry Smith *ierr = MatILUFactor(*mat, *row, *col, info); 91322688b47SSatish Balay } 91422688b47SSatish Balay 91519caf8f3SSatish Balay PETSC_EXTERN void matlufactorsymbolic_(Mat *fact, Mat *mat, IS *row, IS *col, const MatFactorInfo *info, int *ierr) 91622688b47SSatish Balay { 9174d03fd2bSBarry Smith *ierr = MatLUFactorSymbolic(*fact, *mat, *row, *col, info); 91822688b47SSatish Balay } 91922688b47SSatish Balay 92019caf8f3SSatish Balay PETSC_EXTERN void matlufactornumeric_(Mat *fact, Mat *mat, const MatFactorInfo *info, int *ierr) 92122688b47SSatish Balay { 9224d03fd2bSBarry Smith *ierr = MatLUFactorNumeric(*fact, *mat, info); 92322688b47SSatish Balay } 92422688b47SSatish Balay 92519caf8f3SSatish Balay PETSC_EXTERN void matcholeskyfactor_(Mat *mat, IS *perm, const MatFactorInfo *info, int *ierr) 92622688b47SSatish Balay { 9274d03fd2bSBarry Smith *ierr = MatCholeskyFactor(*mat, *perm, info); 92822688b47SSatish Balay } 92922688b47SSatish Balay 93019caf8f3SSatish Balay PETSC_EXTERN void matcholeskyfactorsymbolic_(Mat *fact, Mat *mat, IS *perm, const MatFactorInfo *info, int *ierr) 93122688b47SSatish Balay { 9324d03fd2bSBarry Smith *ierr = MatCholeskyFactorSymbolic(*fact, *mat, *perm, info); 93322688b47SSatish Balay } 93422688b47SSatish Balay 93519caf8f3SSatish Balay PETSC_EXTERN void matcholeskyfactornumeric_(Mat *fact, Mat *mat, const MatFactorInfo *info, int *ierr) 93622688b47SSatish Balay { 9374d03fd2bSBarry Smith *ierr = MatCholeskyFactorNumeric(*fact, *mat, info); 93822688b47SSatish Balay } 93922688b47SSatish Balay 94019caf8f3SSatish Balay PETSC_EXTERN void matilufactorsymbolic_(Mat *fact, Mat *mat, IS *row, IS *col, const MatFactorInfo *info, int *ierr) 94122688b47SSatish Balay { 9424d03fd2bSBarry Smith *ierr = MatILUFactorSymbolic(*fact, *mat, *row, *col, info); 94322688b47SSatish Balay } 94422688b47SSatish Balay 94519caf8f3SSatish Balay PETSC_EXTERN void maticcfactorsymbolic_(Mat *fact, Mat *mat, IS *perm, const MatFactorInfo *info, int *ierr) 94622688b47SSatish Balay { 9474d03fd2bSBarry Smith *ierr = MatICCFactorSymbolic(*fact, *mat, *perm, info); 94822688b47SSatish Balay } 94922688b47SSatish Balay 95019caf8f3SSatish Balay PETSC_EXTERN void maticcfactor_(Mat *mat, IS *row, const MatFactorInfo *info, int *ierr) 95122688b47SSatish Balay { 9524d03fd2bSBarry Smith *ierr = MatICCFactor(*mat, *row, info); 95322688b47SSatish Balay } 95422688b47SSatish Balay 95519caf8f3SSatish Balay PETSC_EXTERN void matfactorinfoinitialize_(MatFactorInfo *info, int *ierr) 95622688b47SSatish Balay { 9574d03fd2bSBarry Smith *ierr = MatFactorInfoInitialize(info); 95822688b47SSatish Balay } 95919caf8f3SSatish Balay PETSC_EXTERN void matzerorowslocal_(Mat *mat, PetscInt *numRows, PetscInt rows[], PetscScalar *diag, Vec *x, Vec *b, int *ierr) 960d27e6124SSatish Balay { 961d27e6124SSatish Balay *ierr = MatZeroRowsLocal(*mat, *numRows, rows, *diag, *x, *b); 962d27e6124SSatish Balay } 96319caf8f3SSatish Balay PETSC_EXTERN void matzerorowslocal0_(Mat *mat, PetscInt *numRows, PetscInt rows[], PetscScalar *diag, Vec *x, Vec *b, int *ierr) 964d27e6124SSatish Balay { 965d27e6124SSatish Balay matzerorowslocal_(mat, numRows, rows, diag, x, b, ierr); 966d27e6124SSatish Balay } 96719caf8f3SSatish Balay PETSC_EXTERN void matzerorowslocal1_(Mat *mat, PetscInt *numRows, PetscInt rows[], PetscScalar *diag, Vec *x, Vec *b, int *ierr) 968d27e6124SSatish Balay { 969d27e6124SSatish Balay matzerorowslocal_(mat, numRows, rows, diag, x, b, ierr); 970d27e6124SSatish Balay } 97119caf8f3SSatish Balay PETSC_EXTERN void matviewfromoptions_(Mat *ao, PetscObject obj, char *type, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len) 972fe2efc57SMark { 973fe2efc57SMark char *t; 974fe2efc57SMark 975fe2efc57SMark FIXCHAR(type, len, t); 976b14c0cbaSBlaise Bourdin CHKFORTRANNULLOBJECT(obj); 9775975b3b6SBarry Smith *ierr = MatViewFromOptions(*ao, obj, t); 9785975b3b6SBarry Smith if (*ierr) return; 979fe2efc57SMark FREECHAR(type, t); 980fe2efc57SMark } 981