PetscTools Class Reference

#include <PetscTools.hpp>

Collaboration diagram for PetscTools:
Collaboration graph
[legend]

List of all members.

Static Public Member Functions

static void ResetCache ()
static bool IsSequential ()
static unsigned GetNumProcs ()
static unsigned GetMyRank ()
static bool AmMaster ()
static bool AmTopMost ()
static void Barrier (const std::string callerId="")
static Vec CreateVec (int size)
static Vec CreateVec (int size, double value)
static Vec CreateVec (std::vector< double > data)
static void SetupMat (Mat &rMat, int numRows, int numColumns, MatType matType=(MatType) MATMPIAIJ, int numLocalRows=PETSC_DECIDE, int numLocalColumns=PETSC_DECIDE)
static bool ReplicateBool (bool flag)
static void ReplicateException (bool flag)
static void DumpPetscObject (const Mat &rMat, const std::string &rOutputFileFullPath)
static void DumpPetscObject (const Vec &rVec, const std::string &rOutputFileFullPath)
static void ReadPetscObject (Mat &rMat, const std::string &rOutputFileFullPath)
static void ReadPetscObject (Vec &rVec, const std::string &rOutputFileFullPath)
static void SetMaxNumNonzerosIfMatMpiAij (unsigned maxColsPerRowIfMatMpiAij)

Static Public Attributes

static const unsigned MASTER_RANK = 0

Static Private Member Functions

static void CheckCache ()

Static Private Attributes

static bool mPetscIsInitialised = false
static unsigned mNumProcessors = 0
static unsigned mMaxNumNonzerosIfMatMpiAij = 54
static unsigned mRank = 0

Detailed Description

A helper class of static methods.

Definition at line 54 of file PetscTools.hpp.


Member Function Documentation

bool PetscTools::AmMaster (  )  [static]

Just returns whether it is the master process or not.

If not running in parallel, always returns true.

Definition at line 98 of file PetscTools.cpp.

References CheckCache(), MASTER_RANK, and mRank.

Referenced by AbstractHdf5Converter< ELEMENT_DIM, SPACE_DIM >::AbstractHdf5Converter(), ParallelColumnDataWriter::AdvanceAlongUnlimitedDimension(), ArchiveOpener< Archive, Stream >::ArchiveOpener(), ParallelColumnDataWriter::Close(), DistributedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructCuboid(), DistributedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructLinearMesh(), DistributedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructRectangularMesh(), AbstractConvergenceTester< CELL, CARDIAC_PROBLEM, DIM, PROBLEM_DIM >::Converge(), CellMLToSharedLibraryConverter::ConvertCellmlToSo(), OutputDirectoryFifoQueue::CreateNextDir(), ParallelColumnDataWriter::EndDefineMode(), StreeterFibreGenerator< SPACE_DIM >::GenerateOrthotropicFibreOrientation(), AbstractTetrahedralMeshWriter< ELEMENT_DIM, SPACE_DIM >::GetNextElement(), AbstractTetrahedralMeshWriter< ELEMENT_DIM, SPACE_DIM >::GetNextNode(), Hdf5ToVtkConverter< ELEMENT_DIM, SPACE_DIM >::Hdf5ToVtkConverter(), GenericEventHandler< 13, HeartEventHandler >::Headings(), HoneycombMeshGenerator::Make2dPeriodicCryptMesh(), OutputFileHandler::MakeFoldersAndReturnFullPath(), DistributedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::MetisLibraryNodePartitioning(), OutputFileHandler::OutputFileHandler(), TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::PermuteNodesWithMetisBinaries(), ProgressReporter::PrintFinalising(), ProgressReporter::PrintInitialising(), ProgressReporter::ProgressReporter(), Hdf5DataWriter::PutUnlimitedVariable(), ParallelColumnDataWriter::PutVariable(), ParallelColumnDataWriter::PutVector(), MutableMesh< ELEMENT_DIM, SPACE_DIM >::ReMesh(), GenericEventHandler< 13, HeartEventHandler >::Report(), QuadraticMesh< DIM >::RunMesherAndReadMesh(), HeartConfig::save(), CardiacSimulationArchiver< PROBLEM_CLASS >::Save(), ProgressReporter::Update(), HeartConfig::Write(), Hdf5ToMeshalyzerConverter< ELEMENT_DIM, SPACE_DIM >::Write(), Hdf5ToCmguiConverter< ELEMENT_DIM, SPACE_DIM >::Write(), AbstractTetrahedralMeshWriter< ELEMENT_DIM, SPACE_DIM >::WriteFilesUsingMesh(), AbstractMeshWriter< ELEMENT_DIM, SPACE_DIM >::WriteFilesUsingMeshReader(), AbstractTetrahedralMeshWriter< ELEMENT_DIM, SPACE_DIM >::WriteFilesUsingParallelMesh(), PostProcessingWriter< ELEMENT_DIM, SPACE_DIM >::WriteGenericFile(), MonodomainProblem< ELEMENT_DIM, SPACE_DIM >::WriteInfo(), BidomainProblem< DIM >::WriteInfo(), HeartGeometryInformation< SPACE_DIM >::WriteLayerForEachNode(), PseudoEcgCalculator< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::WritePseudoEcg(), OdeSolution::WriteToFile(), and ProgressReporter::~ProgressReporter().

bool PetscTools::AmTopMost (  )  [static]

Just returns whether it is the right-most process or not.

If not running in parallel, always returns true.

Definition at line 104 of file PetscTools.cpp.

References CheckCache(), mNumProcessors, and mRank.

Referenced by DistributedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructFromMeshReader().

void PetscTools::Barrier ( const std::string  callerId = ""  )  [static]

If MPI is set up, perform a barrier synchronisation. If not, it's a noop.

Parameters:
callerId only used in debug mode; printed before & after the barrier call

Definition at line 114 of file PetscTools.cpp.

References CheckCache(), GetMyRank(), and mPetscIsInitialised.

Referenced by ParallelColumnDataWriter::AdvanceAlongUnlimitedDimension(), ParallelColumnDataWriter::Close(), DistributedTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::ConstructFromMeshReader(), OutputDirectoryFifoQueue::CreateNextDir(), StreeterFibreGenerator< SPACE_DIM >::GenerateOrthotropicFibreOrientation(), Hdf5ToCmguiConverter< ELEMENT_DIM, SPACE_DIM >::Hdf5ToCmguiConverter(), Hdf5ToMeshalyzerConverter< ELEMENT_DIM, SPACE_DIM >::Hdf5ToMeshalyzerConverter(), GenericEventHandler< 13, HeartEventHandler >::Headings(), HoneycombMeshGenerator::Make2dPeriodicCryptMesh(), OutputFileHandler::MakeFoldersAndReturnFullPath(), OutputFileHandler::OutputFileHandler(), TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::PermuteNodesWithMetisBinaries(), MutableMesh< ELEMENT_DIM, SPACE_DIM >::ReMesh(), GenericEventHandler< 13, HeartEventHandler >::Report(), QuadraticMesh< DIM >::RunMesherAndReadMesh(), AbstractTetrahedralMesh< SPACE_DIM, SPACE_DIM >::save(), HeartConfig::save(), CardiacSimulationArchiver< PROBLEM_CLASS >::Save(), CardiacElectroMechanicsProblem< DIM >::Solve(), AbstractTetrahedralMeshWriter< ELEMENT_DIM, SPACE_DIM >::WriteFilesUsingMesh(), AbstractTetrahedralMeshWriter< ELEMENT_DIM, SPACE_DIM >::WriteFilesUsingParallelMesh(), PostProcessingWriter< ELEMENT_DIM, SPACE_DIM >::WriteGenericFile(), and HeartGeometryInformation< SPACE_DIM >::WriteLayerForEachNode().

static void PetscTools::CheckCache (  )  [inline, static, private]

Private method makes sure that (if this is the first use within a test) then PETSc has been probed

Definition at line 75 of file PetscTools.hpp.

References mNumProcessors, and ResetCache().

Referenced by AmMaster(), AmTopMost(), Barrier(), GetMyRank(), GetNumProcs(), and IsSequential().

Vec PetscTools::CreateVec ( std::vector< double data  )  [static]

Create a Vec from the given data.

Parameters:
data some data

Definition at line 183 of file PetscTools.cpp.

References CreateVec().

Vec PetscTools::CreateVec ( int  size,
double  value 
) [static]

Create a vector of the specified size with all values set to be the given constant. SetFromOptions is called.

Parameters:
size the size of the vector
value the value to set each entry

Definition at line 167 of file PetscTools.cpp.

References CreateVec().

Vec PetscTools::CreateVec ( int  size  )  [static]
void PetscTools::DumpPetscObject ( const Vec rVec,
const std::string &  rOutputFileFullPath 
) [static]

Dumps a given Petsc object to disk.

Parameters:
rVec a vector
rOutputFileFullPath where to dump the vector to disk

Definition at line 245 of file PetscTools.cpp.

void PetscTools::DumpPetscObject ( const Mat &  rMat,
const std::string &  rOutputFileFullPath 
) [static]

Dumps a given Petsc object to disk.

Parameters:
rMat a matrix
rOutputFileFullPath where to dump the matrix to disk

Definition at line 230 of file PetscTools.cpp.

unsigned PetscTools::GetMyRank (  )  [static]
unsigned PetscTools::GetNumProcs (  )  [static]
bool PetscTools::IsSequential (  )  [static]
void PetscTools::ReadPetscObject ( Vec rVec,
const std::string &  rOutputFileFullPath 
) [static]

Read a previously dumped Petsc object from disk.

Parameters:
rVec a vector
rOutputFileFullPath where to read the matrix from

Definition at line 275 of file PetscTools.cpp.

void PetscTools::ReadPetscObject ( Mat &  rMat,
const std::string &  rOutputFileFullPath 
) [static]

Read a previously dumped Petsc object from disk.

Parameters:
rMat a matrix
rOutputFileFullPath where to read the matrix from

Definition at line 260 of file PetscTools.cpp.

bool PetscTools::ReplicateBool ( bool  flag  )  [static]

Boolean AND of a flags between processes

Parameters:
flag is set to true on this process.
Returns:
true if any process' flag is set to true.

Definition at line 131 of file PetscTools.cpp.

Referenced by AbstractBoundaryConditionsContainer< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::HasDirichletBoundaryConditions(), ReplicateException(), CardiacSimulationArchiver< PROBLEM_CLASS >::Save(), and DistanceMapCalculator< ELEMENT_DIM, SPACE_DIM >::UpdateQueueFromRemote().

void PetscTools::ReplicateException ( bool  flag  )  [static]
void PetscTools::ResetCache (  )  [static]

Reset our cached values: whether PETSc is initialised, how many processors there are, and which one we are.

Definition at line 45 of file PetscTools.cpp.

References mNumProcessors, mPetscIsInitialised, and mRank.

Referenced by CheckCache().

void PetscTools::SetMaxNumNonzerosIfMatMpiAij ( unsigned  maxColsPerRowIfMatMpiAij  )  [static]

Set the number of nonzeros per row that PETSc will preallocate memory for.

Parameters:
maxColsPerRowIfMatMpiAij The maximum number of non zeros per row. This value is problem dependent. Since the call to set this depends on the matrix-type (eg MatMPIAIJSetPreallocation/MatSeqAIJSetPreallocation), preallocation using this value is done only if the matrix-type is MATMPIAIJ (the default). WITH OTHER TYPES OF MATRIX NO PREALLOCATION IS DONE AND YOU MUST PREALLOCATE MANUALLY (by calling the appropriate method)!

Definition at line 290 of file PetscTools.cpp.

References mMaxNumNonzerosIfMatMpiAij.

void PetscTools::SetupMat ( Mat &  rMat,
int  numRows,
int  numColumns,
MatType  matType = (MatType) MATMPIAIJ,
int  numLocalRows = PETSC_DECIDE,
int  numLocalColumns = PETSC_DECIDE 
) [static]

Set up a matrix - set the size using the given parameters, the type (default MATMPIAIJ). The number of local rows and columns is by default PETSC_DECIDE. SetFromOptions is called.

Parameters:
rMat the matrix
numRows the number of rows in the matrix
numColumns the number of columns in the matrix
matType the matrix type (defaults to MATMPIAIJ)
numLocalRows the number of local rows (detaults to PETSC_DECIDE)
numLocalColumns the number of local columns (detaults to PETSC_DECIDE)

Definition at line 205 of file PetscTools.cpp.

References mMaxNumNonzerosIfMatMpiAij.

Referenced by LinearSystem::LinearSystem(), LinearSystem::SetupVectorAndMatrix(), SimplePetscNonlinearSolver::Solve(), and AbstractNonlinearAssembler< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM, CONCRETE >::VerifyJacobian().


Member Data Documentation

const unsigned PetscTools::MASTER_RANK = 0 [static]

As a convention, we consider processor 0 the master process

Definition at line 88 of file PetscTools.hpp.

Referenced by AmMaster().

The number of nonzeros per row that PETSc preallocates

Definition at line 64 of file PetscTools.hpp.

Referenced by SetMaxNumNonzerosIfMatMpiAij(), and SetupMat().

unsigned PetscTools::mNumProcessors = 0 [static, private]

The total number of processors.

Definition at line 61 of file PetscTools.hpp.

Referenced by AmTopMost(), CheckCache(), GetNumProcs(), IsSequential(), and ResetCache().

bool PetscTools::mPetscIsInitialised = false [static, private]

Whether PETSc has been initialised.

Definition at line 58 of file PetscTools.hpp.

Referenced by Barrier(), and ResetCache().

unsigned PetscTools::mRank = 0 [static, private]

Which processors we are.

Definition at line 72 of file PetscTools.hpp.

Referenced by AmMaster(), AmTopMost(), GetMyRank(), and ResetCache().


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

Generated by  doxygen 1.6.2