43#ifdef HAVE_STOKHOS_ANASAZI
45#include "AnasaziBlockKrylovSchurSolMgr.hpp"
46#include "AnasaziBasicSort.hpp"
48Stokhos::PCEAnasaziKL::
56Stokhos::PCEAnasaziKL::
57PCEAnasaziKL(
const Teuchos::RCP<const EpetraExt::BlockVector>& X,
65Stokhos::PCEAnasaziKL::
66PCEAnasaziKL(
const Teuchos::RCP<const Epetra_MultiVector>& X,
75Stokhos::PCEAnasaziKL::
76getDefaultParams()
const
78 Teuchos::ParameterList params;
80 params.set(
"Verbosity",
81 Anasazi::FinalSummary +
85 params.set(
"Which",
"LM");
86 params.set(
"Block Size", 1);
87 params.set(
"Num Blocks", 3*num_KL);
88 params.set(
"Step Size", 5);
89 params.set(
"Maximum Restarts", 1);
90 params.set(
"Convergence Tolerance", 1e-12);
96Stokhos::PCEAnasaziKL::
97computeKL(Teuchos::ParameterList& anasazi_params)
101 Teuchos::RCP<Epetra_MultiVector> ivec =
103 anasazi_params.get<
int>(
"Block Size")));
109 Teuchos::rcp(
new Anasazi::BasicEigenproblem<ScalarType,MV,OP>(covOp, ivec));
112 anasazi_problem->setHermitian(
true);
115 anasazi_problem->setNEV(num_KL);
118 anasazi_problem->setProblem();
121 Anasazi::BlockKrylovSchurSolMgr<ScalarType,MV,OP> solverMgr(anasazi_problem,
125 Anasazi::ReturnType returnCode = solverMgr.solve();
129 if (returnCode != Anasazi::Converged) {
134 sol = anasazi_problem->getSolution();
139Teuchos::Array<double>
140Stokhos::PCEAnasaziKL::
141getEigenvalues()
const
143 Teuchos::Array<double> evals(num_KL);
144 for (
int i=0; i<num_KL; i++)
145 evals[i] = std::abs(sol.Evals[i].realpart);
149Teuchos::RCP<Epetra_MultiVector>
150Stokhos::PCEAnasaziKL::
151getEigenvectors()
const
Abstract base class for multivariate orthogonal polynomials.
A container class storing an orthogonal polynomial whose coefficients are vectors,...
Top-level namespace for Stokhos classes and functions.