#ifndef VTKWRITER_H #define VTKWRITER_H #include #include "node.h" #include "edge.h" #include "face.h" #include "tetra.h" #include "../dgtd-performance.hpp" class vtkUnstructuredGrid; const int EMOFFICE_TO_VTK_TRI2_NODES[6] = {0, 1, 2, 3, 5, 4}; const int EMOFFICE_TO_VTK_TET2_NODES[10] = {0, 1, 2, 3, 4, 6, 7, 5, 8, 9}; class VtkWriter { public: VtkWriter(fp_t unit = 1.); ~VtkWriter(); void writeMesh(char* outFilePrefix, const int nodeNum, node** nodeArray, const int tetNum, tetra** tetArray); void writeMesh(char* outFilePrefix, const int nodeNum, node* nodeArray, const int tetNum, tetra* tetArray); void writeField(char* outFilePrefix, const int nodeNum, node* nodeArray, const int tetNum, tetra* tetArray, vtr* eField, vtr* hField, int* polyOrder = 0, int* LTS_Flag = 0, int* Ghost_Flag = 0); void InteractiveFieldViz(char* outFilePrefix, const int nodeNum, node* nodeArray, const int tetNum, tetra* tetArray, vtr* eField, vtr* hField, int* polyOrder, int* LTS_Flag, int* Ghost_Flag); // write surface mesh with E and H fields void writeTriUg(char* outFilePrefix, const int nodeNum, node** nodeArray, const int faceNum, face** faceArray, vtr* eField = 0, vtr* hField = 0, int order = 2); void writeTriUg(char* outFilePrefix, const int nodeNum, node** nodeArray, const int faceNum, face** faceArray, int order); // write point mesh with E and H fields void writePointUg(char* outFilePrefix, const int nodeNum, node** nodeArray, vtr* eField = 0, vtr* hField = 0); void addCells(vtkUnstructuredGrid* mesh, const int faceNum, face** faceList, int order); // 2D Plot // void Plot_XY(int Xdim, int Ydim, fp_t* Xdata, fp_t* Ydata); private: fp_t unit_; void addNodes(vtkUnstructuredGrid* mesh, const int nodeNum, node* nodeList); void addNodes(vtkUnstructuredGrid* mesh, const int nodeNum, node** nodeList); void addCells(vtkUnstructuredGrid* mesh, const int tetNum, tetra* tetArray); void addCells(vtkUnstructuredGrid* mesh, const int tetNum, tetra** tetArray); void addCells(vtkUnstructuredGrid* mesh, list& tetList); void addCells(vtkUnstructuredGrid* mesh, const int faceNum, face* faceList); // point mesh void addCells(vtkUnstructuredGrid* mesh, const unsigned int nodeNum); void addPointVector(vtkUnstructuredGrid* mesh, const unsigned int pointNum, vtr* data, const string& dataName); void addPointScalars(vtkUnstructuredGrid* mesh, const unsigned int pointNum, vtr* data, const string& dataName); void addCellScalar(vtkUnstructuredGrid* mesh, const int cellNum, int* data, const string& dataName); void addCellMaterial(vtkUnstructuredGrid* mesh, const int tetraNum, tetra* tetraList); void addCellMaterial(vtkUnstructuredGrid* mesh, const int tetraNum, tetra** tetraList); void addCellMaterial(vtkUnstructuredGrid* mesh, list& tetList); void addCellOrder(vtkUnstructuredGrid* mesh, const int tetraNum, tetra* tetraList); void addCellOrder(vtkUnstructuredGrid* mesh, const int tetraNum, tetra** tetraList); void addCellOrder(vtkUnstructuredGrid* mesh, list& tetList); }; #endif