MFEM  v3.2
Finite element discretization library
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Pages
Public Member Functions | Protected Attributes | Friends | List of all members
mfem::Vector Class Reference

Vector data type. More...

#include <vector.hpp>

Inheritance diagram for mfem::Vector:
[legend]

Public Member Functions

 Vector ()
 Default constructor for Vector. Sets size = 0 and data = NULL. More...
 
 Vector (const Vector &)
 Copy constructor. More...
 
 Vector (int s)
 Creates vector of size s. More...
 
 Vector (double *_data, int _size)
 Creates a vector referencing an array of doubles, owned by someone else. More...
 
void Load (std::istream **in, int np, int *dim)
 Reads a vector from multiple files. More...
 
void Load (std::istream &in, int Size)
 Load a vector from an input stream. More...
 
void Load (std::istream &in)
 Load a vector from an input stream. More...
 
void SetSize (int s)
 Resize the vector if the new size is different. More...
 
void SetData (double *d)
 
void SetDataAndSize (double *d, int s)
 
void NewDataAndSize (double *d, int s)
 
void MakeDataOwner ()
 
void Destroy ()
 Destroy a vector. More...
 
int Size () const
 Returns the size of the vector. More...
 
double * GetData () const
 
 operator double * ()
 
 operator const double * () const
 
bool OwnsData () const
 
void StealData (double **p)
 Changes the ownership of the data; after the call the Vector is empty. More...
 
double * StealData ()
 Changes the ownership of the data; after the call the Vector is empty. More...
 
double & Elem (int i)
 Sets value in vector. Index i = 0 .. size-1. More...
 
const double & Elem (int i) const
 Sets value in vector. Index i = 0 .. size-1. More...
 
double & operator() (int i)
 Sets value in vector. Index i = 0 .. size-1. More...
 
const double & operator() (int i) const
 Sets value in vector. Index i = 0 .. size-1. More...
 
double operator* (const double *) const
 
double operator* (const Vector &v) const
 Return the inner-product. More...
 
Vectoroperator= (const double *v)
 
Vectoroperator= (const Vector &v)
 Redefine '=' for vector = vector. More...
 
Vectoroperator= (double value)
 Redefine '=' for vector = constant. More...
 
Vectoroperator*= (double c)
 
Vectoroperator/= (double c)
 
Vectoroperator-= (double c)
 
Vectoroperator-= (const Vector &v)
 
Vectoroperator+= (const Vector &v)
 
VectorAdd (const double a, const Vector &Va)
 (*this) += a * Va More...
 
VectorSet (const double a, const Vector &x)
 (*this) = a * x More...
 
void SetVector (const Vector &v, int offset)
 
void Neg ()
 (*this) = -(*this) More...
 
void Swap (Vector &other)
 Swap the contents of two Vectors. More...
 
void median (const Vector &lo, const Vector &hi)
 v = median(v,lo,hi) entrywise. Implementation assumes lo <= hi. More...
 
void GetSubVector (const Array< int > &dofs, Vector &elemvect) const
 
void GetSubVector (const Array< int > &dofs, double *elem_data) const
 
void SetSubVector (const Array< int > &dofs, const Vector &elemvect)
 
void SetSubVector (const Array< int > &dofs, double *elem_data)
 
void AddElementVector (const Array< int > &dofs, const Vector &elemvect)
 Add (element) subvector to the vector. More...
 
void AddElementVector (const Array< int > &dofs, double *elem_data)
 
void AddElementVector (const Array< int > &dofs, const double a, const Vector &elemvect)
 
void SetSubVectorComplement (const Array< int > &dofs, const double val)
 Set all vector entries NOT in the 'dofs' array to the given 'val'. More...
 
void Print (std::ostream &out=std::cout, int width=8) const
 Prints vector to stream out. More...
 
void Print_HYPRE (std::ostream &out) const
 Prints vector to stream out in HYPRE_Vector format. More...
 
void Randomize (int seed=0)
 Set random values in the vector. More...
 
double Norml2 () const
 Returns the l2 norm of the vector. More...
 
double Normlinf () const
 Returns the l_infinity norm of the vector. More...
 
double Norml1 () const
 Returns the l_1 norm of the vector. More...
 
double Normlp (double p) const
 Returns the l_p norm of the vector. More...
 
double Max () const
 Returns the maximal element of the vector. More...
 
double Min () const
 Returns the minimal element of the vector. More...
 
double Sum () const
 Return the sum of the vector entries. More...
 
double DistanceTo (const double *p) const
 Compute the Euclidean distance to another vector. More...
 
int CheckFinite () const
 
virtual ~Vector ()
 Destroys vector. More...
 

Protected Attributes

int size
 
int allocsize
 
double * data
 

Friends

void add (const Vector &v1, const Vector &v2, Vector &v)
 Do v = v1 + v2. More...
 
void add (const Vector &v1, double alpha, const Vector &v2, Vector &v)
 Do v = v1 + alpha * v2. More...
 
void add (const double a, const Vector &x, const Vector &y, Vector &z)
 z = a * (x + y) More...
 
void add (const double a, const Vector &x, const double b, const Vector &y, Vector &z)
 z = a * x + b * y More...
 
void subtract (const Vector &v1, const Vector &v2, Vector &v)
 Do v = v1 - v2. More...
 
void subtract (const double a, const Vector &x, const Vector &y, Vector &z)
 z = a * (x - y) More...
 

Detailed Description

Vector data type.

Definition at line 33 of file vector.hpp.

Constructor & Destructor Documentation

mfem::Vector::Vector ( )
inline

Default constructor for Vector. Sets size = 0 and data = NULL.

Definition at line 43 of file vector.hpp.

mfem::Vector::Vector ( const Vector v)

Copy constructor.

Definition at line 26 of file vector.cpp.

mfem::Vector::Vector ( int  s)
inlineexplicit

Creates vector of size s.

Warning
Entries are not initialized to zero!

Definition at line 249 of file vector.hpp.

mfem::Vector::Vector ( double *  _data,
int  _size 
)
inline

Creates a vector referencing an array of doubles, owned by someone else.

Definition at line 53 of file vector.hpp.

mfem::Vector::~Vector ( )
inlinevirtual

Destroys vector.

Definition at line 321 of file vector.hpp.

Member Function Documentation

Vector & mfem::Vector::Add ( const double  a,
const Vector Va 
)

(*this) += a * Va

Definition at line 200 of file vector.cpp.

void mfem::Vector::AddElementVector ( const Array< int > &  dofs,
const Vector elemvect 
)

Add (element) subvector to the vector.

Definition at line 527 of file vector.cpp.

void mfem::Vector::AddElementVector ( const Array< int > &  dofs,
double *  elem_data 
)

Definition at line 542 of file vector.cpp.

void mfem::Vector::AddElementVector ( const Array< int > &  dofs,
const double  a,
const Vector elemvect 
)

Definition at line 559 of file vector.cpp.

int mfem::Vector::CheckFinite ( ) const
inline

Count the number of entries in the Vector for which isfinite is false, i.e. the entry is a NaN or +/-Inf.

Definition at line 219 of file vector.hpp.

void mfem::Vector::Destroy ( )
inline

Destroy a vector.

Definition at line 282 of file vector.hpp.

double mfem::Vector::DistanceTo ( const double *  p) const

Compute the Euclidean distance to another vector.

Definition at line 733 of file vector.cpp.

double & mfem::Vector::Elem ( int  i)

Sets value in vector. Index i = 0 .. size-1.

Definition at line 75 of file vector.cpp.

const double & mfem::Vector::Elem ( int  i) const

Sets value in vector. Index i = 0 .. size-1.

Definition at line 80 of file vector.cpp.

double* mfem::Vector::GetData ( ) const
inline

Definition at line 90 of file vector.hpp.

void mfem::Vector::GetSubVector ( const Array< int > &  dofs,
Vector elemvect 
) const

Definition at line 457 of file vector.cpp.

void mfem::Vector::GetSubVector ( const Array< int > &  dofs,
double *  elem_data 
) const

Definition at line 476 of file vector.cpp.

void mfem::Vector::Load ( std::istream **  in,
int  np,
int *  dim 
)

Reads a vector from multiple files.

Definition at line 45 of file vector.cpp.

void mfem::Vector::Load ( std::istream &  in,
int  Size 
)

Load a vector from an input stream.

Definition at line 65 of file vector.cpp.

void mfem::Vector::Load ( std::istream &  in)
inline

Load a vector from an input stream.

Definition at line 63 of file vector.hpp.

void mfem::Vector::MakeDataOwner ( )
inline

Definition at line 80 of file vector.hpp.

double mfem::Vector::Max ( ) const

Returns the maximal element of the vector.

Definition at line 695 of file vector.cpp.

void mfem::Vector::median ( const Vector lo,
const Vector hi 
)

v = median(v,lo,hi) entrywise. Implementation assumes lo <= hi.

Definition at line 440 of file vector.cpp.

double mfem::Vector::Min ( ) const

Returns the minimal element of the vector.

Definition at line 708 of file vector.cpp.

void mfem::Vector::Neg ( )

(*this) = -(*this)

Definition at line 251 of file vector.cpp.

void mfem::Vector::NewDataAndSize ( double *  d,
int  s 
)
inline

Definition at line 74 of file vector.hpp.

double mfem::Vector::Norml1 ( ) const

Returns the l_1 norm of the vector.

Definition at line 659 of file vector.cpp.

double mfem::Vector::Norml2 ( ) const

Returns the l2 norm of the vector.

Definition at line 644 of file vector.cpp.

double mfem::Vector::Normlinf ( ) const

Returns the l_infinity norm of the vector.

Definition at line 649 of file vector.cpp.

double mfem::Vector::Normlp ( double  p) const

Returns the l_p norm of the vector.

Definition at line 669 of file vector.cpp.

mfem::Vector::operator const double * ( ) const
inline

Definition at line 94 of file vector.hpp.

mfem::Vector::operator double * ( )
inline

Definition at line 92 of file vector.hpp.

double & mfem::Vector::operator() ( int  i)
inline

Sets value in vector. Index i = 0 .. size-1.

Definition at line 292 of file vector.hpp.

const double & mfem::Vector::operator() ( int  i) const
inline

Sets value in vector. Index i = 0 .. size-1.

Definition at line 300 of file vector.hpp.

double mfem::Vector::operator* ( const double *  v) const

Definition at line 85 of file vector.cpp.

double mfem::Vector::operator* ( const Vector v) const

Return the inner-product.

Definition at line 100 of file vector.cpp.

Vector & mfem::Vector::operator*= ( double  c)

Definition at line 142 of file vector.cpp.

Vector & mfem::Vector::operator+= ( const Vector v)

Definition at line 185 of file vector.cpp.

Vector & mfem::Vector::operator-= ( double  c)

Definition at line 161 of file vector.cpp.

Vector & mfem::Vector::operator-= ( const Vector v)

Definition at line 170 of file vector.cpp.

Vector & mfem::Vector::operator/= ( double  c)

Definition at line 151 of file vector.cpp.

Vector & mfem::Vector::operator= ( const double *  v)

Definition at line 112 of file vector.cpp.

Vector & mfem::Vector::operator= ( const Vector v)

Redefine '=' for vector = vector.

Definition at line 121 of file vector.cpp.

Vector & mfem::Vector::operator= ( double  value)

Redefine '=' for vector = constant.

Definition at line 131 of file vector.cpp.

bool mfem::Vector::OwnsData ( ) const
inline

Definition at line 96 of file vector.hpp.

void mfem::Vector::Print ( std::ostream &  out = std::cout,
int  width = 8 
) const

Prints vector to stream out.

Definition at line 583 of file vector.cpp.

void mfem::Vector::Print_HYPRE ( std::ostream &  out) const

Prints vector to stream out in HYPRE_Vector format.

Definition at line 607 of file vector.cpp.

void mfem::Vector::Randomize ( int  seed = 0)

Set random values in the vector.

Definition at line 625 of file vector.cpp.

Vector & mfem::Vector::Set ( const double  a,
const Vector x 
)

(*this) = a * x

Definition at line 218 of file vector.cpp.

void mfem::Vector::SetData ( double *  d)
inline

Definition at line 69 of file vector.hpp.

void mfem::Vector::SetDataAndSize ( double *  d,
int  s 
)
inline

Definition at line 71 of file vector.hpp.

void mfem::Vector::SetSize ( int  s)
inline

Resize the vector if the new size is different.

Warning
New entries are not initialized!

Definition at line 263 of file vector.hpp.

void mfem::Vector::SetSubVector ( const Array< int > &  dofs,
const Vector elemvect 
)

Definition at line 493 of file vector.cpp.

void mfem::Vector::SetSubVector ( const Array< int > &  dofs,
double *  elem_data 
)

Definition at line 510 of file vector.cpp.

void mfem::Vector::SetSubVectorComplement ( const Array< int > &  dofs,
const double  val 
)

Set all vector entries NOT in the 'dofs' array to the given 'val'.

Definition at line 575 of file vector.cpp.

void mfem::Vector::SetVector ( const Vector v,
int  offset 
)

Definition at line 233 of file vector.cpp.

int mfem::Vector::Size ( ) const
inline

Returns the size of the vector.

Definition at line 86 of file vector.hpp.

void mfem::Vector::StealData ( double **  p)
inline

Changes the ownership of the data; after the call the Vector is empty.

Definition at line 99 of file vector.hpp.

double* mfem::Vector::StealData ( )
inline

Changes the ownership of the data; after the call the Vector is empty.

Definition at line 103 of file vector.hpp.

double mfem::Vector::Sum ( ) const

Return the sum of the vector entries.

Definition at line 721 of file vector.cpp.

void mfem::Vector::Swap ( Vector other)
inline

Swap the contents of two Vectors.

Definition at line 308 of file vector.hpp.

Friends And Related Function Documentation

void add ( const Vector v1,
const Vector v2,
Vector v 
)
friend

Do v = v1 + v2.

Definition at line 259 of file vector.cpp.

void add ( const Vector v1,
double  alpha,
const Vector v2,
Vector v 
)
friend

Do v = v1 + alpha * v2.

Definition at line 277 of file vector.cpp.

void add ( const double  a,
const Vector x,
const Vector y,
Vector z 
)
friend

z = a * (x + y)

Definition at line 308 of file vector.cpp.

void add ( const double  a,
const Vector x,
const double  b,
const Vector y,
Vector z 
)
friend

z = a * x + b * y

Definition at line 340 of file vector.cpp.

void subtract ( const Vector v1,
const Vector v2,
Vector v 
)
friend

Do v = v1 - v2.

Definition at line 385 of file vector.cpp.

void subtract ( const double  a,
const Vector x,
const Vector y,
Vector z 
)
friend

z = a * (x - y)

Definition at line 407 of file vector.cpp.

Member Data Documentation

int mfem::Vector::allocsize
protected

Definition at line 37 of file vector.hpp.

double* mfem::Vector::data
protected

Definition at line 38 of file vector.hpp.

int mfem::Vector::size
protected

Definition at line 37 of file vector.hpp.


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