VertexMeshWriter.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 #ifndef VERTEXMESHWRITER_HPP_
00036 #define VERTEXMESHWRITER_HPP_
00037
00038
00039 template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
00040 class VertexMesh;
00041
00042 #ifdef CHASTE_VTK
00043
00044 #define _BACKWARD_BACKWARD_WARNING_H 1 //Cut out the strstream deprecated warning for now (gcc4.3)
00045 #include <vtkDoubleArray.h>
00046 #include <vtkCellData.h>
00047 #include <vtkPointData.h>
00048 #include <vtkConvexPointSet.h>
00049 #include <vtkPolygon.h>
00050 #include <vtkUnstructuredGrid.h>
00051 #include <vtkUnstructuredGridWriter.h>
00052 #include <vtkXMLUnstructuredGridWriter.h>
00053 #include <vtkDataCompressor.h>
00054 #endif //CHASTE_VTK
00055
00056 #include "VertexMesh.hpp"
00057 #include "AbstractMeshWriter.hpp"
00058 #include "NodeMap.hpp"
00059
00060
00061 template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
00062 class VertexMesh;
00063
00064 template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
00065 struct MeshWriterIterators;
00066
00070 template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
00071 class VertexMeshWriter : public AbstractMeshWriter<ELEMENT_DIM, SPACE_DIM>
00072 {
00073 private:
00078 VertexMesh<ELEMENT_DIM,SPACE_DIM>* mpMesh;
00079
00081 MeshWriterIterators<ELEMENT_DIM,SPACE_DIM>* mpIters;
00082
00084 NodeMap* mpNodeMap;
00086 unsigned mNodeMapCurrentIndex;
00087
00088 #ifdef CHASTE_VTK
00089
00091 vtkUnstructuredGrid* mpVtkUnstructedMesh;
00092 #endif //CHASTE_VTK
00093
00094 public:
00095
00103 VertexMeshWriter(const std::string& rDirectory,
00104 const std::string& rBaseName,
00105 const bool clearOutputDir=true);
00106
00110 ~VertexMeshWriter();
00111
00113
00118 void WriteFilesUsingMesh(VertexMesh<ELEMENT_DIM, SPACE_DIM>& rMesh);
00119
00126 void WriteVtkUsingMesh(VertexMesh<ELEMENT_DIM, SPACE_DIM>& rMesh, std::string stamp="");
00127
00134 void MakeVtkMesh(VertexMesh<ELEMENT_DIM, SPACE_DIM>& rMesh);
00135
00142 void AddCellData(std::string dataName, std::vector<double> dataPayload);
00143
00150 void AddPointData(std::string dataName, std::vector<double> dataPayload);
00151
00155 std::vector<double> GetNextNode();
00156
00160 ElementData GetNextElement();
00161
00166 VertexElementData GetNextElementWithFaces();
00167
00172 void WriteFiles();
00173 };
00174
00175 #endif