18 : label(
"Stokhos::PCECovarianceOp"),
20 s(X_poly.basis()->norm_squared()),
26 int sz = X_poly.
size();
29 for (
int i=0; i<sz-1; i++)
30 (*XX)(i)->Scale(1.0, X_poly[i+1]);
39 : label(
"Stokhos::PCECovarianceOp"),
41 s(basis.norm_squared()),
48 int sz = basis.
size();
58 : label(
"Stokhos::PCECovarianceOp"),
60 s(basis.norm_squared()),
76 useTranspose = UseTheTranspose;
85 int m = Input.NumVectors();
90 tmp->Multiply(
'T',
'N', 1.0, *X, Input, 0.0);
93 for (
int j=0;
j<m;
j++)
94 for (
int i=0; i<X->NumVectors(); i++)
95 (*tmp)[
j][i] *= s[i+1];
98 Result.Multiply(
'N',
'N', 1.0, *X, *tmp, 0.0);
107 throw "PCECovarianceOp::ApplyInverse not defined!";
121 return const_cast<char*
>(label.c_str());
139 return X->Map().Comm();
144 return dynamic_cast<const Epetra_Map&
>(X->Map());
150 return dynamic_cast<const Epetra_Map&
>(X->Map());
virtual int Apply(const Epetra_MultiVector &Input, Epetra_MultiVector &Result) const
Returns the result of a Epetra_Operator applied to a Epetra_MultiVector Input in Result as described ...
virtual const Epetra_Map & OperatorRangeMap() const
Returns the Epetra_Map object associated with the range of this matrix operator.
virtual double NormInf() const
Returns an approximate infinity norm of the operator matrix.
virtual const Epetra_Comm & Comm() const
Returns a reference to the Epetra_Comm communicator associated with this operator.
virtual bool UseTranspose() const
Returns the current UseTranspose setting.
PCECovarianceOp(const Stokhos::VectorOrthogPoly< Epetra_Vector > &X_poly)
Constructor with polynomial X.
int NumMyElements() const
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
virtual const Epetra_BlockMap & Map() const =0
virtual ~PCECovarianceOp()
Destructor.
virtual bool HasNormInf() const
Returns true if the this object can provide an approximate Inf-norm, false otherwise.
const Epetra_Comm & Comm() const
Teuchos::RCP< const Epetra_MultiVector > X
Multivector X defining A = X*S*X^T.
const Epetra_BlockMap & CoeffMap() const
Returns PCE coefficient map.
Teuchos::RCP< Epetra_Map > tmp_map
Map needed for temporary vector.
ordinal_type size() const
Return size.
virtual const Epetra_Map & OperatorDomainMap() const
Returns the Epetra_Map object associated with the domain of this matrix operator. ...
virtual ordinal_type size() const =0
Return total size of basis.
virtual int ApplyInverse(const Epetra_MultiVector &X, Epetra_MultiVector &Y) const
Returns the result of the inverse of the operator applied to a Epetra_MultiVector Input in Result as ...
virtual const char * Label() const
Returns a character std::string describing the operator.
virtual int SetUseTranspose(bool UseTranspose)
Set to true if the transpose of the operator is requested.