#include "Didasko_ConfigDefs.h"
#if defined(HAVE_DIDASKO_EPETRA) && defined(HAVE_DIDASKO_ANASAZI) && defined(HAVE_DIDASKO_TEUCHOS) && defined(HAVE_DIDASKO_TRIUTILS) && defined(FIXME)
#include "Epetra_ConfigDefs.h"
#ifdef HAVE_MPI
#include "mpi.h"
#include "Epetra_MpiComm.h"
#else
#include "Epetra_SerialComm.h"
#endif
#include "Epetra_RowMatrix.h"
#include "Epetra_CrsMatrix.h"
#include "AnasaziConfigDefs.hpp"
#include "AnasaziPetraInterface.hpp"
#include "AnasaziBlockArnoldi.hpp"
#include "Trilinos_Util_CrsMatrixGallery.h"
using namespace Trilinos_Util;
int main(int argc, char *argv[])
{
#ifdef HAVE_MPI
MPI_Init(&argc,&argv);
Epetra_MpiComm Comm(MPI_COMM_WORLD);
#else
Epetra_SerialComm Comm;
#endif
CrsMatrixGallery Gallery("laplace_2d", Comm);
Gallery.Set("problem_size", 100);
Epetra_CrsMatrix * RowA = Gallery.GetMatrix();
int block = 1;
int length = 30;
int nev = 1;
double tol = 1.0e-14;
string which="SM";
int restarts = 100;
int step = restarts*length*block;
const Epetra_Map * Map = &(RowA->DomainMap());
Anasazi::PetraVec<double> ivec(*Map, block);
ivec.MvRandom();
Anasazi::PetraMat<double> Amat(*RowA);
Anasazi::Eigenproblem<double> MyProblem(&Amat, &ivec);
Anasazi::BlockArnoldi<double> MyBlockArnoldi(MyProblem, tol, nev, length, block,
which, step, restarts);
MyBlockArnoldi.setSymmetric(false);
MyBlockArnoldi.setDebugLevel(0);
MyBlockArnoldi.solve();
double * resids = MyBlockArnoldi.getResiduals();
double * evalr = MyBlockArnoldi.getEvals();
double * evali = MyBlockArnoldi.getiEvals();
Anasazi::PetraVec<double> evecr(*Map, nev);
MyBlockArnoldi.getEvecs( evecr );
Anasazi::PetraVec<double> eveci(*Map, nev);
MyBlockArnoldi.getiEvecs( eveci );
if( Comm.MyPID() == 0 ) {
for( int i=0 ; i<nev ; ++i )
cout << "eval[" << i << "] = " << evalr[i] << " + i " << evali[i] << endl;
MyBlockArnoldi.currentStatus();
}
if( resids ) delete [] resids;
if( evalr ) delete [] evalr;
if( evali ) delete [] evali;
#ifdef HAVE_MPI
MPI_Finalize();
#endif
return(EXIT_SUCCESS);
}
#else
#include <stdlib.h>
#include <stdio.h>
#ifdef HAVE_MPI
#include "mpi.h"
#endif
int main(int argc, char *argv[])
{
#ifdef HAVE_MPI
MPI_Init(&argc, &argv);
#endif
puts("Please configure Didasko with:");
puts("--enable-epetra");
puts("--enable-teuchos");
puts("--enable-triutils");
puts("--enable-anasazi");
#ifdef HAVE_MPI
MPI_Finalize();
#endif
return 0;
}
#endif