10#ifndef THYRA_DESCRIBE_LINEAR_OP_HPP
11#define THYRA_DESCRIBE_LINEAR_OP_HPP
13#include "Thyra_LinearOpBase.hpp"
14#include "Thyra_MultiVectorBase.hpp"
15#include "Thyra_VectorStdOps.hpp"
16#include "Thyra_AssertOp.hpp"
17#include "Thyra_AssertOp.hpp"
21void Thyra::describeLinearOp(
22 const LinearOpBase<Scalar> &A,
32 RCP<FancyOStream> out =
rcp(&out_arg,
false);
34 *out << A.description() <<
"\n";
45 const Ordinal dimDomain = domain->dim(), dimRange = range->dim();
51 Array<Scalar> Md(dimRange*dimDomain);
57 for( j = 0; j < dimDomain; ++j ) {
61 t->acquireDetachedView(
Range1D(),&sv);
62 for( i = 0; i < dimRange; ++i ) Md[ i*cs + j*rs ] = sv(i);
63 t->releaseDetachedView(&sv);
66 for( i = 0; i < dimRange; ++i ) {
67 for( j = 0; j < dimDomain; ++j )
68 *out <<
" " << i <<
":" << j <<
":" << Md[ i + j*dimRange ];
80#define THYRA_DESCRIBE_LINEAR_INSTANT(SCALAR) \
82 template void describeLinearOp( \
83 const LinearOpBase<SCALAR > &A, \
84 Teuchos::FancyOStream &out_arg, \
85 const Teuchos::EVerbosityLevel verbLevel \
void apply(const LinearOpBase< Scalar > &M, const EOpTransp M_trans, const MultiVectorBase< Scalar > &X, const Ptr< MultiVectorBase< Scalar > > &Y, const Scalar alpha=static_cast< Scalar >(1.0), const Scalar beta=static_cast< Scalar >(0.0))
Non-member function call for M.apply(...).
void assign(const Ptr< MultiVectorBase< Scalar > > &V, Scalar alpha)
V = alpha.
void set_ele(Ordinal i, Scalar alpha, const Ptr< VectorBase< Scalar > > &v)
Set single element: v(i) = alpha.
RCP< VectorBase< Scalar > > createMember(const RCP< const VectorSpaceBase< Scalar > > &vs, const std::string &label="")
Create a vector member from the vector space.
basic_FancyOStream< char > FancyOStream
basic_OSTab< char > OSTab
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)