FibreReader< DIM > Class Template Reference

#include <FibreReader.hpp>

Collaboration diagram for FibreReader< DIM >:

Collaboration graph
[legend]

List of all members.

Public Member Functions

 FibreReader (FileFinder &rFileFinder, FibreFileType fibreFileType)
 ~FibreReader ()
void GetNextFibreSheetAndNormalMatrix (c_matrix< double, DIM, DIM > &rFibreMatrix, bool checkOrthogonality=true)
void GetNextFibreVector (c_vector< double, DIM > &rFibreVector, bool checkNormalised=true)
unsigned GetNumLinesOfData ()
void GetAllAxi (std::vector< c_vector< double, DIM > > &direction)
void GetAllOrtho (std::vector< c_vector< double, DIM > > &first_direction, std::vector< c_vector< double, DIM > > &second_direction, std::vector< c_vector< double, DIM > > &third_direction)

Private Member Functions

unsigned GetTokensAtNextLine ()
void ReadNumLinesOfDataFromFile ()

Private Attributes

std::ifstream mDataFile
std::string mFilePath
unsigned mNumLinesOfData
unsigned mNumItemsPerLine
std::vector< double > mTokens


Detailed Description

template<unsigned DIM>
class FibreReader< DIM >

A class for reading .axi files (files which define the fibre direction for each element) and .ortho files (files which define the fibre, sheet and normal directions for each element.

Definition at line 54 of file FibreReader.hpp.


Constructor & Destructor Documentation

template<unsigned DIM>
FibreReader< DIM >::FibreReader ( FileFinder rFileFinder,
FibreFileType  fibreFileType 
) [inline]

Create a new FibreReader.

Parameters:
rFileFinder the path to the fibre direction file
fibreFileType AXISYM or ORTHO depending on type of file to be read

Definition at line 35 of file FibreReader.cpp.

References EXCEPTION, FileFinder::GetAbsolutePath(), FibreReader< DIM >::mDataFile, FibreReader< DIM >::mFilePath, FibreReader< DIM >::mNumItemsPerLine, FibreReader< DIM >::mTokens, and FibreReader< DIM >::ReadNumLinesOfDataFromFile().

template<unsigned DIM>
FibreReader< DIM >::~FibreReader (  )  [inline]

Destructor closes file.

Definition at line 59 of file FibreReader.cpp.

References FibreReader< DIM >::mDataFile.


Member Function Documentation

template<unsigned DIM>
unsigned FibreReader< DIM >::GetTokensAtNextLine (  )  [inline, private]

Read a line of numbers from mDataFile. Sets up the member variable mTokens with the data in the next line.

Returns:
the number of data entries put into mTokens

Definition at line 194 of file FibreReader.cpp.

References EXCEPTION, FibreReader< DIM >::mDataFile, FibreReader< DIM >::mFilePath, FibreReader< DIM >::mNumItemsPerLine, and FibreReader< DIM >::mTokens.

Referenced by FibreReader< DIM >::GetNextFibreSheetAndNormalMatrix(), FibreReader< DIM >::GetNextFibreVector(), and FibreReader< DIM >::ReadNumLinesOfDataFromFile().

template<unsigned DIM>
void FibreReader< DIM >::ReadNumLinesOfDataFromFile (  )  [inline, private]

Read number of elements from mDataFile. Note: Must be called before GetTokensAtNextLine (it assumes that it's reading the first line).

Definition at line 251 of file FibreReader.cpp.

References EXCEPTION, FibreReader< DIM >::GetTokensAtNextLine(), FibreReader< DIM >::mDataFile, FibreReader< DIM >::mNumLinesOfData, and FibreReader< DIM >::mTokens.

Referenced by FibreReader< DIM >::FibreReader().

template<unsigned DIM>
void FibreReader< DIM >::GetNextFibreSheetAndNormalMatrix ( c_matrix< double, DIM, DIM > &  rFibreMatrix,
bool  checkOrthogonality = true 
) [inline]

Read the next fibre direction matrix from the file. Must only be used when reading an orthotropic file. These have lines of the form

  fibre0 fibre1 fibre2 sheet0 sheet1 sheet2 normal0 normal1 normal2
which are converted to the matrix
     [ fibre0   sheet0   normal0  ]
     [ fibre1   sheet1   normal1  ]
     [ fibre2   sheet2   normal2  ]

Parameters:
rFibreMatrix matrix to be filled in
checkOrthogonality if true, checks if the matrix is orthogonal and throws an exception if not

Definition at line 112 of file FibreReader.cpp.

References EXCEPTION, FibreReader< DIM >::GetTokensAtNextLine(), FibreReader< DIM >::mFilePath, FibreReader< DIM >::mNumItemsPerLine, and FibreReader< DIM >::mTokens.

Referenced by FibreReader< DIM >::GetAllOrtho(), and AbstractCardiacMechanicsSolver< DIM >::SetVariableFibreSheetDirections().

template<unsigned DIM>
void FibreReader< DIM >::GetNextFibreVector ( c_vector< double, DIM > &  rFibreVector,
bool  checkNormalised = true 
) [inline]

Read the next fibre direction vector from the file. Must only be used when reading an axisymmetric file. These have lines of the form

  fibre0 fibre1 fibre2

Parameters:
rFibreVector vector to be filled in
checkNormalised if true, checks if the read vector is normalised and throws an exception if not

Definition at line 161 of file FibreReader.cpp.

References EXCEPTION, FibreReader< DIM >::GetTokensAtNextLine(), FibreReader< DIM >::mFilePath, FibreReader< DIM >::mNumItemsPerLine, and FibreReader< DIM >::mTokens.

Referenced by FibreReader< DIM >::GetAllAxi().

template<unsigned DIM>
unsigned FibreReader< DIM >::GetNumLinesOfData (  )  [inline]

Get the number of lines of data in the file - this is the value read from the first line.

Definition at line 137 of file FibreReader.hpp.

References FibreReader< DIM >::mNumLinesOfData.

Referenced by AbstractCardiacMechanicsSolver< DIM >::SetVariableFibreSheetDirections().

template<unsigned DIM>
void FibreReader< DIM >::GetAllAxi ( std::vector< c_vector< double, DIM > > &  direction  )  [inline]

Get every line of a fibre file (axi-symmetric) in vector of vectors format. This is useful for adding to a visualizer. (Do not use with GetNext...)

Parameters:
direction an empty vector which will be filled with data from file

Definition at line 65 of file FibreReader.cpp.

References EXCEPTION, FibreReader< DIM >::GetNextFibreVector(), FibreReader< DIM >::mNumItemsPerLine, and FibreReader< DIM >::mNumLinesOfData.

template<unsigned DIM>
void FibreReader< DIM >::GetAllOrtho ( std::vector< c_vector< double, DIM > > &  first_direction,
std::vector< c_vector< double, DIM > > &  second_direction,
std::vector< c_vector< double, DIM > > &  third_direction 
) [inline]

Get every line of a fibre file (orthotropic) in vector of vectors format. This is useful for adding to a visualizer. (Do not use with GetNext...)

Parameters:
first_direction an empty vector which will be filled with data from file
second_direction an empty vector which will be filled with data from file
third_direction an empty vector which will be filled with data from file (or will remain empty in 2D)

Definition at line 81 of file FibreReader.cpp.

References EXCEPTION, FibreReader< DIM >::GetNextFibreSheetAndNormalMatrix(), FibreReader< DIM >::mNumItemsPerLine, and FibreReader< DIM >::mNumLinesOfData.


Member Data Documentation

template<unsigned DIM>
std::ifstream FibreReader< DIM >::mDataFile [private]

template<unsigned DIM>
std::string FibreReader< DIM >::mFilePath [private]

template<unsigned DIM>
unsigned FibreReader< DIM >::mNumLinesOfData [private]

Number of lines of data in the file, read from the first line of the file

Definition at line 64 of file FibreReader.hpp.

Referenced by FibreReader< DIM >::GetAllAxi(), FibreReader< DIM >::GetAllOrtho(), FibreReader< DIM >::GetNumLinesOfData(), and FibreReader< DIM >::ReadNumLinesOfDataFromFile().

template<unsigned DIM>
unsigned FibreReader< DIM >::mNumItemsPerLine [private]

template<unsigned DIM>
std::vector<double> FibreReader< DIM >::mTokens [private]


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

Generated on Mon Apr 18 11:37:06 2011 for Chaste by  doxygen 1.5.5