Chaste Release::3.1
|
#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 55 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 44 of file DistributedVector.cpp.
References DistributedVectorFactory::GetHigh(), DistributedVectorFactory::GetLow(), DistributedVectorFactory::GetProblemSize(), mHi, mLo, mProblemSize, mpVec, and mSizeMultiplier.
DistributedVector::Iterator DistributedVector::Begin | ( | ) |
Definition at line 108 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< DIM, 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 116 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< DIM, 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 127 of file DistributedVector.hpp.
References mpFactory.
Referenced by DistributedVector::Stripe::Stripe().
unsigned DistributedVector::GetHigh | ( | ) | const [inline] |
Definition at line 111 of file DistributedVector.hpp.
References mHi.
Referenced by DistributedVector::Chunk::Chunk(), and DistributedVector::Stripe::Stripe().
unsigned DistributedVector::GetLow | ( | ) | const [inline] |
Definition at line 119 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 39 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 73 of file DistributedVector.cpp.
double & DistributedVector::operator[] | ( | unsigned | globalIndex | ) | throw (DistributedVectorException) |
globalIndex |
Definition at line 63 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 79 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< DIM, 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 66 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 63 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 86 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 69 of file DistributedVector.hpp.
Referenced by DistributedVector().
double* DistributedVector::mpVec [private] |
The local part of the underlying PETSc vector.
Definition at line 80 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 74 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 77 of file DistributedVector.hpp.
Referenced by Restore().