MFEM  v4.1.0
Finite element discretization library
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Pages
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)
 Creates vector with given global size and parallel partitioning of the rows/columns given by col. More...
 
 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. More...
 
 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 parallel row/column 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)
 Sets the data of the Vector and the hypre_ParVector to _data. More...
 
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...
 
 Vector (int size_, MemoryType mt)
 Create a Vector of size size_ using MemoryType mt. More...
 
void UseDevice (bool use_dev) const
 Enable execution of Vector operations using the mfem::Device. More...
 
bool UseDevice () const
 Return the device flag of the Memory object used by the Vector. 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 SetSize (int s, MemoryType mt)
 Resize the vector to size s using MemoryType mt. More...
 
void SetSize (int s, Vector &v)
 Resize the vector to size s using the MemoryType of v. 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 NewMemoryAndSize (const Memory< double > &mem, int s, bool own_mem)
 Reset the Vector to use the given external Memory mem and size s. More...
 
void MakeRef (Vector &base, int offset, int size)
 Reset the Vector to be a reference to a sub-vector of base. More...
 
void MakeRef (Vector &base, int offset)
 Reset the Vector to be a reference to a sub-vector of base without changing its current size. More...
 
void MakeDataOwner () const
 Set the Vector data (host pointer) ownership flag. More...
 
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
 Return a pointer to the beginning of the Vector data. More...
 
 operator double * ()
 Conversion to double *. More...
 
 operator const double * () const
 Conversion to const double *. More...
 
Memory< double > & GetMemory ()
 Return a reference to the Memory object used by the Vector. More...
 
const Memory< double > & GetMemory () const
 Return a reference to the Memory object used by the Vector, const version. More...
 
void SyncMemory (const Vector &v)
 Update the memory location of the vector to match v. More...
 
void SyncAliasMemory (const Vector &v)
 Update the alias memory location of the vector to match v. More...
 
bool OwnsData () const
 Read the Vector data (host pointer) ownership flag. More...
 
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)
 Copy Size() entries from v. More...
 
Vectoroperator= (const Vector &v)
 Copy assignment. 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=mfem::out, 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 DistanceSquaredTo (const double *p) const
 Compute the square of the Euclidean distance to another vector. More...
 
double DistanceTo (const double *p) const
 Compute the Euclidean distance to another vector. More...
 
int CheckFinite () const
 Count the number of entries in the Vector for which isfinite is false, i.e. the entry is a NaN or +/-Inf. More...
 
virtual ~Vector ()
 Destroys vector. More...
 
const double * Read (bool on_dev=true) const
 Shortcut for mfem::Read(vec.GetMemory(), vec.Size(), on_dev). More...
 
const double * HostRead () const
 Shortcut for mfem::Read(vec.GetMemory(), vec.Size(), false). More...
 
double * Write (bool on_dev=true)
 Shortcut for mfem::Write(vec.GetMemory(), vec.Size(), on_dev). More...
 
double * HostWrite ()
 Shortcut for mfem::Write(vec.GetMemory(), vec.Size(), false). More...
 
double * ReadWrite (bool on_dev=true)
 Shortcut for mfem::ReadWrite(vec.GetMemory(), vec.Size(), on_dev). More...
 
double * HostReadWrite ()
 Shortcut for mfem::ReadWrite(vec.GetMemory(), vec.Size(), false). 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
Memory< double > data
 
int size
 

Detailed Description

Wrapper for hypre's parallel vector class.

Definition at line 73 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 parallel partitioning of the rows/columns given by col.

The partitioning is defined in one of two ways depending on the configuration of HYPRE:

  1. If HYPRE_AssumedPartitionCheck() returns true (the default), then col is of length 2 and the local processor owns columns [col[0],col[1]).
  2. If HYPRE_AssumedPartitionCheck() returns false, then col is of length (number of processors + 1) and processor P owns columns [col[P],col[P+1]) i.e. each processor has a copy of the same col array.

Definition at line 98 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. See here for a description of the col array.

Definition at line 111 of file hypre.cpp.

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

Creates vector compatible with y.

Definition at line 129 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 141 of file hypre.cpp.

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

Creates vector wrapping y.

Definition at line 156 of file hypre.cpp.

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

Create a true dof parallel vector on a given ParFiniteElementSpace.

Definition at line 163 of file hypre.cpp.

mfem::HypreParVector::~HypreParVector ( )

Calls hypre's destroy function.

Definition at line 221 of file hypre.cpp.

Member Function Documentation

MPI_Comm mfem::HypreParVector::GetComm ( )
inline

MPI communicator.

Definition at line 117 of file hypre.hpp.

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

Gets ownership of the internal hypre_ParVector.

Definition at line 140 of file hypre.hpp.

HYPRE_Int mfem::HypreParVector::GlobalSize ( )
inline

Returns the global number of rows.

Definition at line 125 of file hypre.hpp.

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

Returns the global vector in each processor.

Definition at line 176 of file hypre.cpp.

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

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

Definition at line 131 of file hypre.hpp.

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

Typecasting to hypre's hypre_ParVector*.

Definition at line 128 of file hypre.hpp.

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

Set constant values.

Definition at line 186 of file hypre.cpp.

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

Define '=' for hypre vectors.

Definition at line 192 of file hypre.cpp.

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

Returns the parallel row/column partitioning.

See here for a description of the partitioning array.

Definition at line 122 of file hypre.hpp.

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

Prints the locally owned rows in parallel.

Definition at line 216 of file hypre.cpp.

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

Set random values.

Definition at line 211 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, HYPRE_Int, double *, HYPRE_Int *).

Definition at line 205 of file hypre.cpp.

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

Sets ownership of the internal hypre_ParVector.

Definition at line 137 of file hypre.hpp.

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

Changes the ownership of the the vector.

Definition at line 134 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 168 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 231 of file hypre.cpp.

Friends And Related Function Documentation

friend class HypreParMatrix
friend

Definition at line 81 of file hypre.hpp.


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