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 #ifndef POSTPROCESSINGWRITER_HPP_
00030 #define POSTPROCESSINGWRITER_HPP_
00031
00032
00033 #include "Hdf5DataReader.hpp"
00034 #include "PropagationPropertiesCalculator.hpp"
00035 #include "AbstractTetrahedralMesh.hpp"
00036 #include <string>
00037
00046 template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
00047 class PostProcessingWriter
00048 {
00049 friend class TestPostProcessingWriter;
00050
00051 private:
00052 std::string mDirectory;
00053 std::string mHdf5File;
00054 bool mMakeAbsolute;
00055 std::string mVoltageName;
00057 Hdf5DataReader* mpDataReader;
00058 PropagationPropertiesCalculator* mpCalculator;
00059 unsigned mLo;
00060 unsigned mHi;
00061 AbstractTetrahedralMesh<ELEMENT_DIM,SPACE_DIM>& mrMesh;
00063 public:
00074 PostProcessingWriter(AbstractTetrahedralMesh<ELEMENT_DIM, SPACE_DIM>& rMesh, std::string directory, std::string hdf5File, bool makeAbsolute, std::string voltageName = "V");
00075
00080 void WritePostProcessingFiles();
00081
00085 ~PostProcessingWriter();
00086
00102 void WriteAboveThresholdDepolarisationFile(double threshold);
00103
00104 private:
00105
00131 void WriteVariablesOverTimeAtNodes(std::vector<unsigned>& rNodeIndices);
00132
00145 void WriteApdMapFile(double repolarisationPercentage, double threshold);
00146
00147
00159 void WriteUpstrokeTimeMap(double threshold);
00160
00172 void WriteMaxUpstrokeVelocityMap(double threshold);
00173
00186 void WriteConductionVelocityMap(unsigned originNode, std::vector<double> distancesFromOriginNode);
00195 void WriteGenericFile(std::vector<std::vector<double> >& rDataPayload, std::string fileName);
00196
00197 };
00198
00199 #endif