Christophe & Chih-Che,

> I get the following errors :
>
> =====lac==============debug======MT== trilinos_precondition.cc
> /home/homedir/trophime/debian/deal.ii-6.3.0/lac/source/trilinos_preconditio
>n.cc: In member function ‘void
> dealii::TrilinosWrappers::PreconditionAMG::initialize(const
> dealii::TrilinosWrappers::SparseMatrix&, const
> dealii::TrilinosWrappers::PreconditionAMG::AdditionalData&)’:
> /home/homedir/trophime/debian/deal.ii-6.3.0/lac/source/trilinos_preconditio
>n.cc:516: error: no matching function for call to ‘Teuchos::RCP<const
> Epetra_Operator>::reset()’

Apparently we need to test with more versions of Trilinos as well -- this 
works since 10.1 but not before. The attached patch should help the problem. 

Martin: Do you agree that this is the right way to go? The RCP::reset() 
function didn't exist in Trilinos 10.0 and prior, and the RCP::release 
function that we called before your patch r21329 probably created a memory 
leak if I read its documentation correctly. If you agree then I'll move the 
patch to the release branch as well.

Best
 W.

-------------------------------------------------------------------------
Wolfgang Bangerth                email:            [email protected]
                                 www: http://www.math.tamu.edu/~bangerth/

Index: lac/source/trilinos_precondition.cc
===================================================================
--- lac/source/trilinos_precondition.cc	(revision 21395)
+++ lac/source/trilinos_precondition.cc	(working copy)
@@ -513,8 +513,8 @@
   PreconditionAMG:: initialize (const SparseMatrix   &matrix,
 				const AdditionalData &additional_data)
   {
-    preconditioner.reset ();
-    multilevel_operator.reset ();
+    preconditioner.reset (static_cast<const Epetra_Operator*>(0));
+    multilevel_operator.reset (static_cast<ML_Epetra::MultiLevelPreconditioner*>(0));
 
     const unsigned int n_rows = matrix.m();
 
@@ -647,8 +647,8 @@
 	      const double                          drop_tolerance,
 	      const ::dealii::SparsityPattern      *use_this_sparsity)
   {
-    preconditioner.reset();
-    multilevel_operator.reset ();
+    preconditioner.reset(static_cast<const Epetra_Operator*>(0));
+    multilevel_operator.reset (static_cast<ML_Epetra::MultiLevelPreconditioner*>(0));
     const unsigned int n_rows = deal_ii_sparse_matrix.m();
 
 				        // Init Epetra Matrix using an
_______________________________________________
dealii mailing list http://poisson.dealii.org/mailman/listinfo/dealii

Reply via email to