30 #ifndef OOMPH_TRILINOS_OPERATORS_HEADER    31 #define OOMPH_TRILINOS_OPERATORS_HEADER    35   #include <oomph-lib-config.h>    46 #include "ml_include.h"    47 #include "ml_MultiLevelPreconditioner.h"   123    void setup(Epetra_CrsMatrix* epetra_matrix_pt);
   148     (Epetra_CrsMatrix* epetra_matrix_pt)=0;
   175      ML_Epetra::SetDefaults(
"SA", ML_parameters);
   178      ML_parameters.set(
"cycle applications", Default_n_cycles);
   200      ML_Epetra::SetDefaults(
"NSSA", ML_parameters);
   208      ML_Epetra::SetDefaults(
"DD", ML_parameters);
   215      ML_Epetra::SetDefaults(
"DD-ML", ML_parameters);
   222      ML_Epetra::SetDefaults(
"SA", ML_parameters);
   228      ML_parameters.set(
"max levels", max_levels);
   234      ML_parameters.set(
"cycle applications", n_cycles);
   240      ML_parameters.set(
"smoother: damping factor", smoother_damping);
   246      ML_parameters.set(
"smoother: sweeps", smoother_sweeps);
   252      ML_parameters.set(
"smoother: type", 
"Jacobi");
   258      ML_parameters.set(
"smoother: type", 
"symmetric Gauss-Seidel");
   264      ML_parameters.set(
"output", output); 
   296      Preconditioner_type = 
"ILU";
   298      ILUT_fill_level = 1.0;
   300      Absolute_threshold = 0.0;
   301      Relative_threshold = 1.0;
   323      Preconditioner_type=
"ILU";
   329      Preconditioner_type=
"ILUT";
 An interface to the Trilinos ML class - provides a function to construct a serial ML object...
void broken_copy(const std::string &class_name)
Issue error message and terminate execution. 
TrilinosPreconditionerBase()
Constructor. 
void set_max_levels(int max_levels)
Function to set maximum number of levels. 
void set_DD_default_values()
Set control flags to values for classical smoothed aggregation- based 2-level domain decomposition...
void set_smoother_damping(double smoother_damping)
Function to set Smoother_damping. 
TrilinosMLPreconditioner(const TrilinosMLPreconditioner &)
Broken copy constructor. 
virtual ~TrilinosMLPreconditioner()
Destructor empty – clean up is done in base class. 
void setup()
Broken assignment operator. 
double Relative_threshold
Value of relative threshold, used to pertub diagonal. 
virtual ~TrilinosPreconditionerBase()
Destructor. 
void set_DDML_default_values()
Set control flags to values 3-level algebraic domain decomposition. 
void set_preconditioner_ILUT()
Function to set Preconditioner_type to "ILUT". 
void set_smoother_jacobi()
Function to set smoother type to "Jacobi". 
static double Cumulative_preconditioner_solve_time
Static double that accumulates the preconditioner solve time of all instantiations of this class...
void set_smoother_sweeps(int smoother_sweeps)
Function to set Smoother_sweeps. 
Epetra_CrsMatrix * Epetra_matrix_pt
Pointer used to store the epetra matrix - only used when this preconditioner is setup using the oomph...
int & ilu_fill_level()
Access function for ILU_fill_level. 
Base class for Trilinos preconditioners as oomph-lib preconditioner. 
TrilinosMLPreconditioner()
Constructor. Build with Smooth Aggretation (SA) default settings, but our own default number of V cyc...
double Absolute_threshold
Value of absolute threshold, used to peturb diagonal. 
static int Default_n_cycles
Default number of V cycles (one to be consistent with previous default) (It's an int because Trilinos...
TrilinosIFPACKPreconditioner()
Constructor. 
void set_n_cycles(int n_cycles)
Function to set the number of cycles used. 
TrilinosIFPACKPreconditioner(const TrilinosIFPACKPreconditioner &)
Broken copy constructor. 
void set_smoother_gauss_seidel()
Function to set smoother type to "symmetric Gauss-Seidel". 
double & absolute_threshold()
Access function for the absolute threshold. 
void preconditioner_solve(const DoubleVector &r, DoubleVector &z)
applies the preconditioner 
double & relative_threshold()
Access function for the relative threshold. 
int ILU_fill_level
Level of fill for "ILU". 
Epetra_Operator * Epetra_preconditioner_pt
The preconditioner which will be set up using function setup_trilinos_preconditioner(...) 
void set_SA_default_values()
Set control flags to values for classical smoothed aggregation preconditioning. 
void set_NSSA_default_values()
Broken assignment operator. 
void output(std::ostream &outfile)
Output with default number of plot points. 
void clean_up_memory()
deletes the preconditioner, matrices and maps 
string Preconditioner_type
Type of ILU preconditioner. 
Preconditioner base class. Gives an interface to call all other preconditioners through and stores th...
virtual ~TrilinosIFPACKPreconditioner()
Destructor – empty, cleanup is done in base class. 
void set_preconditioner_ILU()
Broken assignment operator. 
double ILUT_fill_level
Level of fill for "ILUT". 
Epetra_Operator * epetra_operator_pt() const
double & ilut_fill_level()
Access function for ILUT_fill_level. 
int Overlap
Value of overlap level - used in parallel ILU. 
TrilinosPreconditionerBase(const TrilinosPreconditionerBase &)
Broken copy constructor. 
A vector in the mathematical sense, initially developed for linear algebra type applications. If MPI then this vector can be distributed - its distribution is described by the LinearAlgebraDistribution object at Distribution_pt. Data is stored in a C-style pointer vector (double*) 
Epetra_Operator *& epetra_operator_pt()
An interface to the Trilinos IFPACK class- provides a function to construct an IFPACK object...
void set_output(int output)
Function to set output - controls level of information output by ML. 
Teuchos::ParameterList ML_parameters
virtual void setup_trilinos_preconditioner(Epetra_CrsMatrix *epetra_matrix_pt)=0
Function to set up a specific Trilinos preconditioner. This is called by setup(...).