Chaste Release::3.1
|
#include <ParallelColumnDataWriter.hpp>
Public Member Functions | |
ParallelColumnDataWriter (const std::string &rDirectory, const std::string &rBaseName, bool cleanDirectory=true) | |
virtual | ~ParallelColumnDataWriter () |
void | PutVector (int variableID, Vec petscVector) |
void | PutVectorStripe (int variableId, DistributedVector::Stripe &rStripe) |
void | PutVariable (int variableID, double variableValue, long dimensionPosition=-1) |
void | EndDefineMode () |
void | AdvanceAlongUnlimitedDimension () |
void | Close () |
Private Attributes | |
bool | mIsParallel |
Vec | mConcentrated |
VecScatter | mToMaster |
A parallelised column data writer class.
Definition at line 49 of file ParallelColumnDataWriter.hpp.
ParallelColumnDataWriter::ParallelColumnDataWriter | ( | const std::string & | rDirectory, |
const std::string & | rBaseName, | ||
bool | cleanDirectory = true |
||
) |
Constructor.
rDirectory | the directory in which to write the data to file |
rBaseName | the name of the file in which to write the data |
cleanDirectory | whether to clean the directory (defaults to true) |
Definition at line 40 of file ParallelColumnDataWriter.cpp.
References mIsParallel.
ParallelColumnDataWriter::~ParallelColumnDataWriter | ( | ) | [virtual] |
Destructor.
Definition at line 148 of file ParallelColumnDataWriter.cpp.
References Close(), PetscTools::Destroy(), mConcentrated, mToMaster, and PETSC_DESTROY_PARAM.
void ParallelColumnDataWriter::AdvanceAlongUnlimitedDimension | ( | ) | [virtual] |
Advance along the unlimited dimension. Normally this will be called when all variables in a row have been input.
Reimplemented from ColumnDataWriter.
Definition at line 158 of file ParallelColumnDataWriter.cpp.
References PetscTools::AmMaster(), PetscTools::Barrier(), and ColumnDataWriter::DoAdvanceAlongUnlimitedDimension().
void ParallelColumnDataWriter::Close | ( | ) | [virtual] |
Close any open files.
Reimplemented from ColumnDataWriter.
Definition at line 169 of file ParallelColumnDataWriter.cpp.
References PetscTools::AmMaster(), and PetscTools::Barrier().
Referenced by ~ParallelColumnDataWriter().
void ParallelColumnDataWriter::EndDefineMode | ( | ) | [virtual] |
End the define mode of the DataWriter.
Reimplemented from ColumnDataWriter.
Definition at line 119 of file ParallelColumnDataWriter.cpp.
References PetscTools::AmMaster(), and ColumnDataWriter::mIsInDefineMode.
void ParallelColumnDataWriter::PutVariable | ( | int | variableID, |
double | variableValue, | ||
long | dimensionPosition = -1 |
||
) | [virtual] |
Input the variable value to the output file or ancillary file
variableID | |
variableValue | |
dimensionPosition | The position in column (defaults to -1). This is required if there is a fixed dimension, and will be the position along that dimension |
There are two ways of calling PutVariable: 1) All processes call it as a collective operation from the user's code. This only makes sense if they are writing the unlimited dimension (time) variable. It is actually a no-op if any non-master process attempts to write anything at all. 2) The master calls the equivalent method in the parent class after concentrating the data into a single Vec (ie. from the method PutVector() above).
Reimplemented from ColumnDataWriter.
Definition at line 139 of file ParallelColumnDataWriter.cpp.
References PetscTools::AmMaster().
Referenced by PutVector().
void ParallelColumnDataWriter::PutVector | ( | int | variableID, |
Vec | petscVector | ||
) |
Write data for a given variable from a PETSc vector to the dataset.
variableID | the variable |
petscVector | the data |
Definition at line 58 of file ParallelColumnDataWriter.cpp.
References PetscTools::AmMaster(), EXCEPTION, mConcentrated, ColumnDataWriter::mFixedDimensionSize, mToMaster, and PutVariable().
Referenced by PutVectorStripe().
void ParallelColumnDataWriter::PutVectorStripe | ( | int | variableId, |
DistributedVector::Stripe & | rStripe | ||
) |
Write data for a given variable from a stripe to the dataset.
variableId | the variable |
rStripe | the data |
Definition at line 101 of file ParallelColumnDataWriter.cpp.
References DistributedVector::Begin(), DistributedVectorFactory::CreateDistributedVector(), DistributedVectorFactory::CreateVec(), PetscTools::Destroy(), DistributedVector::End(), DistributedVector::Stripe::GetFactory(), and PutVector().
Vec ParallelColumnDataWriter::mConcentrated [private] |
Vector to hold concentrated copy of distributed vector on the master process
Definition at line 54 of file ParallelColumnDataWriter.hpp.
Referenced by PutVector(), and ~ParallelColumnDataWriter().
bool ParallelColumnDataWriter::mIsParallel [private] |
Set to true in constructor if running in parallel
Definition at line 53 of file ParallelColumnDataWriter.hpp.
Referenced by ParallelColumnDataWriter().
VecScatter ParallelColumnDataWriter::mToMaster [private] |
variable holding information for concentrating a vector
Definition at line 55 of file ParallelColumnDataWriter.hpp.
Referenced by PutVector(), and ~ParallelColumnDataWriter().