70int main(
int argc,
char *argv[])
73 using Teuchos::rcp_implicit_cast;
83 MPI_Init(&argc,&argv);
84 Teuchos::RCP<Epetra_MpiComm> Comm = Teuchos::rcp(
new Epetra_MpiComm(MPI_COMM_WORLD) );
87 Teuchos::RCP<Epetra_SerialComm> Comm = Teuchos::rcp(
new Epetra_SerialComm() );
96 int MyPID = Comm->MyPID();
100 if (argv[1][0]==
'-' && argv[1][1]==
'v') {
107 Teuchos::RCP<Epetra_Map> Map = Teuchos::rcp(
new Epetra_Map(dim, 0, *Comm) );
110 int NumMyElements = Map->NumMyElements();
111 std::vector<int> MyGlobalElements(NumMyElements);
112 Map->MyGlobalElements(&MyGlobalElements[0]);
117 std::vector<int> NumNz(NumMyElements);
121 for (i=0; i<NumMyElements; i++) {
122 if (MyGlobalElements[i]==0 || MyGlobalElements[i] == dim-1) {
131 Teuchos::RCP<Epetra_CrsMatrix> A = Teuchos::rcp(
new Epetra_CrsMatrix(Copy, *Map, &NumNz[0]) );
136 std::vector<double> Values(2);
137 Values[0] = -1.0; Values[1] = -1.0;
138 std::vector<int> Indices(2);
141 for (i=0; i<NumMyElements; i++) {
142 if (MyGlobalElements[i]==0) {
146 else if (MyGlobalElements[i] == dim-1) {
151 Indices[0] = MyGlobalElements[i]-1;
152 Indices[1] = MyGlobalElements[i]+1;
155 ierr = A->InsertGlobalValues(MyGlobalElements[i],NumEntries,&Values[0],&Indices[0]);
158 ierr = A->InsertGlobalValues(MyGlobalElements[i],1,&two,&MyGlobalElements[i]);
163 ierr = A->FillComplete();
167 Teuchos::RCP<Belos::EpetraOp> op = Teuchos::rcp(
new Belos::EpetraOp(A));
175 Teuchos::RCP<Belos::EpetraMultiVec> ivec = Teuchos::rcp(
new Belos::EpetraMultiVec(*Map, blockSize) );
179 Teuchos::RCP<Belos::OutputManager<double> > MyOM = Teuchos::rcp(
new Belos::OutputManager<double>( MyPID ) );
181 MyOM->setVerbosity( Belos::Errors + Belos::Warnings );
184#ifdef HAVE_EPETRA_THYRA
185 typedef Thyra::MultiVectorBase<double> TMVB;
186 typedef Thyra::LinearOpBase<double> TLOB;
190 Teuchos::RCP<const Thyra::VectorSpaceBase<double> > epetra_vs =
191 Thyra::create_VectorSpace(Map);
194 Teuchos::RCP<Thyra::MultiVectorBase<double> > thyra_ivec =
195 Thyra::create_MultiVector(rcp_implicit_cast<Epetra_MultiVector>(ivec),epetra_vs);
198 Teuchos::RCP<Thyra::LinearOpBase<double> > thyra_op =
199 Teuchos::rcp(
new Thyra::EpetraLinearOp(A) );
203 ierr = Belos::TestMultiVecTraits<double,TMVB>(MyOM,thyra_ivec);
207 if ( verbose && MyPID==0 ) {
208 std::cout <<
"*** ThyraAdapter PASSED TestMultiVecTraits()" << std::endl;
212 if ( verbose && MyPID==0 ) {
213 std::cout <<
"*** ThyraAdapter FAILED TestMultiVecTraits() ***"
214 << std::endl << std::endl;
220 ierr = Belos::TestOperatorTraits<double,TMVB,TLOB>(MyOM,thyra_ivec,thyra_op);
224 if ( verbose && MyPID==0 ) {
225 std::cout <<
"*** ThyraAdapter PASSED TestOperatorTraits()" << std::endl;
229 if ( verbose && MyPID==0 ) {
230 std::cout <<
"*** ThyraAdapter FAILED TestOperatorTraits() ***"
231 << std::endl << std::endl;
242 if (verbose && MyPID==0)
243 std::cout <<
"End Result: TEST FAILED" << std::endl;
249 if (verbose && MyPID==0)
250 std::cout <<
"End Result: TEST PASSED" << std::endl;
int main(int argc, char *argv[])