DistributedVectorFactory Class Reference

#include <DistributedVectorFactory.hpp>

Collaboration diagram for DistributedVectorFactory:

Collaboration graph
[legend]

List of all members.

Public Member Functions

 DistributedVectorFactory (Vec vec)
 DistributedVectorFactory (unsigned size, PetscInt local=PETSC_DECIDE)
Vec CreateVec ()
Vec CreateVec (unsigned stride)
DistributedVector CreateDistributedVector (Vec vec)
bool IsGlobalIndexLocal (unsigned globalIndex)
unsigned GetLocalOwnership () const
unsigned GetHigh () const
unsigned GetLow () const
unsigned GetProblemSize () const

Private Member Functions

void CheckForPetsc ()
void CalculateOwnership (Vec vec)
template<class Archive>
void serialize (Archive &archive, const unsigned int version)

Private Attributes

unsigned mLo
unsigned mHi
unsigned mProblemSize
bool mPetscStatusKnown

Friends

class boost::serialization::access


Detailed Description

Factory for creating PETSc vectors distributed across processes.

Replacement for the vector creation portions of DistributedVector (which was implemented using static methods and data), the factory class allows several patterns of PETSc vector length (and distributions among processes) to co-exist.

All vectors created by a factory instance will have the same base size and parallelisation pattern.

Definition at line 53 of file DistributedVectorFactory.hpp.


Constructor & Destructor Documentation

DistributedVectorFactory::DistributedVectorFactory ( Vec  vec  ) 

Set the problem with an existing PETSc vector -- must have stride=1.

Parameters:
vec is a PETSc vector which we want to use as the pattern for future vectors produced by this factory

Definition at line 52 of file DistributedVectorFactory.cpp.

References CalculateOwnership().

DistributedVectorFactory::DistributedVectorFactory ( unsigned  size,
PetscInt  local = PETSC_DECIDE 
)

Set the problem size specifying distribution over local processor.

Parameters:
size the problem size
local defaults to PETSc's default

Definition at line 57 of file DistributedVectorFactory.cpp.

References CalculateOwnership(), CheckForPetsc(), and mPetscStatusKnown.


Member Function Documentation

void DistributedVectorFactory::CheckForPetsc (  )  [private]

Double check (in debug code) that PETSc has been initialised properly

Definition at line 74 of file DistributedVectorFactory.cpp.

References mPetscStatusKnown.

Referenced by CalculateOwnership(), and DistributedVectorFactory().

void DistributedVectorFactory::CalculateOwnership ( Vec  vec  )  [private]

Helper method for the constructors

Parameters:
vec the sample PETSc vector from which to calculate ownerships

Definition at line 33 of file DistributedVectorFactory.cpp.

References CheckForPetsc(), mHi, mLo, mPetscStatusKnown, and mProblemSize.

Referenced by DistributedVectorFactory().

template<class Archive>
void DistributedVectorFactory::serialize ( Archive &  archive,
const unsigned int  version 
) [inline, private]

Archive the member variables.

Parameters:
archive the archive
version the current version of this class

Definition at line 88 of file DistributedVectorFactory.hpp.

Vec DistributedVectorFactory::CreateVec (  ) 

Vec DistributedVectorFactory::CreateVec ( unsigned  stride  ) 

Create a striped PETSc vector of size: stride * problem size

Parameters:
stride 

Definition at line 101 of file DistributedVectorFactory.cpp.

References mHi, mLo, and mProblemSize.

DistributedVector DistributedVectorFactory::CreateDistributedVector ( Vec  vec  ) 

bool DistributedVectorFactory::IsGlobalIndexLocal ( unsigned  globalIndex  ) 

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

Parameters:
globalIndex a global index

Definition at line 87 of file DistributedVectorFactory.cpp.

References mHi, and mLo.

unsigned DistributedVectorFactory::GetLocalOwnership (  )  const [inline]

Returns:
The number of elements in the vector owned by the local process

Definition at line 142 of file DistributedVectorFactory.hpp.

References mHi, and mLo.

Referenced by AbstractCardiacPde< ELEM_DIM, SPACE_DIM >::AbstractCardiacPde(), Hdf5DataWriter::DefineFixedDimension(), and Electrodes< DIM >::Electrodes().

unsigned DistributedVectorFactory::GetHigh (  )  const [inline]

unsigned DistributedVectorFactory::GetLow (  )  const [inline]

unsigned DistributedVectorFactory::GetProblemSize (  )  const [inline]

Returns:
The number of elements in (normal) vectors created by CreateVec()

Definition at line 166 of file DistributedVectorFactory.hpp.

References mProblemSize.

Referenced by DistributedVector::DistributedVector(), and Electrodes< DIM >::Electrodes().


Friends And Related Function Documentation

friend class boost::serialization::access [friend]

Needed for serialization.

Definition at line 79 of file DistributedVectorFactory.hpp.


Member Data Documentation

unsigned DistributedVectorFactory::mLo [private]

The first entry owned by the current processor.

Definition at line 58 of file DistributedVectorFactory.hpp.

Referenced by CalculateOwnership(), CreateVec(), GetLocalOwnership(), GetLow(), and IsGlobalIndexLocal().

unsigned DistributedVectorFactory::mHi [private]

One above the last entry owned by the current processor.

Definition at line 60 of file DistributedVectorFactory.hpp.

Referenced by CalculateOwnership(), CreateVec(), GetHigh(), GetLocalOwnership(), and IsGlobalIndexLocal().

The problem size, i.e. the number of nodes in the mesh (the number of unknowns may be larger in a Stripe).

Definition at line 62 of file DistributedVectorFactory.hpp.

Referenced by CalculateOwnership(), CreateVec(), and GetProblemSize().

Whether we've checked that PETSc is initialised.

Definition at line 64 of file DistributedVectorFactory.hpp.

Referenced by CalculateOwnership(), CheckForPetsc(), and DistributedVectorFactory().


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

Generated on Tue Aug 4 16:11:13 2009 for Chaste by  doxygen 1.5.5