MFEM  v3.3
Finite element discretization library
Public Member Functions | Friends | List of all members
mfem::HypreParVector Class Reference

Wrapper for hypre's parallel vector class. More...

#include <hypre.hpp>

Inheritance diagram for mfem::HypreParVector:
[legend]
Collaboration diagram for mfem::HypreParVector:
[legend]

Public Member Functions

 HypreParVector (MPI_Comm comm, HYPRE_Int glob_size, HYPRE_Int *col)
 
 HypreParVector (MPI_Comm comm, HYPRE_Int glob_size, double *_data, HYPRE_Int *col)
 
 HypreParVector (const HypreParVector &y)
 Creates vector compatible with y. More...
 
 HypreParVector (const HypreParMatrix &A, int transpose=0)
 Creates vector compatible with (i.e. in the domain of) A or A^T. More...
 
 HypreParVector (HYPRE_ParVector y)
 Creates vector wrapping y. More...
 
 HypreParVector (ParFiniteElementSpace *pfes)
 Create a true dof parallel vector on a given ParFiniteElementSpace. More...
 
MPI_Comm GetComm ()
 MPI communicator. More...
 
HYPRE_Int * Partitioning ()
 Returns the row partitioning. More...
 
HYPRE_Int GlobalSize ()
 Returns the global number of rows. More...
 
 operator hypre_ParVector * () const
 Typecasting to hypre's hypre_ParVector*. More...
 
 operator HYPRE_ParVector () const
 Typecasting to hypre's HYPRE_ParVector, a.k.a. void *. More...
 
hypre_ParVector * StealParVector ()
 Changes the ownership of the the vector. More...
 
void SetOwnership (int own)
 Sets ownership of the internal hypre_ParVector. More...
 
int GetOwnership () const
 Gets ownership of the internal hypre_ParVector. More...
 
VectorGlobalVector () const
 Returns the global vector in each processor. More...
 
HypreParVectoroperator= (double d)
 Set constant values. More...
 
HypreParVectoroperator= (const HypreParVector &y)
 Define '=' for hypre vectors. More...
 
void SetData (double *_data)
 
HYPRE_Int Randomize (HYPRE_Int seed)
 Set random values. More...
 
void Print (const char *fname) const
 Prints the locally owned rows in parallel. More...
 
 ~HypreParVector ()
 Calls hypre's destroy function. More...
 
virtual N_Vector ToNVector ()
 Return a new wrapper SUNDIALS N_Vector of type SUNDIALS_NVEC_PARHYP. More...
 
virtual void ToNVector (N_Vector &nv)
 Update an existing wrapper SUNDIALS N_Vector of type SUNDIALS_NVEC_PARHYP to point to this Vector. More...
 
- Public Member Functions inherited from mfem::Vector
 Vector ()
 Default constructor for Vector. Sets size = 0 and data = NULL. More...
 
 Vector (const Vector &)
 Copy constructor. Allocates a new data array and copies the data. 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, reading the size from the stream. More...
 
void SetSize (int s)
 Resize the vector to size s. More...
 
void SetData (double *d)
 
void SetDataAndSize (double *d, int s)
 Set the Vector data and size. More...
 
void NewDataAndSize (double *d, int s)
 Set the Vector data and size, deleting the old data, if owned. More...
 
void MakeDataOwner ()
 
void Destroy ()
 Destroy a vector. More...
 
int Size () const
 Returns the size of the vector. More...
 
int Capacity () const
 Return the size of the currently allocated data array. More...
 
double * GetData () const
 
 operator double * ()
 Conversion to double *. More...
 
 operator const double * () const
 Conversion to const double *. More...
 
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)
 Access Vector entries. Index i = 0 .. size-1. More...
 
const double & Elem (int i) const
 Read only access to Vector entries. Index i = 0 .. size-1. More...
 
double & operator() (int i)
 Access Vector entries using () for 0-based indexing. More...
 
const double & operator() (int i) const
 Read only access to Vector entries using () for 0-based indexing. More...
 
double operator* (const double *) const
 Dot product with a double * array. More...
 
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 double value)
 Set the entries listed in dofs to the given value. More...
 
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...
 
 Vector (N_Vector nv)
 Construct a wrapper Vector from SUNDIALS N_Vector. More...
 

Friends

class HypreParMatrix
 

Additional Inherited Members

- Protected Attributes inherited from mfem::Vector
int size
 
int allocsize
 
double * data
 

Detailed Description

Wrapper for hypre's parallel vector class.

Definition at line 72 of file hypre.hpp.

Constructor & Destructor Documentation

mfem::HypreParVector::HypreParVector ( MPI_Comm  comm,
HYPRE_Int  glob_size,
HYPRE_Int *  col 
)

Creates vector with given global size and partitioning of the columns. Processor P owns columns [col[P],col[P+1])

Definition at line 49 of file hypre.cpp.

mfem::HypreParVector::HypreParVector ( MPI_Comm  comm,
HYPRE_Int  glob_size,
double *  _data,
HYPRE_Int *  col 
)

Creates vector with given global size, partitioning of the columns, and data. The data must be allocated and destroyed outside. If _data is NULL, a dummy vector without a valid data array will be created.

Definition at line 62 of file hypre.cpp.

mfem::HypreParVector::HypreParVector ( const HypreParVector y)

Creates vector compatible with y.

Definition at line 80 of file hypre.cpp.

mfem::HypreParVector::HypreParVector ( const HypreParMatrix A,
int  transpose = 0 
)
explicit

Creates vector compatible with (i.e. in the domain of) A or A^T.

Definition at line 92 of file hypre.cpp.

mfem::HypreParVector::HypreParVector ( HYPRE_ParVector  y)
explicit

Creates vector wrapping y.

Definition at line 107 of file hypre.cpp.

mfem::HypreParVector::HypreParVector ( ParFiniteElementSpace pfes)
explicit

Create a true dof parallel vector on a given ParFiniteElementSpace.

Definition at line 114 of file hypre.cpp.

mfem::HypreParVector::~HypreParVector ( )

Calls hypre's destroy function.

Definition at line 174 of file hypre.cpp.

Member Function Documentation

MPI_Comm mfem::HypreParVector::GetComm ( )
inline

MPI communicator.

Definition at line 105 of file hypre.hpp.

int mfem::HypreParVector::GetOwnership ( ) const
inline

Gets ownership of the internal hypre_ParVector.

Definition at line 126 of file hypre.hpp.

HYPRE_Int mfem::HypreParVector::GlobalSize ( )
inline

Returns the global number of rows.

Definition at line 111 of file hypre.hpp.

Vector * mfem::HypreParVector::GlobalVector ( ) const

Returns the global vector in each processor.

Definition at line 127 of file hypre.cpp.

mfem::HypreParVector::operator HYPRE_ParVector ( ) const
inline

Typecasting to hypre's HYPRE_ParVector, a.k.a. void *.

Definition at line 117 of file hypre.hpp.

mfem::HypreParVector::operator hypre_ParVector * ( ) const
inline

Typecasting to hypre's hypre_ParVector*.

Definition at line 114 of file hypre.hpp.

HypreParVector & mfem::HypreParVector::operator= ( double  d)

Set constant values.

Definition at line 137 of file hypre.cpp.

HypreParVector & mfem::HypreParVector::operator= ( const HypreParVector y)

Define '=' for hypre vectors.

Definition at line 143 of file hypre.cpp.

HYPRE_Int* mfem::HypreParVector::Partitioning ( )
inline

Returns the row partitioning.

Definition at line 108 of file hypre.hpp.

void mfem::HypreParVector::Print ( const char *  fname) const

Prints the locally owned rows in parallel.

Definition at line 169 of file hypre.cpp.

HYPRE_Int mfem::HypreParVector::Randomize ( HYPRE_Int  seed)

Set random values.

Definition at line 164 of file hypre.cpp.

void mfem::HypreParVector::SetData ( double *  _data)

Sets the data of the Vector and the hypre_ParVector to _data. Must be used only for HypreParVectors that do not own the data, e.g. created with the constructor: HypreParVector(MPI_Comm comm, HYPRE_Int glob_size, double *_data, HYPRE_Int *col).

Definition at line 159 of file hypre.cpp.

void mfem::HypreParVector::SetOwnership ( int  own)
inline

Sets ownership of the internal hypre_ParVector.

Definition at line 123 of file hypre.hpp.

hypre_ParVector* mfem::HypreParVector::StealParVector ( )
inline

Changes the ownership of the the vector.

Definition at line 120 of file hypre.hpp.

virtual N_Vector mfem::HypreParVector::ToNVector ( )
inlinevirtual

Return a new wrapper SUNDIALS N_Vector of type SUNDIALS_NVEC_PARHYP.

The returned N_Vector must be destroyed by the caller.

Reimplemented from mfem::Vector.

Definition at line 155 of file hypre.hpp.

void mfem::HypreParVector::ToNVector ( N_Vector &  nv)
virtual

Update an existing wrapper SUNDIALS N_Vector of type SUNDIALS_NVEC_PARHYP to point to this Vector.

Reimplemented from mfem::Vector.

Definition at line 184 of file hypre.cpp.

Friends And Related Function Documentation

friend class HypreParMatrix
friend

Definition at line 80 of file hypre.hpp.


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