Teko
Version of the Day
|
#include "Epetra_CrsMatrix.h"
#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"
#include "Teko_ConfigDefs.hpp"
Go to the source code of this file.
Enumerations | |
enum | Teko::DiagonalType { Teko::Diagonal, Teko::Lumped, Teko::AbsRowSum, Teko::BlkDiag, Teko::NotDiag } |
Type describing the type of diagonal to construct. More... | |
Functions | |
RCP< Epetra_CrsMatrix > | Teko::buildGraphLaplacian (int dim, double *coords, const Epetra_CrsMatrix &stencil) |
Build a graph Laplacian stenciled on a Epetra_CrsMatrix. More... | |
RCP< Epetra_CrsMatrix > | Teko::buildGraphLaplacian (double *x, double *y, double *z, int stride, const Epetra_CrsMatrix &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 ![]() | |
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, const LinearOp &opr) |
Add two linear operators. More... | |
const ModifiableLinearOp | Teko::explicitAdd (const LinearOp &opl, const LinearOp &opr, 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 double | Teko::frobeniusNorm (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 i th 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... | |
void | Teko::putScalar (const ModifiableLinearOp &op, double scalar) |
Replace nonzeros with a scalar value, used to zero out an operator. More... | |
VectorSpace | Teko::rangeSpace (const LinearOp &lo) |
Get the range space of a linear 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... | |
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.
enum Teko::DiagonalType |
Type describing the type of diagonal to construct.
Definition at line 810 of file Teko_Utilities.hpp.
Teuchos::RCP< Epetra_CrsMatrix > Teko::buildGraphLaplacian | ( | int | dim, |
double * | coords, | ||
const Epetra_CrsMatrix & | stencil | ||
) |
Build a graph Laplacian stenciled on a Epetra_CrsMatrix.
This function builds a graph Laplacian given a (locally complete) vector of coordinates and a stencil Epetra_CrsMatrix (could this be a graph of Epetra_RowMatrix instead?). The resulting matrix will have the negative of the inverse distance on off diagonals. And the sum of the positive inverse distance of the off diagonals on the diagonal. If there are no off diagonal entries in the stencil, the diagonal is set to 0.
[in] | dim | Number of physical dimensions (2D or 3D?). |
[in] | coords | A vector containing the coordinates, with the i -th coordinate beginning at coords[i*dim] . |
[in] | stencil | The stencil matrix used to describe the connectivity of the graph Laplacian matrix. |
stencil
matrix. Definition at line 172 of file Teko_Utilities.cpp.
Teuchos::RCP< Epetra_CrsMatrix > Teko::buildGraphLaplacian | ( | double * | x, |
double * | y, | ||
double * | z, | ||
int | stride, | ||
const Epetra_CrsMatrix & | stencil | ||
) |
Build a graph Laplacian stenciled on a Epetra_CrsMatrix.
This function builds a graph Laplacian given a (locally complete) vector of coordinates and a stencil Epetra_CrsMatrix (could this be a graph of Epetra_RowMatrix instead?). The resulting matrix will have the negative of the inverse distance on off diagonals. And the sum of the positive inverse distance of the off diagonals on the diagonal. If there are no off diagonal entries in the stencil, the diagonal is set to 0.
[in] | x | A vector containing the x-coordinates, with the i -th coordinate beginning at coords[i*stride] . |
[in] | y | A vector containing the y-coordinates, with the i -th coordinate beginning at coords[i*stride] . |
[in] | z | A vector containing the z-coordinates, with the i -th coordinate beginning at coords[i*stride] . |
[in] | stride | Stride between entries in the (x,y,z) coordinate array |
[in] | stencil | The stencil matrix used to describe the connectivity of the graph Laplacian matrix. |
stencil
matrix. Definition at line 310 of file Teko_Utilities.cpp.
const Teuchos::RCP< Teuchos::FancyOStream > Teko::getOutputStream | ( | ) |
Function used internally by Teko to find the output stream.
Function used internally by Teko to find the output stream.
Definition at line 121 of file Teko_Utilities.cpp.
|
inline |
Convert to a MultiVector from a BlockedMultiVector.
Definition at line 210 of file Teko_Utilities.hpp.
|
inline |
Convert to a MultiVector from a BlockedMultiVector.
Definition at line 213 of file Teko_Utilities.hpp.
|
inline |
Convert to a BlockedMultiVector from a MultiVector.
Definition at line 216 of file Teko_Utilities.hpp.
|
inline |
Get the column count in a block linear operator.
Definition at line 220 of file Teko_Utilities.hpp.
|
inline |
Get the i
th block from a BlockedMultiVector object.
Definition at line 224 of file Teko_Utilities.hpp.
|
inline |
Perform a deep copy of the vector.
Definition at line 228 of file Teko_Utilities.hpp.
|
inline |
Perform a deep copy of the vector.
Definition at line 232 of file Teko_Utilities.hpp.
|
inline |
Perform a deep copy of the blocked vector.
Definition at line 236 of file Teko_Utilities.hpp.
|
inline |
Copy the contents of a multivector to a destination vector.
Copy the contents of a multivector to a new vector. If the destination vector is null, a deep copy of the source multivector is made to a newly allocated vector. Also, if the destination and the source do not match, a new destination object is allocated and returned to the user.
[in] | src | Source multivector to be copied. |
[in] | dst | Destination multivector. If null a new multivector will be allocated. |
Definition at line 252 of file Teko_Utilities.hpp.
|
inline |
Copy the contents of a blocked multivector to a destination vector.
Copy the contents of a blocked multivector to a new vector. If the destination vector is null, a deep copy of the source multivector is made to a newly allocated vector. Also, if the destination and the source do not match, a new destination object is allocated and returned to the user.
[in] | src | Source multivector to be copied. |
[in] | dst | Destination multivector. If null a new multivector will be allocated. |
Definition at line 281 of file Teko_Utilities.hpp.
BlockedMultiVector Teko::buildBlockedMultiVector | ( | const std::vector< MultiVector > & | mvv | ) |
build a BlockedMultiVector from a vector of MultiVectors
Definition at line 1645 of file Teko_Utilities.cpp.
Teuchos::RCP< Thyra::VectorBase< double > > Teko::indicatorVector | ( | const std::vector< int > & | indices, |
const VectorSpace & | vs, | ||
double | onValue, | ||
double | offValue | ||
) |
Construct an indicator vector specified by a vector of indices to be set to `‘on’'.
[in] | indices | Vector of indicies to turn on |
[in] | vs | Vector space to construct the vector from |
[in] | onValue | Value to set in the vector to on |
[in] | offValue | Value to set in the vector to off |
Definition at line 1674 of file Teko_Utilities.cpp.
|
inline |
Build a square zero operator from a single vector space.
Definition at line 327 of file Teko_Utilities.hpp.
void Teko::putScalar | ( | const ModifiableLinearOp & | op, |
double | scalar | ||
) |
Replace nonzeros with a scalar value, used to zero out an operator.
Definition at line 1988 of file Teko_Utilities.cpp.
|
inline |
Get the range space of a linear operator.
Definition at line 334 of file Teko_Utilities.hpp.
|
inline |
Get the domain space of a linear operator.
Definition at line 338 of file Teko_Utilities.hpp.
|
inline |
Converts a LinearOp to a BlockedLinearOp.
Definition at line 342 of file Teko_Utilities.hpp.
|
inline |
Converts a LinearOp to a BlockedLinearOp.
Definition at line 349 of file Teko_Utilities.hpp.
|
inline |
Convert to a LinearOp from a BlockedLinearOp.
Definition at line 356 of file Teko_Utilities.hpp.
|
inline |
Convert to a LinearOp from a BlockedLinearOp.
Definition at line 359 of file Teko_Utilities.hpp.
|
inline |
Convert to a LinearOp from a BlockedLinearOp.
Definition at line 362 of file Teko_Utilities.hpp.
|
inline |
Convert to a LinearOp from a BlockedLinearOp.
Definition at line 365 of file Teko_Utilities.hpp.
|
inline |
Get the row count in a block linear operator.
Definition at line 368 of file Teko_Utilities.hpp.
|
inline |
Get the column count in a block linear operator.
Definition at line 372 of file Teko_Utilities.hpp.
|
inline |
Get the i,j
block in a BlockedLinearOp object.
Definition at line 376 of file Teko_Utilities.hpp.
|
inline |
Set the i,j
block in a BlockedLinearOp object.
Definition at line 380 of file Teko_Utilities.hpp.
|
inline |
Build a new blocked linear operator.
Definition at line 384 of file Teko_Utilities.hpp.
|
inline |
Let the blocked operator know that you are going to set the sub blocks.
Let the blocked operator know that you are going to set the sub blocks. This is a simple wrapper around the member function of the same name in Thyra.
[in,out] | blo | Blocked operator to have its fill stage activated |
[in] | rowCnt | Number of block rows in this operator |
[in] | colCnt | Number of block columns in this operator |
Definition at line 398 of file Teko_Utilities.hpp.
|
inline |
Let the blocked operator know that you are going to set the sub blocks.
Let the blocked operator know that you are going to set the sub blocks. This is a simple wrapper around the member function of the same name in Thyra.
[in,out] | blo | Blocked operator to have its fill stage activated |
Definition at line 410 of file Teko_Utilities.hpp.
|
inline |
Notify the blocked operator that the fill stage is completed.
Definition at line 414 of file Teko_Utilities.hpp.
BlockedLinearOp Teko::getUpperTriBlocks | ( | const BlockedLinearOp & | blo, |
bool | callEndBlockFill | ||
) |
Get the strictly upper triangular portion of the matrix.
Definition at line 482 of file Teko_Utilities.cpp.
BlockedLinearOp Teko::getLowerTriBlocks | ( | const BlockedLinearOp & | blo, |
bool | callEndBlockFill | ||
) |
Get the strictly lower triangular portion of the matrix.
Definition at line 521 of file Teko_Utilities.cpp.
BlockedLinearOp Teko::zeroBlockedOp | ( | const BlockedLinearOp & | blo | ) |
Build a zero operator mimicing the block structure of the passed in matrix.
Build a zero operator mimicing the block structure of the passed in matrix. Currently this function assumes that the operator is "block" square. Also, this function calls beginBlockFill
but does not call endBlockFill
. This is so that the user can fill the matrix as they wish once created.
[in] | blo | Blocked operator with desired structure. |
blo
.The caller is responsible for calling endBlockFill
on the returned blocked operator.
Build a zero operator mimicing the block structure of the passed in matrix. Currently this function assumes that the operator is "block" square. Also, this function calls beginBlockFill
but does not call endBlockFill
. This is so that the user can fill the matrix as they wish once created.
[in] | blo | Blocked operator with desired structure. |
blo
.endBlockFill
on the returned blocked operator. Definition at line 578 of file Teko_Utilities.cpp.
bool Teko::isZeroOp | ( | const LinearOp | op | ) |
Figure out if this operator is the zero operator (or null!)
Definition at line 606 of file Teko_Utilities.cpp.
ModifiableLinearOp Teko::getAbsRowSumMatrix | ( | const LinearOp & | op | ) |
Compute absolute row sum matrix.
Compute the absolute row sum matrix. That is a diagonal operator composed of the absolute value of the row sum.
Definition at line 626 of file Teko_Utilities.cpp.
ModifiableLinearOp Teko::getAbsRowSumInvMatrix | ( | const LinearOp & | op | ) |
Compute inverse of the absolute row sum matrix.
Compute the inverse of the absolute row sum matrix. That is a diagonal operator composed of the inverse of the absolute value of the row sum.
Definition at line 719 of file Teko_Utilities.cpp.
ModifiableLinearOp Teko::getLumpedMatrix | ( | const LinearOp & | op | ) |
Compute the lumped version of this matrix.
Compute the lumped version of this matrix. That is a diagonal operator composed of the row sum.
Definition at line 785 of file Teko_Utilities.cpp.
ModifiableLinearOp Teko::getInvLumpedMatrix | ( | const LinearOp & | op | ) |
Compute the inverse of the lumped version of this matrix.
Compute the inverse of the lumped version of this matrix. That is a diagonal operator composed of the row sum.
Definition at line 808 of file Teko_Utilities.cpp.
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).
Apply a linear operator to a multivector. This also permits arbitrary scaling and addition of the result. This function gives
[in] | A | |
[in] | x | |
[in,out] | y | |
[in] |
Definition at line 441 of file Teko_Utilities.cpp.
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).
Apply a transposed linear operator to a multivector. This also permits arbitrary scaling and addition of the result. This function gives
[in] | A | |
[in] | x | |
[in,out] | y | |
[in] |
Definition at line 461 of file Teko_Utilities.cpp.
|
inline |
Apply a linear operator to a blocked multivector (think of this as a matrix vector multiply).
Apply a linear operator to a blocked multivector. This also permits arbitrary scaling and addition of the result. This function gives
It is required that the range space of A
is compatible with y
and the domain space of A
is compatible with x
.
[in] | A | |
[in] | x | |
[in,out] | y | |
[in] | alpha | |
[in] | beta |
Definition at line 550 of file Teko_Utilities.hpp.
|
inline |
Apply a transposed linear operator to a blocked multivector (think of this as a matrix vector multiply).
Apply a transposed linear operator to a blocked multivector. This also permits arbitrary scaling and addition of the result. This function gives
It is required that the domain space of A
is compatible with y
and the range space of A
is compatible with x
.
[in] | A | |
[in] | x | |
[in,out] | y | |
[in] | alpha | |
[in] | beta |
Definition at line 572 of file Teko_Utilities.hpp.
void Teko::update | ( | double | alpha, |
const MultiVector & | x, | ||
double | beta, | ||
MultiVector & | y | ||
) |
Update the y
vector so that .
Compute the linear combination .
[in] | alpha | |
[in] | x | |
[in] | beta | |
[in,out] | y |
Definition at line 468 of file Teko_Utilities.cpp.
|
inline |
Update for a BlockedMultiVector.
Definition at line 588 of file Teko_Utilities.hpp.
|
inline |
Scale a multivector by a constant.
Definition at line 593 of file Teko_Utilities.hpp.
|
inline |
Scale a multivector by a constant.
Definition at line 596 of file Teko_Utilities.hpp.
|
inline |
Scale a modifiable linear op by a constant.
Definition at line 600 of file Teko_Utilities.hpp.
|
inline |
Construct an implicit adjoint of the linear operators.
Definition at line 604 of file Teko_Utilities.hpp.
const ModifiableLinearOp Teko::getDiagonalOp | ( | const LinearOp & | op | ) |
Get the diaonal of a linear operator.
Get the diagonal of a linear operator. Currently it is assumed that the underlying operator is an Epetra_RowMatrix.
[in] | op | The operator whose diagonal is to be extracted. |
Definition at line 834 of file Teko_Utilities.cpp.
const MultiVector Teko::getDiagonal | ( | const LinearOp & | op | ) |
Get the diagonal of a linear operator.
Get the diagonal of a linear operator, putting it in the first column of a multivector.
Definition at line 891 of file Teko_Utilities.cpp.
const ModifiableLinearOp Teko::getInvDiagonalOp | ( | const LinearOp & | op | ) |
Get the diaonal of a linear operator.
Get the inverse of the diagonal of a linear operator. Currently it is assumed that the underlying operator is an Epetra_RowMatrix.
[in] | op | The operator whose diagonal is to be extracted and inverted |
Definition at line 972 of file Teko_Utilities.cpp.
const LinearOp Teko::explicitMultiply | ( | const LinearOp & | opl, |
const LinearOp & | opm, | ||
const LinearOp & | opr | ||
) |
Multiply three linear operators.
Multiply three linear operators. This currently assumes that the underlying implementation uses Epetra_CrsMatrix. The exception is that opm is allowed to be an diagonal matrix.
[in] | opl | Left operator (assumed to be a Epetra_CrsMatrix) |
[in] | opm | Middle operator (assumed to be a diagonal matrix) |
[in] | opr | Right operator (assumed to be a Epetra_CrsMatrix) |
Multiply three linear operators. This currently assumes that the underlying implementation uses Epetra_CrsMatrix. The exception is that opm is allowed to be an diagonal matrix.
[in] | opl | Left operator (assumed to be a Epetra_CrsMatrix) |
[in] | opm | Middle operator (assumed to be a Epetra_CrsMatrix or a diagonal matrix) |
[in] | opr | Right operator (assumed to be a Epetra_CrsMatrix) |
Definition at line 1015 of file Teko_Utilities.cpp.
const ModifiableLinearOp Teko::explicitMultiply | ( | const LinearOp & | opl, |
const LinearOp & | opm, | ||
const LinearOp & | opr, | ||
const ModifiableLinearOp & | destOp | ||
) |
Multiply three linear operators.
Multiply three linear operators. This currently assumes that the underlying implementation uses Epetra_CrsMatrix. The exception is that opm is allowed to be an diagonal matrix.
[in] | opl | Left operator (assumed to be a Epetra_CrsMatrix) |
[in] | opm | Middle operator (assumed to be a Epetra_CrsMatrix or a diagonal matrix) |
[in] | opr | Right operator (assumed to be a Epetra_CrsMatrix) |
[in,out] | destOp | The operator to be used as the destination operator, if this is null this function creates a new operator |
Definition at line 1116 of file Teko_Utilities.cpp.
const LinearOp Teko::explicitMultiply | ( | const LinearOp & | opl, |
const LinearOp & | opr | ||
) |
Multiply two linear operators.
Multiply two linear operators. This currently assumes that the underlying implementation uses Epetra_CrsMatrix.
[in] | opl | Left operator (assumed to be a Epetra_CrsMatrix) |
[in] | opr | Right operator (assumed to be a Epetra_CrsMatrix) |
Definition at line 1224 of file Teko_Utilities.cpp.
const ModifiableLinearOp Teko::explicitMultiply | ( | const LinearOp & | opl, |
const LinearOp & | opr, | ||
const ModifiableLinearOp & | destOp | ||
) |
Multiply two linear operators.
Multiply two linear operators. This currently assumes that the underlying implementation uses Epetra_CrsMatrix. The exception is that opm is allowed to be an diagonal matrix.
[in] | opl | Left operator (assumed to be a Epetra_CrsMatrix) |
[in] | opr | Right operator (assumed to be a Epetra_CrsMatrix) |
[in,out] | destOp | The operator to be used as the destination operator, if this is null this function creates a new operator |
Definition at line 1328 of file Teko_Utilities.cpp.
const LinearOp Teko::explicitAdd | ( | const LinearOp & | opl, |
const LinearOp & | opr | ||
) |
Add two linear operators.
Add two linear operators. This currently assumes that the underlying implementation uses Epetra_CrsMatrix.
[in] | opl | Left operator (assumed to be a Epetra_CrsMatrix) |
[in] | opr | Right operator (assumed to be a Epetra_CrsMatrix) |
Definition at line 1446 of file Teko_Utilities.cpp.
const ModifiableLinearOp Teko::explicitAdd | ( | const LinearOp & | opl, |
const LinearOp & | opr, | ||
const ModifiableLinearOp & | destOp | ||
) |
Add two linear operators.
Add two linear operators. This currently assumes that the underlying implementation uses Epetra_CrsMatrix.
[in] | opl | Left operator (assumed to be a Epetra_CrsMatrix) |
[in] | opr | Right operator (assumed to be a Epetra_CrsMatrix) |
[in,out] | destOp | The operator to be used as the destination operator, if this is null this function creates a new operator |
Definition at line 1500 of file Teko_Utilities.cpp.
const ModifiableLinearOp Teko::explicitSum | ( | const LinearOp & | op, |
const ModifiableLinearOp & | destOp | ||
) |
Sum an operator.
Sum into the modifiable linear op.
Definition at line 1558 of file Teko_Utilities.cpp.
const LinearOp Teko::explicitTranspose | ( | const LinearOp & | op | ) |
Build an explicit transpose of a linear operator. (Concrete data underneath.
Definition at line 1579 of file Teko_Utilities.cpp.
const double Teko::frobeniusNorm | ( | const LinearOp & | op | ) |
Rturn the frobenius norm of a linear operator
Definition at line 1614 of file Teko_Utilities.cpp.
const LinearOp Teko::buildDiagonal | ( | const MultiVector & | src, |
const std::string & | lbl | ||
) |
Take the first column of a multivector and build a diagonal linear operator.
Definition at line 1627 of file Teko_Utilities.cpp.
const LinearOp Teko::buildInvDiagonal | ( | const MultiVector & | src, |
const std::string & | lbl | ||
) |
Using the first column of a multivector, take the elementwise build a inverse and build the inverse diagonal operator.
Definition at line 1635 of file Teko_Utilities.cpp.
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.
Compute the spectral radius of matrix A. This utilizes the Trilinos-Anasazi BlockKrylovShcur method for computing eigenvalues. It attempts to compute the largest (in magnitude) eigenvalue to a given level of tolerance.
[in] | A | matrix whose spectral radius is needed |
[in] | tol | The most accuracy needed (the algorithm will run until it reaches this level of accuracy and then it will quit). If this level is not reached it will return something to indicate it has not converged. |
[in] | isHermitian | Is the matrix Hermitian |
[in] | numBlocks | The size of the orthogonal basis built (like in GMRES) before restarting. Increase the memory usage by O(restart*n). At least restart=3 is required. |
[in] | restart | How many restarts are permitted |
[in] | verbosity | See the Anasazi documentation |
NaN
is returned there was a problem constructing the Anasazi problem 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.
Compute the smallest eigenvalue of matrix A. This utilizes the Trilinos-Anasazi BlockKrylovShcur method for computing eigenvalues. It attempts to compute the smallest (in magnitude) eigenvalue to a given level of tolerance.
[in] | A | matrix whose spectral radius is needed |
[in] | tol | The most accuracy needed (the algorithm will run until it reaches this level of accuracy and then it will quit). If this level is not reached it will return something to indicate it has not converged. |
[in] | isHermitian | Is the matrix Hermitian |
[in] | numBlocks | The size of the orthogonal basis built (like in GMRES) before restarting. Increase the memory usage by O(restart*n). At least restart=3 is required. |
[in] | restart | How many restarts are permitted |
[in] | verbosity | See the Anasazi documentation |
NaN
is returned there was a problem constructing the Anasazi problem ModifiableLinearOp Teko::getDiagonalOp | ( | const Teko::LinearOp & | A, |
const DiagonalType & | dt | ||
) |
Get a diagonal operator from a matrix. The mechanism for computing the diagonal is specified by a DiagonalType
arugment.
[in] | A | Epetra_CrsMatrix to extract the diagonal from. |
[in] | dt | Specifies the type of diagonal that is desired. |
Definition at line 1871 of file Teko_Utilities.cpp.
ModifiableLinearOp Teko::getInvDiagonalOp | ( | const Teko::LinearOp & | A, |
const Teko::DiagonalType & | dt | ||
) |
Get the inverse of a diagonal operator from a matrix. The mechanism for computing the diagonal is specified by a DiagonalType
arugment.
[in] | A | Epetra_CrsMatrix to extract the diagonal from. |
[in] | dt | Specifies the type of diagonal that is desired. |
Definition at line 1896 of file Teko_Utilities.cpp.
const MultiVector Teko::getDiagonal | ( | const LinearOp & | op, |
const DiagonalType & | dt | ||
) |
Get the diagonal of a sparse linear operator.
[in] | Op | Sparse linear operator to get diagonal of |
[in] | dt | Type of diagonal operator required. |
Definition at line 952 of file Teko_Utilities.cpp.
std::string Teko::getDiagonalName | ( | const DiagonalType & | dt | ) |
Get a string corresponding to the type of diagonal specified.
[in] | dt | The type of diagonal. |
Get a string corresponding to the type of digaonal specified.
[in] | dt | The type of diagonal. |
Definition at line 1919 of file Teko_Utilities.cpp.
DiagonalType Teko::getDiagonalType | ( | std::string | name | ) |
Get a type corresponding to the name of a diagonal specified.
[in] | name | String representing the diagonal type |
NotDiag
Definition at line 1945 of file Teko_Utilities.cpp.
double Teko::norm_1 | ( | const MultiVector & | v, |
std::size_t | col | ||
) |
Get the one norm of the vector
Definition at line 1972 of file Teko_Utilities.cpp.
double Teko::norm_2 | ( | const MultiVector & | v, |
std::size_t | col | ||
) |
Get the two norm of the vector
Definition at line 1980 of file Teko_Utilities.cpp.