---
include/numerics/petsc_macro.h | 10 +++++
include/numerics/petsc_vector.h | 2 +-
src/numerics/petsc_matrix.C | 8 ++--
src/numerics/petsc_vector.C | 20 +++++-----
src/solvers/petsc_diff_solver.C | 2 +-
src/solvers/petsc_linear_solver.C | 72 +++++++++++++++++-----------------
src/solvers/petsc_nonlinear_solver.C | 2 +-
7 files changed, 63 insertions(+), 53 deletions(-)
diff --git a/include/numerics/petsc_macro.h b/include/numerics/petsc_macro.h
index df1bc16..bd3ad63 100644
--- a/include/numerics/petsc_macro.h
+++ b/include/numerics/petsc_macro.h
@@ -87,6 +87,16 @@ EXTERN_C_FOR_PETSC_END
typedef PetscTruth PetscBool;
#endif
+#if PETSC_VERSION_RELEASE && PETSC_VERSION_LESS_THAN(3,1,1)
+# define VecDestroy(x) VecDestroy(*(x))
+# define VecScatterDestroy(x) VecScatterDestroy(*(x))
+# define MatDestroy(x) MatDestroy(*(x))
+# define ISDestroy(x) ISDestroy(*(x))
+# define KSPDestroy(x) KSPDestroy(*(x))
+# define SNESDestroy(x) SNESDestroy(*(x))
+# define PetscViewerDestroy(x) PetscViewerDestroy(*(x))
+#endif
+
#if PETSC_VERSION_LESS_THAN(2,2,1)
// This version of PETSc always makes a copy. Current occurrences of PETSC_USE_POINTER are safe with the definition below.
typedef enum { PETSC_COPY_VALUES, PETSC_OWN_POINTER, PETSC_USE_POINTER} PetscCopyMode;
diff --git a/include/numerics/petsc_vector.h b/include/numerics/petsc_vector.h
index 3d77dbb..b36039f 100644
--- a/include/numerics/petsc_vector.h
+++ b/include/numerics/petsc_vector.h
@@ -931,7 +931,7 @@ void PetscVector<T>::clear ()
{
int ierr=0;
- ierr = VecDestroy(_vec);
+ ierr = VecDestroy(&_vec);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
}
diff --git a/src/numerics/petsc_matrix.C b/src/numerics/petsc_matrix.C
index 12f9ad2..2e2a65f 100644
--- a/src/numerics/petsc_matrix.C
+++ b/src/numerics/petsc_matrix.C
@@ -226,7 +226,7 @@ void PetscMatrix<T>::clear ()
{
semiparallel_only();
- ierr = MatDestroy (_mat);
+ ierr = MatDestroy (&_mat);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
this->_is_initialized = false;
@@ -335,7 +335,7 @@ void PetscMatrix<T>::print_matlab (const std::string name) const
/**
* Destroy the viewer.
*/
- ierr = PetscViewerDestroy (petsc_viewer);
+ ierr = PetscViewerDestroy (&petsc_viewer);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
}
@@ -526,8 +526,8 @@ void PetscMatrix<T>::_get_submatrix(SparseMatrix<T>& submatrix,
petsc_submatrix->close();
// Clean up PETSc data structures
- ierr = ISDestroy(isrow); CHKERRABORT(libMesh::COMM_WORLD,ierr);
- ierr = ISDestroy(iscol); CHKERRABORT(libMesh::COMM_WORLD,ierr);
+ ierr = ISDestroy(&isrow); CHKERRABORT(libMesh::COMM_WORLD,ierr);
+ ierr = ISDestroy(&iscol); CHKERRABORT(libMesh::COMM_WORLD,ierr);
}
diff --git a/src/numerics/petsc_vector.C b/src/numerics/petsc_vector.C
index 8a53252..30444fd 100644
--- a/src/numerics/petsc_vector.C
+++ b/src/numerics/petsc_vector.C
@@ -760,10 +760,10 @@ void PetscVector<T>::localize (NumericVector<T>& v_local_in) const
#endif
// Clean up
- ierr = ISDestroy (is);
+ ierr = ISDestroy (&is);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
- ierr = VecScatterDestroy(scatter);
+ ierr = VecScatterDestroy(&scatter);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
// Make sure ghost dofs are up to date
@@ -852,10 +852,10 @@ void PetscVector<T>::localize (NumericVector<T>& v_local_in,
// Clean up
- ierr = ISDestroy (is);
+ ierr = ISDestroy (&is);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
- ierr = VecScatterDestroy(scatter);
+ ierr = VecScatterDestroy(&scatter);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
// Make sure ghost dofs are up to date
@@ -937,10 +937,10 @@ void PetscVector<T>::localize (const unsigned int first_local_idx,
#endif
// Clean up
- ierr = ISDestroy (is);
+ ierr = ISDestroy (&is);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
- ierr = VecScatterDestroy(scatter);
+ ierr = VecScatterDestroy(&scatter);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
}
@@ -1238,7 +1238,7 @@ void PetscVector<T>::print_matlab (const std::string name) const
/**
* Destroy the viewer.
*/
- ierr = PetscViewerDestroy (petsc_viewer);
+ ierr = PetscViewerDestroy (&petsc_viewer);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
}
@@ -1339,9 +1339,9 @@ void PetscVector<T>::create_subvector(NumericVector<T>& subvector,
#endif
// Clean up
- ierr = ISDestroy(parent_is); CHKERRABORT(libMesh::COMM_WORLD,ierr);
- ierr = ISDestroy(subvector_is); CHKERRABORT(libMesh::COMM_WORLD,ierr);
- ierr = VecScatterDestroy(scatter); CHKERRABORT(libMesh::COMM_WORLD,ierr);
+ ierr = ISDestroy(&parent_is); CHKERRABORT(libMesh::COMM_WORLD,ierr);
+ ierr = ISDestroy(&subvector_is); CHKERRABORT(libMesh::COMM_WORLD,ierr);
+ ierr = VecScatterDestroy(&scatter); CHKERRABORT(libMesh::COMM_WORLD,ierr);
}
diff --git a/src/solvers/petsc_diff_solver.C b/src/solvers/petsc_diff_solver.C
index 98f3cf2..6627cd6 100644
--- a/src/solvers/petsc_diff_solver.C
+++ b/src/solvers/petsc_diff_solver.C
@@ -220,7 +220,7 @@ void PetscDiffSolver::clear()
int ierr=0;
- ierr = SNESDestroy(_snes);
+ ierr = SNESDestroy(&_snes);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
STOP_LOG("clear()", "PetscDiffSolver");
diff --git a/src/solvers/petsc_linear_solver.C b/src/solvers/petsc_linear_solver.C
index dc2bada..1fdc8e6 100644
--- a/src/solvers/petsc_linear_solver.C
+++ b/src/solvers/petsc_linear_solver.C
@@ -102,14 +102,14 @@ void PetscLinearSolver<T>::clear ()
be removed and the subset index set destroyed. */
if(_restrict_solve_to_is!=NULL)
{
- int ierr = ISDestroy(_restrict_solve_to_is);
+ int ierr = ISDestroy(&_restrict_solve_to_is);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
_restrict_solve_to_is = NULL;
}
if(_restrict_solve_to_is_complement!=NULL)
{
- int ierr = ISDestroy(_restrict_solve_to_is_complement);
+ int ierr = ISDestroy(&_restrict_solve_to_is_complement);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
_restrict_solve_to_is_complement = NULL;
}
@@ -127,7 +127,7 @@ void PetscLinearSolver<T>::clear ()
#else
// 2.2.0 & newer style
- ierr = KSPDestroy(_ksp);
+ ierr = KSPDestroy(&_ksp);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
#endif
@@ -633,11 +633,11 @@ PetscLinearSolver<T>::solve (SparseMatrix<T>& matrix_in,
ierr = MatMultAdd(submat1,subvec1,subrhs,subrhs);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
- ierr = VecScatterDestroy(scatter1);
+ ierr = VecScatterDestroy(&scatter1);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
- ierr = VecDestroy(subvec1);
+ ierr = VecDestroy(&subvec1);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
- ierr = MatDestroy(submat1);
+ ierr = MatDestroy(&submat1);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
}
@@ -711,7 +711,7 @@ PetscLinearSolver<T>::solve (SparseMatrix<T>& matrix_in,
ierr = VecScatterEnd(scatter,subsolution,solution->vec(),INSERT_VALUES,SCATTER_REVERSE);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
- ierr = VecScatterDestroy(scatter);
+ ierr = VecScatterDestroy(&scatter);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
if(this->_preconditioner)
@@ -723,13 +723,13 @@ PetscLinearSolver<T>::solve (SparseMatrix<T>& matrix_in,
subprecond_matrix = NULL;
}
- ierr = VecDestroy(subsolution);
+ ierr = VecDestroy(&subsolution);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
- ierr = VecDestroy(subrhs);
+ ierr = VecDestroy(&subrhs);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
- ierr = MatDestroy(submat);
+ ierr = MatDestroy(&submat);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
- ierr = MatDestroy(subprecond);
+ ierr = MatDestroy(&subprecond);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
}
@@ -965,11 +965,11 @@ PetscLinearSolver<T>::adjoint_solve (SparseMatrix<T>& matrix_in,
ierr = MatMultAdd(submat1,subvec1,subrhs,subrhs);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
- ierr = VecScatterDestroy(scatter1);
+ ierr = VecScatterDestroy(&scatter1);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
- ierr = VecDestroy(subvec1);
+ ierr = VecDestroy(&subvec1);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
- ierr = MatDestroy(submat1);
+ ierr = MatDestroy(&submat1);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
}
@@ -1043,7 +1043,7 @@ PetscLinearSolver<T>::adjoint_solve (SparseMatrix<T>& matrix_in,
ierr = VecScatterEnd(scatter,subsolution,solution->vec(),INSERT_VALUES,SCATTER_REVERSE);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
- ierr = VecScatterDestroy(scatter);
+ ierr = VecScatterDestroy(&scatter);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
if(this->_preconditioner)
@@ -1055,13 +1055,13 @@ PetscLinearSolver<T>::adjoint_solve (SparseMatrix<T>& matrix_in,
subprecond_matrix = NULL;
}
- ierr = VecDestroy(subsolution);
+ ierr = VecDestroy(&subsolution);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
- ierr = VecDestroy(subrhs);
+ ierr = VecDestroy(&subrhs);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
- ierr = MatDestroy(submat);
+ ierr = MatDestroy(&submat);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
- ierr = MatDestroy(subprecond);
+ ierr = MatDestroy(&subprecond);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
}
@@ -1254,11 +1254,11 @@ PetscLinearSolver<T>::solve (const ShellMatrix<T>& shell_matrix,
CHKERRABORT(libMesh::COMM_WORLD,ierr);
ierr = VecAXPY(subrhs,1.0,subvec2);
- ierr = VecScatterDestroy(scatter1);
+ ierr = VecScatterDestroy(&scatter1);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
- ierr = VecDestroy(subvec1);
+ ierr = VecDestroy(&subvec1);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
- ierr = MatDestroy(submat1);
+ ierr = MatDestroy(&submat1);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
}
@@ -1323,19 +1323,19 @@ PetscLinearSolver<T>::solve (const ShellMatrix<T>& shell_matrix,
ierr = VecScatterEnd(scatter,subsolution,solution->vec(),INSERT_VALUES,SCATTER_REVERSE);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
- ierr = VecScatterDestroy(scatter);
+ ierr = VecScatterDestroy(&scatter);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
- ierr = VecDestroy(subsolution);
+ ierr = VecDestroy(&subsolution);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
- ierr = VecDestroy(subrhs);
+ ierr = VecDestroy(&subrhs);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
- ierr = MatDestroy(submat);
+ ierr = MatDestroy(&submat);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
}
// Destroy the matrix.
- ierr = MatDestroy(mat);
+ ierr = MatDestroy(&mat);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
STOP_LOG("solve()", "PetscLinearSolver");
@@ -1537,11 +1537,11 @@ PetscLinearSolver<T>::solve (const ShellMatrix<T>& shell_matrix,
CHKERRABORT(libMesh::COMM_WORLD,ierr);
ierr = VecAXPY(subrhs,1.0,subvec2);
- ierr = VecScatterDestroy(scatter1);
+ ierr = VecScatterDestroy(&scatter1);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
- ierr = VecDestroy(subvec1);
+ ierr = VecDestroy(&subvec1);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
- ierr = MatDestroy(submat1);
+ ierr = MatDestroy(&submat1);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
}
@@ -1615,7 +1615,7 @@ PetscLinearSolver<T>::solve (const ShellMatrix<T>& shell_matrix,
ierr = VecScatterEnd(scatter,subsolution,solution->vec(),INSERT_VALUES,SCATTER_REVERSE);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
- ierr = VecScatterDestroy(scatter);
+ ierr = VecScatterDestroy(&scatter);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
if(this->_preconditioner)
@@ -1627,18 +1627,18 @@ PetscLinearSolver<T>::solve (const ShellMatrix<T>& shell_matrix,
subprecond_matrix = NULL;
}
- ierr = VecDestroy(subsolution);
+ ierr = VecDestroy(&subsolution);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
- ierr = VecDestroy(subrhs);
+ ierr = VecDestroy(&subrhs);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
- ierr = MatDestroy(submat);
+ ierr = MatDestroy(&submat);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
- ierr = MatDestroy(subprecond);
+ ierr = MatDestroy(&subprecond);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
}
// Destroy the matrix.
- ierr = MatDestroy(mat);
+ ierr = MatDestroy(&mat);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
STOP_LOG("solve()", "PetscLinearSolver");
diff --git a/src/solvers/petsc_nonlinear_solver.C b/src/solvers/petsc_nonlinear_solver.C
index d1fcfe7..b5c4d7a 100644
--- a/src/solvers/petsc_nonlinear_solver.C
+++ b/src/solvers/petsc_nonlinear_solver.C
@@ -229,7 +229,7 @@ void PetscNonlinearSolver<T>::clear ()
int ierr=0;
- ierr = SNESDestroy(_snes);
+ ierr = SNESDestroy(&_snes);
CHKERRABORT(libMesh::COMM_WORLD,ierr);
}
}
------------------------------------------------------------------------------
Got Input? Slashdot Needs You.
Take our quick survey online. Come on, we don't ask for help often.
Plus, you'll get a chance to win $100 to spend on ThinkGeek.
http://p.sf.net/sfu/slashdot-survey
_______________________________________________
Libmesh-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libmesh-devel