50 :
label(
"Stokhos::PCECovarianceOp"),
52 s(X_poly.basis()->norm_squared()),
58 int sz = X_poly.
size();
59 Teuchos::RCP<Epetra_MultiVector> XX =
61 for (
int i=0; i<sz-1; i++)
62 (*XX)(i)->Scale(1.0, X_poly[i+1]);
71 :
label(
"Stokhos::PCECovarianceOp"),
73 s(basis.norm_squared()),
80 int sz = basis.
size();
90 :
label(
"Stokhos::PCECovarianceOp"),
92 s(basis.norm_squared()),
118 if (
tmp == Teuchos::null ||
tmp->NumVectors() != m)
122 tmp->Multiply(
'T',
'N', 1.0, *
X, Input, 0.0);
125 for (
int j=0;
j<m;
j++)
126 for (
int i=0; i<
X->NumVectors(); i++)
127 (*
tmp)[
j][i] *=
s[i+1];
139 throw "PCECovarianceOp::ApplyInverse not defined!";
153 return const_cast<char*
>(
label.c_str());
171 return X->Map().Comm();
int NumMyElements() const
int Multiply(char TransA, char TransB, double ScalarAB, const Epetra_MultiVector &A, const Epetra_MultiVector &B, double ScalarThis)
Abstract base class for multivariate orthogonal polynomials.
virtual ordinal_type size() const =0
Return total size of basis.
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 bool UseTranspose() const
Returns the current UseTranspose setting.
Teuchos::RCP< const Epetra_MultiVector > X
Multivector X defining A = X*S*X^T.
PCECovarianceOp(const Stokhos::VectorOrthogPoly< Epetra_Vector > &X_poly)
Constructor with polynomial X.
Teuchos::RCP< Epetra_MultiVector > tmp
Temporary vector needed for apply.
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 ...
Teuchos::Array< double > s
Scaling vector in A = X*S*X^T.
virtual double NormInf() const
Returns an approximate infinity norm of the operator matrix.
std::string label
Label for operator.
Teuchos::RCP< Epetra_Map > tmp_map
Map needed for temporary vector.
virtual const Epetra_Map & OperatorDomainMap() const
Returns the Epetra_Map object associated with the domain of this matrix operator.
virtual ~PCECovarianceOp()
Destructor.
virtual const char * Label() const
Returns a character std::string describing the operator.
virtual const Epetra_Comm & Comm() const
Returns a reference to the Epetra_Comm communicator associated with this operator.
const Epetra_BlockMap & CoeffMap() const
Returns PCE coefficient map.
virtual bool HasNormInf() const
Returns true if the this object can provide an approximate Inf-norm, false otherwise.
virtual int SetUseTranspose(bool UseTranspose)
Set to true if the transpose of the operator is requested.
virtual const Epetra_Map & OperatorRangeMap() const
Returns the Epetra_Map object associated with the range of this matrix operator.
bool useTranspose
Flag indicating whether transpose was selected.
ordinal_type size() const
Return size.
A container class storing an orthogonal polynomial whose coefficients are vectors,...