From 0e9d11b949c630080cbe76527acee1fc4c456950 Mon Sep 17 00:00:00 2001 From: kronbichler Date: Tue, 23 Sep 2008 09:22:55 +0000 Subject: [PATCH] Release the preconditioner object before a re-generation. git-svn-id: https://svn.dealii.org/trunk@16898 0785d39b-7218-0410-832d-ea1e28bc413d --- deal.II/lac/source/trilinos_precondition.cc | 7 +++++++ deal.II/lac/source/trilinos_precondition_amg.cc | 2 ++ 2 files changed, 9 insertions(+) diff --git a/deal.II/lac/source/trilinos_precondition.cc b/deal.II/lac/source/trilinos_precondition.cc index 5d9c7af690..55bc5c1bcd 100755 --- a/deal.II/lac/source/trilinos_precondition.cc +++ b/deal.II/lac/source/trilinos_precondition.cc @@ -63,6 +63,7 @@ namespace TrilinosWrappers PreconditionJacobi::initialize (const SparseMatrix &matrix, const AdditionalData &additional_data) { + preconditioner.release(); preconditioner = Teuchos::rcp (Ifpack().Create ("point relaxation", &*matrix.matrix, 0)); Assert (&*preconditioner != 0, ExcMessage ("Trilinos could not create this " @@ -106,6 +107,7 @@ namespace TrilinosWrappers PreconditionSSOR::initialize (const SparseMatrix &matrix, const AdditionalData &additional_data) { + preconditioner.release(); preconditioner = Teuchos::rcp (Ifpack().Create ("point relaxation", &*matrix.matrix, @@ -152,6 +154,7 @@ namespace TrilinosWrappers PreconditionSOR::initialize (const SparseMatrix &matrix, const AdditionalData &additional_data) { + preconditioner.release(); preconditioner = Teuchos::rcp (Ifpack().Create ("point relaxation", &*matrix.matrix, @@ -200,6 +203,8 @@ namespace TrilinosWrappers PreconditionIC::initialize (const SparseMatrix &matrix, const AdditionalData &additional_data) { + preconditioner.release(); + preconditioner = Teuchos::rcp (Ifpack().Create ("IC", &*matrix.matrix, additional_data.overlap)); Assert (&*preconditioner != 0, ExcMessage ("Trilinos could not create this " @@ -245,6 +250,8 @@ namespace TrilinosWrappers PreconditionILU::initialize (const SparseMatrix &matrix, const AdditionalData &additional_data) { + preconditioner.release(); + preconditioner = Teuchos::rcp (Ifpack().Create ("ILU", &*matrix.matrix, additional_data.overlap)); Assert (&*preconditioner != 0, ExcMessage ("Trilinos could not create this " diff --git a/deal.II/lac/source/trilinos_precondition_amg.cc b/deal.II/lac/source/trilinos_precondition_amg.cc index 4f702efc57..29c33f0fe1 100755 --- a/deal.II/lac/source/trilinos_precondition_amg.cc +++ b/deal.II/lac/source/trilinos_precondition_amg.cc @@ -45,6 +45,8 @@ namespace TrilinosWrappers const std::vector > &null_space, const bool output_details) { + multilevel_operator.release(); + const unsigned int n_rows = matrix.m(); const unsigned int null_space_dimension = null_space.size(); -- 2.39.5