1 #ifndef RBGEN_STSVD_RTR_H
2 #define RBGEN_STSVD_RTR_H
4 #include "RBGen_PODMethod.hpp"
5 #include "RBGen_Method.hpp"
6 #include "AnasaziOrthoManager.hpp"
7 #include "AnasaziEpetraAdapter.hpp"
8 #include "Epetra_MultiVector.h"
9 #include "Epetra_SerialDenseMatrix.h"
13 #include "AnasaziSolverUtils.hpp"
102 bool isInitialized() {
return isInitialized_; }
108 typedef Anasazi::SolverUtils<double,Epetra_MultiVector,Epetra_Operator> Utils;
125 bool checkE, checkHE, checkD, checkHD, checkR;
127 bool checkElen, checkRlen;
129 bool checkEHR, checkDHR;
131 CheckList() : checkUV(false), checkRes(false), checkSyms(false),
132 checkSigma(false), checkF(false),
133 checkE(false), checkHE(false), checkD(false), checkHD(false), checkR(false),
134 checkElen(false), checkRlen(false),
135 checkEHR(false), checkDHR(false) {};
148 std::vector<std::string> stopReasons_;
179 void solveTRSubproblem();
187 void updateResiduals();
189 void Debug(
const CheckList &chk, std::string where)
const;
191 void printStatus()
const;
198 std::vector<double> N_;
212 std::vector<double> sigma_;
230 std::vector<double> resNorms_;
231 std::vector<double> resUNorms_, resVNorms_;
232 double maxScaledNorm_;
236 double Delta0_, Delta_, Delta_bar_;
250 double conv_kappa_, conv_theta_;
252 double rho_, rhonum_, rhoden_;
253 bool tiny_rhonum_, zero_rhoden_, neg_rho_;
257 trRetType innerStop_;
263 std::string tradjust_;
279 std::vector<double> dgesvd_work_;
284 #endif // RBGEN_STSVD_RTR_H
std::vector< double > getSingularValues() const
Return the singular values.
void updateBasis(const Teuchos::RCP< Epetra_MultiVector > &update_ss)
Update the current basis using a new set of snapshots.
std::vector< double > getResNorms()
Return the scaled residual norms.
virtual ~StSVDRTR()
Destructor.
void Reset(const Teuchos::RCP< Epetra_MultiVector > &new_ss)
Reset the snapshot set used to compute the reduced basis.
StSVDRTR()
Default constructor.
Abstract base class for reduced basis methods.
Abstract base class for reduced basis POD methods.
void computeBasis()
Computes bases for the left and (optionally) right singular subspaces, along with singular vaues...
double getCompTime() const
Return the cummulative wall-clock time.
Class for producing a POD basis using a trust-region optimization on the Stiefel manifold.
double totalElapsedTime(bool readCurrentTime=false) const
Teuchos::RCP< const Epetra_MultiVector > getRightBasis() const
Return a basis for the right singular subspace.
Teuchos::RCP< const Epetra_MultiVector > getBasis() const
Return a basis for the left singular subspace.
void Initialize(const Teuchos::RCP< Teuchos::ParameterList > ¶ms, const Teuchos::RCP< const Epetra_MultiVector > &init, const Teuchos::RCP< RBGen::FileIOHandler< Epetra_Operator > > &fileio=Teuchos::null)
Initialize the method with the given parameter list and snapshot set.