NOX Development
Loading...
Searching...
No Matches
Public Types | Public Member Functions | List of all members
NOX::Abstract::MultiVector Class Referenceabstract

Abstract interface for multi-vectors used by NOX. More...

#include <NOX_Abstract_MultiVector.H>

Inheritance diagram for NOX::Abstract::MultiVector:
Inheritance graph
[legend]

Public Types

typedef Teuchos::SerialDenseMatrix< int, double > DenseMatrix
 Typename of dense matrices.
 

Public Member Functions

 MultiVector ()
 Default constructor. Does nothing.
 
virtual ~MultiVector ()
 Destructor. Does nothing.
 
virtual NOX::Abstract::MultiVectorinit (double gamma)=0
 Initialize every element of this multi-vector with gamma.
 
virtual NOX::Abstract::MultiVectorrandom (bool useSeed=false, int seed=1)=0
 Initialize each element of this multi-vector with a random value.
 
virtual NOX::Abstract::MultiVectoroperator= (const NOX::Abstract::MultiVector &source)=0
 Copy source multi-vector source into this multi-vector.
 
virtual NOX::Abstract::MultiVectorsetBlock (const NOX::Abstract::MultiVector &source, const std::vector< int > &index)=0
 Copy the vectors in source to a set of vectors in *this. The index.size() vectors in source are copied to a subset of vectors in *this indicated by the indices given in index.
 
virtual NOX::Abstract::MultiVectoraugment (const NOX::Abstract::MultiVector &source)=0
 Append the vectors in source to *this.
 
virtual NOX::Abstract::Vectoroperator[] (int i)=0
 Return a reference to the i-th column of the multivector as an abstract vector.
 
virtual const NOX::Abstract::Vectoroperator[] (int i) const =0
 Return a const reference to the i-th column of the multivector as an abstract vector.
 
virtual NOX::Abstract::MultiVectorscale (double gamma)=0
 Scale each element of this multivector by gamma.
 
virtual NOX::Abstract::MultiVectorupdate (double alpha, const NOX::Abstract::MultiVector &a, double gamma=0.0)=0
 Compute x = (alpha * a) + (gamma * x) where a is a multi-vector and x = *this.
 
virtual NOX::Abstract::MultiVectorupdate (double alpha, const NOX::Abstract::MultiVector &a, double beta, const NOX::Abstract::MultiVector &b, double gamma=0.0)=0
 Compute x = (alpha * a) + (beta * b) + (gamma * x) where a and b are multi-vectors and x = *this.
 
virtual NOX::Abstract::MultiVectorupdate (Teuchos::ETransp transb, double alpha, const NOX::Abstract::MultiVector &a, const DenseMatrix &b, double gamma=0.0)=0
 Compute x = (alpha * a * op(b)) + (gamma * x) where a is a multivector, b is a dense matrix, x = *this, and op(b) = b if transb = Teuchos::NO_TRANS and op(b) is b transpose if transb = Teuchos::TRANS.
 
virtual Teuchos::RCP< NOX::Abstract::MultiVectorclone (NOX::CopyType type=NOX::DeepCopy) const =0
 Create a new Vector of the same underlying type by cloning "this", and return a pointer to the new vector.
 
virtual Teuchos::RCP< NOX::Abstract::MultiVectorclone (int numvecs) const =0
 Creates a new multi-vector with numvecs columns.
 
virtual Teuchos::RCP< NOX::Abstract::MultiVectorsubCopy (const std::vector< int > &index) const =0
 Creates a new multi-vector with index.size() columns whose columns are copies of the columns of *this given by index.
 
virtual Teuchos::RCP< NOX::Abstract::MultiVectorsubView (const std::vector< int > &index) const =0
 Creates a new multi-vector with ndex.size() columns that shares the columns of *this given by index.
 
virtual void norm (std::vector< double > &result, NOX::Abstract::Vector::NormType type=NOX::Abstract::Vector::TwoNorm) const =0
 Norm.
 
virtual void multiply (double alpha, const NOX::Abstract::MultiVector &y, DenseMatrix &b) const =0
 Computes the matrix-matrix product $\alpha * y^T * (*this)$.
 
virtual NOX::size_type length () const =0
 Return the length of multi-vector.
 
virtual int numVectors () const =0
 Return the number of vectors in the multi-vector.
 
virtual void print (std::ostream &stream) const =0
 Print the vector. This is meant for debugging purposes only.
 

Detailed Description

Abstract interface for multi-vectors used by NOX.

Constructor & Destructor Documentation

◆ ~MultiVector()

virtual NOX::Abstract::MultiVector::~MultiVector ( )
inlinevirtual

Member Function Documentation

◆ augment()

virtual NOX::Abstract::MultiVector & NOX::Abstract::MultiVector::augment ( const NOX::Abstract::MultiVector source)
pure virtual

Append the vectors in source to *this.

Implemented in NOX::Epetra::MultiVector, LOCA::Extended::MultiVector, NOX::Thyra::MultiVector, and NOX::MultiVector.

◆ clone() [1/2]

virtual Teuchos::RCP< NOX::Abstract::MultiVector > NOX::Abstract::MultiVector::clone ( int  numvecs) const
pure virtual

◆ clone() [2/2]

virtual Teuchos::RCP< NOX::Abstract::MultiVector > NOX::Abstract::MultiVector::clone ( NOX::CopyType  type = NOX::DeepCopy) const
pure virtual

Create a new Vector of the same underlying type by cloning "this", and return a pointer to the new vector.

If type is NOX::DeepCopy, then we need to create an exact replica of "this". Otherwise, if type is NOX::ShapeCopy, we need only replicate the shape of "this". Note that there is no assumption that a vector created by ShapeCopy is initialized to zeros.

Returns
Pointer to newly created vector or NULL if clone is not supported.

Implemented in NOX::Epetra::MultiVector, NOX::Thyra::MultiVector, LOCA::Extended::MultiVector, LOCA::Hopf::ComplexMultiVector, LOCA::Hopf::MooreSpence::ExtendedMultiVector, LOCA::MultiContinuation::ExtendedMultiVector, LOCA::PhaseTransition::ExtendedMultiVector, LOCA::Pitchfork::MooreSpence::ExtendedMultiVector, LOCA::TurningPoint::MooreSpence::ExtendedMultiVector, and NOX::MultiVector.

Referenced by LOCA::Epetra::AnasaziOperator::Floquet::apply(), LOCA::AnasaziOperator::Cayley::apply(), LOCA::AnasaziOperator::Cayley2Matrix::apply(), LOCA::AnasaziOperator::ShiftInvert::apply(), LOCA::AnasaziOperator::ShiftInvert2Matrix::apply(), LOCA::BorderedSolver::Bordering::applyInverse(), LOCA::BorderedSolver::Bordering::applyInverseTranspose(), Anasazi::MultiVecTraits< double, NOX::Abstract::MultiVector >::Clone(), Anasazi::MultiVecTraits< double, NOX::Abstract::MultiVector >::CloneCopy(), LOCA::Hopf::ComplexMultiVector::ComplexMultiVector(), LOCA::DerivUtils::computeDwtJnDx(), LOCA::BorderedSolver::HouseholderQR::computeQR(), LOCA::PhaseTransition::ExtendedMultiVector::ExtendedMultiVector(), LOCA::TurningPoint::MooreSpence::ExtendedMultiVector::ExtendedMultiVector(), LOCA::Pitchfork::MooreSpence::ExtendedMultiVector::ExtendedMultiVector(), LOCA::Hopf::MooreSpence::ExtendedMultiVector::ExtendedMultiVector(), LOCA::MultiContinuation::ExtendedMultiVector::ExtendedMultiVector(), LOCA::AnasaziOperator::Cayley::preProcessSeedVector(), LOCA::AnasaziOperator::Cayley2Matrix::preProcessSeedVector(), LOCA::BorderedSolver::UpperTriangularBlockElimination::solve(), LOCA::BorderedSolver::EpetraHouseholder::solve(), LOCA::BorderedSolver::TpetraHouseholder::solve(), LOCA::TurningPoint::MooreSpence::PhippsBordering::solveContiguous(), LOCA::TurningPoint::MooreSpence::SalingerBordering::solveContiguous(), LOCA::Pitchfork::MooreSpence::PhippsBordering::solveContiguous(), LOCA::Pitchfork::MooreSpence::SalingerBordering::solveContiguous(), LOCA::Hopf::MooreSpence::SalingerBordering::solveContiguous(), LOCA::BorderedSolver::Bordering::solveFZero(), LOCA::BorderedSolver::Bordering::solveFZeroTrans(), LOCA::BorderedSolver::UpperTriangularBlockElimination::solveTranspose(), LOCA::BorderedSolver::EpetraHouseholder::solveTranspose(), LOCA::TurningPoint::MooreSpence::PhippsBordering::solveTransposeContiguous(), and LOCA::TurningPoint::MooreSpence::SalingerBordering::solveTransposeContiguous().

◆ init()

virtual NOX::Abstract::MultiVector & NOX::Abstract::MultiVector::init ( double  gamma)
pure virtual

◆ length()

virtual NOX::size_type NOX::Abstract::MultiVector::length ( ) const
pure virtual

◆ multiply()

virtual void NOX::Abstract::MultiVector::multiply ( double  alpha,
const NOX::Abstract::MultiVector y,
DenseMatrix b 
) const
pure virtual

◆ norm()

virtual void NOX::Abstract::MultiVector::norm ( std::vector< double > &  result,
NOX::Abstract::Vector::NormType  type = NOX::Abstract::Vector::TwoNorm 
) const
pure virtual

◆ numVectors()

virtual int NOX::Abstract::MultiVector::numVectors ( ) const
pure virtual

Return the number of vectors in the multi-vector.

Implemented in NOX::Epetra::MultiVector, LOCA::Extended::MultiVector, NOX::Thyra::MultiVector, and NOX::MultiVector.

Referenced by LOCA::MultiContinuation::CompositeConstraint::addDX(), LOCA::Epetra::AnasaziOperator::Floquet::apply(), LOCA::AnasaziOperator::Cayley::apply(), LOCA::AnasaziOperator::Cayley2Matrix::apply(), LOCA::AnasaziOperator::ShiftInvert::apply(), LOCA::AnasaziOperator::ShiftInvert2Matrix::apply(), LOCA::BorderedSolver::Nested::apply(), LOCA::BorderedSolver::HouseholderQR::applyCompactWY(), LOCA::Epetra::Group::applyComplexInverseMultiVector(), LOCA::LAPACK::Group::applyComplexInverseMultiVector(), LOCA::Epetra::Group::applyComplexMultiVector(), LOCA::LAPACK::Group::applyComplexMultiVector(), LOCA::Epetra::Group::applyComplexTransposeInverseMultiVector(), LOCA::LAPACK::Group::applyComplexTransposeInverseMultiVector(), LOCA::Epetra::Group::applyComplexTransposeMultiVector(), LOCA::LAPACK::Group::applyComplexTransposeMultiVector(), LOCA::BorderedSolver::HouseholderQR::applyHouseholderVector(), LOCA::BorderedSolver::Bordering::applyInverse(), LOCA::BorderedSolver::Nested::applyInverse(), LOCA::BorderedSolver::Bordering::applyInverseTranspose(), LOCA::BorderedSolver::Nested::applyInverseTranspose(), NOX::LAPACK::Group::applyJacobianInverseMultiVector(), NOX::Abstract::Group::applyJacobianInverseMultiVector(), LOCA::Homotopy::DeflatedGroup::applyJacobianMultiVector(), NOX::Abstract::Group::applyJacobianMultiVector(), LOCA::Epetra::Group::applyJacobianTransposeInverseMultiVector(), LOCA::LAPACK::Group::applyJacobianTransposeInverseMultiVector(), LOCA::Homotopy::DeflatedGroup::applyJacobianTransposeMultiVector(), NOX::Abstract::Group::applyJacobianTransposeMultiVector(), NOX::Abstract::Group::applyRightPreconditioningMultiVector(), LOCA::Epetra::Group::applySecondShiftedMatrixMultiVector(), LOCA::Epetra::Group::applyShiftedMatrixInverseMultiVector(), LOCA::LAPACK::Group::applyShiftedMatrixInverseMultiVector(), LOCA::Epetra::Group::applyShiftedMatrixMultiVector(), LOCA::LAPACK::Group::applyShiftedMatrixMultiVector(), LOCA::BorderedSolver::Nested::applyTranspose(), LOCA::DerivUtils::computeDCeDxa(), LOCA::Epetra::ModelEvaluatorInterface::computeDfDp(), LOCA::Thyra::Group::computeDfDpMulti(), LOCA::Hopf::MooreSpence::ExtendedGroup::computeDfDpMulti(), LOCA::Pitchfork::MooreSpence::ExtendedGroup::computeDfDpMulti(), LOCA::TurningPoint::MooreSpence::ExtendedGroup::computeDfDpMulti(), LOCA::DerivUtils::computeDJnDxa(), LOCA::BorderedSolver::HouseholderQR::computeQR(), Anasazi::MultiVecTraits< double, NOX::Abstract::MultiVector >::GetNumberVecs(), LOCA::AnasaziOperator::Cayley::preProcessSeedVector(), LOCA::AnasaziOperator::Cayley2Matrix::preProcessSeedVector(), LOCA::BorderedSolver::LAPACKDirectSolve::solve(), LOCA::BorderedSolver::EpetraHouseholder::solve(), LOCA::BorderedSolver::TpetraHouseholder::solve(), LOCA::TurningPoint::MooreSpence::PhippsBordering::solveContiguous(), LOCA::TurningPoint::MooreSpence::SalingerBordering::solveContiguous(), LOCA::Pitchfork::MooreSpence::PhippsBordering::solveContiguous(), LOCA::Pitchfork::MooreSpence::SalingerBordering::solveContiguous(), LOCA::Hopf::MooreSpence::SalingerBordering::solveContiguous(), LOCA::BorderedSolver::Bordering::solveContiguousTrans(), LOCA::BorderedSolver::Bordering::solveFZeroTrans(), LOCA::BorderedSolver::EpetraHouseholder::solveTranspose(), LOCA::TurningPoint::MooreSpence::PhippsBordering::solveTransposeContiguous(), and LOCA::TurningPoint::MooreSpence::SalingerBordering::solveTransposeContiguous().

◆ operator=()

virtual NOX::Abstract::MultiVector & NOX::Abstract::MultiVector::operator= ( const NOX::Abstract::MultiVector source)
pure virtual

◆ operator[]() [1/2]

virtual const NOX::Abstract::Vector & NOX::Abstract::MultiVector::operator[] ( int  i) const
pure virtual

Return a const reference to the i-th column of the multivector as an abstract vector.

It is assumed that any implementation of this method returns a vector that has a view of the underlying data in the multivector.

Implemented in NOX::Epetra::MultiVector, LOCA::Extended::MultiVector, NOX::Thyra::MultiVector, and NOX::MultiVector.

◆ operator[]() [2/2]

virtual NOX::Abstract::Vector & NOX::Abstract::MultiVector::operator[] ( int  i)
pure virtual

Return a reference to the i-th column of the multivector as an abstract vector.

It is assumed that any implementation of this method returns a vector that has a view of the underlying data in the multivector

Implemented in NOX::Epetra::MultiVector, LOCA::Extended::MultiVector, NOX::Thyra::MultiVector, and NOX::MultiVector.

◆ print()

virtual void NOX::Abstract::MultiVector::print ( std::ostream &  stream) const
pure virtual

◆ random()

virtual NOX::Abstract::MultiVector & NOX::Abstract::MultiVector::random ( bool  useSeed = false,
int  seed = 1 
)
pure virtual

◆ scale()

virtual NOX::Abstract::MultiVector & NOX::Abstract::MultiVector::scale ( double  gamma)
pure virtual

◆ setBlock()

virtual NOX::Abstract::MultiVector & NOX::Abstract::MultiVector::setBlock ( const NOX::Abstract::MultiVector source,
const std::vector< int > &  index 
)
pure virtual

Copy the vectors in source to a set of vectors in *this. The index.size() vectors in source are copied to a subset of vectors in *this indicated by the indices given in index.

Implemented in NOX::Epetra::MultiVector, LOCA::Extended::MultiVector, NOX::Thyra::MultiVector, and NOX::MultiVector.

Referenced by Anasazi::MultiVecTraits< double, NOX::Abstract::MultiVector >::SetBlock().

◆ subCopy()

virtual Teuchos::RCP< NOX::Abstract::MultiVector > NOX::Abstract::MultiVector::subCopy ( const std::vector< int > &  index) const
pure virtual

◆ subView()

virtual Teuchos::RCP< NOX::Abstract::MultiVector > NOX::Abstract::MultiVector::subView ( const std::vector< int > &  index) const
pure virtual

Creates a new multi-vector with ndex.size() columns that shares the columns of *this given by index.

Implemented in NOX::Epetra::MultiVector, LOCA::Extended::MultiVector, LOCA::Hopf::ComplexMultiVector, LOCA::Hopf::MooreSpence::ExtendedMultiVector, LOCA::MultiContinuation::ExtendedMultiVector, LOCA::PhaseTransition::ExtendedMultiVector, LOCA::Pitchfork::MooreSpence::ExtendedMultiVector, LOCA::TurningPoint::MooreSpence::ExtendedMultiVector, NOX::Thyra::MultiVector, and NOX::MultiVector.

Referenced by Anasazi::MultiVecTraits< double, NOX::Abstract::MultiVector >::CloneView(), Anasazi::MultiVecTraits< double, NOX::Abstract::MultiVector >::CloneViewNonConst(), LOCA::Epetra::ModelEvaluatorInterface::computeDfDp(), LOCA::Thyra::Group::computeDfDpMulti(), LOCA::Homotopy::Group::computeDfDpMulti(), LOCA::BorderedSolver::HouseholderQR::computeQR(), LOCA::Homotopy::DeflatedGroup::fillA(), LOCA::Hopf::MinimallyAugmented::ExtendedGroup::fillA(), LOCA::MultiContinuation::ConstrainedGroup::fillA(), LOCA::Pitchfork::MinimallyAugmented::ExtendedGroup::fillA(), LOCA::Homotopy::DeflatedGroup::fillB(), LOCA::Hopf::MinimallyAugmented::ExtendedGroup::fillB(), LOCA::MultiContinuation::ConstrainedGroup::fillB(), LOCA::Pitchfork::MinimallyAugmented::ExtendedGroup::fillB(), LOCA::TurningPoint::MooreSpence::PhippsBordering::solveContiguous(), LOCA::TurningPoint::MooreSpence::SalingerBordering::solveContiguous(), LOCA::Pitchfork::MooreSpence::PhippsBordering::solveContiguous(), LOCA::Pitchfork::MooreSpence::SalingerBordering::solveContiguous(), LOCA::Hopf::MooreSpence::SalingerBordering::solveContiguous(), LOCA::BorderedSolver::Bordering::solveContiguous(), LOCA::BorderedSolver::Bordering::solveContiguousTrans(), LOCA::TurningPoint::MooreSpence::PhippsBordering::solveTransposeContiguous(), and LOCA::TurningPoint::MooreSpence::SalingerBordering::solveTransposeContiguous().

◆ update() [1/3]

virtual NOX::Abstract::MultiVector & NOX::Abstract::MultiVector::update ( double  alpha,
const NOX::Abstract::MultiVector a,
double  beta,
const NOX::Abstract::MultiVector b,
double  gamma = 0.0 
)
pure virtual

Compute x = (alpha * a) + (beta * b) + (gamma * x) where a and b are multi-vectors and x = *this.

Implemented in NOX::Epetra::MultiVector, LOCA::Extended::MultiVector, NOX::Thyra::MultiVector, and NOX::MultiVector.

◆ update() [2/3]

virtual NOX::Abstract::MultiVector & NOX::Abstract::MultiVector::update ( double  alpha,
const NOX::Abstract::MultiVector a,
double  gamma = 0.0 
)
pure virtual

◆ update() [3/3]

virtual NOX::Abstract::MultiVector & NOX::Abstract::MultiVector::update ( Teuchos::ETransp  transb,
double  alpha,
const NOX::Abstract::MultiVector a,
const DenseMatrix b,
double  gamma = 0.0 
)
pure virtual

Compute x = (alpha * a * op(b)) + (gamma * x) where a is a multivector, b is a dense matrix, x = *this, and op(b) = b if transb = Teuchos::NO_TRANS and op(b) is b transpose if transb = Teuchos::TRANS.

Implemented in NOX::Epetra::MultiVector, LOCA::Extended::MultiVector, NOX::Thyra::MultiVector, and NOX::MultiVector.


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