|
MueLu
Version of the Day
|
Provides methods to build a multigrid hierarchy and apply multigrid cycles. More...
#include <MueLu_Hierarchy_decl.hpp>
Classes | |
| struct | ConvData |
| Data struct for defining stopping criteria of multigrid iteration. More... | |
Private Types | |
| typedef Teuchos::ScalarTraits< SC > | STS |
| typedef STS::magnitudeType | MagnitudeType |
Set/Get Methods. | |
| template<class S2 , class LO2 , class GO2 , class N2 > | |
| class | Hierarchy |
| Xpetra::global_size_t | GetMaxCoarseSize () const |
| bool | GetImplicitTranspose () const |
| bool | GetFuseProlongationAndUpdate () const |
| void | SetMaxCoarseSize (Xpetra::global_size_t maxCoarseSize) |
| void | SetPRrebalance (bool doPRrebalance) |
| void | SetImplicitTranspose (const bool &implicit) |
| void | SetFuseProlongationAndUpdate (const bool &fuse) |
| void | AddLevel (const RCP< Level > &level) |
| Add a level at the end of the hierarchy. More... | |
| void | AddNewLevel () |
| Add a new level at the end of the hierarchy. More... | |
| RCP< Level > & | GetLevel (const int levelID=0) |
| Retrieve a certain level from hierarchy. More... | |
| int | GetNumLevels () const |
| int | GetGlobalNumLevels () const |
| MagnitudeType | GetRate () const |
| double | GetOperatorComplexity () const |
| double | GetSmootherComplexity () const |
| void | CheckLevel (Level &level, int levelID) |
| Helper function. More... | |
| void | SetMatvecParams (RCP< ParameterList > matvecParams) |
| bool | Setup (int coarseLevelID, const RCP< const FactoryManagerBase > fineLevelManager, const RCP< const FactoryManagerBase > coarseLevelManager, const RCP< const FactoryManagerBase > nextLevelManager=Teuchos::null) |
| Multi-level setup phase: build a new level of the hierarchy. More... | |
| void | Setup (const FactoryManagerBase &manager=FactoryManager(), int startLevel=0, int numDesiredLevels=GetDefaultMaxLevels()) |
| void | SetupRe () |
| void | Clear (int startLevel=0) |
| Clear impermanent data from previous setup. More... | |
| void | ExpertClear () |
| CycleType | GetCycle () const |
| Returns multigrid cycle type (supports VCYCLE and WCYCLE) More... | |
| void | SetCycle (CycleType Cycle) |
| Supports VCYCLE and WCYCLE types. More... | |
| void | SetProlongatorScalingFactor (double scalingFactor) |
| Specify damping factor alpha such that x = x + alpha*P*c, where c is the coarse grid correction. More... | |
| ReturnType | Iterate (const MultiVector &B, MultiVector &X, ConvData conv=ConvData(), bool InitialGuessIsZero=false, LO startLevel=0) |
| Apply the multigrid preconditioner. More... | |
| void | Write (const LO &start=-1, const LO &end=-1, const std::string &suffix="") |
| Print matrices in the multigrid hierarchy to file. More... | |
| static CycleType | GetDefaultCycle () |
| static bool | GetDefaultImplicitTranspose () |
| static bool | GetDefaultFuseProlongationAndUpdate () |
| static Xpetra::global_size_t | GetDefaultMaxCoarseSize () |
| static int | GetDefaultMaxLevels () |
| static bool | GetDefaultPRrebalance () |
| int | LastLevelID () const |
| void | DumpCurrentGraph () const |
Overridden from Teuchos::Describable | |
| Array< RCP< Level > > | Levels_ |
| Container for Level objects. More... | |
| Xpetra::global_size_t | maxCoarseSize_ |
| bool | implicitTranspose_ |
| bool | fuseProlongationAndUpdate_ |
| bool | doPRrebalance_ |
| bool | isPreconditioner_ |
| CycleType | Cycle_ |
| double | scalingFactor_ |
| Xpetra::UnderlyingLib | lib_ |
| std::string | description_ = "" |
| bool | isDumpingEnabled_ |
| Graph dumping. More... | |
| int | dumpLevel_ |
| std::string | dumpFile_ |
| MagnitudeType | rate_ |
| Convergece rate. More... | |
| Array< RCP< const FactoryManagerBase > > | levelManagers_ |
| int | sizeOfAllocatedLevelMultiVectors_ |
| Array< RCP< MultiVector > > | residual_ |
| Array< RCP< MultiVector > > | coarseRhs_ |
| Array< RCP< MultiVector > > | coarseX_ |
| Array< RCP< MultiVector > > | coarseImport_ |
| Array< RCP< MultiVector > > | coarseExport_ |
| Array< RCP< MultiVector > > | correction_ |
| std::string | description () const |
| Return a simple one-line description of this object. More... | |
| void | describe (Teuchos::FancyOStream &out, const VerbLevel verbLevel=Default) const |
| Print the Hierarchy with some verbosity level to a FancyOStream object. More... | |
| void | describe (Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel=Teuchos::VERB_HIGH) const |
| void | print (std::ostream &out=std::cout, const VerbLevel verbLevel=(MueLu::Parameters|MueLu::Statistics0)) const |
| void | IsPreconditioner (const bool flag) |
| void | EnableGraphDumping (const std::string &filename, int levelID=1) |
| void | setlib (Xpetra::UnderlyingLib inlib) |
| Xpetra::UnderlyingLib | lib () |
| void | ResetDescription () |
| void | AllocateLevelMultiVectors (int numvecs) |
| void | DeleteLevelMultiVectors () |
| Hierarchy (const Hierarchy &h) | |
| Copy constructor is not implemented. More... | |
| void | ReplaceCoordinateMap (Level &level) |
| const RCP< const FactoryManagerBase > & | GetLevelManager (const int levelID) const |
Constructors/Destructors | |
| Hierarchy () | |
| Default constructor. More... | |
| Hierarchy (const std::string &label) | |
| Constructor that labels the hierarchy. More... | |
| Hierarchy (const RCP< Matrix > &A) | |
| Constructor. More... | |
| Hierarchy (const RCP< Matrix > &A, const std::string &label) | |
| Constructor. More... | |
| virtual | ~Hierarchy () |
| Destructor. More... | |
Permanent storage | |
| void | Keep (const std::string &ename, const FactoryBase *factory=NoFactory::get()) |
| Call Level::Keep(ename, factory) for each level of the Hierarchy. More... | |
| void | Delete (const std::string &ename, const FactoryBase *factory=NoFactory::get()) |
| Call Level::Delete(ename, factory) for each level of the Hierarchy. More... | |
| void | AddKeepFlag (const std::string &ename, const FactoryBase *factory=NoFactory::get(), KeepType keep=MueLu::Keep) |
| Call Level::AddKeepFlag for each level of the Hierarchy. More... | |
| void | RemoveKeepFlag (const std::string &ename, const FactoryBase *factory, KeepType keep=MueLu::All) |
| Call Level::RemoveKeepFlag for each level of the Hierarchy. More... | |
Additional Inherited Members | |
Public Member Functions inherited from MueLu::BaseClass | |
| virtual | ~BaseClass () |
| Destructor. More... | |
Public Member Functions inherited from MueLu::VerboseObject | |
| VerboseObject () | |
| virtual | ~VerboseObject () |
| Destructor. More... | |
| VerbLevel | GetVerbLevel () const |
| Get the verbosity level. More... | |
| void | SetVerbLevel (const VerbLevel verbLevel) |
| Set the verbosity level of this object. More... | |
| int | GetProcRankVerbose () const |
| Get proc rank used for printing. Do not use this information for any other purpose. More... | |
| int | SetProcRankVerbose (int procRank) const |
| Set proc rank used for printing. More... | |
| bool | IsPrint (MsgType type, int thisProcRankOnly=-1) const |
| Find out whether we need to print out information for a specific message type. More... | |
| Teuchos::FancyOStream & | GetOStream (MsgType type, int thisProcRankOnly=0) const |
| Get an output stream for outputting the input message type. More... | |
| Teuchos::FancyOStream & | GetBlackHole () const |
Public Member Functions inherited from MueLu::Describable | |
| virtual | ~Describable () |
| Destructor. More... | |
| void | describe (Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel=Teuchos::Describable::verbLevel_default) const |
| Print the object with some verbosity level to an FancyOStream object. More... | |
| virtual std::string | ShortClassName () const |
| Return the class name of the object, without template parameters and without namespace. More... | |
Static Public Member Functions inherited from MueLu::VerboseObject | |
| static void | SetDefaultVerbLevel (const VerbLevel defaultVerbLevel) |
| Set the default (global) verbosity level. More... | |
| static VerbLevel | GetDefaultVerbLevel () |
| Get the default (global) verbosity level. More... | |
| static void | SetMueLuOStream (const Teuchos::RCP< Teuchos::FancyOStream > &mueluOStream) |
| static Teuchos::RCP< Teuchos::FancyOStream > | GetMueLuOStream () |
Provides methods to build a multigrid hierarchy and apply multigrid cycles.
Allows users to manually populate operators at different levels within a multigrid method and push them into the hierarchy via SetLevel() and/or to supply factories for automatically generating prolongators, restrictors, and coarse level discretizations. Additionally, this class contains an apply method that supports V and W cycles.
Definition at line 104 of file MueLu_Hierarchy_decl.hpp.
|
private |
Definition at line 108 of file MueLu_Hierarchy_decl.hpp.
|
private |
Definition at line 109 of file MueLu_Hierarchy_decl.hpp.
| MueLu::Hierarchy< Scalar, LocalOrdinal, GlobalOrdinal, Node >::Hierarchy |
Default constructor.
Definition at line 82 of file MueLu_Hierarchy_def.hpp.
| MueLu::Hierarchy< Scalar, LocalOrdinal, GlobalOrdinal, Node >::Hierarchy | ( | const std::string & | label | ) |
Constructor that labels the hierarchy.
Definition at line 93 of file MueLu_Hierarchy_def.hpp.
| MueLu::Hierarchy< Scalar, LocalOrdinal, GlobalOrdinal, Node >::Hierarchy | ( | const RCP< Matrix > & | A | ) |
Constructor.
Definition at line 101 of file MueLu_Hierarchy_def.hpp.
| MueLu::Hierarchy< Scalar, LocalOrdinal, GlobalOrdinal, Node >::Hierarchy | ( | const RCP< Matrix > & | A, |
| const std::string & | label | ||
| ) |
Constructor.
Definition at line 117 of file MueLu_Hierarchy_def.hpp.
|
inlinevirtual |
Destructor.
Definition at line 139 of file MueLu_Hierarchy_decl.hpp.
|
private |
Copy constructor is not implemented.
|
inlinestatic |
Definition at line 147 of file MueLu_Hierarchy_decl.hpp.
|
inlinestatic |
Definition at line 148 of file MueLu_Hierarchy_decl.hpp.
|
inlinestatic |
Definition at line 149 of file MueLu_Hierarchy_decl.hpp.
|
inlinestatic |
Definition at line 150 of file MueLu_Hierarchy_decl.hpp.
|
inlinestatic |
Definition at line 151 of file MueLu_Hierarchy_decl.hpp.
|
inlinestatic |
Definition at line 152 of file MueLu_Hierarchy_decl.hpp.
|
inline |
Definition at line 154 of file MueLu_Hierarchy_decl.hpp.
|
inline |
Definition at line 155 of file MueLu_Hierarchy_decl.hpp.
|
inline |
Definition at line 156 of file MueLu_Hierarchy_decl.hpp.
|
inline |
Definition at line 158 of file MueLu_Hierarchy_decl.hpp.
|
inline |
Definition at line 159 of file MueLu_Hierarchy_decl.hpp.
|
inline |
Definition at line 160 of file MueLu_Hierarchy_decl.hpp.
|
inline |
Definition at line 161 of file MueLu_Hierarchy_decl.hpp.
|
inlineprivate |
Definition at line 171 of file MueLu_Hierarchy_decl.hpp.
|
private |
Definition at line 1386 of file MueLu_Hierarchy_def.hpp.
| void MueLu::Hierarchy< Scalar, LocalOrdinal, GlobalOrdinal, Node >::AddLevel | ( | const RCP< Level > & | level | ) |
Add a level at the end of the hierarchy.
Definition at line 125 of file MueLu_Hierarchy_def.hpp.
| void MueLu::Hierarchy< Scalar, LocalOrdinal, GlobalOrdinal, Node >::AddNewLevel |
Add a new level at the end of the hierarchy.
Definition at line 142 of file MueLu_Hierarchy_def.hpp.
| RCP< Level > & MueLu::Hierarchy< Scalar, LocalOrdinal, GlobalOrdinal, Node >::GetLevel | ( | const int | levelID = 0 | ) |
Retrieve a certain level from hierarchy.
Definition at line 149 of file MueLu_Hierarchy_def.hpp.
| int MueLu::Hierarchy< Scalar, LocalOrdinal, GlobalOrdinal, Node >::GetNumLevels |
Definition at line 156 of file MueLu_Hierarchy_def.hpp.
| int MueLu::Hierarchy< Scalar, LocalOrdinal, GlobalOrdinal, Node >::GetGlobalNumLevels |
Definition at line 161 of file MueLu_Hierarchy_def.hpp.
|
inline |
Definition at line 188 of file MueLu_Hierarchy_decl.hpp.
| double MueLu::Hierarchy< Scalar, LocalOrdinal, GlobalOrdinal, Node >::GetOperatorComplexity |
Definition at line 173 of file MueLu_Hierarchy_def.hpp.
| double MueLu::Hierarchy< Scalar, LocalOrdinal, GlobalOrdinal, Node >::GetSmootherComplexity |
Definition at line 196 of file MueLu_Hierarchy_def.hpp.
| void MueLu::Hierarchy< Scalar, LocalOrdinal, GlobalOrdinal, Node >::CheckLevel | ( | Level & | level, |
| int | levelID | ||
| ) |
Helper function.
Definition at line 236 of file MueLu_Hierarchy_def.hpp.
| void MueLu::Hierarchy< Scalar, LocalOrdinal, GlobalOrdinal, Node >::SetMatvecParams | ( | RCP< ParameterList > | matvecParams | ) |
Definition at line 246 of file MueLu_Hierarchy_def.hpp.
| bool MueLu::Hierarchy< Scalar, LocalOrdinal, GlobalOrdinal, Node >::Setup | ( | int | coarseLevelID, |
| const RCP< const FactoryManagerBase > | fineLevelManager, | ||
| const RCP< const FactoryManagerBase > | coarseLevelManager, | ||
| const RCP< const FactoryManagerBase > | nextLevelManager = Teuchos::null |
||
| ) |
Multi-level setup phase: build a new level of the hierarchy.
This method is aimed to be used in a loop building the hierarchy level by level. See Hierarchy::Setup(manager, startLevel, numDesiredLevels) for an example of usage.
| coarseLevelID | ID of the level to be built. |
| fineLevelManager | defines how to build missing data of the fineLevel (example: aggregates) |
| coarseLevelManager | defines how to build the level |
| nextLevelManager | defines how the next coarse level will be built. This is used to post corresponding request before building the coarse level to keep useful data. |
CoarseLevel is considered to be the last level if:
Pre-condition: FineLevel:
Post-condition: FineLevel:
Definition at line 290 of file MueLu_Hierarchy_def.hpp.
| void MueLu::Hierarchy< Scalar, LocalOrdinal, GlobalOrdinal, Node >::Setup | ( | const FactoryManagerBase & | manager = FactoryManager(), |
| int | startLevel = 0, |
||
| int | numDesiredLevels = GetDefaultMaxLevels() |
||
| ) |
Definition at line 566 of file MueLu_Hierarchy_def.hpp.
| void MueLu::Hierarchy< Scalar, LocalOrdinal, GlobalOrdinal, Node >::SetupRe |
Definition at line 526 of file MueLu_Hierarchy_def.hpp.
| void MueLu::Hierarchy< Scalar, LocalOrdinal, GlobalOrdinal, Node >::Clear | ( | int | startLevel = 0 | ) |
Clear impermanent data from previous setup.
Definition at line 638 of file MueLu_Hierarchy_def.hpp.
| void MueLu::Hierarchy< Scalar, LocalOrdinal, GlobalOrdinal, Node >::ExpertClear |
Definition at line 647 of file MueLu_Hierarchy_def.hpp.
|
inline |
Returns multigrid cycle type (supports VCYCLE and WCYCLE)
Definition at line 252 of file MueLu_Hierarchy_decl.hpp.
|
inline |
Supports VCYCLE and WCYCLE types.
Definition at line 255 of file MueLu_Hierarchy_decl.hpp.
|
inline |
Specify damping factor alpha such that x = x + alpha*P*c, where c is the coarse grid correction.
Definition at line 258 of file MueLu_Hierarchy_decl.hpp.
| ReturnType MueLu::Hierarchy< Scalar, LocalOrdinal, GlobalOrdinal, Node >::Iterate | ( | const MultiVector & | B, |
| MultiVector & | X, | ||
| ConvData | conv = ConvData(), |
||
| bool | InitialGuessIsZero = false, |
||
| LO | startLevel = 0 |
||
| ) |
Apply the multigrid preconditioner.
In theory, more general cycle types than just V- and W-cycles are possible. However, the enumerated type CycleType would have to be extended.
| B | right-hand side of linear problem |
| X | initial and final (approximate) solution of linear problem |
| ConvData | struct which stores convergence criteria (maximum number of multigrid iterations or stopping tolerance) |
| InitialGuessIsZero | Indicates whether the initial guess is zero |
| startLevel | index of starting level to build multigrid hierarchy (default = 0) |
Definition at line 859 of file MueLu_Hierarchy_def.hpp.
| void MueLu::Hierarchy< Scalar, LocalOrdinal, GlobalOrdinal, Node >::Write | ( | const LO & | start = -1, |
| const LO & | end = -1, |
||
| const std::string & | suffix = "" |
||
| ) |
Print matrices in the multigrid hierarchy to file.
| [in] | start | start level |
| [in] | end | end level |
Default behavior is to print system and transfer matrices from the entire hierarchy. Files are named "A_0.m", "P_1.m", "R_1.m", etc, and are in matrix market coordinate format.
Definition at line 1167 of file MueLu_Hierarchy_def.hpp.
| void MueLu::Hierarchy< Scalar, LocalOrdinal, GlobalOrdinal, Node >::Keep | ( | const std::string & | ename, |
| const FactoryBase * | factory = NoFactory::get() |
||
| ) |
Call Level::Keep(ename, factory) for each level of the Hierarchy.
Definition at line 1196 of file MueLu_Hierarchy_def.hpp.
| void MueLu::Hierarchy< Scalar, LocalOrdinal, GlobalOrdinal, Node >::Delete | ( | const std::string & | ename, |
| const FactoryBase * | factory = NoFactory::get() |
||
| ) |
Call Level::Delete(ename, factory) for each level of the Hierarchy.
Definition at line 1202 of file MueLu_Hierarchy_def.hpp.
| void MueLu::Hierarchy< Scalar, LocalOrdinal, GlobalOrdinal, Node >::AddKeepFlag | ( | const std::string & | ename, |
| const FactoryBase * | factory = NoFactory::get(), |
||
| KeepType | keep = MueLu::Keep |
||
| ) |
Call Level::AddKeepFlag for each level of the Hierarchy.
Definition at line 1208 of file MueLu_Hierarchy_def.hpp.
| void MueLu::Hierarchy< Scalar, LocalOrdinal, GlobalOrdinal, Node >::RemoveKeepFlag | ( | const std::string & | ename, |
| const FactoryBase * | factory, | ||
| KeepType | keep = MueLu::All |
||
| ) |
Call Level::RemoveKeepFlag for each level of the Hierarchy.
Definition at line 1214 of file MueLu_Hierarchy_def.hpp.
|
virtual |
Return a simple one-line description of this object.
Reimplemented from MueLu::Describable.
Definition at line 1220 of file MueLu_Hierarchy_def.hpp.
|
virtual |
Print the Hierarchy with some verbosity level to a FancyOStream object.
| [in] | out | The Teuchos::FancyOstream. |
| [in] | verbLevel | Controls amount of output. |
Reimplemented from MueLu::Describable.
Definition at line 1237 of file MueLu_Hierarchy_def.hpp.
| void MueLu::Hierarchy< Scalar, LocalOrdinal, GlobalOrdinal, Node >::describe | ( | Teuchos::FancyOStream & | out, |
| const Teuchos::EVerbosityLevel | verbLevel = Teuchos::VERB_HIGH |
||
| ) | const |
Definition at line 1232 of file MueLu_Hierarchy_def.hpp.
| void MueLu::Hierarchy< Scalar, LocalOrdinal, GlobalOrdinal, Node >::print | ( | std::ostream & | out = std::cout, |
| const VerbLevel | verbLevel = (MueLu::Parameters | MueLu::Statistics0) |
||
| ) | const |
Definition at line 1374 of file MueLu_Hierarchy_def.hpp.
| void MueLu::Hierarchy< Scalar, LocalOrdinal, GlobalOrdinal, Node >::IsPreconditioner | ( | const bool | flag | ) |
Indicate whether the multigrid method is a preconditioner or a solver.
This is used in conjunction with the verbosity level to determine whether the residuals can be printed.
Definition at line 1381 of file MueLu_Hierarchy_def.hpp.
|
inline |
Definition at line 330 of file MueLu_Hierarchy_decl.hpp.
|
inline |
Definition at line 343 of file MueLu_Hierarchy_decl.hpp.
|
inline |
Definition at line 344 of file MueLu_Hierarchy_decl.hpp.
|
inline |
Definition at line 347 of file MueLu_Hierarchy_decl.hpp.
| void MueLu::Hierarchy< Scalar, LocalOrdinal, GlobalOrdinal, Node >::AllocateLevelMultiVectors | ( | int | numvecs | ) |
Definition at line 1519 of file MueLu_Hierarchy_def.hpp.
| void MueLu::Hierarchy< Scalar, LocalOrdinal, GlobalOrdinal, Node >::DeleteLevelMultiVectors |
Definition at line 1579 of file MueLu_Hierarchy_def.hpp.
|
inlineprotected |
Definition at line 355 of file MueLu_Hierarchy_decl.hpp.
|
private |
Definition at line 1446 of file MueLu_Hierarchy_def.hpp.
|
friend |
Definition at line 168 of file MueLu_Hierarchy_decl.hpp.
|
private |
Container for Level objects.
Definition at line 364 of file MueLu_Hierarchy_decl.hpp.
|
private |
Definition at line 374 of file MueLu_Hierarchy_decl.hpp.
|
private |
Definition at line 378 of file MueLu_Hierarchy_decl.hpp.
|
private |
Definition at line 382 of file MueLu_Hierarchy_decl.hpp.
|
private |
Definition at line 386 of file MueLu_Hierarchy_decl.hpp.
|
private |
Definition at line 389 of file MueLu_Hierarchy_decl.hpp.
|
private |
Definition at line 392 of file MueLu_Hierarchy_decl.hpp.
|
private |
Definition at line 395 of file MueLu_Hierarchy_decl.hpp.
|
private |
Definition at line 398 of file MueLu_Hierarchy_decl.hpp.
|
mutableprivate |
Definition at line 401 of file MueLu_Hierarchy_decl.hpp.
|
private |
Graph dumping.
Definition at line 405 of file MueLu_Hierarchy_decl.hpp.
|
private |
Definition at line 406 of file MueLu_Hierarchy_decl.hpp.
|
private |
Definition at line 407 of file MueLu_Hierarchy_decl.hpp.
|
private |
Convergece rate.
Definition at line 410 of file MueLu_Hierarchy_decl.hpp.
|
private |
Definition at line 413 of file MueLu_Hierarchy_decl.hpp.
|
private |
Definition at line 416 of file MueLu_Hierarchy_decl.hpp.
|
private |
Definition at line 417 of file MueLu_Hierarchy_decl.hpp.
|
private |
Definition at line 417 of file MueLu_Hierarchy_decl.hpp.
|
private |
Definition at line 417 of file MueLu_Hierarchy_decl.hpp.
|
private |
Definition at line 417 of file MueLu_Hierarchy_decl.hpp.
|
private |
Definition at line 417 of file MueLu_Hierarchy_decl.hpp.
|
private |
Definition at line 417 of file MueLu_Hierarchy_decl.hpp.