#include <DistributedVector.hpp>
Classes | |
class | Chunk |
class | Iterator |
class | Stripe |
Public Member Functions | |
bool | IsGlobalIndexLocal (unsigned globalIndex) |
DistributedVector (Vec vec, DistributedVectorFactory *pFactory) | |
unsigned | GetHigh () const |
unsigned | GetLow () const |
DistributedVectorFactory * | GetFactory () |
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 |
DistributedVectorFactory * | mpFactory |
Friends | |
class | TestDistributedVector |
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.
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.
vec | PETSc vector of which this class shall be a portion | |
pFactory | pointer to the DistributedVectorFactory used to create this vector |
Definition at line 37 of file DistributedVector.cpp.
References DistributedVectorFactory::GetHigh(), DistributedVectorFactory::GetLow(), DistributedVectorFactory::GetProblemSize(), mHi, mLo, mProblemSize, mpVec, and mSizeMultiplier.
DistributedVector::Iterator DistributedVector::Begin | ( | ) |
Definition at line 93 of file DistributedVector.cpp.
References DistributedVector::Iterator::Global, DistributedVector::Iterator::Local, and mLo.
Referenced by AbstractExtendedBidomainSolver< ELEMENT_DIM, SPACE_DIM >::CheckCompatibilityCondition(), AbstractBidomainSolver< ELEMENT_DIM, SPACE_DIM >::CheckCompatibilityCondition(), ExtendedBidomainProblem< DIM >::CreateInitialCondition(), BidomainProblem< DIM >::CreateInitialCondition(), AbstractCardiacProblem< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::CreateInitialCondition(), AbstractExtendedBidomainSolver< ELEMENT_DIM, SPACE_DIM >::GenerateNullBasis(), AbstractBidomainSolver< ELEMENT_DIM, SPACE_DIM >::GenerateNullBasis(), AdaptiveBidomainProblem::InitializeSolutionOnAdaptedMesh(), ExtendedBidomainProblem< DIM >::load(), AbstractCardiacProblem< ELEMENT_DIM, ELEMENT_DIM, 1 >::load(), ParallelColumnDataWriter::PutVectorStripe(), ExtendedBidomainProblem< DIM >::save(), OperatorSplittingMonodomainSolver< ELEMENT_DIM, SPACE_DIM >::SetupLinearSystem(), MonodomainSolver< ELEMENT_DIM, SPACE_DIM >::SetupLinearSystem(), ExtendedBidomainSolver< ELEM_DIM, SPACE_DIM >::SetupLinearSystem(), BidomainSolver< ELEMENT_DIM, SPACE_DIM >::SetupLinearSystem(), ExtendedBidomainTissue< SPACE_DIM >::SolveCellSystems(), AbstractCardiacTissue< ELEMENT_DIM, SPACE_DIM >::SolveCellSystems(), AbstractCardiacProblem< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::WriteExtraVariablesOneStep(), and ExtendedBidomainProblem< DIM >::WriteOneStep().
DistributedVector::Iterator DistributedVector::End | ( | ) |
Definition at line 101 of file DistributedVector.cpp.
References DistributedVector::Iterator::Global, DistributedVector::Iterator::Local, mHi, and mLo.
Referenced by AbstractExtendedBidomainSolver< ELEMENT_DIM, SPACE_DIM >::CheckCompatibilityCondition(), AbstractBidomainSolver< ELEMENT_DIM, SPACE_DIM >::CheckCompatibilityCondition(), ExtendedBidomainProblem< DIM >::CreateInitialCondition(), BidomainProblem< DIM >::CreateInitialCondition(), AbstractCardiacProblem< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::CreateInitialCondition(), AbstractExtendedBidomainSolver< ELEMENT_DIM, SPACE_DIM >::GenerateNullBasis(), AbstractBidomainSolver< ELEMENT_DIM, SPACE_DIM >::GenerateNullBasis(), AdaptiveBidomainProblem::InitializeSolutionOnAdaptedMesh(), ExtendedBidomainProblem< DIM >::load(), AbstractCardiacProblem< ELEMENT_DIM, ELEMENT_DIM, 1 >::load(), ParallelColumnDataWriter::PutVectorStripe(), ExtendedBidomainProblem< DIM >::save(), OperatorSplittingMonodomainSolver< ELEMENT_DIM, SPACE_DIM >::SetupLinearSystem(), MonodomainSolver< ELEMENT_DIM, SPACE_DIM >::SetupLinearSystem(), ExtendedBidomainSolver< ELEM_DIM, SPACE_DIM >::SetupLinearSystem(), BidomainSolver< ELEMENT_DIM, SPACE_DIM >::SetupLinearSystem(), ExtendedBidomainTissue< SPACE_DIM >::SolveCellSystems(), AbstractCardiacTissue< ELEMENT_DIM, SPACE_DIM >::SolveCellSystems(), AbstractCardiacProblem< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::WriteExtraVariablesOneStep(), and ExtendedBidomainProblem< DIM >::WriteOneStep().
DistributedVectorFactory* DistributedVector::GetFactory | ( | ) | [inline] |
Definition at line 120 of file DistributedVector.hpp.
References mpFactory.
Referenced by DistributedVector::Stripe::Stripe().
unsigned DistributedVector::GetHigh | ( | ) | const [inline] |
Definition at line 104 of file DistributedVector.hpp.
References mHi.
Referenced by DistributedVector::Chunk::Chunk(), and DistributedVector::Stripe::Stripe().
unsigned DistributedVector::GetLow | ( | ) | const [inline] |
Definition at line 112 of file DistributedVector.hpp.
References mLo.
Referenced by DistributedVector::Chunk::Chunk(), and DistributedVector::Stripe::Stripe().
Test if the given global index is owned by the current process, i.e. is local to it.
globalIndex |
Definition at line 32 of file DistributedVector.cpp.
Referenced by BoundaryConditionsContainer< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::ApplyDirichletToNonlinearResidual().
double & DistributedVector::operator[] | ( | Iterator | index | ) | throw (DistributedVectorException) |
index |
Definition at line 66 of file DistributedVector.cpp.
double & DistributedVector::operator[] | ( | unsigned | globalIndex | ) | throw (DistributedVectorException) |
globalIndex |
Definition at line 56 of file DistributedVector.cpp.
void DistributedVector::Restore | ( | ) |
Store elements that have been written to back into the PETSc vector. Call after you have finished writing. It appears that you do not need to call this if you only read from the vector.
Definition at line 72 of file DistributedVector.cpp.
Referenced by BoundaryConditionsContainer< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::ApplyDirichletToNonlinearResidual(), ExtendedBidomainProblem< DIM >::CreateInitialCondition(), BidomainProblem< DIM >::CreateInitialCondition(), AbstractCardiacProblem< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::CreateInitialCondition(), AbstractExtendedBidomainSolver< ELEMENT_DIM, SPACE_DIM >::GenerateNullBasis(), AbstractBidomainSolver< ELEMENT_DIM, SPACE_DIM >::GenerateNullBasis(), AdaptiveBidomainProblem::InitializeSolutionOnAdaptedMesh(), ExtendedBidomainProblem< DIM >::load(), AbstractCardiacProblem< ELEMENT_DIM, ELEMENT_DIM, 1 >::load(), ExtendedBidomainProblem< DIM >::save(), OperatorSplittingMonodomainSolver< ELEMENT_DIM, SPACE_DIM >::SetupLinearSystem(), MonodomainSolver< ELEMENT_DIM, SPACE_DIM >::SetupLinearSystem(), ExtendedBidomainSolver< ELEM_DIM, SPACE_DIM >::SetupLinearSystem(), BidomainSolver< ELEMENT_DIM, SPACE_DIM >::SetupLinearSystem(), AbstractCardiacTissue< ELEMENT_DIM, SPACE_DIM >::SolveCellSystems(), AbstractCardiacProblem< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::WriteExtraVariablesOneStep(), and ExtendedBidomainProblem< DIM >::WriteOneStep().
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(), and IsGlobalIndexLocal().
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(), and IsGlobalIndexLocal().
Pointer to the factory that created this DistributedVector. Gives access to local and global sizes
Definition at line 79 of file DistributedVector.hpp.
Referenced by GetFactory().
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().
double* DistributedVector::mpVec [private] |
The local part of the underlying PETSc vector.
Definition at line 73 of file DistributedVector.hpp.
Referenced by DistributedVector::Chunk::Chunk(), DistributedVector(), Restore(), and DistributedVector::Stripe::Stripe().
unsigned DistributedVector::mSizeMultiplier [private] |
How much bigger this vector is than the problem size.
Definition at line 67 of file DistributedVector.hpp.
Referenced by DistributedVector::Chunk::Chunk(), DistributedVector(), and DistributedVector::Stripe::Stripe().
Vec DistributedVector::mVec [private] |
The underlying PETSc vector.
Definition at line 70 of file DistributedVector.hpp.
Referenced by Restore().