DistributedVector Class Reference

#include <DistributedVector.hpp>

Collaboration diagram for DistributedVector:

Collaboration graph
[legend]

List of all members.

Public Member Functions

bool IsGlobalIndexLocal (unsigned globalIndex)
 DistributedVector (Vec vec, DistributedVectorFactory *pFactory)
unsigned GetHigh () const
unsigned GetLow () const
DistributedVectorFactoryGetFactory ()
double & operator[] (unsigned globalIndex) throw (DistributedVectorException)
void Restore ()
Iterator Begin ()
Iterator End ()
double & operator[] (Iterator index) throw (DistributedVectorException)

Private Attributes

unsigned mLo
unsigned mHi
unsigned mProblemSize
unsigned mSizeMultiplier
Vec mVec
double * mpVec
DistributedVectorFactorympFactory

Friends

class TestDistributedVector

Classes

class  Chunk
class  Iterator
class  Stripe


Detailed Description

Gives access to the local portion of a PETSc vector via an iterator.

It also provides two nested classes for accessing vectors with particular memory layouts: striped and chunked.

Definition at line 48 of file DistributedVector.hpp.


Constructor & Destructor Documentation

DistributedVector::DistributedVector ( Vec  vec,
DistributedVectorFactory pFactory 
)

Constructor. This class represents the portion of a distributed PETSc vector on this process.

Note that this class does NOT take over responsibility for destroying the Vec.

Parameters:
vec PETSc vector of which this class shall be a portion
pFactory pointer to the DistributedVectorFactory used to create this vector

Definition at line 40 of file DistributedVector.cpp.

References DistributedVectorFactory::GetHigh(), DistributedVectorFactory::GetLow(), DistributedVectorFactory::GetProblemSize(), mHi, mLo, mProblemSize, mpVec, and mSizeMultiplier.


Member Function Documentation

bool DistributedVector::IsGlobalIndexLocal ( unsigned  globalIndex  ) 

Test if the given global index is owned by the current process, i.e. is local to it.

Parameters:
globalIndex 

Definition at line 35 of file DistributedVector.cpp.

References mHi, and mLo.

Referenced by BoundaryConditionsContainer< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::ApplyDirichletToNonlinearResidual().

unsigned DistributedVector::GetHigh (  )  const [inline]

Returns:
mHi - The next index above the top one owned by the process.

Definition at line 101 of file DistributedVector.hpp.

References mHi.

Referenced by DistributedVector::Chunk::Chunk(), and DistributedVector::Stripe::Stripe().

unsigned DistributedVector::GetLow (  )  const [inline]

Returns:
mLo - The lowest index owned by the process.

Definition at line 109 of file DistributedVector.hpp.

References mLo.

Referenced by DistributedVector::Chunk::Chunk(), and DistributedVector::Stripe::Stripe().

DistributedVectorFactory* DistributedVector::GetFactory (  )  [inline]

Returns:
the factory used to create this vector.

Definition at line 117 of file DistributedVector.hpp.

References mpFactory.

Referenced by DistributedVector::Stripe::Stripe().

double & DistributedVector::operator[] ( unsigned  globalIndex  )  throw (DistributedVectorException)

Parameters:
globalIndex 
Returns:
value of distributed vector at globalIndex Do not use if stride>1. For use in tests. Will throw a DistributedVectorException if the specified element is not on this process.

Definition at line 59 of file DistributedVector.cpp.

References mHi, mLo, mpVec, and mSizeMultiplier.

void DistributedVector::Restore (  ) 

DistributedVector::Iterator DistributedVector::Begin (  ) 

DistributedVector::Iterator DistributedVector::End (  ) 

double & DistributedVector::operator[] ( Iterator  index  )  throw (DistributedVectorException)

Parameters:
index 
Returns:
value of distributed vector pointed to by index. Do not use if stride>1.

Definition at line 69 of file DistributedVector.cpp.

References mpVec, and mSizeMultiplier.


Member Data Documentation

unsigned DistributedVector::mLo [private]

The first entry owned by the current processor.

Definition at line 56 of file DistributedVector.hpp.

Referenced by Begin(), DistributedVector(), End(), GetLow(), IsGlobalIndexLocal(), and operator[]().

unsigned DistributedVector::mHi [private]

One above the last entry owned by the current processor.

Definition at line 59 of file DistributedVector.hpp.

Referenced by DistributedVector(), End(), GetHigh(), IsGlobalIndexLocal(), and operator[]().

unsigned DistributedVector::mProblemSize [private]

The problem size, i.e. the length of the vector of unknowns.

Definition at line 62 of file DistributedVector.hpp.

Referenced by DistributedVector().

How much bigger this vector is than the problem size.

Definition at line 66 of file DistributedVector.hpp.

Referenced by DistributedVector::Chunk::Chunk(), DistributedVector(), operator[](), and DistributedVector::Stripe::Stripe().

Vec DistributedVector::mVec [private]

The underlying PETSc vector.

Definition at line 68 of file DistributedVector.hpp.

Referenced by Restore().

double* DistributedVector::mpVec [private]

The local part of the underlying PETSc vector.

Definition at line 70 of file DistributedVector.hpp.

Referenced by DistributedVector::Chunk::Chunk(), DistributedVector(), operator[](), Restore(), and DistributedVector::Stripe::Stripe().

Pointer to the factory that created this DistributedVector. Gives access to local and global sizes

Definition at line 76 of file DistributedVector.hpp.

Referenced by GetFactory().


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

Generated on Mon Nov 1 12:36:38 2010 for Chaste by  doxygen 1.5.5