ML_Epetra::MultiLevelPreconditioner Class Reference

MultiLevelPreconditioner: a class to define black-box multilevel preconditioners using aggregation methods. More...

#include <ml_MultiLevelPreconditioner.h>

Collaboration diagram for ML_Epetra::MultiLevelPreconditioner:

Collaboration graph
[legend]

List of all members.

Public Member Functions

int DestroyPreconditioner ()
 Destroys all structures allocated in ComputePreconditioner() if the preconditioner has been computed.
const Epetra_RowMatrix & RowMatrix () const
 Returns a reference to the internally stored RowMatrix.
const Epetra_BlockMap & Map () const
 Returns a reference to RowMatrix->Map().
int NumGlobalRows () const
 Returns the global number of rows in the matrix.
int NumGlobalCols () const
 Returns the global number of columns in the matrix.
int NumMyRows () const
 Returns the local number of rows in the matrix.
int NumMyCols () const
 Returns the local number of columns in the matrix.
int PrintStencil2D (const int nx, const int ny, int NodeID=-1, const int EquationID=0)
 Prints the computational stencil for the specified row and equation (for 2D Cartesian grids only).
int AnalyzeHierarchy (const bool AnalyzeMatrices, const int PreCycles, const int PostCycles, const int MLCycles)
 Cheap analysis of each level matrix.
int AnalyzeSmoothers (const int NumPreCycles=1, const int NumPostCycles=1)
 Analyze the effect of each level's smoother on a random std::vector.
int AnalyzeCoarse ()
 Analyze the effect of the coarse solver on a random std::vector.
int AnalyzeCycle (const int NumCycles=1)
 Analyze the effect of the ML cycle on a random std::vector.
int TestSmoothers (Teuchos::ParameterList &InputList, const bool IsSymmetric=false)
 Test several smoothers on fine-level matrix.
int TestSmoothers (const bool IsSymmetric=false)
 Test several smoothers on fine-level matrix using the current parameters.
const MLGetML (const int WhichML=-1) const
 Returns a pointer to the internally stored ml pointer.
bool SolvingMaxwell () const
const ML_AggregateGetML_Aggregate () const
 Returns a pointer to the internally stored agg pointer.
int Visualize (bool VizAggre, bool VizPreSmoother, bool VizPostSmoother, bool VizCycle, int NumApplPreSmoother, int NumApplPostSmoother, int NumCycleSmoother)
 Generic interface to visualization methods.
int VisualizeAggregates ()
 Visualizes the shape of the aggregates.
int VisualizeSmoothers (int NumPrecCycles=1, int NumPostCycles=1)
 Visualizes the effect of smoothers on a random std::vector.
int VisualizeCycle (int NumCycles=1)
 Visualizes the effect of the ML cycle on a random std::vector.
int CreateLabel ()
void ReportTime ()
 MultiLevelPreconditioner (const Epetra_RowMatrix &RowMatrix, const bool ComputePrec=true)
 Constructs a MultiLevelPreconditioner with default values.
 MultiLevelPreconditioner (const Epetra_RowMatrix &RowMatrix, const Teuchos::ParameterList &List, const bool ComputePrec=true)
 Constructs a MultiLevelPreconditioner. Retrieves parameters from List.
 MultiLevelPreconditioner (ML_Operator *Operator, const Teuchos::ParameterList &List, const bool ComputePrec=true)
 Constructs a MultiLevelPreconditioner from an ML_Operator. Retrieves parameters from List.
 MultiLevelPreconditioner (const Epetra_RowMatrix &EdgeMatrix, const Epetra_RowMatrix &GradMatrix, const Epetra_RowMatrix &NodeMatrix, const Teuchos::ParameterList &List, const bool ComputePrec=true, const bool UseNodeMatrixForSmoother=false)
 MultiLevelPreconditioner constructor for Maxwell's equations.
 MultiLevelPreconditioner (const Epetra_RowMatrix &CurlCurlMatrix, const Epetra_RowMatrix &MassMatrix, const Epetra_RowMatrix &TMatrix, const Epetra_RowMatrix &NodeMatrix, const Teuchos::ParameterList &List, const bool ComputePrec=true)
 MultiLevelPreconditioner constructor for Maxwell's equations.
 MultiLevelPreconditioner (const Epetra_MsrMatrix &EdgeMatrix, ML_Operator *GradMatrix, AZ_MATRIX *NodeMatrix, int *proc_config, const Teuchos::ParameterList &List, const bool ComputePrec=true)
 MultiLevelPreconditioner constructor for Maxwell's equations.
virtual ~MultiLevelPreconditioner ()
 Destroys the preconditioner.
const char * Label () const
 Prints label associated to this object.
void PrintUnused () const
 Prints unused parameters in the input ParameterList on standard output.
void PrintUnused (std::ostream &os) const
 Prints unused parameters in the input ParameterList on the specified stream.
void PrintUnused (const int MyPID) const
 Prints unused parameters in the input ParameterList to std::cout on proc MyPID.
Teuchos::ParameterList & GetList ()
 Gets a reference to the internally stored parameters' list.
Teuchos::ParameterList GetOutputList ()
void PrintList ()
 Prints on std::cout the values of the internally stored parameter list.
int SetParameterList (const Teuchos::ParameterList &List)
 Copies List into the internally stored parameter list object.
int Apply (const Epetra_MultiVector &X, Epetra_MultiVector &Y) const
 Apply the inverse of the preconditioner to an Epetra_MultiVector (NOT AVAILABLE).
int ApplyInverse (const Epetra_MultiVector &X, Epetra_MultiVector &Y) const
 Apply the preconditioner to an Epetra_MultiVector X, puts the result in Y.
int ComputePreconditioner (const bool CheckFiltering=false)
 Computes the multilevel hierarchy.
int ReComputePreconditioner ()
 Recomputed the preconditioner (not implemented for Maxwell).
void Print (const char *whichHierarchy="main")
 Print the individual operators in the multigrid hierarchy.
int ComputeAdaptivePreconditioner (int TentativeNullSpaceSize, double *TentativeNullSpace)
int IsPreconditionerComputed () const
 Queries whether multilevel hierarchy has been computed or not.
int SetOwnership (bool ownership)
 Sets ownership.
int SetUseTranspose (bool UseTranspose)
 Sets use transpose (not implemented).
double NormInf () const
 Returns the infinity norm (not implemented).
bool UseTranspose () const
 Returns the current UseTranspose setting.
bool HasNormInf () const
 Returns true if the this object can provide an approximate Inf-norm, false otherwise.
const Epetra_Comm & Comm () const
 Returns a pointer to the Epetra_Comm communicator associated with this operator.
const Epetra_Map & OperatorDomainMap () const
 Returns the Epetra_Map object associated with the domain of this operator.
const Epetra_Map & OperatorRangeMap () const
 Returns the Epetra_Map object associated with the range of this operator.

Private Member Functions

 MultiLevelPreconditioner (const MultiLevelPreconditioner &rhs)
 Copy constructor (NOT DEFINED).
MultiLevelPreconditioneroperator= (const MultiLevelPreconditioner &rhs)
 operator = (NOT DEFINED)
int Initialize ()
 Initializes object with defauls values.
int SetSmoothers ()
 Sets smoothers.
int SetCoarse ()
 Sets coarse level solvers.
int SetAggregation ()
 Sets aggregation schemes.
int SetPreconditioner ()
 Sets preconditioner type (usually, V-cycle).
int SetNullSpace ()
 Sets the null space for non-Maxwell problems.
void CheckNullSpace ()
 Checks correctness of null space (discrete gradient) for Maxwell problems.
void Apply_BCsToGradient (const Epetra_RowMatrix &EdgeMatrix, const Epetra_RowMatrix &T)
 Applies boundary conditions to gradient matrix. (Maxwell's equations).
Epetra_RowMatrix * ModifyEpetraMatrixColMap (const Epetra_RowMatrix &A, EpetraExt::CrsMatrix_SolverMap &transform, const char *matrixName)
 Transforms Epetra matrix column map (if necessary) to be compatible with.
int SetSmoothingDamping ()
 Sets prolongator smoother parameters.
int SetSmoothingDampingClassic ()
 Sets damping parameter for classical smoothed aggregation.
int CreateAuxiliaryMatrixCrs (Epetra_FECrsMatrix *&FakeMatrix)
int CreateAuxiliaryMatrixVbr (Epetra_VbrMatrix *&FakeMatrix)
int SetupCoordinates ()
void PrintMem (char *fmt, int size, int, int)
void PrintMemoryUsage ()
int SetFiltering ()
void RandomAndZero (double *, double *, int)
bool CheckPreconditionerKrylov ()
 Checks whether the previously computed preconditioner is still valuable for the newly available linear system.
void VectorNorms (double *, int, double *, double *)

Private Attributes

Epetra_CrsMatrix * RowMatrixAllocated_
bool AnalyzeMemory_
int memory_ [ML_MEM_SIZE]
std::vector< double > flt_NullSpace_
MLflt_ml_
ML_Aggregateflt_agg_
double RateOfConvergence_
MLml_
 Pointer to ML_Struct.
ML_Comm * ml_comm_
 ML communicator, convenient to have separately from ml_,.
ML_Aggregateagg_
 ML_Aggregate, contains aggregate information.
char * Label_
 Label for this object.
std::string mlpLabel_
 User-provided label for identifying preconditioner ctor/dtor, in the case.
const Epetra_RowMatrix * RowMatrix_
 pointer to linear system matrix
bool IsComputePreconditionerOK_
 specifies whether a hierarchy already exists or not.
int NumLevels_
 Number of levels.
const Epetra_Map * DomainMap_
 Domain Map.
const Epetra_Map * RangeMap_
 Range Map.
const Epetra_Comm * Comm_
 Epetra communicator object.
bool ownership_
int ProcConfig_ [AZ_PROC_SIZE]
 proc_config for Aztec smoothers
Teuchos::RCP< std::vector< int > > SmootherOptions_
 options for Aztec smoothers
Teuchos::RCP< std::vector
< double > > 
SmootherParams_
 params for Aztec smoothers
double SmootherStatus_ [AZ_STATUS_SIZE]
 status for Aztec smoothers
Teuchos::ParameterList List_
 List containing all input parameters.
Teuchos::ParameterList OutputList_
 List containing all output parameters.
int MaxLevels_
 Maximum number of levels.
int CycleApplications_
 Number of applications of the ML cycle.
bool ZeroStartingSolution_
 If true, zero starting solution is used in the application of the cycle.
std::vector< int > LevelID_
 Integer array used to easily handle ML_INCREASING and ML_DECREASING.
double * NullSpaceToFree_
 If not NULL, contains the allocated null space std::vector.
std::string PrintMsg_
 all std::cout's have this prefix (default'd in Initialize() )
char ErrorMsg_ [80]
 all std::cerr's have this prefix (default'd in Initialize() )
bool verbose_
 true if information has to be printed on this process
int NumPDEEqns_
 Number of PDE equations.
int profileIterations_
 Number of iterations to use in profiling.
bool SolvingMaxwell_
 true if Maxwell equations are used
const Epetra_RowMatrix * EdgeMatrix_
 Main matrix for Maxwell.
const Epetra_RowMatrix * CurlCurlMatrix_
 stiffness and mass matrices
bool CreatedEdgeMatrix_
 true if we summed curl-curl and mass
const Epetra_RowMatrix * MassMatrix_
const Epetra_RowMatrix * NodeMatrix_
 aux matrix for Maxwell
ML_OperatorTtATMatrixML_
 T^T A T Matrix for use with Maxwell.
bool UseNodeMatrixForSmoother_
bool CreatedNodeMatrix_
ML_OperatorML_Kn_
 Auxiliary matrix used in intermediate step.
bool CreatedML_Kn_
const Epetra_RowMatrix * TMatrix_
 T matrix for Maxwell.
EpetraExt::CrsMatrix_SolverMap RowMatrixColMapTrans_
 Structure for compatibility between Epetra and ML column maps.
EpetraExt::CrsMatrix_SolverMap NodeMatrixColMapTrans_
 Structure for compatibility between Epetra and ML column maps.
EpetraExt::CrsMatrix_SolverMap TMatrixColMapTrans_
 Structure for compatibility between Epetra and ML column maps.
EpetraExt::CrsMatrix_SolverMap CurlCurlMatrixColMapTrans_
 Structure for compatibility between Epetra and ML column maps.
EpetraExt::CrsMatrix_SolverMap MassMatrixColMapTrans_
 Structure for compatibility between Epetra and ML column maps.
EpetraExt::CrsMatrix_SolverMap TtATMatrixColMapTrans_
 Structure for compatibility between Epetra and ML column maps.
bool CreatedTMatrix_
ML_OperatorTMatrixML_
ML_OperatorTMatrixTransposeML_
ML_Operator ** Tmat_array
ML_Operator ** Tmat_trans_array
ML_Operator ** MassMatrix_array
ML_Operator ** CurlCurlMatrix_array
MLml_nodes_
 Auxiliary ML structure for Maxwell's equations.
void ** nodal_args_
void ** edge_args_
int NumApplications_
 Number of applications.
double ApplicationTime_
 CPU time for all applications of the preconditioner.
bool FirstApplication_
double FirstApplicationTime_
int NumConstructions_
 Number of construction phases.
double ConstructionTime_
 CPU time for construction of the preconditioner.


Detailed Description

Class ML_Epetra::MultiLevelPreconditioner defined black-box algebraic multilevel preconditioners of matrices defined as Epetra_RowMatrix derived objects. The resulting preconditioner can be used in AztecOO, and in any other solver that accepts Epetra_Operator derived objects, and apply the action of the given Epetra_Operator using ApplyInverse().

Please refer to the user's guide for a detailed introduction to this class, examples, and description of input parameters.

This file requires ML to be configured with the following options:

The following option is suggested:

Some part of this class needs the following options:

It is important to note that ML is more restrictive than Epetra for the definition of maps. It is required that RowMatrixRowMap() is equal to OperatorRangeMap(). This is because ML needs to perform matrix-stdvector product, as well as getrow() functions, on the same data distribution.

Also, for square matrices, OperatorDomainMap() must be as OperatorRangeMap().

Several examples are provided in the examples subdirectories:

Note:
Namespace ML_Epetra contains another Epetra_Operator derived class, ML_Epetra::MultiLevelOperator.
  • you should use MultiLevelOperator when your code already defines the required ML objects, with the optimal choice of parameters, and you just want to wrap the already defined ML preconditioners for AztecOO problems;
  • you should use MultiLevelPreconditioner when you have an Epetra_RowMatrix, and you don't want to code the conversion to ML_Operator, the creation of the hierarchy and the aggregates, and/or you want to experiment various combinations of the parameters, simply changing some parameters in a Teuchos::ParameterList.
Defaults parameters can be specified using function SetDefaults().

Author:
Marzio Sala, SNL 9214

Constructor & Destructor Documentation

MultiLevelPreconditioner::MultiLevelPreconditioner ( const Epetra_RowMatrix &  RowMatrix,
const bool  ComputePrec = true 
)

ML_Epetra::MultiLevelPreconditioner::MultiLevelPreconditioner ( const Epetra_RowMatrix &  RowMatrix,
const Teuchos::ParameterList &  List,
const bool  ComputePrec = true 
)

ML_Epetra::MultiLevelPreconditioner::MultiLevelPreconditioner ( ML_Operator Operator,
const Teuchos::ParameterList &  List,
const bool  ComputePrec = true 
)

ML_Epetra::MultiLevelPreconditioner::MultiLevelPreconditioner ( const Epetra_RowMatrix &  EdgeMatrix,
const Epetra_RowMatrix &  GradMatrix,
const Epetra_RowMatrix &  NodeMatrix,
const Teuchos::ParameterList &  List,
const bool  ComputePrec = true,
const bool  UseNodeMatrixForSmoother = false 
)

Takes the stiffness and mass terms of the matrix combined.

Parameters:
EdgeMatrix - (In) Linear matrix to be solved.
GradMatrix - (In) Node-to-edge connectivity matrix, a.k.a, topological gradient
NodeMatrix - (In) Auxiliary nodal finite element matrix
List - (In) Teuchos parameter list containing solver options.
ComputePrec - (In) Optional argument that specifies whether to create preconditioner immediately. Default is true.
UseNodeMatrixForSmoother - (In) Use the nodal matrix for the nodal portion of the Hipmair smoother (if used).

ML_Epetra::MultiLevelPreconditioner::MultiLevelPreconditioner ( const Epetra_RowMatrix &  CurlCurlMatrix,
const Epetra_RowMatrix &  MassMatrix,
const Epetra_RowMatrix &  TMatrix,
const Epetra_RowMatrix &  NodeMatrix,
const Teuchos::ParameterList &  List,
const bool  ComputePrec = true 
)

Takes the stiffness and mass terms of the matrix separately.

Parameters:
CurlCurlMatrix - (In) The curl-curl (stiffness) term of the matrix to be solved.
MassMatrix - (In) The mass term of the matrix to be solved.
GradMatrix - (In) Node-to-edge connectivity matrix, a.k.a, topological gradient
NodeMatrix - (In) Auxiliary nodal finite element matrix
List - (In) Teuchos parameter list containing solver options.
ComputePrec - (In) Optional argument that specifies whether to create preconditioner immediately. Default is true.

ML_Epetra::MultiLevelPreconditioner::MultiLevelPreconditioner ( const Epetra_MsrMatrix &  EdgeMatrix,
ML_Operator GradMatrix,
AZ_MATRIX *  NodeMatrix,
int *  proc_config,
const Teuchos::ParameterList &  List,
const bool  ComputePrec = true 
)

Takes the stiffness and mass terms of the matrix combined. The edge matrix is of type Epetra_Msr, a light-weight wrapper for old-style Aztec MSR matrices. This is intended as transition code for Aztec users.

Parameters:
EdgeMatrix - (In) Linear matrix to be solved.
GradMatrix - (In) Node-to-edge connectivity matrix, a.k.a, topological gradient
NodeMatrix - (In) Auxiliary nodal finite element matrix
proc_config - (In) Aztec array specifying processor layout.
List - (In) Teuchos parameter list containing solver options.
ComputePrec - (In) Optional argument that specifies whether to create preconditioner immediately. Default is true.

virtual ML_Epetra::MultiLevelPreconditioner::~MultiLevelPreconditioner (  )  [inline, virtual]

ML_Epetra::MultiLevelPreconditioner::MultiLevelPreconditioner ( const MultiLevelPreconditioner rhs  )  [inline, private]


Member Function Documentation

int MultiLevelPreconditioner::AnalyzeCoarse (  ) 

int MultiLevelPreconditioner::AnalyzeCycle ( const int  NumCycles = 1  ) 

int MultiLevelPreconditioner::AnalyzeHierarchy ( const bool  AnalyzeMatrices,
const int  PreCycles,
const int  PostCycles,
const int  MLCycles 
)

int MultiLevelPreconditioner::AnalyzeSmoothers ( const int  NumPreCycles = 1,
const int  NumPostCycles = 1 
)

int ML_Epetra::MultiLevelPreconditioner::Apply ( const Epetra_MultiVector &  X,
Epetra_MultiVector &  Y 
) const [inline]

void MultiLevelPreconditioner::Apply_BCsToGradient ( const Epetra_RowMatrix &  EdgeMatrix,
const Epetra_RowMatrix &  T 
) [private]

int MultiLevelPreconditioner::ApplyInverse ( const Epetra_MultiVector &  X,
Epetra_MultiVector &  Y 
) const

void MultiLevelPreconditioner::CheckNullSpace (  )  [private]

The curl-curl and mass matrices must be supplied separately.

bool MultiLevelPreconditioner::CheckPreconditionerKrylov (  )  [private]

Used only when "adaptive: enable" is true, and ComputePreconditioner(true) is called.

const Epetra_Comm& ML_Epetra::MultiLevelPreconditioner::Comm (  )  const [inline]

int MultiLevelPreconditioner::ComputeAdaptivePreconditioner ( int  TentativeNullSpaceSize,
double *  TentativeNullSpace 
)

int MultiLevelPreconditioner::ComputePreconditioner ( const bool  CheckFiltering = false  ) 

Computes the multilevel hierarchy. This function retrives the user's defines parameters (as specified in the input ParameterList), or takes default values otherwise, and creates the ML objects for aggregation and hierarchy. Allocated data can be freed used DestroyPreconditioner(), or by the destructor,

In a Newton-type procedure, several linear systems have to be solved, Often, these systems are not too different. In this case, it might be convenient to keep the already computed preconditioner (with hierarchy, coarse solver, smoothers), and use it to precondition the next linear system. ML offers a way to determine whether the already available preconditioner is "good enough" for the next linear system. The user should proceed as follows:

  • define "adaptive: enable" == true
  • solve the first linear system. ML tries to estimate the rate of convergence, and record it;
  • change the values of the linear system matrix (but NOT its structure)
  • compute the new preconditioner as ComputePreconditioner(true) It is supposed that the pointer to the Epetra_RowMatrix remains constant. Currently, it is not possible to modify this pointer (other than creating a new preconditioner)

int MultiLevelPreconditioner::CreateAuxiliaryMatrixCrs ( Epetra_FECrsMatrix *&  FakeMatrix  )  [private]

int MultiLevelPreconditioner::CreateAuxiliaryMatrixVbr ( Epetra_VbrMatrix *&  FakeMatrix  )  [private]

int MultiLevelPreconditioner::CreateLabel (  ) 

Creates label for this object (printed out by AztecOO). This does not allocate/reallocate any memory.

int MultiLevelPreconditioner::DestroyPreconditioner (  ) 

Teuchos::ParameterList& ML_Epetra::MultiLevelPreconditioner::GetList (  )  [inline]

const ML* ML_Epetra::MultiLevelPreconditioner::GetML ( const int  WhichML = -1  )  const [inline]

const ML_Aggregate* ML_Epetra::MultiLevelPreconditioner::GetML_Aggregate (  )  const [inline]

Teuchos::ParameterList ML_Epetra::MultiLevelPreconditioner::GetOutputList (  )  [inline]

bool ML_Epetra::MultiLevelPreconditioner::HasNormInf (  )  const [inline]

int MultiLevelPreconditioner::Initialize (  )  [private]

  • set to 0 all allocatable pointers
    • put default values in Aztec vectors.
    • zero-out timing

int ML_Epetra::MultiLevelPreconditioner::IsPreconditionerComputed (  )  const [inline]

const char* ML_Epetra::MultiLevelPreconditioner::Label (  )  const [inline]

const Epetra_BlockMap& ML_Epetra::MultiLevelPreconditioner::Map (  )  const [inline]

Epetra_RowMatrix * MultiLevelPreconditioner::ModifyEpetraMatrixColMap ( const Epetra_RowMatrix &  A,
EpetraExt::CrsMatrix_SolverMap &  transform,
const char *  matrixName 
) [private]

how ML handles column indices. Any matrix that cannot be dynamically cast to an Epetra_CrsMatrix will not be changed.

Parameters:
A - (In) Matrix that is to be transformed.
transform - (In) EpetraExt widget that does the transformation.
matrixName - (In) Optional label for the incoming matrix.

double ML_Epetra::MultiLevelPreconditioner::NormInf (  )  const [inline]

int ML_Epetra::MultiLevelPreconditioner::NumGlobalCols (  )  const [inline]

int ML_Epetra::MultiLevelPreconditioner::NumGlobalRows (  )  const [inline]

int ML_Epetra::MultiLevelPreconditioner::NumMyCols (  )  const [inline]

int ML_Epetra::MultiLevelPreconditioner::NumMyRows (  )  const [inline]

MultiLevelPreconditioner& ML_Epetra::MultiLevelPreconditioner::operator= ( const MultiLevelPreconditioner rhs  )  [inline, private]

const Epetra_Map& ML_Epetra::MultiLevelPreconditioner::OperatorDomainMap (  )  const [inline]

const Epetra_Map& ML_Epetra::MultiLevelPreconditioner::OperatorRangeMap (  )  const [inline]

void MultiLevelPreconditioner::Print ( const char *  whichHierarchy = "main"  ) 

Print the individual operators in the multigrid hierarchy.

Parameters:
whichHierarchy (In) By default, this method prints the main multigrid hierarchy. If solving Maxwell's equations, and this is set to anything other than "main", the auxiliary node hierarchy will print.

void MultiLevelPreconditioner::PrintList (  ) 

void MultiLevelPreconditioner::PrintMem ( char *  fmt,
int  size,
int  sum,
int  max 
) [private]

void ML_Epetra::MultiLevelPreconditioner::PrintMemoryUsage (  )  [private]

int MultiLevelPreconditioner::PrintStencil2D ( const int  nx,
const int  ny,
int  NodeID = -1,
const int  EquationID = 0 
)

For problems defined on 2D Cartesian grids (with node numbering increasing along the x-axis), this function prints out the stencil in an intelligible form.

Parameters:
nx (In) : number of nodes along the X-axis
ny (In) : number of nodes along the Y-axis
NodeID (In) : (local) ID of node that will be used to print the stencil. If set to -1, the code will automatically chose an internal node. Default: -1.
EquationID (In) : ID of the equation that will be used to print the stencil (default = 0)

void MultiLevelPreconditioner::PrintUnused ( const int  MyPID  )  const

Mispelled parameters are simply ignored. Therefore, it is often the best choice to print out the parameters that have not been used in the construction phase.

  • Parameters:
    MyPID (In) : ID of process that should print the unused parameters.

void ML_Epetra::MultiLevelPreconditioner::PrintUnused ( std::ostream &  os  )  const [inline]

void ML_Epetra::MultiLevelPreconditioner::PrintUnused (  )  const [inline]

void MultiLevelPreconditioner::RandomAndZero ( double *  tmp_rhs,
double *  tmp_sol,
int  size 
) [private]

int MultiLevelPreconditioner::ReComputePreconditioner (  ) 

void MultiLevelPreconditioner::ReportTime (  ) 

const Epetra_RowMatrix& ML_Epetra::MultiLevelPreconditioner::RowMatrix (  )  const [inline]

int MultiLevelPreconditioner::SetAggregation (  )  [private]

Values for "aggregation: type"

  • Uncoupled-MIS
  • METIS
  • ParMETIS
  • Uncoupled
  • Coupled (deprecated)
  • MIS
  • user
  • greedy

int MultiLevelPreconditioner::SetCoarse (  )  [private]

Values for "coarse: type"

  • Jacobi
  • Gauss-Seidel
  • symmetric Gauss-Seidel
  • MLS
  • Hiptmair (Maxwell only)
  • SuperLU (deprecated)
  • Amesos-KLU
  • Amesos-UMFPACK
  • Amesos-Superludist
  • Amesos-Superlu
  • Amesos-MUMPS
  • Amesos-ScALAPACK (under development in Amesos)
  • do-nothing

int MultiLevelPreconditioner::SetFiltering (  )  [private]

int MultiLevelPreconditioner::SetNullSpace (  )  [private]

int ML_Epetra::MultiLevelPreconditioner::SetOwnership ( bool  ownership  )  [inline]

int ML_Epetra::MultiLevelPreconditioner::SetParameterList ( const Teuchos::ParameterList &  List  ) 

int MultiLevelPreconditioner::SetPreconditioner (  )  [private]

int MultiLevelPreconditioner::SetSmoothers (  )  [private]

Values for "smoother: type"

  • Jacobi
  • Gauss-Seidel
  • symmetric Gauss-Seidel
  • block Gauss-Seidel
  • symmetric block Gauss-Seidel
  • MLS
  • Chebyshev
  • self
  • Aztec
  • IFPACK
  • Hiptmair
  • ParaSails
  • user-defined
  • do-nothing

int MultiLevelPreconditioner::SetSmoothingDamping (  )  [private]

int MultiLevelPreconditioner::SetSmoothingDampingClassic (  )  [private]

int MultiLevelPreconditioner::SetupCoordinates (  )  [private]

int ML_Epetra::MultiLevelPreconditioner::SetUseTranspose ( bool  UseTranspose  )  [inline]

bool ML_Epetra::MultiLevelPreconditioner::SolvingMaxwell (  )  const [inline]

int ML_Epetra::MultiLevelPreconditioner::TestSmoothers ( const bool  IsSymmetric = false  )  [inline]

int MultiLevelPreconditioner::TestSmoothers ( Teuchos::ParameterList &  InputList,
const bool  IsSymmetric = false 
)

bool ML_Epetra::MultiLevelPreconditioner::UseTranspose (  )  const [inline]

void MultiLevelPreconditioner::VectorNorms ( double *  vector,
int  size,
double *  L_inf,
double *  L_2 
) [private]

int MultiLevelPreconditioner::Visualize ( bool  VizAggre,
bool  VizPreSmoother,
bool  VizPostSmoother,
bool  VizCycle,
int  NumApplPreSmoother,
int  NumApplPostSmoother,
int  NumCycleSmoother 
)

int MultiLevelPreconditioner::VisualizeAggregates (  ) 

int MultiLevelPreconditioner::VisualizeCycle ( int  NumCycles = 1  ) 

int MultiLevelPreconditioner::VisualizeSmoothers ( int  NumPrecCycles = 1,
int  NumPostCycles = 1 
)


Member Data Documentation

const Epetra_Comm* ML_Epetra::MultiLevelPreconditioner::Comm_ [private]

const Epetra_RowMatrix* ML_Epetra::MultiLevelPreconditioner::CurlCurlMatrix_ [private]

EpetraExt::CrsMatrix_SolverMap ML_Epetra::MultiLevelPreconditioner::CurlCurlMatrixColMapTrans_ [private]

const Epetra_RowMatrix* ML_Epetra::MultiLevelPreconditioner::EdgeMatrix_ [private]

Integer array, of size MaxLevels_, that contain the ML level ID for the first logical level, and so on for all levels. The ML level ID of logical level L is LevelID_[L]. In this interface, all levels move from 0 to MaxLevels-1. ML's level for interface's level i is LevelID_[i]

Teuchos::ParameterList ML_Epetra::MultiLevelPreconditioner::List_ [private]

const Epetra_RowMatrix* ML_Epetra::MultiLevelPreconditioner::MassMatrix_ [private]

EpetraExt::CrsMatrix_SolverMap ML_Epetra::MultiLevelPreconditioner::MassMatrixColMapTrans_ [private]

const Epetra_RowMatrix* ML_Epetra::MultiLevelPreconditioner::NodeMatrix_ [private]

EpetraExt::CrsMatrix_SolverMap ML_Epetra::MultiLevelPreconditioner::NodeMatrixColMapTrans_ [private]

Teuchos::ParameterList ML_Epetra::MultiLevelPreconditioner::OutputList_ [private]

const Epetra_RowMatrix* ML_Epetra::MultiLevelPreconditioner::RowMatrix_ [private]

EpetraExt::CrsMatrix_SolverMap ML_Epetra::MultiLevelPreconditioner::RowMatrixColMapTrans_ [private]

Teuchos::RCP<std::vector<int> > ML_Epetra::MultiLevelPreconditioner::SmootherOptions_ [private]

Teuchos::RCP<std::vector<double> > ML_Epetra::MultiLevelPreconditioner::SmootherParams_ [private]

double ML_Epetra::MultiLevelPreconditioner::SmootherStatus_[AZ_STATUS_SIZE] [private]

const Epetra_RowMatrix* ML_Epetra::MultiLevelPreconditioner::TMatrix_ [private]

EpetraExt::CrsMatrix_SolverMap ML_Epetra::MultiLevelPreconditioner::TMatrixColMapTrans_ [private]

EpetraExt::CrsMatrix_SolverMap ML_Epetra::MultiLevelPreconditioner::TtATMatrixColMapTrans_ [private]


The documentation for this class was generated from the following files: