Chaste
Release::2017.1
|
#include <ColumnDataWriter.hpp>
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 () |
Public Member Functions inherited from AbstractDataWriter | |
virtual | ~AbstractDataWriter () |
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 = 1 |
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 51 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 52 of file ColumnDataWriter.cpp.
References EXCEPTION.
|
virtual |
Destructor. Closes any open files.
Definition at line 80 of file ColumnDataWriter.cpp.
References Close(), mpFixedDimensionVariable, and mpUnlimitedDimensionVariable.
|
virtual |
Dummy function for DoAdvanceAlongUnlimitedDimension.
Implements AbstractDataWriter.
Reimplemented in ParallelColumnDataWriter.
Definition at line 400 of file ColumnDataWriter.cpp.
References mHasPutVariable, and mNeedAdvanceAlongUnlimitedDimension.
Referenced by SetCommentForInfoFile(), and OdeSolution::WriteToFile().
|
protected |
Check name of unit is allowed, i.e. contains only alphanumeric & _, and isn't blank.
rName | unit name |
Definition at line 125 of file ColumnDataWriter.cpp.
References EXCEPTION.
Referenced by CheckVariableName(), DefineFixedDimension(), DefineUnlimitedDimension(), and DefineVariable().
|
protected |
Check name of variable is allowed, i.e. contains only alphanumeric & _, and isn't blank.
rName | variable name |
Definition at line 116 of file ColumnDataWriter.cpp.
References CheckUnitsName(), and EXCEPTION.
Referenced by DefineFixedDimension(), DefineUnlimitedDimension(), and DefineVariable().
|
virtual |
Close any open files.
Implements AbstractDataWriter.
Reimplemented in ParallelColumnDataWriter.
Definition at line 101 of file ColumnDataWriter.cpp.
References mpCurrentAncillaryFile, and mpCurrentOutputFile.
Referenced by ParallelColumnDataWriter::Close(), SetCommentForInfoFile(), OdeSolution::WriteToFile(), and ~ColumnDataWriter().
|
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 322 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().
|
protected |
Create the info file.
rFileName | the name of the file to create, relative to the output directory |
Definition at line 351 of file ColumnDataWriter.cpp.
References ChasteBuildInfo::GetProvenanceString(), mCommentForInfoFile, mFixedDimensionSize, mIsUnlimitedDimensionSet, mOutputFileHandler, mVariables, and OutputFileHandler::OpenOutputFile().
Referenced by EndDefineMode().
|
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 165 of file ColumnDataWriter.cpp.
References CheckUnitsName(), CheckVariableName(), EXCEPTION, FIXED_DIMENSION_VAR_ID, mFixedDimensionName, mFixedDimensionSize, mFixedDimensionUnits, mIsFixedDimensionSet, mIsInDefineMode, mpFixedDimensionVariable, DataWriterVariable::mVariableName, and DataWriterVariable::mVariableUnits.
|
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 137 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().
|
virtual |
Define a variable.
rVariableName | The name of the variable |
rVariableUnits | The physical units of the variable |
Implements AbstractDataWriter.
Definition at line 193 of file ColumnDataWriter.cpp.
References CheckUnitsName(), CheckVariableName(), EXCEPTION, mFixedDimensionName, mIsInDefineMode, mUnlimitedDimensionName, DataWriterVariable::mVariableName, mVariables, and DataWriterVariable::mVariableUnits.
Referenced by OdeSolution::WriteToFile().
|
protected |
Advance along the unlimited dimension. Normally this will be called when all variables in a row have been input.
Definition at line 366 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().
|
virtual |
End the define mode of the DataWriter.
Implements AbstractDataWriter.
Reimplemented in ParallelColumnDataWriter.
Definition at line 230 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 ParallelColumnDataWriter::EndDefineMode(), SetCommentForInfoFile(), and OdeSolution::WriteToFile().
std::string ColumnDataWriter::GetOutputDirectory | ( | ) |
Definition at line 96 of file ColumnDataWriter.cpp.
References OutputFileHandler::GetOutputDirectoryFullPath(), and mOutputFileHandler.
Referenced by SetCommentForInfoFile().
|
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 408 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 ParallelColumnDataWriter::PutVariable(), ParallelColumnDataWriter::PutVector(), SetCommentForInfoFile(), and OdeSolution::WriteToFile().
|
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 197 of file ColumnDataWriter.hpp.
References AdvanceAlongUnlimitedDimension(), Close(), EndDefineMode(), GetOutputDirectory(), and PutVariable().
Referenced by OdeSolution::WriteToFile().
|
staticprotected |
id of fixed dimension variable
Definition at line 80 of file ColumnDataWriter.hpp.
Referenced by DefineFixedDimension(), and PutVariable().
|
protected |
The position of the ancillary file pointer when it's at the beginning of the current row
Definition at line 88 of file ColumnDataWriter.hpp.
Referenced by EndDefineMode().
|
protected |
The width in characters of a row in the ancillary file
Definition at line 89 of file ColumnDataWriter.hpp.
Referenced by EndDefineMode().
|
protected |
The base name for the output data files.
Definition at line 58 of file ColumnDataWriter.hpp.
Referenced by DoAdvanceAlongUnlimitedDimension(), and EndDefineMode().
|
protected |
(Optional) comment that can be set and will be written to the info file when CreateInfoFile() is called in EndDefineMode()
Definition at line 98 of file ColumnDataWriter.hpp.
Referenced by CreateInfoFile().
|
protected |
Directory output files will be stored in.
Definition at line 57 of file ColumnDataWriter.hpp.
|
protected |
Width of each column in the text file (excludes column headers)
Definition at line 77 of file ColumnDataWriter.hpp.
Referenced by EndDefineMode(), and PutVariable().
|
protected |
Extension of output files
Definition at line 83 of file ColumnDataWriter.hpp.
|
protected |
The name of the fixed dimension
Definition at line 72 of file ColumnDataWriter.hpp.
Referenced by DefineFixedDimension(), and DefineVariable().
|
protected |
The size of the fixed dimension
Definition at line 63 of file ColumnDataWriter.hpp.
Referenced by CreateFixedDimensionFile(), CreateInfoFile(), DefineFixedDimension(), PutVariable(), and ParallelColumnDataWriter::PutVector().
|
protected |
The units of the fixed dimension
Definition at line 73 of file ColumnDataWriter.hpp.
Referenced by DefineFixedDimension().
|
protected |
Whether a variable value has been output to a file.
Definition at line 91 of file ColumnDataWriter.hpp.
Referenced by AdvanceAlongUnlimitedDimension(), DoAdvanceAlongUnlimitedDimension(), and PutVariable().
|
protected |
Is the fixed dimension set
Definition at line 60 of file ColumnDataWriter.hpp.
Referenced by DefineFixedDimension(), DoAdvanceAlongUnlimitedDimension(), EndDefineMode(), and PutVariable().
|
protected |
Is the DataWriter in define mode or not
Definition at line 59 of file ColumnDataWriter.hpp.
Referenced by DefineFixedDimension(), DefineUnlimitedDimension(), DefineVariable(), ParallelColumnDataWriter::EndDefineMode(), EndDefineMode(), and PutVariable().
|
protected |
Is the unlimited dimension set
Definition at line 61 of file ColumnDataWriter.hpp.
Referenced by CreateInfoFile(), DefineUnlimitedDimension(), DoAdvanceAlongUnlimitedDimension(), EndDefineMode(), and PutVariable().
|
protected |
Whether we need to advance along the unlimited dimension.
Definition at line 92 of file ColumnDataWriter.hpp.
Referenced by AdvanceAlongUnlimitedDimension(), DoAdvanceAlongUnlimitedDimension(), and PutVariable().
|
protected |
For opening data files.
Definition at line 55 of file ColumnDataWriter.hpp.
Referenced by CreateFixedDimensionFile(), CreateInfoFile(), EndDefineMode(), and GetOutputDirectory().
|
protected |
Ancillary filestream currently being addressed (required for two dimensional output) eg. time file
Definition at line 65 of file ColumnDataWriter.hpp.
Referenced by Close(), EndDefineMode(), and PutVariable().
|
protected |
Filestream currently being addressed
Definition at line 64 of file ColumnDataWriter.hpp.
Referenced by Close(), CreateFixedDimensionFile(), DoAdvanceAlongUnlimitedDimension(), EndDefineMode(), and PutVariable().
|
protected |
The variable corresponding to the fixed dimension
Definition at line 67 of file ColumnDataWriter.hpp.
Referenced by CreateFixedDimensionFile(), DefineFixedDimension(), EndDefineMode(), PutVariable(), and ~ColumnDataWriter().
|
protected |
Precision used in writing the data
Definition at line 78 of file ColumnDataWriter.hpp.
Referenced by CreateFixedDimensionFile(), and EndDefineMode().
|
protected |
The variable corresponding to the unlimited dimension
Definition at line 66 of file ColumnDataWriter.hpp.
Referenced by DefineUnlimitedDimension(), EndDefineMode(), PutVariable(), and ~ColumnDataWriter().
|
protected |
The position of the file pointer when it's at the beginning of the current row
Definition at line 85 of file ColumnDataWriter.hpp.
Referenced by CreateFixedDimensionFile(), DoAdvanceAlongUnlimitedDimension(), EndDefineMode(), and PutVariable().
|
protected |
The width in characters of a row in the file
Definition at line 86 of file ColumnDataWriter.hpp.
Referenced by CreateFixedDimensionFile(), DoAdvanceAlongUnlimitedDimension(), EndDefineMode(), and PutVariable().
|
protected |
The name of the unlimited dimension.
Definition at line 69 of file ColumnDataWriter.hpp.
Referenced by DefineUnlimitedDimension(), and DefineVariable().
|
protected |
The position along the unlimited dimension that writing of variables will take place
Definition at line 62 of file ColumnDataWriter.hpp.
Referenced by DoAdvanceAlongUnlimitedDimension(), and EndDefineMode().
|
protected |
The physical units of the unlimited dimension.
Definition at line 70 of file ColumnDataWriter.hpp.
Referenced by DefineUnlimitedDimension().
|
protected |
The data variables
Definition at line 75 of file ColumnDataWriter.hpp.
Referenced by CreateFixedDimensionFile(), CreateInfoFile(), DefineVariable(), EndDefineMode(), and PutVariable().
|
staticprotected |
Space between columns (includes minus sign)
Definition at line 79 of file ColumnDataWriter.hpp.
Referenced by EndDefineMode(), and PutVariable().
|
staticprotected |
id of unlimited dimension variable
Definition at line 81 of file ColumnDataWriter.hpp.
Referenced by DefineUnlimitedDimension(), and PutVariable().