Chaste  Release::2018.1
OutputFileHandler Class Reference

#include <OutputFileHandler.hpp>

+ Collaboration diagram for OutputFileHandler:

Public Member Functions

 OutputFileHandler (const std::string &rDirectory, bool cleanOutputDirectory=true)
 
 OutputFileHandler (const FileFinder &rDirectory, bool cleanOutputDirectory=true)
 
std::string GetOutputDirectoryFullPath () const
 
std::string GetRelativePath () const
 
void SetArchiveDirectory () const
 
out_stream OpenOutputFile (const std::string &rFileName, std::ios_base::openmode mode=std::ios::out|std::ios::trunc) const
 
out_stream OpenOutputFile (const std::string &rFileName, unsigned number, const std::string &rFileFormat, std::ios_base::openmode mode=std::ios::out|std::ios::trunc) const
 
FileFinder CopyFileTo (const FileFinder &rSourceFile) const
 
FileFinder FindFile (std::string leafName) const
 

Static Public Member Functions

static std::string GetChasteTestOutputDirectory ()
 

Static Public Attributes

static const std::string SIG_FILE_NAME
 

Private Member Functions

void CommonConstructor (const std::string &rDirectory, bool cleanOutputDirectory)
 
std::string MakeFoldersAndReturnFullPath (const std::string &rDirectory) const
 

Static Private Member Functions

static void AddTrailingSlash (std::string &rDirectory)
 

Private Attributes

std::string mDirectory
 The directory to store output files in (always ends in "/")
 

Detailed Description

This file abstracts stuff that needs to be done when creating output files for tests. It defines some helpful functions, so that things that are otherwise repeated in lots of places are just done here.

Definition at line 54 of file OutputFileHandler.hpp.

Constructor & Destructor Documentation

OutputFileHandler::OutputFileHandler ( const std::string &  rDirectory,
bool  cleanOutputDirectory = true 
)

Create an OutputFileHandler that will create output files in the given directory. The directory name should be relative to the place where Chaste test output is stored. If the user needs to know where this is, use the GetChasteTestOutputDirectory method.

Will check that the directory exists and create it if needed.

Note
This MUST be called collectively, since the directory creation routine contains a barrier call.
Parameters
rDirectorythe directory to put output files in.
cleanOutputDirectorywhether to remove any existing files in the output directory

Definition at line 89 of file OutputFileHandler.cpp.

References CommonConstructor().

OutputFileHandler::OutputFileHandler ( const FileFinder rDirectory,
bool  cleanOutputDirectory = true 
)

Create an OutputFileHandler that will create output files in the given directory. This must be located inside the folder where Chaste test output is stored, and will typically be obtained with the FindFile method of this class from a parent handler.

Will check that the directory exists and create it if needed.

Note
This MUST be called collectively, since it contains a barrier call.
Parameters
rDirectorythe directory to put output files in
cleanOutputDirectorywhether to remove any existing files in the output directory

Definition at line 96 of file OutputFileHandler.cpp.

References RelativeTo::ChasteTestOutput, CommonConstructor(), EXCEPTION, FileFinder::GetAbsolutePath(), and FileFinder::GetRelativePath().

Member Function Documentation

void OutputFileHandler::AddTrailingSlash ( std::string &  rDirectory)
staticprivate

Takes a reference to a string and adds a trailing slash if one is not already present

Parameters
rDirectoryThe directory name to add a trailing slash to.

Definition at line 279 of file OutputFileHandler.cpp.

Referenced by GetChasteTestOutputDirectory(), and MakeFoldersAndReturnFullPath().

void OutputFileHandler::CommonConstructor ( const std::string &  rDirectory,
bool  cleanOutputDirectory 
)
private

Functionality common to both constructors.

Parameters
rDirectoryrelative path to the directory to put output files in
cleanOutputDirectorywhether to remove any existing files in the output directory

Definition at line 120 of file OutputFileHandler.cpp.

References RelativeTo::Absolute, PetscTools::AmMaster(), PetscTools::Barrier(), EXCEPTION, FileFinder::Exists(), MakeFoldersAndReturnFullPath(), mDirectory, and SIG_FILE_NAME.

Referenced by OutputFileHandler().

FileFinder OutputFileHandler::CopyFileTo ( const FileFinder rSourceFile) const

Copy the given file to this output directory.

Note
This MUST be called collectively, since it contains a barrier call.
Parameters
rSourceFilethe file to copy
Returns
the copied file

Definition at line 288 of file OutputFileHandler.cpp.

References RelativeTo::Absolute, PetscTools::AmMaster(), PetscTools::Barrier(), EXCEPTION, FileFinder::GetAbsolutePath(), GetOutputDirectoryFullPath(), FileFinder::IsFile(), and TERMINATE.

Referenced by CellMLLoader::LoadCellMLFile().

FileFinder OutputFileHandler::FindFile ( std::string  leafName) const
Returns
a FileFinder for a file in this output directory.
Parameters
leafNamethe name of the file to find

Definition at line 314 of file OutputFileHandler.cpp.

References RelativeTo::Absolute, and GetOutputDirectoryFullPath().

Referenced by AbstractConvergenceTester< CELL, CARDIAC_PROBLEM, DIM, PROBLEM_DIM >::Converge(), CardiacSimulation::CreateAndRun(), GetRelativePath(), and CellMLLoader::LoadCellMLFile().

std::string OutputFileHandler::GetChasteTestOutputDirectory ( )
static

Static method for getting the test output directory (the directory where chaste stores test output). This is set from the environment variable CHASTE_TEST_OUTPUT, and defaults to "./testoutput" if it is not set.

Attempts to return an absolute path, but may get confused by odd setups.

Static so an output file handler does not have to be created if the test output directory is wanted for, say, reading a file.

Returns
the test output directory name (CHASTE_TEST_OUTPUT)

Definition at line 161 of file OutputFileHandler.cpp.

References RelativeTo::AbsoluteOrCwd, AddTrailingSlash(), FileFinder::GetAbsolutePath(), and FileFinder::SetPath().

Referenced by ArchiveLocationInfo::GetArchiveRelativePath(), ArchiveLocationInfo::GetIsDirRelativeToChasteTestOutput(), AbstractCardiacProblem< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::InitialiseWriter(), MakeFoldersAndReturnFullPath(), FileFinder::PrivateRemove(), and FileFinder::SetPath().

std::string OutputFileHandler::GetRelativePath ( ) const
Returns
the path to this output directory, relative to the Chaste root output folder.

Definition at line 241 of file OutputFileHandler.cpp.

References RelativeTo::ChasteTestOutput, FindFile(), and FileFinder::GetRelativePath().

std::string OutputFileHandler::MakeFoldersAndReturnFullPath ( const std::string &  rDirectory) const
private

Check that the desired output directory exists and is writable by us. Create it if needed. Return the full pathname of the output directory.

The environment variable CHASTE_TEST_OUTPUT will be examined. If it is set and non-empty it is taken to be a directory where test output should be stored. Otherwise the current directory is used.

Note
Contains a barrier, so must be called collectively.
Parameters
rDirectorypathname of the output directory, relative to where Chaste output will be stored (user shouldn't care about this).
Returns
full pathname to the output directory

Definition at line 185 of file OutputFileHandler.cpp.

References AddTrailingSlash(), PetscTools::AmMaster(), PetscTools::Barrier(), GetChasteTestOutputDirectory(), SIG_FILE_NAME, and TERMINATE.

Referenced by CommonConstructor().

out_stream OutputFileHandler::OpenOutputFile ( const std::string &  rFileName,
std::ios_base::openmode  mode = std::ios::out | std::ios::trunc 
) const

Open an output file in our directory, and check it was opened successfully. Throws an Exception if not.

Parameters
rFileNamethe name of the file to open, relative to the output directory.
modeoptionally, flags to use when opening the file (defaults are as for std::ofstream).
Returns
a managed pointer to the opened file stream.

Definition at line 252 of file OutputFileHandler.cpp.

References EXCEPTION, and mDirectory.

Referenced by AbstractConvergenceTester< CELL, CARDIAC_PROBLEM, DIM, PROBLEM_DIM >::Converge(), ColumnDataWriter::CreateFixedDimensionFile(), ColumnDataWriter::CreateInfoFile(), CellMLToSharedLibraryConverter::CreateOptionsFile(), CardiacSimulation::CreateResumeXmlFile(), CardiacElectroMechanicsProblem< DIM, ELEC_PROB_DIM >::DetermineWatchedNodes(), ColumnDataWriter::EndDefineMode(), ActivationOutputModifier::FinaliseAtEnd(), Hdf5ToTxtConverter< ELEMENT_DIM, SPACE_DIM >::Hdf5ToTxtConverter(), SingleTraceOutputModifier::InitialiseAtStart(), AbstractCellBasedWriter< ELEMENT_DIM, SPACE_DIM >::OpenOutputFile(), OpenOutputFile(), AbstractCellBasedWriter< ELEMENT_DIM, SPACE_DIM >::OpenOutputFileForAppend(), AbstractCellPopulation< ELEMENT_DIM, SPACE_DIM >::OpenWritersFiles(), AbstractCellBasedSimulation< ELEMENT_DIM, SPACE_DIM >::OutputSimulationSetup(), StreeterFibreGenerator< SPACE_DIM >::PreWriteCalculations(), ExecutableSupport::PrintError(), ProgressReporter::ProgressReporter(), LogFile::Set(), AbstractPdeModifier< DIM >::SetupSolve(), SimpleDataWriter::SimpleDataWriter(), AbstractCellBasedSimulation< ELEMENT_DIM, SPACE_DIM >::Solve(), LinearParabolicPdeSystemWithCoupledOdeSystemSolver< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::SolveAndWriteResultsToFile(), AbstractPerElementWriter< SPACE_DIM, SPACE_DIM, SPACE_DIM *SPACE_DIM >::WriteData(), PostProcessingWriter< ELEMENT_DIM, SPACE_DIM >::WriteGenericFileToMeshalyzer(), HeartGeometryInformation< SPACE_DIM >::WriteLayerForEachNode(), ExecutableSupport::WriteMachineInfoFile(), ExecutableSupport::WriteProvenanceInfoFile(), PseudoEcgCalculator< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::WritePseudoEcg(), and DiscreteSystemForceCalculator::WriteResultsToFile().

out_stream OutputFileHandler::OpenOutputFile ( const std::string &  rFileName,
unsigned  number,
const std::string &  rFileFormat,
std::ios_base::openmode  mode = std::ios::out | std::ios::trunc 
) const

This just calls the other OpenOutputFile after concatenating the first three arguments together to make the full filename. For example OpenOutputFile("results_", 3, ".dat") creates results_3.dat. See documentation for OpenOutputFile(std::string, std::ios_base::openmode).

Parameters
rFileNamethe root name of the file to open
numberthe number to append to the root name of the file
rFileFormatthe file format (extension)
modeoptionally, flags to use when opening the file (defaults are as for std::ofstream).
Returns
a managed pointer to the opened file stream.

Definition at line 263 of file OutputFileHandler.cpp.

References OpenOutputFile().

void OutputFileHandler::SetArchiveDirectory ( ) const

Member Data Documentation

const std::string OutputFileHandler::SIG_FILE_NAME
static

The name of the Chaste signature file added to folders we create.

Definition at line 165 of file OutputFileHandler.hpp.

Referenced by CommonConstructor(), MakeFoldersAndReturnFullPath(), and FileFinder::PrivateRemove().


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