43 #ifdef HAVE_STOKHOS_ANASAZI 45 #include "AnasaziBlockKrylovSchurSolMgr.hpp" 46 #include "AnasaziBasicSort.hpp" 48 Stokhos::PCEAnasaziKL::
56 Stokhos::PCEAnasaziKL::
57 PCEAnasaziKL(
const Teuchos::RCP<const EpetraExt::BlockVector>& X,
65 Stokhos::PCEAnasaziKL::
66 PCEAnasaziKL(
const Teuchos::RCP<const Epetra_MultiVector>& X,
74 Teuchos::ParameterList
75 Stokhos::PCEAnasaziKL::
76 getDefaultParams()
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);
96 Stokhos::PCEAnasaziKL::
97 computeKL(Teuchos::ParameterList& anasazi_params)
101 Teuchos::RCP<Epetra_MultiVector> ivec =
102 Teuchos::rcp(
new Epetra_MultiVector(covOp->CoeffMap(),
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();
139 Teuchos::Array<double>
140 Stokhos::PCEAnasaziKL::
141 getEigenvalues()
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);
149 Teuchos::RCP<Epetra_MultiVector>
150 Stokhos::PCEAnasaziKL::
151 getEigenvectors()
const 156 #endif // HAVE_STOKHOS_ANASAZI
Top-level namespace for Stokhos classes and functions.
KOKKOS_INLINE_FUNCTION PCE< Storage > abs(const PCE< Storage > &a)