MFEM
v3.4
Finite element discretization library
|
#include <blockvector.hpp>
Public Member Functions | |
BlockVector () | |
empty constructor More... | |
BlockVector (const Array< int > &bOffsets) | |
Constructor. More... | |
BlockVector (const BlockVector &block) | |
Copy constructor. More... | |
BlockVector (double *data, const Array< int > &bOffsets) | |
View constructor. More... | |
BlockVector & | operator= (const BlockVector &original) |
Assignment operator. this and original must have the same block structure. More... | |
BlockVector & | operator= (double val) |
Set each entry of this equal to val. More... | |
~BlockVector () | |
Destructor. More... | |
Vector & | GetBlock (int i) |
Get the i-th vector in the block. More... | |
const Vector & | GetBlock (int i) const |
Get the i-th vector in the block (const version). More... | |
void | GetBlockView (int i, Vector &blockView) |
Get the i-th vector in the block. More... | |
int | BlockSize (int i) |
void | Update (double *data, const Array< int > &bOffsets) |
Update method. More... | |
void | Update (const Array< int > &bOffsets) |
Update a BlockVector with new bOffsets and make sure it owns its data. 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 |
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... | |
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... | |
Vector & | operator= (const double *v) |
Copy Size() entries from v. More... | |
Vector & | operator= (const Vector &v) |
Redefine '=' for vector = vector. More... | |
Vector & | operator= (double value) |
Redefine '=' for vector = constant. More... | |
Vector & | operator*= (double c) |
Vector & | operator/= (double c) |
Vector & | operator-= (double c) |
Vector & | operator-= (const Vector &v) |
Vector & | operator+= (const Vector &v) |
Vector & | Add (const double a, const Vector &Va) |
(*this) += a * Va More... | |
Vector & | Set (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 |
virtual | ~Vector () |
Destroys vector. More... | |
Vector (N_Vector nv) | |
Construct a wrapper Vector from SUNDIALS N_Vector. More... | |
virtual N_Vector | ToNVector () |
Return a new wrapper SUNDIALS N_Vector of type SUNDIALS_NVEC_SERIAL. More... | |
virtual void | ToNVector (N_Vector &nv) |
Update an existing wrapper SUNDIALS N_Vector to point to this Vector. More... | |
Protected Member Functions | |
void | SetBlocks () |
Protected Attributes | |
int | numBlocks |
Number of blocks in the blockVector. More... | |
const int * | blockOffsets |
Offset for each block start. (length numBlocks+1) More... | |
Vector * | blocks |
array of Vector objects used to extract blocks without allocating memory. More... | |
Protected Attributes inherited from mfem::Vector | |
int | size |
int | allocsize |
double * | data |
Definition at line 29 of file blockvector.hpp.
mfem::BlockVector::BlockVector | ( | ) |
empty constructor
Definition at line 28 of file blockvector.cpp.
mfem::BlockVector::BlockVector | ( | const Array< int > & | bOffsets | ) |
Constructor.
Standard constructor.
bOffsets is an array of integers (length nBlocks+1) that tells the offsets of each block start.
Definition at line 38 of file blockvector.cpp.
mfem::BlockVector::BlockVector | ( | const BlockVector & | block | ) |
Copy constructor.
Definition at line 48 of file blockvector.cpp.
mfem::BlockVector::BlockVector | ( | double * | data, |
const Array< int > & | bOffsets | ||
) |
View constructor.
Definition at line 58 of file blockvector.cpp.
mfem::BlockVector::~BlockVector | ( | ) |
Destructor.
Definition at line 135 of file blockvector.cpp.
|
inline |
Definition at line 84 of file blockvector.hpp.
|
inline |
Get the i-th vector in the block.
Definition at line 77 of file blockvector.hpp.
|
inline |
Get the i-th vector in the block (const version).
Definition at line 79 of file blockvector.hpp.
void mfem::BlockVector::GetBlockView | ( | int | i, |
Vector & | blockView | ||
) |
Get the i-th vector in the block.
Definition at line 140 of file blockvector.cpp.
BlockVector & mfem::BlockVector::operator= | ( | const BlockVector & | original | ) |
Assignment operator. this and original must have the same block structure.
Definition at line 110 of file blockvector.cpp.
BlockVector & mfem::BlockVector::operator= | ( | double | val | ) |
Set each entry of this equal to val.
Definition at line 128 of file blockvector.cpp.
|
protected |
Definition at line 19 of file blockvector.cpp.
void mfem::BlockVector::Update | ( | double * | data, |
const Array< int > & | bOffsets | ||
) |
Update method.
data is an array of double of length at least blockOffsets[numBlocks] that contain all the values of the monolithic vector. bOffsets is an array of integers (length nBlocks+1) that tells the offsets of each block start. nBlocks is the number of blocks.
Definition at line 67 of file blockvector.cpp.
void mfem::BlockVector::Update | ( | const Array< int > & | bOffsets | ) |
Update a BlockVector with new bOffsets and make sure it owns its data.
The block-vector will be re-allocated if either:
Definition at line 80 of file blockvector.cpp.
|
protected |
Offset for each block start. (length numBlocks+1)
blockOffsets[i+1] - blockOffsets[i] is the size of block i.
Definition at line 39 of file blockvector.hpp.
|
protected |
array of Vector objects used to extract blocks without allocating memory.
Definition at line 41 of file blockvector.hpp.
|
protected |
Number of blocks in the blockVector.
Definition at line 34 of file blockvector.hpp.