#include <ColumnDataWriter.hpp>
Inherits AbstractDataWriter.
Inherited by ParallelColumnDataWriter.
Public Member Functions | |
ColumnDataWriter (const std::string &rDirectory, const std::string &rBaseName, bool cleanDirectory=true, unsigned precision=8) | |
virtual | ~ColumnDataWriter () |
int | DefineUnlimitedDimension (const std::string &rDimensionName, const std::string &rDimensionUnits) |
int | DefineFixedDimension (const std::string &rDimensionName, const std::string &rDimensionUnits, long dimensionSize) |
int | DefineVariable (const std::string &rVariableName, const std::string &rVariableUnits) |
void | SetCommentForInfoFile (std::string comment) |
virtual void | EndDefineMode () |
virtual void | AdvanceAlongUnlimitedDimension () |
virtual void | PutVariable (int variableID, double variableValue, long dimensionPosition=-1) |
virtual void | Close () |
std::string | GetOutputDirectory () |
Protected Member Functions | |
void | CreateFixedDimensionFile (const std::string &rFileName) |
void | CreateInfoFile (const std::string &rFileName) |
void | CheckVariableName (const std::string &rName) |
void | CheckUnitsName (const std::string &rName) |
void | DoAdvanceAlongUnlimitedDimension () |
Protected Attributes | |
OutputFileHandler | mOutputFileHandler |
std::string | mDirectory |
std::string | mBaseName |
bool | mIsInDefineMode |
bool | mIsFixedDimensionSet |
bool | mIsUnlimitedDimensionSet |
long | mUnlimitedDimensionPosition |
long | mFixedDimensionSize |
out_stream | mpCurrentOutputFile |
out_stream | mpCurrentAncillaryFile |
DataWriterVariable * | mpUnlimitedDimensionVariable |
DataWriterVariable * | mpFixedDimensionVariable |
std::string | mUnlimitedDimensionName |
std::string | mUnlimitedDimensionUnits |
std::string | mFixedDimensionName |
std::string | mFixedDimensionUnits |
std::vector< DataWriterVariable > | mVariables |
const unsigned | mFieldWidth |
const unsigned | mPrecision |
std::string | mFileExtension |
int | mRowStartPosition |
int | mRowWidth |
int | mAncillaryRowStartPosition |
int | mAncillaryRowWidth |
bool | mHasPutVariable |
bool | mNeedAdvanceAlongUnlimitedDimension |
std::string | mCommentForInfoFile |
Static Protected Attributes | |
static const int | SPACING = 2 |
static const int | FIXED_DIMENSION_VAR_ID = -1 |
static const int | UNLIMITED_DIMENSION_VAR_ID = -2 |
A concrete column data writer class. Writes grid-formatted data in space separated column form. Each file has a header row with names and optional units for each column.
Definition at line 44 of file ColumnDataWriter.hpp.
ColumnDataWriter::ColumnDataWriter | ( | const std::string & | rDirectory, | |
const std::string & | rBaseName, | |||
bool | cleanDirectory = true , |
|||
unsigned | precision = 8 | |||
) |
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) | |
precision | the precision with which to write the data (i.e. exactly how many digits to display after the decimal point). Defaults to 8. Must be between 2 and 20 (inclusive). |
Implementation file for ColumnDataWriter class.
Definition at line 46 of file ColumnDataWriter.cpp.
References EXCEPTION.
ColumnDataWriter::~ColumnDataWriter | ( | ) | [virtual] |
Destructor. Closes any open files.
Definition at line 74 of file ColumnDataWriter.cpp.
References Close(), mpFixedDimensionVariable, and mpUnlimitedDimensionVariable.
void ColumnDataWriter::AdvanceAlongUnlimitedDimension | ( | ) | [virtual] |
Dummy function for DoAdvanceAlongUnlimitedDimension.
Implements AbstractDataWriter.
Reimplemented in ParallelColumnDataWriter.
Definition at line 394 of file ColumnDataWriter.cpp.
References mHasPutVariable, and mNeedAdvanceAlongUnlimitedDimension.
Referenced by OdeSolution::WriteToFile().
void ColumnDataWriter::CheckUnitsName | ( | const std::string & | rName | ) | [protected] |
Check name of unit is allowed, i.e. contains only alphanumeric & _, and isn't blank.
rName | unit name |
Definition at line 119 of file ColumnDataWriter.cpp.
References EXCEPTION.
Referenced by CheckVariableName(), DefineFixedDimension(), DefineUnlimitedDimension(), and DefineVariable().
void ColumnDataWriter::CheckVariableName | ( | const std::string & | rName | ) | [protected] |
Check name of variable is allowed, i.e. contains only alphanumeric & _, and isn't blank.
rName | variable name |
Definition at line 110 of file ColumnDataWriter.cpp.
References CheckUnitsName(), and EXCEPTION.
Referenced by DefineFixedDimension(), DefineUnlimitedDimension(), and DefineVariable().
void ColumnDataWriter::Close | ( | ) | [virtual] |
Close any open files.
Implements AbstractDataWriter.
Reimplemented in ParallelColumnDataWriter.
Definition at line 95 of file ColumnDataWriter.cpp.
References mpCurrentAncillaryFile, and mpCurrentOutputFile.
Referenced by OdeSolution::WriteToFile(), and ~ColumnDataWriter().
void ColumnDataWriter::CreateFixedDimensionFile | ( | const std::string & | rFileName | ) | [protected] |
Create the output file and write out the header for it.
rFileName | the name of the file to write to, relative to the output directory |
Definition at line 316 of file ColumnDataWriter.cpp.
References mFixedDimensionSize, mOutputFileHandler, mpCurrentOutputFile, mpFixedDimensionVariable, mPrecision, mRowStartPosition, mRowWidth, DataWriterVariable::mVariableName, mVariables, DataWriterVariable::mVariableUnits, and OutputFileHandler::OpenOutputFile().
Referenced by DoAdvanceAlongUnlimitedDimension(), and EndDefineMode().
void ColumnDataWriter::CreateInfoFile | ( | const std::string & | rFileName | ) | [protected] |
Create the info file.
rFileName | the name of the file to create, relative to the output directory |
Definition at line 345 of file ColumnDataWriter.cpp.
References ChasteBuildInfo::GetProvenanceString(), mCommentForInfoFile, mFixedDimensionSize, mIsUnlimitedDimensionSet, mOutputFileHandler, mVariables, and OutputFileHandler::OpenOutputFile().
Referenced by EndDefineMode().
int ColumnDataWriter::DefineFixedDimension | ( | const std::string & | rDimensionName, | |
const std::string & | rDimensionUnits, | |||
long | dimensionSize | |||
) | [virtual] |
Define the fixed dimension.
rDimensionName | The name of the dimension | |
rDimensionUnits | The physical units of the dimension | |
dimensionSize | The size of the dimension |
Implements AbstractDataWriter.
Definition at line 159 of file ColumnDataWriter.cpp.
References CheckUnitsName(), CheckVariableName(), EXCEPTION, FIXED_DIMENSION_VAR_ID, mFixedDimensionName, mFixedDimensionSize, mFixedDimensionUnits, mIsFixedDimensionSet, mIsInDefineMode, mpFixedDimensionVariable, DataWriterVariable::mVariableName, and DataWriterVariable::mVariableUnits.
int ColumnDataWriter::DefineUnlimitedDimension | ( | const std::string & | rDimensionName, | |
const std::string & | rDimensionUnits | |||
) | [virtual] |
Define the unlimited dimension, i.e. the dimension that increases as the simulation progresses.
rDimensionName | The name of the unlimited dimension | |
rDimensionUnits | The physical units of the unlimited dimension |
Implements AbstractDataWriter.
Definition at line 131 of file ColumnDataWriter.cpp.
References CheckUnitsName(), CheckVariableName(), EXCEPTION, mIsInDefineMode, mIsUnlimitedDimensionSet, mpUnlimitedDimensionVariable, mUnlimitedDimensionName, mUnlimitedDimensionUnits, DataWriterVariable::mVariableName, DataWriterVariable::mVariableUnits, and UNLIMITED_DIMENSION_VAR_ID.
Referenced by OdeSolution::WriteToFile().
int ColumnDataWriter::DefineVariable | ( | const std::string & | rVariableName, | |
const std::string & | rVariableUnits | |||
) | [virtual] |
Define a variable.
rVariableName | The name of the variable | |
rVariableUnits | The physical units of the variable |
Implements AbstractDataWriter.
Definition at line 187 of file ColumnDataWriter.cpp.
References CheckUnitsName(), CheckVariableName(), EXCEPTION, mFixedDimensionName, mIsInDefineMode, mUnlimitedDimensionName, DataWriterVariable::mVariableName, mVariables, and DataWriterVariable::mVariableUnits.
Referenced by OdeSolution::WriteToFile().
void ColumnDataWriter::DoAdvanceAlongUnlimitedDimension | ( | ) | [protected] |
Advance along the unlimited dimension. Normally this will be called when all variables in a row have been input.
Definition at line 360 of file ColumnDataWriter.cpp.
References CreateFixedDimensionFile(), EXCEPTION, FILE_SUFFIX_WIDTH, mBaseName, mHasPutVariable, mIsFixedDimensionSet, mIsUnlimitedDimensionSet, mNeedAdvanceAlongUnlimitedDimension, mpCurrentOutputFile, mRowStartPosition, mRowWidth, and mUnlimitedDimensionPosition.
Referenced by ParallelColumnDataWriter::AdvanceAlongUnlimitedDimension(), and PutVariable().
void ColumnDataWriter::EndDefineMode | ( | ) | [virtual] |
End the define mode of the DataWriter.
Implements AbstractDataWriter.
Reimplemented in ParallelColumnDataWriter.
Definition at line 224 of file ColumnDataWriter.cpp.
References CreateFixedDimensionFile(), CreateInfoFile(), EXCEPTION, FILE_SUFFIX_WIDTH, mAncillaryRowStartPosition, mAncillaryRowWidth, mBaseName, mFieldWidth, mIsFixedDimensionSet, mIsInDefineMode, mIsUnlimitedDimensionSet, mOutputFileHandler, mpCurrentAncillaryFile, mpCurrentOutputFile, mpFixedDimensionVariable, mPrecision, mpUnlimitedDimensionVariable, mRowStartPosition, mRowWidth, mUnlimitedDimensionPosition, DataWriterVariable::mVariableName, mVariables, DataWriterVariable::mVariableUnits, OutputFileHandler::OpenOutputFile(), and SPACING.
Referenced by OdeSolution::WriteToFile().
std::string ColumnDataWriter::GetOutputDirectory | ( | ) |
Return the full pathname of the directory where we're writing files.
Definition at line 90 of file ColumnDataWriter.cpp.
References OutputFileHandler::GetOutputDirectoryFullPath(), and mOutputFileHandler.
void ColumnDataWriter::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 |
Implements AbstractDataWriter.
Reimplemented in ParallelColumnDataWriter.
Definition at line 402 of file ColumnDataWriter.cpp.
References DoAdvanceAlongUnlimitedDimension(), EXCEPTION, FIXED_DIMENSION_VAR_ID, mFieldWidth, mFixedDimensionSize, mHasPutVariable, mIsFixedDimensionSet, mIsInDefineMode, mIsUnlimitedDimensionSet, mNeedAdvanceAlongUnlimitedDimension, mpCurrentAncillaryFile, mpCurrentOutputFile, mpFixedDimensionVariable, mpUnlimitedDimensionVariable, mRowStartPosition, mRowWidth, mVariables, SPACING, and UNLIMITED_DIMENSION_VAR_ID.
Referenced by OdeSolution::WriteToFile().
void ColumnDataWriter::SetCommentForInfoFile | ( | std::string | comment | ) | [inline] |
Set a comment to be written in the info file (optional). This needs to be called before EndDefineMode().
comment | the comment |
Definition at line 190 of file ColumnDataWriter.hpp.
References mCommentForInfoFile.
Referenced by OdeSolution::WriteToFile().
const int ColumnDataWriter::FIXED_DIMENSION_VAR_ID = -1 [static, protected] |
id of fixed dimension variable
Definition at line 73 of file ColumnDataWriter.hpp.
Referenced by DefineFixedDimension(), and PutVariable().
int ColumnDataWriter::mAncillaryRowStartPosition [protected] |
The position of the ancillary file pointer when it's at the beginning of the current row
Definition at line 81 of file ColumnDataWriter.hpp.
Referenced by EndDefineMode().
int ColumnDataWriter::mAncillaryRowWidth [protected] |
The width in characters of a row in the ancillary file
Definition at line 82 of file ColumnDataWriter.hpp.
Referenced by EndDefineMode().
std::string ColumnDataWriter::mBaseName [protected] |
The base name for the output data files.
Definition at line 51 of file ColumnDataWriter.hpp.
Referenced by DoAdvanceAlongUnlimitedDimension(), and EndDefineMode().
std::string ColumnDataWriter::mCommentForInfoFile [protected] |
(Optional) comment that can be set and will be written to the info file when CreateInfoFile() is called in EndDefineMode()
Definition at line 91 of file ColumnDataWriter.hpp.
Referenced by CreateInfoFile(), and SetCommentForInfoFile().
std::string ColumnDataWriter::mDirectory [protected] |
Directory output files will be stored in.
Definition at line 50 of file ColumnDataWriter.hpp.
const unsigned ColumnDataWriter::mFieldWidth [protected] |
Width of each column in the text file (excludes column headers)
Definition at line 70 of file ColumnDataWriter.hpp.
Referenced by EndDefineMode(), and PutVariable().
std::string ColumnDataWriter::mFileExtension [protected] |
Extension of output files
Definition at line 76 of file ColumnDataWriter.hpp.
std::string ColumnDataWriter::mFixedDimensionName [protected] |
The name of the fixed dimension
Definition at line 65 of file ColumnDataWriter.hpp.
Referenced by DefineFixedDimension(), and DefineVariable().
long ColumnDataWriter::mFixedDimensionSize [protected] |
The size of the fixed dimension
Definition at line 56 of file ColumnDataWriter.hpp.
Referenced by CreateFixedDimensionFile(), CreateInfoFile(), DefineFixedDimension(), PutVariable(), and ParallelColumnDataWriter::PutVector().
std::string ColumnDataWriter::mFixedDimensionUnits [protected] |
The units of the fixed dimension
Definition at line 66 of file ColumnDataWriter.hpp.
Referenced by DefineFixedDimension().
bool ColumnDataWriter::mHasPutVariable [protected] |
Whether a variable value has been output to a file.
Definition at line 84 of file ColumnDataWriter.hpp.
Referenced by AdvanceAlongUnlimitedDimension(), DoAdvanceAlongUnlimitedDimension(), and PutVariable().
bool ColumnDataWriter::mIsFixedDimensionSet [protected] |
Is the fixed dimension set
Definition at line 53 of file ColumnDataWriter.hpp.
Referenced by DefineFixedDimension(), DoAdvanceAlongUnlimitedDimension(), EndDefineMode(), and PutVariable().
bool ColumnDataWriter::mIsInDefineMode [protected] |
Is the DataWriter in define mode or not
Definition at line 52 of file ColumnDataWriter.hpp.
Referenced by DefineFixedDimension(), DefineUnlimitedDimension(), DefineVariable(), ParallelColumnDataWriter::EndDefineMode(), EndDefineMode(), and PutVariable().
bool ColumnDataWriter::mIsUnlimitedDimensionSet [protected] |
Is the unlimited dimension set
Definition at line 54 of file ColumnDataWriter.hpp.
Referenced by CreateInfoFile(), DefineUnlimitedDimension(), DoAdvanceAlongUnlimitedDimension(), EndDefineMode(), and PutVariable().
Whether we need to advance along the unlimited dimension.
Definition at line 85 of file ColumnDataWriter.hpp.
Referenced by AdvanceAlongUnlimitedDimension(), DoAdvanceAlongUnlimitedDimension(), and PutVariable().
For opening data files.
Definition at line 48 of file ColumnDataWriter.hpp.
Referenced by CreateFixedDimensionFile(), CreateInfoFile(), EndDefineMode(), and GetOutputDirectory().
out_stream ColumnDataWriter::mpCurrentAncillaryFile [protected] |
Ancillary filestream currently being addressed (required for two dimensional output) eg. time file
Definition at line 58 of file ColumnDataWriter.hpp.
Referenced by Close(), EndDefineMode(), and PutVariable().
out_stream ColumnDataWriter::mpCurrentOutputFile [protected] |
Filestream currently being addressed
Definition at line 57 of file ColumnDataWriter.hpp.
Referenced by Close(), CreateFixedDimensionFile(), DoAdvanceAlongUnlimitedDimension(), EndDefineMode(), and PutVariable().
The variable corresponding to the fixed dimension
Definition at line 60 of file ColumnDataWriter.hpp.
Referenced by CreateFixedDimensionFile(), DefineFixedDimension(), EndDefineMode(), PutVariable(), and ~ColumnDataWriter().
const unsigned ColumnDataWriter::mPrecision [protected] |
Precision used in writing the data
Definition at line 71 of file ColumnDataWriter.hpp.
Referenced by CreateFixedDimensionFile(), and EndDefineMode().
The variable corresponding to the unlimited dimension
Definition at line 59 of file ColumnDataWriter.hpp.
Referenced by DefineUnlimitedDimension(), EndDefineMode(), PutVariable(), and ~ColumnDataWriter().
int ColumnDataWriter::mRowStartPosition [protected] |
The position of the file pointer when it's at the beginning of the current row
Definition at line 78 of file ColumnDataWriter.hpp.
Referenced by CreateFixedDimensionFile(), DoAdvanceAlongUnlimitedDimension(), EndDefineMode(), and PutVariable().
int ColumnDataWriter::mRowWidth [protected] |
The width in characters of a row in the file
Definition at line 79 of file ColumnDataWriter.hpp.
Referenced by CreateFixedDimensionFile(), DoAdvanceAlongUnlimitedDimension(), EndDefineMode(), and PutVariable().
std::string ColumnDataWriter::mUnlimitedDimensionName [protected] |
The name of the unlimited dimension.
Definition at line 62 of file ColumnDataWriter.hpp.
Referenced by DefineUnlimitedDimension(), and DefineVariable().
long ColumnDataWriter::mUnlimitedDimensionPosition [protected] |
The position along the unlimited dimension that writing of variables will take place
Definition at line 55 of file ColumnDataWriter.hpp.
Referenced by DoAdvanceAlongUnlimitedDimension(), and EndDefineMode().
std::string ColumnDataWriter::mUnlimitedDimensionUnits [protected] |
The physical units of the unlimited dimension.
Definition at line 63 of file ColumnDataWriter.hpp.
Referenced by DefineUnlimitedDimension().
std::vector<DataWriterVariable> ColumnDataWriter::mVariables [protected] |
The data variables
Definition at line 68 of file ColumnDataWriter.hpp.
Referenced by CreateFixedDimensionFile(), CreateInfoFile(), DefineVariable(), EndDefineMode(), and PutVariable().
const int ColumnDataWriter::SPACING = 2 [static, protected] |
Space between columns (includes minus sign)
Definition at line 72 of file ColumnDataWriter.hpp.
Referenced by EndDefineMode(), and PutVariable().
const int ColumnDataWriter::UNLIMITED_DIMENSION_VAR_ID = -2 [static, protected] |
id of unlimited dimension variable
Definition at line 74 of file ColumnDataWriter.hpp.
Referenced by DefineUnlimitedDimension(), and PutVariable().