#include <ml_MultiLevelPreconditioner.h>
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 ML * | GetML (const int WhichML=-1) const |
Returns a pointer to the internally stored ml pointer. | |
bool | SolvingMaxwell () const |
const ML_Aggregate * | GetML_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). | |
MultiLevelPreconditioner & | operator= (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_ |
ML * | flt_ml_ |
ML_Aggregate * | flt_agg_ |
double | RateOfConvergence_ |
ML * | ml_ |
Pointer to ML_Struct. | |
ML_Comm * | ml_comm_ |
ML communicator, convenient to have separately from ml_,. | |
ML_Aggregate * | agg_ |
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_Operator * | TtATMatrixML_ |
T^T A T Matrix for use with Maxwell. | |
bool | UseNodeMatrixForSmoother_ |
bool | CreatedNodeMatrix_ |
ML_Operator * | ML_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_Operator * | TMatrixML_ |
ML_Operator * | TMatrixTransposeML_ |
ML_Operator ** | Tmat_array |
ML_Operator ** | Tmat_trans_array |
ML_Operator ** | MassMatrix_array |
ML_Operator ** | CurlCurlMatrix_array |
ML * | ml_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. |
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:
--enable-epetra
--enable-teuchos
The following option is suggested:
--enable-amesos
--enable-ifpack
Some part of this class needs the following options:
--enable-aztecoo
--enable-anasazi
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:
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.
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.
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.
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] |
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:
"adaptive: enable"
== true
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] |
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.
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.
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.
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.
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-SeidelMLS
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-Seidelblock
Gauss-Seidelsymmetric
block Gauss-SeidelMLS
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 | |||
) |
bool ML_Epetra::MultiLevelPreconditioner::AnalyzeMemory_ [private] |
double ML_Epetra::MultiLevelPreconditioner::ApplicationTime_ [private] |
const Epetra_Comm* ML_Epetra::MultiLevelPreconditioner::Comm_ [private] |
double ML_Epetra::MultiLevelPreconditioner::ConstructionTime_ [private] |
bool ML_Epetra::MultiLevelPreconditioner::CreatedEdgeMatrix_ [private] |
bool ML_Epetra::MultiLevelPreconditioner::CreatedML_Kn_ [private] |
bool ML_Epetra::MultiLevelPreconditioner::CreatedNodeMatrix_ [private] |
bool ML_Epetra::MultiLevelPreconditioner::CreatedTMatrix_ [private] |
const Epetra_RowMatrix* ML_Epetra::MultiLevelPreconditioner::CurlCurlMatrix_ [private] |
EpetraExt::CrsMatrix_SolverMap ML_Epetra::MultiLevelPreconditioner::CurlCurlMatrixColMapTrans_ [private] |
int ML_Epetra::MultiLevelPreconditioner::CycleApplications_ [private] |
const Epetra_Map* ML_Epetra::MultiLevelPreconditioner::DomainMap_ [private] |
void ** ML_Epetra::MultiLevelPreconditioner::edge_args_ [private] |
const Epetra_RowMatrix* ML_Epetra::MultiLevelPreconditioner::EdgeMatrix_ [private] |
char ML_Epetra::MultiLevelPreconditioner::ErrorMsg_[80] [private] |
bool ML_Epetra::MultiLevelPreconditioner::FirstApplication_ [private] |
double ML_Epetra::MultiLevelPreconditioner::FirstApplicationTime_ [private] |
ML* ML_Epetra::MultiLevelPreconditioner::flt_ml_ [private] |
std::vector<double> ML_Epetra::MultiLevelPreconditioner::flt_NullSpace_ [private] |
char* ML_Epetra::MultiLevelPreconditioner::Label_ [private] |
std::vector<int> ML_Epetra::MultiLevelPreconditioner::LevelID_ [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] |
int ML_Epetra::MultiLevelPreconditioner::MaxLevels_ [private] |
int ML_Epetra::MultiLevelPreconditioner::memory_[ML_MEM_SIZE] [private] |
ML* ML_Epetra::MultiLevelPreconditioner::ml_ [private] |
ML_Comm* ML_Epetra::MultiLevelPreconditioner::ml_comm_ [private] |
ML* ML_Epetra::MultiLevelPreconditioner::ml_nodes_ [private] |
std::string ML_Epetra::MultiLevelPreconditioner::mlpLabel_ [private] |
void** ML_Epetra::MultiLevelPreconditioner::nodal_args_ [private] |
const Epetra_RowMatrix* ML_Epetra::MultiLevelPreconditioner::NodeMatrix_ [private] |
EpetraExt::CrsMatrix_SolverMap ML_Epetra::MultiLevelPreconditioner::NodeMatrixColMapTrans_ [private] |
double* ML_Epetra::MultiLevelPreconditioner::NullSpaceToFree_ [private] |
int ML_Epetra::MultiLevelPreconditioner::NumApplications_ [private] |
int ML_Epetra::MultiLevelPreconditioner::NumConstructions_ [private] |
int ML_Epetra::MultiLevelPreconditioner::NumLevels_ [private] |
int ML_Epetra::MultiLevelPreconditioner::NumPDEEqns_ [private] |
Teuchos::ParameterList ML_Epetra::MultiLevelPreconditioner::OutputList_ [private] |
bool ML_Epetra::MultiLevelPreconditioner::ownership_ [private] |
std::string ML_Epetra::MultiLevelPreconditioner::PrintMsg_ [private] |
int ML_Epetra::MultiLevelPreconditioner::ProcConfig_[AZ_PROC_SIZE] [private] |
int ML_Epetra::MultiLevelPreconditioner::profileIterations_ [private] |
const Epetra_Map* ML_Epetra::MultiLevelPreconditioner::RangeMap_ [private] |
double ML_Epetra::MultiLevelPreconditioner::RateOfConvergence_ [private] |
const Epetra_RowMatrix* ML_Epetra::MultiLevelPreconditioner::RowMatrix_ [private] |
Epetra_CrsMatrix* ML_Epetra::MultiLevelPreconditioner::RowMatrixAllocated_ [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] |
bool ML_Epetra::MultiLevelPreconditioner::SolvingMaxwell_ [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] |
bool ML_Epetra::MultiLevelPreconditioner::verbose_ [private] |
bool ML_Epetra::MultiLevelPreconditioner::ZeroStartingSolution_ [private] |