Teko  Version of the Day
 All Classes Files Functions Variables Pages
Enumerations | Functions
Teko_Utilities.hpp File Reference
#include "Teko_ConfigDefs.hpp"
#include "Tpetra_CrsMatrix.hpp"
#include "Teuchos_VerboseObject.hpp"
#include "Thyra_LinearOpBase.hpp"
#include "Thyra_PhysicallyBlockedLinearOpBase.hpp"
#include "Thyra_ProductVectorSpaceBase.hpp"
#include "Thyra_VectorSpaceBase.hpp"
#include "Thyra_ProductMultiVectorBase.hpp"
#include "Thyra_MultiVectorStdOps.hpp"
#include "Thyra_MultiVectorBase.hpp"
#include "Thyra_VectorBase.hpp"
#include "Thyra_VectorStdOps.hpp"
#include "Thyra_DefaultBlockedLinearOp.hpp"
#include "Thyra_DefaultMultipliedLinearOp.hpp"
#include "Thyra_DefaultScaledAdjointLinearOp.hpp"
#include "Thyra_DefaultAddedLinearOp.hpp"
#include "Thyra_DefaultIdentityLinearOp.hpp"
#include "Thyra_DefaultZeroLinearOp.hpp"

Go to the source code of this file.

Enumerations

enum  DiagonalType {
  Teko::Diagonal, Teko::Lumped, Teko::AbsRowSum, Teko::BlkDiag,
  Teko::NotDiag
}
 Type describing the type of diagonal to construct. More...
 

Functions

RCP< Tpetra::CrsMatrix< ST, LO,
GO, NT > > 
Teko::buildGraphLaplacian (int dim, ST *coords, const Tpetra::CrsMatrix< ST, LO, GO, NT > &stencil)
 Build a graph Laplacian stenciled on a Epetra_CrsMatrix. More...
 
RCP< Tpetra::CrsMatrix< ST, LO,
GO, NT > > 
Teko::buildGraphLaplacian (ST *x, ST *y, ST *z, GO stride, const Tpetra::CrsMatrix< ST, LO, GO, NT > &stencil)
 Build a graph Laplacian stenciled on a Epetra_CrsMatrix. More...
 
const Teuchos::RCP
< Teuchos::FancyOStream > 
Teko::getOutputStream ()
 Function used internally by Teko to find the output stream. More...
 
double Teko::computeSpectralRad (const Teuchos::RCP< const Thyra::LinearOpBase< double > > &A, double tol, bool isHermitian=false, int numBlocks=5, int restart=0, int verbosity=0)
 Compute the spectral radius of a matrix. More...
 
double Teko::computeSmallestMagEig (const Teuchos::RCP< const Thyra::LinearOpBase< double > > &A, double tol, bool isHermitian=false, int numBlocks=5, int restart=0, int verbosity=0)
 Compute the smallest eigenvalue of an operator. More...
 
ModifiableLinearOp Teko::getDiagonalOp (const Teko::LinearOp &A, const DiagonalType &dt)
 
ModifiableLinearOp Teko::getInvDiagonalOp (const Teko::LinearOp &A, const Teko::DiagonalType &dt)
 
const MultiVector Teko::getDiagonal (const LinearOp &op, const DiagonalType &dt)
 Get the diagonal of a sparse linear operator. More...
 
std::string Teko::getDiagonalName (const DiagonalType &dt)
 
DiagonalType Teko::getDiagonalType (std::string name)
 
double Teko::norm_1 (const MultiVector &v, std::size_t col)
 
double Teko::norm_2 (const MultiVector &v, std::size_t col)
 
Mathematical functions
void Teko::applyOp (const LinearOp &A, const MultiVector &x, MultiVector &y, double alpha, double beta)
 Apply a linear operator to a multivector (think of this as a matrix vector multiply). More...
 
void Teko::applyTransposeOp (const LinearOp &A, const MultiVector &x, MultiVector &y, double alpha, double beta)
 Apply a transposed linear operator to a multivector (think of this as a matrix vector multiply). More...
 
void Teko::applyOp (const LinearOp &A, const BlockedMultiVector &x, BlockedMultiVector &y, double alpha=1.0, double beta=0.0)
 Apply a linear operator to a blocked multivector (think of this as a matrix vector multiply). More...
 
void Teko::applyTransposeOp (const LinearOp &A, const BlockedMultiVector &x, BlockedMultiVector &y, double alpha=1.0, double beta=0.0)
 Apply a transposed linear operator to a blocked multivector (think of this as a matrix vector multiply). More...
 
void Teko::update (double alpha, const MultiVector &x, double beta, MultiVector &y)
 Update the y vector so that $y = \alpha x+\beta y$. More...
 
void Teko::update (double alpha, const BlockedMultiVector &x, double beta, BlockedMultiVector &y)
 Update for a BlockedMultiVector. More...
 
void Teko::scale (const double alpha, MultiVector &x)
 Scale a multivector by a constant. More...
 
void Teko::scale (const double alpha, BlockedMultiVector &x)
 Scale a multivector by a constant. More...
 
LinearOp Teko::scale (const double alpha, ModifiableLinearOp &a)
 Scale a modifiable linear op by a constant. More...
 
LinearOp Teko::adjoint (ModifiableLinearOp &a)
 Construct an implicit adjoint of the linear operators. More...
 
Epetra_Operator specific functions
const ModifiableLinearOp Teko::getDiagonalOp (const LinearOp &op)
 Get the diaonal of a linear operator. More...
 
const MultiVector Teko::getDiagonal (const LinearOp &op)
 Get the diagonal of a linear operator. More...
 
const ModifiableLinearOp Teko::getInvDiagonalOp (const LinearOp &op)
 Get the diaonal of a linear operator. More...
 
const LinearOp Teko::explicitMultiply (const LinearOp &opl, const LinearOp &opm, const LinearOp &opr)
 Multiply three linear operators. More...
 
const ModifiableLinearOp Teko::explicitMultiply (const LinearOp &opl, const LinearOp &opm, const LinearOp &opr, const ModifiableLinearOp &destOp)
 Multiply three linear operators. More...
 
const LinearOp Teko::explicitMultiply (const LinearOp &opl, const LinearOp &opr)
 Multiply two linear operators. More...
 
const ModifiableLinearOp Teko::explicitMultiply (const LinearOp &opl, const LinearOp &opr, const ModifiableLinearOp &destOp)
 Multiply two linear operators. More...
 
const LinearOp Teko::explicitAdd (const LinearOp &opl_in, const LinearOp &opr_in)
 Add two linear operators. More...
 
const ModifiableLinearOp Teko::explicitAdd (const LinearOp &opl_in, const LinearOp &opr_in, const ModifiableLinearOp &destOp)
 Add two linear operators. More...
 
const ModifiableLinearOp Teko::explicitSum (const LinearOp &op, const ModifiableLinearOp &destOp)
 Sum an operator. More...
 
const LinearOp Teko::explicitTranspose (const LinearOp &op)
 
const LinearOp Teko::explicitScale (double scalar, const LinearOp &op)
 
double Teko::frobeniusNorm (const LinearOp &op_in)
 
double Teko::oneNorm (const LinearOp &op)
 
double Teko::infNorm (const LinearOp &op)
 
const LinearOp Teko::buildDiagonal (const MultiVector &v, const std::string &lbl="ANYM")
 Take the first column of a multivector and build a diagonal linear operator. More...
 
const LinearOp Teko::buildInvDiagonal (const MultiVector &v, const std::string &lbl="ANYM")
 Using the first column of a multivector, take the elementwise build a inverse and build the inverse diagonal operator. More...
 

MultiVector utilities

typedef Teuchos::RCP
< Thyra::ProductMultiVectorBase
< double > > 
Teko::BlockedMultiVector
 
typedef Teuchos::RCP
< Thyra::MultiVectorBase
< double > > 
Teko::MultiVector
 
MultiVector Teko::toMultiVector (BlockedMultiVector &bmv)
 Convert to a MultiVector from a BlockedMultiVector. More...
 
const MultiVector Teko::toMultiVector (const BlockedMultiVector &bmv)
 Convert to a MultiVector from a BlockedMultiVector. More...
 
const BlockedMultiVector Teko::toBlockedMultiVector (const MultiVector &bmv)
 Convert to a BlockedMultiVector from a MultiVector. More...
 
int Teko::blockCount (const BlockedMultiVector &bmv)
 Get the column count in a block linear operator. More...
 
MultiVector Teko::getBlock (int i, const BlockedMultiVector &bmv)
 Get the ith block from a BlockedMultiVector object. More...
 
MultiVector Teko::deepcopy (const MultiVector &v)
 Perform a deep copy of the vector. More...
 
MultiVector Teko::copyAndInit (const MultiVector &v, double scalar)
 Perform a deep copy of the vector. More...
 
BlockedMultiVector Teko::deepcopy (const BlockedMultiVector &v)
 Perform a deep copy of the blocked vector. More...
 
MultiVector Teko::datacopy (const MultiVector &src, MultiVector &dst)
 Copy the contents of a multivector to a destination vector. More...
 
BlockedMultiVector Teko::datacopy (const BlockedMultiVector &src, BlockedMultiVector &dst)
 Copy the contents of a blocked multivector to a destination vector. More...
 
BlockedMultiVector Teko::buildBlockedMultiVector (const std::vector< MultiVector > &mvv)
 build a BlockedMultiVector from a vector of MultiVectors More...
 
Teuchos::RCP
< Thyra::VectorBase< double > > 
Teko::indicatorVector (const std::vector< int > &indices, const VectorSpace &vs, double onValue, double offValue)
 

LinearOp utilities

typedef Teuchos::RCP
< Thyra::PhysicallyBlockedLinearOpBase
< ST > > 
Teko::BlockedLinearOp
 
typedef Teuchos::RCP< const
Thyra::LinearOpBase< ST > > 
Teko::LinearOp
 
typedef Teuchos::RCP
< Thyra::LinearOpBase< ST > > 
Teko::InverseLinearOp
 
typedef Teuchos::RCP
< Thyra::LinearOpBase< ST > > 
Teko::ModifiableLinearOp
 
LinearOp Teko::zero (const VectorSpace &vs)
 Build a square zero operator from a single vector space. More...
 
LinearOp Teko::zero (const VectorSpace &range, const VectorSpace &domain)
 
VectorSpace Teko::rangeSpace (const LinearOp &lo)
 Replace nonzeros with a scalar value, used to zero out an operator. More...
 
VectorSpace Teko::domainSpace (const LinearOp &lo)
 Get the domain space of a linear operator. More...
 
BlockedLinearOp Teko::toBlockedLinearOp (LinearOp &clo)
 Converts a LinearOp to a BlockedLinearOp. More...
 
const BlockedLinearOp Teko::toBlockedLinearOp (const LinearOp &clo)
 Converts a LinearOp to a BlockedLinearOp. More...
 
LinearOp Teko::toLinearOp (BlockedLinearOp &blo)
 Convert to a LinearOp from a BlockedLinearOp. More...
 
const LinearOp Teko::toLinearOp (const BlockedLinearOp &blo)
 Convert to a LinearOp from a BlockedLinearOp. More...
 
LinearOp Teko::toLinearOp (ModifiableLinearOp &blo)
 Convert to a LinearOp from a BlockedLinearOp. More...
 
const LinearOp Teko::toLinearOp (const ModifiableLinearOp &blo)
 Convert to a LinearOp from a BlockedLinearOp. More...
 
int Teko::blockRowCount (const BlockedLinearOp &blo)
 Get the row count in a block linear operator. More...
 
int Teko::blockColCount (const BlockedLinearOp &blo)
 Get the column count in a block linear operator. More...
 
LinearOp Teko::getBlock (int i, int j, const BlockedLinearOp &blo)
 Get the i,j block in a BlockedLinearOp object. More...
 
void Teko::setBlock (int i, int j, BlockedLinearOp &blo, const LinearOp &lo)
 Set the i,j block in a BlockedLinearOp object. More...
 
BlockedLinearOp Teko::createBlockedOp ()
 Build a new blocked linear operator. More...
 
void Teko::beginBlockFill (BlockedLinearOp &blo, int rowCnt, int colCnt)
 Let the blocked operator know that you are going to set the sub blocks. More...
 
void Teko::beginBlockFill (BlockedLinearOp &blo)
 Let the blocked operator know that you are going to set the sub blocks. More...
 
void Teko::endBlockFill (BlockedLinearOp &blo)
 Notify the blocked operator that the fill stage is completed. More...
 
BlockedLinearOp Teko::getUpperTriBlocks (const BlockedLinearOp &blo, bool callEndBlockFill)
 Get the strictly upper triangular portion of the matrix. More...
 
BlockedLinearOp Teko::getLowerTriBlocks (const BlockedLinearOp &blo, bool callEndBlockFill)
 Get the strictly lower triangular portion of the matrix. More...
 
BlockedLinearOp Teko::zeroBlockedOp (const BlockedLinearOp &blo)
 Build a zero operator mimicing the block structure of the passed in matrix. More...
 
bool Teko::isZeroOp (const LinearOp op)
 Figure out if this operator is the zero operator (or null!) More...
 
ModifiableLinearOp Teko::getAbsRowSumMatrix (const LinearOp &op)
 Compute absolute row sum matrix. More...
 
ModifiableLinearOp Teko::getAbsRowSumInvMatrix (const LinearOp &op)
 Compute inverse of the absolute row sum matrix. More...
 
ModifiableLinearOp Teko::getLumpedMatrix (const LinearOp &op)
 Compute the lumped version of this matrix. More...
 
ModifiableLinearOp Teko::getInvLumpedMatrix (const LinearOp &op)
 Compute the inverse of the lumped version of this matrix. More...
 

Detailed Description

This file contains a number of useful functions and classes used in Teko. They are distinct from the core functionality of the preconditioner factory, however, the functions are critical to construction of the preconditioners themselves.

Definition in file Teko_Utilities.hpp.