13#ifndef dealii_trilinos_precondition_h
14#define dealii_trilinos_precondition_h
19#ifndef DEAL_II_TRILINOS_WITH_EPETRA
26#ifdef DEAL_II_TRILINOS_WITH_EPETRA
33# include <Epetra_Map.h>
34# include <Epetra_MpiComm.h>
35# include <Epetra_MultiVector.h>
36# include <Epetra_RowMatrix.h>
37# include <Epetra_Vector.h>
38# include <Teuchos_ParameterList.hpp>
45class Ifpack_Preconditioner;
46class Ifpack_Chebyshev;
49 class MultiLevelPreconditioner;
57#ifdef DEAL_II_TRILINOS_WITH_EPETRA
60template <
typename number>
62template <
typename number>
157 const ::Vector<double> &src)
const;
165 const ::LinearAlgebra::distributed::Vector<double> &src)
const;
173 const ::LinearAlgebra::distributed::Vector<double> &src)
const;
219 <<
"The sparse matrix the preconditioner is based on "
220 <<
"uses a map that is not compatible to the one in vector "
221 << arg1 <<
". Check preconditioner and matrix setup.");
363 const unsigned int overlap = 0,
457 const unsigned int overlap = 0,
543 const double omega = 1,
646 const double omega = 1,
648 const unsigned int overlap = 0,
757 const double omega = 1,
759 const unsigned int overlap = 0,
883 const unsigned int overlap = 0);
1002 const unsigned int overlap = 0);
1108 const unsigned int overlap = 0);
1369 std::vector<std::vector<bool>>(0),
1408 Teuchos::ParameterList ¶meter_list,
1409 std::unique_ptr<Epetra_MultiVector> &distributed_constant_modes,
1410 const Epetra_RowMatrix &matrix)
const;
1421 Teuchos::ParameterList ¶meter_list,
1422 std::unique_ptr<Epetra_MultiVector> &distributed_constant_modes,
1432 Teuchos::ParameterList ¶meter_list,
1433 std::unique_ptr<Epetra_MultiVector> &distributed_constant_modes,
1434 const Epetra_RowMatrix &matrix)
const;
1443 Teuchos::ParameterList ¶meter_list,
1444 std::unique_ptr<Epetra_MultiVector> &distributed_constant_modes,
1641 const Teuchos::ParameterList &ml_parameters);
1652 const Teuchos::ParameterList &ml_parameters);
1660 template <
typename number>
1662 initialize(const ::SparseMatrix<number> &deal_ii_sparse_matrix,
1664 const double drop_tolerance = 1e-13,
1665 const ::SparsityPattern *use_this_sparsity =
nullptr);
1704# if defined(DOXYGEN) || defined(DEAL_II_TRILINOS_WITH_MUELU)
1751 std::vector<std::vector<bool>>(0),
1910 Teuchos::ParameterList &muelu_parameters);
1919 Teuchos::ParameterList &muelu_parameters);
1927 template <
typename number>
1929 initialize(const ::SparseMatrix<number> &deal_ii_sparse_matrix,
1931 const double drop_tolerance = 1e-13,
1932 const ::SparsityPattern *use_this_sparsity =
nullptr);
2001 const ::Vector<double> &src)
const override;
2009 const ::Vector<double> &src)
const override;
2017 const ::LinearAlgebra::distributed::Vector<double> &src)
2027 const ::LinearAlgebra::distributed::Vector<double> &src)
2065 Assert(dst.trilinos_partitioner().SameAs(
2068 Assert(src.trilinos_partitioner().SameAs(
2072 const int ierr =
preconditioner->ApplyInverse(src.trilinos_vector(),
2073 dst.trilinos_vector());
2080 Assert(dst.trilinos_partitioner().SameAs(
2083 Assert(src.trilinos_partitioner().SameAs(
2088 const int ierr =
preconditioner->ApplyInverse(src.trilinos_vector(),
2089 dst.trilinos_vector());
2106 const ::Vector<double> &src)
const
2112 Epetra_Vector tril_dst(View,
2115 Epetra_Vector tril_src(View,
2117 const_cast<double *
>(src.begin()));
2119 const int ierr =
preconditioner->ApplyInverse(tril_src, tril_dst);
2126 const ::Vector<double> &src)
const
2132 Epetra_Vector tril_dst(View,
2135 Epetra_Vector tril_src(View,
2137 const_cast<double *
>(src.begin()));
2140 const int ierr =
preconditioner->ApplyInverse(tril_src, tril_dst);
2156 Epetra_Vector tril_dst(View,
2159 Epetra_Vector tril_src(View,
2161 const_cast<double *
>(src.
begin()));
2163 const int ierr =
preconditioner->ApplyInverse(tril_src, tril_dst);
2176 Epetra_Vector tril_dst(View,
2179 Epetra_Vector tril_src(View,
2181 const_cast<double *
>(src.
begin()));
2184 const int ierr =
preconditioner->ApplyInverse(tril_src, tril_dst);
size_type locally_owned_size() const
std::shared_ptr< SparseMatrix > trilinos_matrix
size_type memory_consumption() const
virtual ~PreconditionAMGMueLu() override=default
void initialize(const SparseMatrix &matrix, const AdditionalData &additional_data=AdditionalData())
~PreconditionAMG() override
std::shared_ptr< SparseMatrix > trilinos_matrix
size_type memory_consumption() const
void initialize(const SparseMatrix &matrix, const AdditionalData &additional_data=AdditionalData())
IndexSet locally_owned_range_indices() const
Epetra_MpiComm communicator
virtual void Tvmult(::LinearAlgebra::distributed::Vector< double > &dst, const ::LinearAlgebra::distributed::Vector< double > &src) const
virtual void Tvmult(MPI::Vector &dst, const MPI::Vector &src) const
virtual void vmult(MPI::Vector &dst, const MPI::Vector &src) const
Epetra_Operator & trilinos_operator() const
Teuchos::RCP< Epetra_Operator > preconditioner
virtual void Tvmult(::Vector< double > &dst, const ::Vector< double > &src) const
MPI_Comm get_mpi_communicator() const
virtual void vmult(::Vector< double > &dst, const ::Vector< double > &src) const
IndexSet locally_owned_domain_indices() const
virtual void vmult(::LinearAlgebra::distributed::Vector< double > &dst, const ::LinearAlgebra::distributed::Vector< double > &src) const
void initialize(const SparseMatrix &matrix, const AdditionalData &additional_data=AdditionalData())
void initialize(const SparseMatrix &matrix, const AdditionalData &additional_data=AdditionalData())
void initialize(const SparseMatrix &matrix, const AdditionalData &additional_data=AdditionalData())
void initialize(const SparseMatrix &matrix, const AdditionalData &additional_data=AdditionalData())
void initialize(const SparseMatrix &matrix, const AdditionalData &additional_data=AdditionalData())
void initialize(const SparseMatrix &matrix, const AdditionalData &additional_data=AdditionalData())
void initialize(const SparseMatrix &matrix, const AdditionalData &additional_data=AdditionalData())
void initialize(const SparseMatrix &matrix, const AdditionalData &additional_data=AdditionalData())
void vmult(LinearAlgebra::distributed::Vector< double > &dst, const ::LinearAlgebra::distributed::Vector< double > &src) const override
void vmult(MPI::Vector &dst, const MPI::Vector &src) const override
void Tvmult(MPI::Vector &dst, const MPI::Vector &src) const override
void Tvmult(LinearAlgebra::distributed::Vector< double > &dst, const ::LinearAlgebra::distributed::Vector< double > &src) const override
void initialize(const SparseMatrix &matrix, const AdditionalData &additional_data=AdditionalData())
void initialize(const SparseMatrix &matrix, const AdditionalData &additional_data=AdditionalData())
void initialize(const SparseMatrix &matrix, const AdditionalData &additional_data=AdditionalData())
void initialize(const SparseMatrix &matrix, const AdditionalData &additional_data=AdditionalData())
virtual size_type size() const override
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_DISABLE_EXTRA_DIAGNOSTICS
#define DEAL_II_NAMESPACE_CLOSE
#define DEAL_II_ENABLE_EXTRA_DIAGNOSTICS
static ::ExceptionBase & ExcNonMatchingMaps(std::string arg1)
#define Assert(cond, exc)
#define AssertDimension(dim1, dim2)
#define DeclException1(Exception1, type1, outsequence)
static ::ExceptionBase & ExcTrilinosError(int arg1)
#define AssertThrow(cond, exc)
unsigned int global_dof_index
double aggregation_threshold
std::vector< std::vector< bool > > constant_modes
unsigned int smoother_sweeps
unsigned int smoother_overlap
const char * smoother_type
std::vector< std::vector< bool > > constant_modes
double aggregation_threshold
std::vector< std::vector< double > > constant_modes_values
unsigned int smoother_sweeps
bool higher_order_elements
unsigned int smoother_overlap
void set_operator_null_space(Teuchos::ParameterList ¶meter_list, std::unique_ptr< Epetra_MultiVector > &distributed_constant_modes, const Epetra_RowMatrix &matrix) const
const char * smoother_type
void set_parameters(Teuchos::ParameterList ¶meter_list, std::unique_ptr< Epetra_MultiVector > &distributed_constant_modes, const Epetra_RowMatrix &matrix) const
std::string block_creation_type
std::string block_creation_type
std::string block_creation_type