25 #ifndef UQ_TEUCHOS_VECTOR_H
26 #define UQ_TEUCHOS_VECTOR_H
28 #ifdef QUESO_HAS_TRILINOS
29 #include <Teuchos_SerialDenseVector.hpp>
30 #include <Teuchos_SerialDenseMatrix.hpp>
31 #include <Teuchos_LAPACK.hpp>
34 #include <queso/Defines.h>
35 #include <queso/Vector.h>
38 #ifdef QUESO_HAS_TRILINOS
55 class TeuchosVector :
public Vector
67 TeuchosVector(
const BaseEnvironment& env,
const Map& map);
70 TeuchosVector(
const BaseEnvironment& env,
const Map& map,
double value);
73 TeuchosVector(
const BaseEnvironment& env,
double d1,
double d2,
const Map& map);
76 TeuchosVector(
const TeuchosVector& v,
double d1,
double d2);
79 TeuchosVector(
const TeuchosVector& y);
88 TeuchosVector& operator= (
double a);
92 TeuchosVector& operator= (
const TeuchosVector& rhs);
95 TeuchosVector& operator*=(
double a);
98 TeuchosVector& operator/=(
double a);
101 TeuchosVector& operator*=(
const TeuchosVector& rhs);
104 TeuchosVector& operator/=(
const TeuchosVector& rhs);
107 TeuchosVector& operator+=(
const TeuchosVector& rhs);
110 TeuchosVector& operator-=(
const TeuchosVector& rhs);
115 double& operator[](
unsigned int i);
119 const double& operator[](
unsigned int i)
const;
124 unsigned int sizeLocal ()
const;
128 unsigned int sizeGlobal ()
const;
134 double getMaxValue ()
const;
137 double getMinValue ()
const;
140 int getMaxValueIndex ()
const;
143 int getMinValueIndex ()
const;
146 void getMaxValueAndIndex(
double& value,
int& index );
149 void getMinValueAndIndex(
double& value,
int& index );
154 double norm2Sq ()
const;
158 double norm2 ()
const;
161 double norm1 ()
const;
164 double normInf ()
const;
172 bool atLeastOneComponentSmallerThan (
const TeuchosVector& rhs)
const;
176 bool atLeastOneComponentBiggerThan (
const TeuchosVector& rhs)
const;
179 bool atLeastOneComponentSmallerOrEqualThan(
const TeuchosVector& rhs)
const;
182 bool atLeastOneComponentBiggerOrEqualThan (
const TeuchosVector& rhs)
const;
187 void cwSet(
double value);
191 void cwSet(
unsigned int initialPos,
const TeuchosVector& vec);
194 void cwExtract(
unsigned int initialPos, TeuchosVector& vec)
const;
203 void cwSetConcatenated(
const TeuchosVector& v1,
const TeuchosVector& v2);
206 void cwSetGaussian(
double mean,
double stdDev);
209 void cwSetGaussian(
const TeuchosVector& meanVec,
const TeuchosVector& stdDevVec);
212 void cwSetUniform (
const TeuchosVector& lowerBoundVec,
const TeuchosVector& upperBoundVec);
215 void cwSetBeta (
const TeuchosVector& alpha,
const TeuchosVector& beta );
218 void cwSetGamma (
const TeuchosVector& a,
const TeuchosVector& b );
221 void cwSetInverseGamma(
const TeuchosVector& a,
const TeuchosVector& b );
228 TeuchosVector abs()
const;
232 void copy_to_std_vector(std::vector<double>& vec);
236 void copy_from_std_vector(
const std::vector<double> vec);
243 double sumOfComponents ()
const;
246 void mpiBcast (
int srcRank,
const MpiComm& bcastComm);
249 void mpiAllReduce (
RawType_MPI_Op mpiOperation,
const MpiComm& opComm, TeuchosVector& resultVec)
const;
252 void mpiAllQuantile (
double probability,
const MpiComm& opComm, TeuchosVector& resultVec)
const;
258 void matlabLinearInterpExtrap(
const TeuchosVector& xVec,
const TeuchosVector& yVec,
const TeuchosVector& xiVec);
261 void matlabDiff (
unsigned int firstPositionToStoreDiff,
double valueForRemainderPosition, TeuchosVector& outputVec)
const;
267 void print (std::ostream& os)
const;
269 void subReadContents (
const std::string& fileName,
270 const std::string& fileType,
271 const std::set<unsigned int>& allowedSubEnvIds);
272 void subWriteContents (
const std::string& varNamePrefix,
273 const std::string& fileName,
274 const std::string& fileType,
275 const std::set<unsigned int>& allowedSubEnvIds)
const;
285 Teuchos::SerialDenseVector<int,double> m_vec;
288 void copy (
const TeuchosVector& src);
293 TeuchosVector
operator/ (
double a,
const TeuchosVector& x );
294 TeuchosVector
operator/ (
const TeuchosVector& x,
const TeuchosVector& y );
295 TeuchosVector
operator* (
double a,
const TeuchosVector& x );
296 TeuchosVector
operator* (
const TeuchosVector& x,
const TeuchosVector& y );
297 double scalarProduct(
const TeuchosVector& x,
const TeuchosVector& y );
298 TeuchosVector
operator+ (
const TeuchosVector& x,
const TeuchosVector& y );
299 TeuchosVector
operator- (
const TeuchosVector& x,
const TeuchosVector& y );
300 bool operator== (
const TeuchosVector& lhs,
const TeuchosVector& rhs);
301 std::ostream&
operator<< (std::ostream& os,
const TeuchosVector& obj);
305 #endif // ifdef QUESO_HAS_TRILINOS
307 #endif //UQ_TEUCHOS_VECTOR_H
GslMatrix operator+(const GslMatrix &m1, const GslMatrix &m2)
GslMatrix operator-(const GslMatrix &m1, const GslMatrix &m2)
double scalarProduct(const GslVector &x, const GslVector &y)
std::ostream & operator<<(std::ostream &os, const BaseEnvironment &obj)
bool operator==(const GslVector &lhs, const GslVector &rhs)
GslVector operator/(double a, const GslVector &x)
GslMatrix operator*(double a, const GslMatrix &mat)