42 #ifndef __Thyra_TsqrAdaptor_hpp
43 #define __Thyra_TsqrAdaptor_hpp
45 #include "BelosConfigDefs.hpp"
50 #include "Thyra_MultiVectorBase.hpp"
51 #include "Thyra_SpmdVectorSpaceBase.hpp"
85 template<
class Scalar>
88 typedef Thyra::MultiVectorBase<Scalar>
MV;
102 throw std::logic_error (
"Thyra adaptor for TSQR not implemented");
108 throw std::logic_error (
"Thyra adaptor for TSQR not implemented");
114 throw std::logic_error (
"Thyra adaptor for TSQR not implemented");
120 throw std::logic_error (
"Thyra adaptor for TSQR not implemented");
150 throw std::logic_error (
"Thyra adaptor for TSQR not implemented");
188 throw std::logic_error (
"Thyra adaptor for TSQR not implemented");
207 using Teuchos::rcp_dynamic_cast;
208 using Teuchos::rcp_implicit_cast;
209 typedef Thyra::VectorSpaceBase<Scalar> space_base_type;
210 typedef Thyra::SpmdVectorSpaceBase<Scalar> space_type;
231 rcp_dynamic_cast<
const Teuchos::MpiComm<Thyra::Ordinal> > (thyraComm);
236 thyraSerialComm.
is_null (), std::runtime_error,
237 "Thyra's communicator is neither an MpiComm nor a SerialComm. "
238 "Sorry, I have no idea what to do with it in that case.");
251 #else // NOT HAVE_MPI
256 thyraSerialComm.
is_null (), std::runtime_error,
257 "Thyra's communicator is not a SerialComm, and MPI is not enabled, so "
258 "it can't be an MpiComm either. That means it must be some other "
259 "subclass of Comm, about which I don't know. "
260 "Sorry, I have no idea what to do with it in that case.");
274 throw std::logic_error (
"Thyra adaptor for TSQR not implemented");
292 throw std::logic_error (
"Thyra adaptor for TSQR not implemented");
317 throw std::logic_error (
"Thyra adaptor for TSQR not implemented");
323 #endif // __Thyra_TsqrAdaptor_hpp
Teuchos::ScalarTraits< scalar_type >::magnitudeType magnitude_type
Thyra::MultiVectorBase< Scalar > MV
void prepareDistTsqr(const MV &)
Finish internode TSQR initialization.
void factorExplicit(MV &, MV &, dense_matrix_type &, const bool=false)
Compute QR factorization [Q,R] = qr(A,0).
Teuchos::SerialDenseMatrix< ordinal_type, scalar_type > dense_matrix_type
Stub adaptor from Thyra::MultiVectorBase to TSQR.
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
Teuchos::RCP< const Teuchos::ParameterList > getValidParameters() const
static Teuchos::RCP< const Teuchos::Comm< int > > getComm(const MV &X)
Attempt to get a communicator out of the given multivector.
TsqrAdaptor(const Teuchos::RCP< Teuchos::ParameterList > &)
Constructor (that accepts a parameter list).
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
bool is_null(const RCP< T > &p)
int revealRank(MV &, dense_matrix_type &, const magnitude_type &)
Rank-revealing decomposition.
TsqrAdaptor()
Constructor (that uses default parameters).
void setParameterList(const Teuchos::RCP< Teuchos::ParameterList > &)
void prepareNodeTsqr(const MV &)
Finish intranode TSQR initialization.
void prepareTsqr(const MV &)
Finish TSQR initialization.