Skip to content

Commit af0be0a

Browse files
committed
Fix for upcoming MatGetSubMatrix name change in PETSc 3.8.
The MatGetSubMatrix function was renamed to MatCreateSubMatrix in petsc/petsc@7dae84e. Note: using the "RELEASE" version of this macro supports people currently using petsc-dev since the change has already been merged there.
1 parent b9bd43f commit af0be0a

File tree

3 files changed

+25
-18
lines changed

3 files changed

+25
-18
lines changed

include/numerics/petsc_macro.h

+7
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,13 @@ typedef enum { PETSC_COPY_VALUES, PETSC_OWN_POINTER, PETSC_USE_POINTER} PetscCop
9696
# define ISCreateLibMesh(comm,n,idx,mode,is) ISCreateGeneral((comm),(n),(idx),(mode),(is))
9797
#endif
9898

99+
// As of release 3.8.0, MatGetSubMatrix was renamed to MatCreateSubMatrix.
100+
#if PETSC_RELEASE_LESS_THAN(3,8,0)
101+
# define LibMeshCreateSubMatrix MatGetSubMatrix
102+
#else
103+
# define LibMeshCreateSubMatrix MatCreateSubMatrix
104+
#endif
105+
99106
#else // LIBMESH_HAVE_PETSC
100107

101108
#define PETSC_VERSION_LESS_THAN(major,minor,subminor) 1

src/numerics/petsc_matrix.C

+1-1
Original file line numberDiff line numberDiff line change
@@ -808,7 +808,7 @@ void PetscMatrix<T>::_get_submatrix(SparseMatrix<T> & submatrix,
808808
&iscol); LIBMESH_CHKERR(ierr);
809809

810810
// Extract submatrix
811-
ierr = MatGetSubMatrix(_mat,
811+
ierr = LibMeshCreateSubMatrix(_mat,
812812
isrow,
813813
iscol,
814814
#if PETSC_RELEASE_LESS_THAN(3,0,1)

src/solvers/petsc_linear_solver.C

+17-17
Original file line numberDiff line numberDiff line change
@@ -456,20 +456,20 @@ PetscLinearSolver<T>::solve (SparseMatrix<T> & matrix_in,
456456
LIBMESH_CHKERR(ierr);
457457

458458
#if PETSC_VERSION_LESS_THAN(3,1,0)
459-
ierr = MatGetSubMatrix(matrix->mat(),
459+
ierr = LibMeshCreateSubMatrix(matrix->mat(),
460460
_restrict_solve_to_is,_restrict_solve_to_is,
461461
PETSC_DECIDE,MAT_INITIAL_MATRIX,&submat);
462462
LIBMESH_CHKERR(ierr);
463-
ierr = MatGetSubMatrix(precond->mat(),
463+
ierr = LibMeshCreateSubMatrix(precond->mat(),
464464
_restrict_solve_to_is,_restrict_solve_to_is,
465465
PETSC_DECIDE,MAT_INITIAL_MATRIX,&subprecond);
466466
LIBMESH_CHKERR(ierr);
467467
#else
468-
ierr = MatGetSubMatrix(matrix->mat(),
468+
ierr = LibMeshCreateSubMatrix(matrix->mat(),
469469
_restrict_solve_to_is,_restrict_solve_to_is,
470470
MAT_INITIAL_MATRIX,&submat);
471471
LIBMESH_CHKERR(ierr);
472-
ierr = MatGetSubMatrix(precond->mat(),
472+
ierr = LibMeshCreateSubMatrix(precond->mat(),
473473
_restrict_solve_to_is,_restrict_solve_to_is,
474474
MAT_INITIAL_MATRIX,&subprecond);
475475
LIBMESH_CHKERR(ierr);
@@ -508,12 +508,12 @@ PetscLinearSolver<T>::solve (SparseMatrix<T> & matrix_in,
508508
LIBMESH_CHKERR(ierr);
509509

510510
#if PETSC_VERSION_LESS_THAN(3,1,0)
511-
ierr = MatGetSubMatrix(matrix->mat(),
511+
ierr = LibMeshCreateSubMatrix(matrix->mat(),
512512
_restrict_solve_to_is,_restrict_solve_to_is_complement,
513513
PETSC_DECIDE,MAT_INITIAL_MATRIX,&submat1);
514514
LIBMESH_CHKERR(ierr);
515515
#else
516-
ierr = MatGetSubMatrix(matrix->mat(),
516+
ierr = LibMeshCreateSubMatrix(matrix->mat(),
517517
_restrict_solve_to_is,_restrict_solve_to_is_complement,
518518
MAT_INITIAL_MATRIX,&submat1);
519519
LIBMESH_CHKERR(ierr);
@@ -725,20 +725,20 @@ PetscLinearSolver<T>::adjoint_solve (SparseMatrix<T> & matrix_in,
725725
LIBMESH_CHKERR(ierr);
726726

727727
#if PETSC_VERSION_LESS_THAN(3,1,0)
728-
ierr = MatGetSubMatrix(matrix->mat(),
728+
ierr = LibMeshCreateSubMatrix(matrix->mat(),
729729
_restrict_solve_to_is,_restrict_solve_to_is,
730730
PETSC_DECIDE,MAT_INITIAL_MATRIX,&submat);
731731
LIBMESH_CHKERR(ierr);
732-
ierr = MatGetSubMatrix(precond->mat(),
732+
ierr = LibMeshCreateSubMatrix(precond->mat(),
733733
_restrict_solve_to_is,_restrict_solve_to_is,
734734
PETSC_DECIDE,MAT_INITIAL_MATRIX,&subprecond);
735735
LIBMESH_CHKERR(ierr);
736736
#else
737-
ierr = MatGetSubMatrix(matrix->mat(),
737+
ierr = LibMeshCreateSubMatrix(matrix->mat(),
738738
_restrict_solve_to_is,_restrict_solve_to_is,
739739
MAT_INITIAL_MATRIX,&submat);
740740
LIBMESH_CHKERR(ierr);
741-
ierr = MatGetSubMatrix(precond->mat(),
741+
ierr = LibMeshCreateSubMatrix(precond->mat(),
742742
_restrict_solve_to_is,_restrict_solve_to_is,
743743
MAT_INITIAL_MATRIX,&subprecond);
744744
LIBMESH_CHKERR(ierr);
@@ -777,12 +777,12 @@ PetscLinearSolver<T>::adjoint_solve (SparseMatrix<T> & matrix_in,
777777
LIBMESH_CHKERR(ierr);
778778

779779
#if PETSC_VERSION_LESS_THAN(3,1,0)
780-
ierr = MatGetSubMatrix(matrix->mat(),
780+
ierr = LibMeshCreateSubMatrix(matrix->mat(),
781781
_restrict_solve_to_is,_restrict_solve_to_is_complement,
782782
PETSC_DECIDE,MAT_INITIAL_MATRIX,&submat1);
783783
LIBMESH_CHKERR(ierr);
784784
#else
785-
ierr = MatGetSubMatrix(matrix->mat(),
785+
ierr = LibMeshCreateSubMatrix(matrix->mat(),
786786
_restrict_solve_to_is,_restrict_solve_to_is_complement,
787787
MAT_INITIAL_MATRIX,&submat1);
788788
LIBMESH_CHKERR(ierr);
@@ -1015,7 +1015,7 @@ PetscLinearSolver<T>::solve (const ShellMatrix<T> & shell_matrix,
10151015
/* This point can't be reached, see above. */
10161016
libmesh_assert(false);
10171017
#else
1018-
ierr = MatGetSubMatrix(mat,
1018+
ierr = LibMeshCreateSubMatrix(mat,
10191019
_restrict_solve_to_is,_restrict_solve_to_is,
10201020
MAT_INITIAL_MATRIX,&submat);
10211021
LIBMESH_CHKERR(ierr);
@@ -1057,7 +1057,7 @@ PetscLinearSolver<T>::solve (const ShellMatrix<T> & shell_matrix,
10571057
/* This point can't be reached, see above. */
10581058
libmesh_assert(false);
10591059
#else
1060-
ierr = MatGetSubMatrix(mat,
1060+
ierr = LibMeshCreateSubMatrix(mat,
10611061
_restrict_solve_to_is,_restrict_solve_to_is_complement,
10621062
MAT_INITIAL_MATRIX,&submat1);
10631063
LIBMESH_CHKERR(ierr);
@@ -1288,11 +1288,11 @@ PetscLinearSolver<T>::solve (const ShellMatrix<T> & shell_matrix,
12881288
/* This point can't be reached, see above. */
12891289
libmesh_assert(false);
12901290
#else
1291-
ierr = MatGetSubMatrix(mat,
1291+
ierr = LibMeshCreateSubMatrix(mat,
12921292
_restrict_solve_to_is,_restrict_solve_to_is,
12931293
MAT_INITIAL_MATRIX,&submat);
12941294
LIBMESH_CHKERR(ierr);
1295-
ierr = MatGetSubMatrix(const_cast<PetscMatrix<T> *>(precond)->mat(),
1295+
ierr = LibMeshCreateSubMatrix(const_cast<PetscMatrix<T> *>(precond)->mat(),
12961296
_restrict_solve_to_is,_restrict_solve_to_is,
12971297
MAT_INITIAL_MATRIX,&subprecond);
12981298
LIBMESH_CHKERR(ierr);
@@ -1333,7 +1333,7 @@ PetscLinearSolver<T>::solve (const ShellMatrix<T> & shell_matrix,
13331333
/* This point can't be reached, see above. */
13341334
libmesh_assert(false);
13351335
#else
1336-
ierr = MatGetSubMatrix(mat,
1336+
ierr = LibMeshCreateSubMatrix(mat,
13371337
_restrict_solve_to_is,_restrict_solve_to_is_complement,
13381338
MAT_INITIAL_MATRIX,&submat1);
13391339
LIBMESH_CHKERR(ierr);

0 commit comments

Comments
 (0)