42 #ifndef __Thyra_TsqrAdaptor_hpp
43 #define __Thyra_TsqrAdaptor_hpp
50 #include "Thyra_MultiVectorBase.hpp"
51 #include "Thyra_SpmdVectorSpaceBase.hpp"
54 # include "Teuchos_DefaultMpiComm.hpp"
56 #include "Teuchos_DefaultSerialComm.hpp"
57 #include "Teuchos_ParameterListAcceptorDefaultBase.hpp"
85 template<
class Scalar>
89 typedef Scalar scalar_type;
90 typedef int ordinal_type;
102 throw std::logic_error (
"Thyra adaptor for TSQR not implemented");
108 throw std::logic_error (
"Thyra adaptor for TSQR not implemented");
112 getValidParameters ()
const
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");
186 const magnitude_type& )
188 throw std::logic_error (
"Thyra adaptor for TSQR not implemented");
203 getComm (
const MV& X)
207 using Teuchos::rcp_dynamic_cast;
208 using Teuchos::rcp_implicit_cast;
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.");
245 RCP<const Teuchos::OpaqueWrapper<MPI_Comm> > rawMpiComm = thyraMpiComm->getRawMpiComm ();
251 #else // NOT HAVE_MPI
253 RCP<const Teuchos::SerialComm<Thyra::Ordinal> > thyraSerialComm =
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.");
272 prepareNodeTsqr (
const MV& )
274 throw std::logic_error (
"Thyra adaptor for TSQR not implemented");
290 prepareDistTsqr (
const MV& )
292 throw std::logic_error (
"Thyra adaptor for TSQR not implemented");
315 prepareTsqr (
const MV& )
317 throw std::logic_error (
"Thyra adaptor for TSQR not implemented");
323 #endif // __Thyra_TsqrAdaptor_hpp
void factorExplicit(MV &, MV &, dense_matrix_type &, const bool=false)
Compute QR factorization [Q,R] = qr(A,0).
Stub adaptor from Thyra::MultiVectorBase to TSQR.
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
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)
int revealRank(MV &, dense_matrix_type &, const magnitude_type &)
Rank-revealing decomposition.
TsqrAdaptor()
Constructor (that uses default parameters).