46 #ifndef ANASAZI_SPECIALIZED_EPETRA_ADAPTER_HPP 47 #define ANASAZI_SPECIALIZED_EPETRA_ADAPTER_HPP 50 #include "Anasaziepetra_DLLExportMacro.h" 56 #include "Teuchos_Assert.hpp" 57 #include "Teuchos_SerialDenseMatrix.hpp" 58 #include "Teuchos_RCP.hpp" 59 #include "Epetra_MultiVector.h" 60 #include "Epetra_Vector.h" 61 #include "Epetra_Operator.h" 62 #include "Epetra_Map.h" 63 #include "Epetra_LocalMap.h" 65 #if defined(HAVE_ANASAZI_TPETRA) && defined(HAVE_ANASAZI_TSQR) 66 # include <Tpetra_ConfigDefs.hpp> 67 # if defined(HAVE_TPETRA_EPETRA) 68 # include <Epetra_TsqrAdaptor.hpp> 69 # endif // defined(HAVE_TPETRA_EPETRA) 70 #endif // defined(HAVE_ANASAZI_TPETRA) && defined(HAVE_ANASAZI_TSQR) 110 EpetraOpMultiVec(
const Teuchos::RCP<Epetra_Operator> &Op,
const Epetra_BlockMap& Map_in,
const int numvecs);
122 EpetraOpMultiVec(
const Teuchos::RCP<Epetra_Operator> &Op,
const Epetra_BlockMap& Map_in,
double * array,
const int numvecs,
const int stride=0);
131 EpetraOpMultiVec(
const Teuchos::RCP<Epetra_Operator> &Op, Epetra_DataAccess CV,
const Epetra_MultiVector& P_vec,
const std::vector<int>& index);
187 Teuchos::RCP<Epetra_MultiVector> GetEpetraMultiVector() {
return Epetra_MV; }
195 if ( Epetra_MV->Map().GlobalIndicesLongLong() )
196 return static_cast<ptrdiff_t>( Epetra_MV->GlobalLength64() );
198 return static_cast<ptrdiff_t
>( Epetra_MV->GlobalLength() );
211 const Teuchos::SerialDenseMatrix<int,double>& B,
221 void MvTransMv (
double alpha,
const MultiVec<double>& A, Teuchos::SerialDenseMatrix<int,double>& B
222 #ifdef HAVE_ANASAZI_EXPERIMENTAL
230 #ifdef HAVE_ANASAZI_EXPERIMENTAL
239 "Anasazi::EpetraOpMultiVec::MvScale call to Epetra_MultiVector::Scale() returned a nonzero value.");
244 void MvScale (
const std::vector<double>& alpha );
253 void MvNorm ( std::vector<double> & normvec )
const;
270 "Anasazi::EpetraOpMultiVec::MvRandom call to Epetra_MultiVector::Random() returned a nonzero value.");
277 "Anasazi::EpetraOpMultiVec::MvInit call to Epetra_MultiVector::PutScalar() returned a nonzero value.");
296 void MvPrint( std::ostream& os )
const { Epetra_MV->Print( os ); }
304 #pragma warning(push) 305 #pragma warning(disable:4251) 307 Teuchos::RCP<Epetra_Operator> Epetra_OP;
308 Teuchos::RCP<Epetra_MultiVector> Epetra_MV;
309 Teuchos::RCP<Epetra_MultiVector> Epetra_MV_Temp;
318 #endif // end of file ANASAZI_SPECIALIZED_EPETRA_ADAPTER_HPP EpetraMultiVecAccessor is an interfaceto allow any Anasazi::MultiVec implementation that is based on ...
const Epetra_MultiVector * GetEpetraMultiVec() const
Return the pointer to the Epetra_MultiVector object.
EpetraSpecializedMultiVecFailure is thrown when a return value from an Epetra call on an Epetra_Multi...
void MvInit(double alpha)
Replace each element of the vectors in *this with alpha.
virtual ~EpetraOpMultiVec()
Destructor.
An exception class parent to all Anasazi exceptions.
Interface for multivectors used by Anasazi' linear solvers.
Namespace Anasazi contains the classes, structs, enums and utilities used by the Anasazi package...
ConjType
Enumerated types used to specify conjugation arguments.
void MvScale(double alpha)
Scale each element of the vectors in *this with alpha.
ptrdiff_t GetGlobalLength() const
The number of rows in the multivector.
Specialized adapter class for Anasazi::MultiVec that uses Epetra_MultiVector and Epetra_Operator to d...
Anasazi header file which uses auto-configuration information to include necessary C++ headers...
void MvPrint(std::ostream &os) const
Print *this EpetraOpMultiVec.
Epetra_MultiVector * GetEpetraMultiVec()
Return the pointer to the Epetra_MultiVector object.
Templated virtual class for creating operators that can interface with the Anasazi::OperatorTraits cl...
Types and exceptions used within Anasazi solvers and interfaces.
void MvRandom()
Fill the vectors in *this with random numbers.
Interface for multivectors used by Anasazi's linear solvers.
Declarations of Anasazi multi-vector and operator classes using Epetra_MultiVector and Epetra_Operato...
int GetNumberVecs() const
Obtain the vector length of *this.