Chaste Release::3.1
ParallelColumnDataWriter Class Reference

#include <ParallelColumnDataWriter.hpp>

Inheritance diagram for ParallelColumnDataWriter:
Collaboration diagram for ParallelColumnDataWriter:

List of all members.

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

Detailed Description

A parallelised column data writer class.

Definition at line 49 of file ParallelColumnDataWriter.hpp.


Constructor & Destructor Documentation

ParallelColumnDataWriter::ParallelColumnDataWriter ( const std::string &  rDirectory,
const std::string &  rBaseName,
bool  cleanDirectory = true 
)

Constructor.

Parameters:
rDirectorythe directory in which to write the data to file
rBaseNamethe name of the file in which to write the data
cleanDirectorywhether 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.


Member Function Documentation

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

Parameters:
variableID
variableValue
dimensionPositionThe 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.

Parameters:
variableIDthe variable
petscVectorthe 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.

Parameters:
variableIdthe variable
rStripethe data
Todo:
allow this to be a const-reference

Definition at line 101 of file ParallelColumnDataWriter.cpp.

References DistributedVector::Begin(), DistributedVectorFactory::CreateDistributedVector(), DistributedVectorFactory::CreateVec(), PetscTools::Destroy(), DistributedVector::End(), DistributedVector::Stripe::GetFactory(), and PutVector().


Member Data Documentation

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().

Set to true in constructor if running in parallel

Definition at line 53 of file ParallelColumnDataWriter.hpp.

Referenced by ParallelColumnDataWriter().

variable holding information for concentrating a vector

Definition at line 55 of file ParallelColumnDataWriter.hpp.

Referenced by PutVector(), and ~ParallelColumnDataWriter().


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