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>
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 ); }
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;
Anasazi header file which uses auto-configuration information to include necessary C++ headers.
Declarations of Anasazi multi-vector and operator classes using Epetra_MultiVector and Epetra_Operato...
Interface for multivectors used by Anasazi' linear solvers.
Templated virtual class for creating operators that can interface with the Anasazi::OperatorTraits cl...
Types and exceptions used within Anasazi solvers and interfaces.
An exception class parent to all Anasazi exceptions.
EpetraMultiVecAccessor is an interfaceto allow any Anasazi::MultiVec implementation that is based on ...
Specialized adapter class for Anasazi::MultiVec that uses Epetra_MultiVector and Epetra_Operator to d...
void MvScale(double alpha)
Scale each element of the vectors in *this with alpha.
void MvPrint(std::ostream &os) const
Print *this EpetraOpMultiVec.
ptrdiff_t GetGlobalLength() const
The number of rows in the multivector.
const Epetra_MultiVector * GetEpetraMultiVec() const
Return the pointer to the Epetra_MultiVector object.
virtual ~EpetraOpMultiVec()
Destructor.
void MvInit(double alpha)
Replace each element of the vectors in *this with alpha.
void MvRandom()
Fill the vectors in *this with random numbers.
int GetNumberVecs() const
Obtain the vector length of *this.
Epetra_MultiVector * GetEpetraMultiVec()
Return the pointer to the Epetra_MultiVector object.
EpetraSpecializedMultiVecFailure is thrown when a return value from an Epetra call on an Epetra_Multi...
Interface for multivectors used by Anasazi's linear solvers.
Namespace Anasazi contains the classes, structs, enums and utilities used by the Anasazi package.
ConjType
Enumerated types used to specify conjugation arguments.