NOX::LAPACK::Vector Class Reference

Implementation of NOX::Abstract::Vector for STL vector<double> (using LAPACK for some computations). More...

#include <NOX_LAPACK_Vector.H>

Inheritance diagram for NOX::LAPACK::Vector:

Inheritance graph
[legend]
Collaboration diagram for NOX::LAPACK::Vector:

Collaboration graph
[legend]

List of all members.

Public Member Functions

 Vector ()
 Construct an empty vector.
 Vector (int n)
 Construct a zero vector of length n.
 Vector (int n, double *v)
 Construct a vector of length n from given array.
 Vector (const NOX::LAPACK::Vector &source, NOX::CopyType type=NOX::DeepCopy)
 Copy constructor.
 ~Vector ()
 Destruct Vector.
int length () const
 Return the length of vector.
double & operator() (int i)
 Return the i-th element.
const double & operator() (int i) const
 Return the i-th element (const version).
ostream & leftshift (ostream &stream) const
 Prints out the vector to the specified stream.
void print (std::ostream &stream) const
 Print the vector. To be used for debugging only.
NOX::Abstract::Vectorinit (double value)
 Initialize every element of this vector with gamma.
virtual NOX::Abstract::Vectorrandom (bool useSeed=false, int seed=1)
 Initialize every element of this vector with random values.
NOX::Abstract::Vectoroperator= (const vector< double > &y)
 Replace this vector with STL double vector y.
NOX::Abstract::Vectoroperator= (const NOX::LAPACK::Vector &y)
NOX::Abstract::Vectoroperator= (const NOX::Abstract::Vector &y)
 Copy source vector y into this vector.
NOX::Abstract::Vectorabs (const NOX::LAPACK::Vector &y)
NOX::Abstract::Vectorabs (const NOX::Abstract::Vector &y)
 Put element-wise absolute values of source vector y into this vector.
NOX::Abstract::Vectorreciprocal (const NOX::LAPACK::Vector &y)
NOX::Abstract::Vectorreciprocal (const NOX::Abstract::Vector &y)
 Put element-wise reciprocal of source vector y into this vector.
NOX::Abstract::Vectorscale (double gamma)
 Scale each element of this vector by gamma.
NOX::Abstract::Vectorscale (const NOX::LAPACK::Vector &a)
NOX::Abstract::Vectorscale (const NOX::Abstract::Vector &a)
 Scale this vector element-by-element by the vector a.
NOX::Abstract::Vectorupdate (double alpha, const NOX::LAPACK::Vector &a, double gamma=0.0)
NOX::Abstract::Vectorupdate (double alpha, const NOX::Abstract::Vector &a, double gamma=0.0)
 Compute x = (alpha * a) + (gamma * x) where x is this vector.
NOX::Abstract::Vectorupdate (double alpha, const NOX::LAPACK::Vector &a, double beta, const NOX::LAPACK::Vector &b, double gamma=0.0)
NOX::Abstract::Vectorupdate (double alpha, const NOX::Abstract::Vector &a, double beta, const NOX::Abstract::Vector &b, double gamma=0.0)
 Compute x = (alpha * a) + (beta * b) + (gamma * x) where x is this vector.
Teuchos::RCP
< NOX::Abstract::Vector
clone (NOX::CopyType type=NOX::DeepCopy) const
 Create a new Vector of the same underlying type by cloning "this", and return a pointer to the new vector.
double norm (NOX::Abstract::Vector::NormType type=NOX::Abstract::Vector::TwoNorm) const
 Norm.
double norm (const NOX::LAPACK::Vector &weights) const
double norm (const NOX::Abstract::Vector &weights) const
 Weighted 2-Norm.
double innerProduct (const NOX::LAPACK::Vector &y) const
double innerProduct (const NOX::Abstract::Vector &y) const
 Inner product with y.

Private Member Functions

double & operator[] (int i)
 Return the i-th element.
const double & operator[] (int i) const
 Return the i-th element.

Private Attributes

int n
 The used length of vector.
vector< double > x
 The vector owned by this object.


Detailed Description

Implementation of NOX::Abstract::Vector for STL vector<double> (using LAPACK for some computations).

Definition at line 67 of file NOX_LAPACK_Vector.H.


Constructor & Destructor Documentation

NOX::LAPACK::Vector::Vector (  ) 

Construct an empty vector.

Reimplemented from NOX::Abstract::Vector.

Definition at line 47 of file NOX_LAPACK_Vector.C.

NOX::LAPACK::Vector::Vector ( int  n  ) 

Construct a zero vector of length n.

Definition at line 53 of file NOX_LAPACK_Vector.C.

NOX::LAPACK::Vector::Vector ( int  n,
double *  v 
)

Construct a vector of length n from given array.

Definition at line 59 of file NOX_LAPACK_Vector.C.

NOX::LAPACK::Vector::Vector ( const NOX::LAPACK::Vector source,
NOX::CopyType  type = NOX::DeepCopy 
)

Copy constructor.

Definition at line 65 of file NOX_LAPACK_Vector.C.

NOX::LAPACK::Vector::~Vector (  )  [virtual]

Destruct Vector.

Reimplemented from NOX::Abstract::Vector.

Definition at line 72 of file NOX_LAPACK_Vector.C.


Member Function Documentation

NOX::Abstract::Vector & NOX::LAPACK::Vector::init ( double  gamma  )  [virtual]

Initialize every element of this vector with gamma.

Here x represents this vector, and we update it as

\[ x_i = \gamma \quad \mbox{for } i=1,\dots,n \]

Returns:
Reference to this object

Implements NOX::Abstract::Vector.

Definition at line 96 of file NOX_LAPACK_Vector.C.

References n, and x.

NOX::Abstract::Vector & NOX::LAPACK::Vector::random ( bool  useSeed = false,
int  seed = 1 
) [virtual]

Initialize every element of this vector with random values.

Reimplemented from NOX::Abstract::Vector.

Definition at line 103 of file NOX_LAPACK_Vector.C.

References n, NOX::Random::number(), NOX::Random::setSeed(), and x.

NOX::Abstract::Vector & NOX::LAPACK::Vector::operator= ( const vector< double > &  y  ) 

Replace this vector with STL double vector y.

Definition at line 76 of file NOX_LAPACK_Vector.C.

References x.

Referenced by operator=().

NOX::Abstract::Vector & NOX::LAPACK::Vector::operator= ( const NOX::Abstract::Vector y  )  [virtual]

Copy source vector y into this vector.

Here x represents this vector, and we update it as

\[ x_i = y_i \quad \mbox{for } i=1,\dots,n \]

Returns:
Reference to this object

Implements NOX::Abstract::Vector.

Definition at line 83 of file NOX_LAPACK_Vector.C.

References operator=().

NOX::Abstract::Vector & NOX::LAPACK::Vector::abs ( const NOX::Abstract::Vector y  )  [virtual]

Put element-wise absolute values of source vector y into this vector.

Here x represents this vector, and we update it as

\[ x_i = | y_i | \quad \mbox{for } i=1,\dots,n \]

Returns:
Reference to this object

Implements NOX::Abstract::Vector.

Definition at line 114 of file NOX_LAPACK_Vector.C.

NOX::Abstract::Vector & NOX::LAPACK::Vector::reciprocal ( const NOX::Abstract::Vector y  )  [virtual]

Put element-wise reciprocal of source vector y into this vector.

Here x represents this vector, and we update it as

\[ x_i = \frac{1}{y_i} \quad \mbox{for } i=1,\dots,n \]

Returns:
Reference to this object

Implements NOX::Abstract::Vector.

Definition at line 128 of file NOX_LAPACK_Vector.C.

NOX::Abstract::Vector & NOX::LAPACK::Vector::scale ( double  gamma  )  [virtual]

Scale each element of this vector by gamma.

Here x represents this vector, and we update it as

\[ x_i = \gamma x_i \quad \mbox{for } i=1,\dots,n \]

Returns:
Reference to this object

Implements NOX::Abstract::Vector.

Definition at line 142 of file NOX_LAPACK_Vector.C.

References x.

Referenced by NOX::LAPACK::Group::computeNewton(), and scale().

NOX::Abstract::Vector & NOX::LAPACK::Vector::scale ( const NOX::Abstract::Vector a  )  [virtual]

Scale this vector element-by-element by the vector a.

Here x represents this vector, and we update it as

\[ x_i = x_i \cdot a_i \quad \mbox{for } i=1,\dots,n \]

Returns:
Reference to this object

Implements NOX::Abstract::Vector.

Definition at line 190 of file NOX_LAPACK_Vector.C.

References scale().

NOX::Abstract::Vector & NOX::LAPACK::Vector::update ( double  alpha,
const NOX::Abstract::Vector a,
double  gamma = 0.0 
) [virtual]

Compute x = (alpha * a) + (gamma * x) where x is this vector.

Here x represents this vector, and we update it as

\[ x_i = \alpha \; a_i + \gamma \; x_i \quad \mbox{for } i=1,\dots,n \]

Returns:
Reference to this object

Implements NOX::Abstract::Vector.

Definition at line 149 of file NOX_LAPACK_Vector.C.

NOX::Abstract::Vector & NOX::LAPACK::Vector::update ( double  alpha,
const NOX::Abstract::Vector a,
double  beta,
const NOX::Abstract::Vector b,
double  gamma = 0.0 
) [virtual]

Compute x = (alpha * a) + (beta * b) + (gamma * x) where x is this vector.

Here x represents this vector, and we update it as

\[ x_i = \alpha \; a_i + \beta \; b_i + \gamma \; x_i \quad \mbox{for } i=1,\dots,n \]

Returns:
Reference to this object

Implements NOX::Abstract::Vector.

Definition at line 167 of file NOX_LAPACK_Vector.C.

Teuchos::RCP< NOX::Abstract::Vector > NOX::LAPACK::Vector::clone ( NOX::CopyType  type = NOX::DeepCopy  )  const [virtual]

Create a new Vector of the same underlying type by cloning "this", and return a pointer to the new vector.

If type is NOX::DeepCopy, then we need to create an exact replica of "this". Otherwise, if type is NOX::ShapeCopy, we need only replicate the shape of "this" (the memory is allocated for the objects, but the current values are not copied into the vector). Note that there is no assumption that a vector created by ShapeCopy is initialized to zeros.

Returns:
Pointer to newly created vector or NULL if clone is not supported.

Implements NOX::Abstract::Vector.

Definition at line 204 of file NOX_LAPACK_Vector.C.

double NOX::LAPACK::Vector::norm ( NOX::Abstract::Vector::NormType  type = NOX::Abstract::Vector::TwoNorm  )  const [virtual]

double NOX::LAPACK::Vector::norm ( const NOX::Abstract::Vector weights  )  const [virtual]

Weighted 2-Norm.

Here x represents this vector, and we compute its weighted norm as follows:

\[ \|x\|_w = \sqrt{\sum_{i=1}^{n} w_i \; x_i^2} \]

Returns:
$ \|x\|_w $

Implements NOX::Abstract::Vector.

Definition at line 239 of file NOX_LAPACK_Vector.C.

References norm().

double NOX::LAPACK::Vector::innerProduct ( const NOX::Abstract::Vector y  )  const [virtual]

Inner product with y.

Here x represents this vector, and we compute its inner product with y as follows:

\[ \langle x,y \rangle = \sum_{i=1}^n x_i y_i \]

Returns:
$\langle x,y \rangle$

Implements NOX::Abstract::Vector.

Definition at line 261 of file NOX_LAPACK_Vector.C.

int NOX::LAPACK::Vector::length (  )  const [virtual]

Return the length of vector.

Returns:
The length of this vector
Note:
Even if the vector is distributed across processors, this should return the global length of the vector.

Implements NOX::Abstract::Vector.

Definition at line 277 of file NOX_LAPACK_Vector.C.

double & NOX::LAPACK::Vector::operator() ( int  i  ) 

Return the i-th element.

Definition at line 292 of file NOX_LAPACK_Vector.C.

References x.

const double & NOX::LAPACK::Vector::operator() ( int  i  )  const

Return the i-th element (const version).

Definition at line 297 of file NOX_LAPACK_Vector.C.

References x.

ostream & NOX::LAPACK::Vector::leftshift ( ostream &  stream  )  const

Prints out the vector to the specified stream.

For example, a vector would appear as

\[ \left[ \; 0.1 \; 2.34 \; 5 \; \right] \]

It will be all on one line, with a single space between each entry, bracketed on either side.

Definition at line 302 of file NOX_LAPACK_Vector.C.

References x.

Referenced by operator<<().

void NOX::LAPACK::Vector::print ( std::ostream &  stream  )  const [virtual]

Print the vector. To be used for debugging only.

Reimplemented from NOX::Abstract::Vector.

Definition at line 316 of file NOX_LAPACK_Vector.C.

double & NOX::LAPACK::Vector::operator[] ( int  i  )  [private]

Return the i-th element.

Definition at line 282 of file NOX_LAPACK_Vector.C.

References x.

const double & NOX::LAPACK::Vector::operator[] ( int  i  )  const [private]

Return the i-th element.

Definition at line 287 of file NOX_LAPACK_Vector.C.

References x.


Member Data Documentation

int NOX::LAPACK::Vector::n [private]

The used length of vector.

Definition at line 190 of file NOX_LAPACK_Vector.H.

Referenced by init(), and random().

vector<double> NOX::LAPACK::Vector::x [private]

The vector owned by this object.

Definition at line 193 of file NOX_LAPACK_Vector.H.

Referenced by init(), leftshift(), norm(), operator()(), operator=(), operator[](), random(), and scale().


The documentation for this class was generated from the following files:

Generated on Thu Dec 17 11:03:07 2009 for Nonlinear Solver Project by  doxygen 1.5.9