PostProcessingWriter.hpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 #ifndef POSTPROCESSINGWRITER_HPP_
00037 #define POSTPROCESSINGWRITER_HPP_
00038
00039
00040 #include "Hdf5DataReader.hpp"
00041 #include "PropagationPropertiesCalculator.hpp"
00042 #include "AbstractTetrahedralMesh.hpp"
00043 #include <string>
00044
00056 template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
00057 class PostProcessingWriter
00058 {
00059 friend class TestPostProcessingWriter;
00060
00061 private:
00062 FileFinder mDirectory;
00063 std::string mHdf5File;
00064 std::string mVoltageName;
00066 Hdf5DataReader* mpDataReader;
00067 PropagationPropertiesCalculator* mpCalculator;
00068 unsigned mLo;
00069 unsigned mHi;
00070 AbstractTetrahedralMesh<ELEMENT_DIM,SPACE_DIM>& mrMesh;
00072 public:
00082 PostProcessingWriter(AbstractTetrahedralMesh<ELEMENT_DIM, SPACE_DIM>& rMesh,
00083 const FileFinder& rDirectory,
00084 std::string hdf5File,
00085 std::string voltageName = "V");
00086
00091 void WritePostProcessingFiles();
00092
00096 ~PostProcessingWriter();
00097
00113 void WriteAboveThresholdDepolarisationFile(double threshold);
00114
00115 private:
00116
00142 void WriteVariablesOverTimeAtNodes(std::vector<unsigned>& rNodeIndices);
00143
00156 void WriteApdMapFile(double repolarisationPercentage, double threshold);
00157
00158
00170 void WriteUpstrokeTimeMap(double threshold);
00171
00183 void WriteMaxUpstrokeVelocityMap(double threshold);
00184
00197 void WriteConductionVelocityMap(unsigned originNode, std::vector<double> distancesFromOriginNode);
00198
00208 void WriteGenericFileToMeshalyzer(std::vector<std::vector<double> >& rDataPayload, const std::string& rFolder, const std::string& rFileName);
00209
00219 void WriteOutputDataToHdf5(const std::vector<std::vector<double> >& rDataPayload,
00220 const std::string& rDatasetName,
00221 const std::string& rDatasetUnit,
00222 const std::string& rUnlimitedVariableName = "PaceNumber",
00223 const std::string& rUnlimitedVariableUnit = "dimensionless");
00224
00237 std::string ConvertToHdf5FriendlyString(double threshold);
00238
00239 };
00240
00241 #endif