#include <FibreReader.hpp>
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 |
bool | mFileIsBinary |
unsigned | mNumItemsPerLine |
std::vector< double > | mTokens |
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.
FibreReader< DIM >::FibreReader | ( | FileFinder & | rFileFinder, | |
FibreFileType | fibreFileType | |||
) | [inline] |
Create a new FibreReader.
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().
FibreReader< DIM >::~FibreReader | ( | ) | [inline] |
Destructor closes file.
Definition at line 60 of file FibreReader.cpp.
References FibreReader< DIM >::mDataFile.
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...)
direction | an empty vector which will be filled with data from file |
Definition at line 66 of file FibreReader.cpp.
References EXCEPTION, FibreReader< DIM >::GetNextFibreVector(), FibreReader< DIM >::mNumItemsPerLine, and FibreReader< DIM >::mNumLinesOfData.
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...)
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 82 of file FibreReader.cpp.
References EXCEPTION, FibreReader< DIM >::GetNextFibreSheetAndNormalMatrix(), FibreReader< DIM >::mNumItemsPerLine, and FibreReader< DIM >::mNumLinesOfData.
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 ]
rFibreMatrix | matrix to be filled in | |
checkOrthogonality | if true, checks if the matrix is orthogonal and throws an exception if not |
Definition at line 116 of file FibreReader.cpp.
References EXCEPTION, FibreReader< DIM >::GetTokensAtNextLine(), FibreReader< DIM >::mDataFile, FibreReader< DIM >::mFileIsBinary, FibreReader< DIM >::mFilePath, FibreReader< DIM >::mNumItemsPerLine, and FibreReader< DIM >::mTokens.
Referenced by FibreReader< DIM >::GetAllOrtho(), and AbstractCardiacMechanicsSolver< ELASTICITY_SOLVER, DIM >::SetVariableFibreSheetDirections().
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
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 174 of file FibreReader.cpp.
References EXCEPTION, FibreReader< DIM >::GetTokensAtNextLine(), FibreReader< DIM >::mDataFile, FibreReader< DIM >::mFileIsBinary, FibreReader< DIM >::mFilePath, FibreReader< DIM >::mNumItemsPerLine, and FibreReader< DIM >::mTokens.
Referenced by FibreReader< DIM >::GetAllAxi().
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 139 of file FibreReader.hpp.
References FibreReader< DIM >::mNumLinesOfData.
Referenced by AbstractCardiacMechanicsSolver< ELASTICITY_SOLVER, DIM >::SetVariableFibreSheetDirections().
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.
Definition at line 211 of file FibreReader.cpp.
References EXCEPTION, FibreReader< DIM >::mDataFile, FibreReader< DIM >::mFilePath, FibreReader< DIM >::mNumItemsPerLine, and FibreReader< DIM >::mTokens.
Referenced by FibreReader< DIM >::GetNextFibreSheetAndNormalMatrix(), and FibreReader< DIM >::GetNextFibreVector().
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 268 of file FibreReader.cpp.
References EXCEPTION, FibreReader< DIM >::mDataFile, FibreReader< DIM >::mFileIsBinary, and FibreReader< DIM >::mNumLinesOfData.
Referenced by FibreReader< DIM >::FibreReader().
std::ifstream FibreReader< DIM >::mDataFile [private] |
File stream to use for GetTokensAtNextLine
Definition at line 58 of file FibreReader.hpp.
Referenced by FibreReader< DIM >::FibreReader(), FibreReader< DIM >::GetNextFibreSheetAndNormalMatrix(), FibreReader< DIM >::GetNextFibreVector(), FibreReader< DIM >::GetTokensAtNextLine(), FibreReader< DIM >::ReadNumLinesOfDataFromFile(), and FibreReader< DIM >::~FibreReader().
bool FibreReader< DIM >::mFileIsBinary [private] |
Whether the data file has binary entries
Definition at line 66 of file FibreReader.hpp.
Referenced by FibreReader< DIM >::GetNextFibreSheetAndNormalMatrix(), FibreReader< DIM >::GetNextFibreVector(), and FibreReader< DIM >::ReadNumLinesOfDataFromFile().
std::string FibreReader< DIM >::mFilePath [private] |
Absolute path of the file being read
Definition at line 61 of file FibreReader.hpp.
Referenced by FibreReader< DIM >::FibreReader(), FibreReader< DIM >::GetNextFibreSheetAndNormalMatrix(), FibreReader< DIM >::GetNextFibreVector(), and FibreReader< DIM >::GetTokensAtNextLine().
unsigned FibreReader< DIM >::mNumItemsPerLine [private] |
How many items we expect to find per line: DIM for axisymmetric, DIM*DIM for orthotropic
Definition at line 69 of file FibreReader.hpp.
Referenced by FibreReader< DIM >::FibreReader(), FibreReader< DIM >::GetAllAxi(), FibreReader< DIM >::GetAllOrtho(), FibreReader< DIM >::GetNextFibreSheetAndNormalMatrix(), FibreReader< DIM >::GetNextFibreVector(), and FibreReader< DIM >::GetTokensAtNextLine().
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().
std::vector<double> FibreReader< DIM >::mTokens [private] |
Vector which entries read from a line in a file is put into.
Definition at line 72 of file FibreReader.hpp.
Referenced by FibreReader< DIM >::FibreReader(), FibreReader< DIM >::GetNextFibreSheetAndNormalMatrix(), FibreReader< DIM >::GetNextFibreVector(), and FibreReader< DIM >::GetTokensAtNextLine().