19#ifdef DEAL_II_WITH_TRILINOS
20# ifdef DEAL_II_TRILINOS_WITH_MUELU
24# include <MueLu_CreateEpetraPreconditioner.hpp>
25# include <ml_MultiLevelPreconditioner.h>
33 const unsigned int n_cycles,
35 const double aggregation_threshold,
36 const std::vector<std::vector<bool>> &constant_modes,
37 const unsigned int smoother_sweeps,
38 const unsigned int smoother_overlap,
39 const bool output_details,
40 const char * smoother_type,
41 const char * coarse_type)
45 , aggregation_threshold(aggregation_threshold)
46 , constant_modes(constant_modes)
47 , smoother_sweeps(smoother_sweeps)
48 , smoother_overlap(smoother_overlap)
49 , output_details(output_details)
50 , smoother_type(smoother_type)
51 , coarse_type(coarse_type)
60# ifdef DEAL_II_WITH_64BIT_INDICES
67 "PreconditionAMGMueLu does not support 64bit-indices!"));
76 initialize(matrix.trilinos_matrix(), additional_data);
90 if (additional_data.
elliptic ==
true)
108 static_cast<int>(additional_data.
n_cycles));
109 if (additional_data.
w_cycle ==
true)
126 const Epetra_Map &domain_map = matrix.OperatorDomainMap();
199 Teuchos::rcp(
const_cast<Epetra_CrsMatrix *
>(&matrix),
false);
206 template <
typename number>
212 const ::SparsityPattern * use_this_sparsity)
220 const unsigned int n_mpi_processes =
communicator.NumProc();
222 distributor.add_range(my_id * n_rows / n_mpi_processes,
223 (my_id + 1) * n_rows / n_mpi_processes);
253 unsigned int memory =
sizeof(*this);
268 const AdditionalData &,
270 const ::SparsityPattern *);
273 const AdditionalData &,
275 const ::SparsityPattern *);
value_type * data() const noexcept
std::shared_ptr< SparseMatrix > trilinos_matrix
size_type memory_consumption() const
void initialize(const SparseMatrix &matrix, const AdditionalData &additional_data=AdditionalData())
Epetra_MpiComm communicator
Teuchos::RCP< Epetra_Operator > preconditioner
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
#define Assert(cond, exc)
static ::ExceptionBase & ExcDimensionMismatch(std::size_t arg1, std::size_t arg2)
static ::ExceptionBase & ExcMessage(std::string arg1)
#define AssertThrow(cond, exc)
TrilinosWrappers::types::int_type global_index(const Epetra_BlockMap &map, const ::types::global_dof_index i)
TrilinosWrappers::types::int_type n_global_rows(const Epetra_CrsGraph &graph)
TrilinosWrappers::types::int_type global_length(const Epetra_MultiVector &vector)
double aggregation_threshold
std::vector< std::vector< bool > > constant_modes
AdditionalData(const bool elliptic=true, const unsigned int n_cycles=1, const bool w_cycle=false, const double aggregation_threshold=1e-4, const std::vector< std::vector< bool > > &constant_modes=std::vector< std::vector< bool > >(0), const unsigned int smoother_sweeps=2, const unsigned int smoother_overlap=0, const bool output_details=false, const char *smoother_type="Chebyshev", const char *coarse_type="Amesos-KLU")
unsigned int smoother_sweeps
unsigned int smoother_overlap
const char * smoother_type