18 #if defined(DEAL_II_WITH_TRILINOS) && defined(DEAL_II_TRILINOS_WITH_MUELU)
28 AMGMueLuPreconditioner::AMGMueLuPreconditioner(
29 const std::string &name,
31 const unsigned int &n_cycles,
33 const double &aggregation_threshold,
34 const unsigned int &smoother_sweeps,
35 const unsigned int &smoother_overlap,
36 const bool &output_details,
37 const std::string &smoother_type,
38 const std::string &coarse_type)
40 , PreconditionAMGMueLu()
44 , aggregation_threshold(aggregation_threshold)
45 , smoother_sweeps(smoother_sweeps)
46 , smoother_overlap(smoother_overlap)
47 , output_details(output_details)
48 , smoother_type(smoother_type)
49 , coarse_type(coarse_type)
60 "Determines whether the AMG preconditioner should be optimized for "
61 "elliptic problems (ML option smoothed aggregation SA, using a "
62 "Chebyshev smoother) or for non-elliptic problems (ML option "
63 "non-symmetric smoothed aggregation NSSA, smoother is SSOR with "
69 "Defines how many multigrid cycles should be performed by the "
75 "defines whether a w-cycle should be used instead of the standard "
76 "setting of a v-cycle.");
79 "Aggregation threshold",
81 "This threshold tells the AMG setup how the coarsening should be "
82 "performed. In the AMG used by ML, all points that strongly couple with "
83 "the tentative coarse-level point form one aggregate. The term strong "
84 "coupling is controlled by the variable aggregation_threshold, meaning "
85 "that all elements that are not smaller than aggregation_threshold "
86 "times the diagonal element do couple strongly.");
91 "Determines how many sweeps of the smoother should be performed. When "
92 "the flag elliptic is set to true, i.e., for elliptic or almost "
93 "elliptic problems, the polynomial degree of the Chebyshev smoother is "
94 "set to smoother_sweeps. The term sweeps refers to the number of "
95 "matrix-vector products performed in the Chebyshev case. In the "
96 "non-elliptic case, smoother_sweeps sets the number of SSOR relaxation "
97 "sweeps for post-smoothing to be performed.");
102 "Determines the overlap in the SSOR/Chebyshev error smoother when run "
108 "If this flag is set to true, then internal information from the ML "
109 "preconditioner is printed to screen. This can be useful when debugging "
110 "the preconditioner.");
115 "Determines which smoother to use for the AMG cycle.",
118 "|Aztec|IFPACK|Jacobi"
119 "|ML symmetric Gauss-Seidel|symmetric Gauss-Seidel"
120 "|ML Gauss-Seidel|Gauss-Seidel|block Gauss-Seidel"
121 "|symmetric block Gauss-Seidel|Chebyshev|MLS|Hiptmair"
122 "|Amesos-KLU|Amesos-Superlu|Amesos-UMFPACK|Amesos-Superludist"
123 "|Amesos-MUMPS|user-defined|SuperLU|IFPACK-Chebyshev|self"
124 "|do-nothing|IC|ICT|ILU|ILUT|Block Chebyshev"
125 "|IFPACK-Block Chebyshev"));
130 "Determines which solver to use on the coarsest level. The same "
131 "settings as for the smoother type are possible.",
134 "|Aztec|IFPACK|Jacobi"
135 "|ML symmetric Gauss-Seidel|symmetric Gauss-Seidel"
136 "|ML Gauss-Seidel|Gauss-Seidel|block Gauss-Seidel"
137 "|symmetric block Gauss-Seidel|Chebyshev|MLS|Hiptmair"
138 "|Amesos-KLU|Amesos-Superlu|Amesos-UMFPACK|Amesos-Superludist"
139 "|Amesos-MUMPS|user-defined|SuperLU|IFPACK-Chebyshev|self"
140 "|do-nothing|IC|ICT|ILU|ILUT|Block Chebyshev"
141 "|IFPACK-Block Chebyshev"));
144 template <
typename Matrix>
166 dealii::TrilinosWrappers::SparseMatrix>(
167 const dealii::TrilinosWrappers::SparseMatrix &);
171 dealii::SparseMatrix<double>>(
const dealii::SparseMatrix<double> &);
static void initialize(const std::string &filename="", const std::string &output_filename="", const ParameterHandler::OutputStyle output_style_for_output_filename=ParameterHandler::Short, ParameterHandler &prm=ParameterAcceptor::prm, const ParameterHandler::OutputStyle output_style_for_filename=ParameterHandler::DefaultStyle)
static ParameterHandler prm
void add_parameter(const std::string &entry, ParameterType ¶meter, const std::string &documentation="", ParameterHandler &prm_=prm, const Patterns::PatternBase &pattern=*Patterns::Tools::Convert< ParameterType >::to_pattern())
unsigned int smoother_overlap
Determines the overlap in the SSOR/Chebyshev error smoother when run in parallel.
std::string smoother_type
Determines which smoother to use for the AMG cycle.
void initialize_preconditioner(const Matrix &matrix)
Initialize the preconditioner using matrix.
unsigned int smoother_sweeps
Determines how many sweeps of the smoother should be performed.
std::string coarse_type
Determines which solver to use on the coarsest level.
void add_parameters()
Add all parameter options.
unsigned int n_cycles
Defines how many multigrid cycles should be performed by the preconditioner.
bool output_details
If this flag is set to true, then internal information from the ML preconditioner is printed to scree...
bool elliptic
Determines whether the AMG preconditioner should be optimized for elliptic problems (ML option smooth...
double aggregation_threshold
This threshold tells the AMG setup how the coarsening should be performed.
bool w_cycle
Defines whether a w-cycle should be used instead of the standard setting of a v-cycle.
double aggregation_threshold
std::vector< std::vector< bool > > constant_modes
unsigned int smoother_sweeps
unsigned int smoother_overlap
const char * smoother_type