1 
2 #define VTKWRAPPER_CPP
3 #include "vtkwrapper.h"
4 #include <vtkCellArray.h>
5 #include <vtkDoubleArray.h>
6 #include <vtkIntArray.h>
7 #include <vtkSmartPointer.h>
8 #include <vtkXMLUnstructuredGridWriter.h>
9 
10 #include <vtkPointData.h>
11 #include <vtkPoints.h>
12 
13 #include <vtkSphereSource.h>
14 
15 #include <sstream>
16 
17 vtkRenderer* renderer;
18 vtkRenderWindow* render_window;
19 vtkRenderWindowInteractor* render_window_interator;
20 
21 vtkUnstructuredGrid*
vtkCreateMolGrid()22 vtkCreateMolGrid()
23 {
24     vtkUnstructuredGrid* grid = vtkUnstructuredGrid::New();
25     vtkSmartPointer<vtkPoints> newPts = vtkSmartPointer<vtkPoints>::New();
26     vtkSmartPointer<vtkCellArray> cells = vtkSmartPointer<vtkCellArray>::New();
27 
28     vtkSmartPointer<vtkIntArray> newInt;
29 
30     newInt = vtkSmartPointer<vtkIntArray>::New();
31     newInt->SetName("id");
32     grid->GetPointData()->AddArray(newInt);
33 
34     newInt = vtkSmartPointer<vtkIntArray>::New();
35     newInt->SetName("species");
36     grid->GetPointData()->AddArray(newInt);
37 
38     grid->SetPoints(newPts);
39     grid->SetCells(1, cells);
40 
41     return grid;
42 }
43 
44 void
vtkAddPoint(vtkUnstructuredGrid * grid,double x,double y,double z,long int serno,int species)45 vtkAddPoint(vtkUnstructuredGrid* grid,
46             double x,
47             double y,
48             double z,
49             long int serno,
50             int species)
51 {
52 
53     const int i = grid->GetPoints()->InsertNextPoint(x, y, z);
54     grid->GetCells()->InsertNextCell(1);
55     grid->GetCells()->InsertCellPoint(i);
56     grid->GetCellTypesArray()->InsertNextTuple1(1);
57     int serno_int = int(serno);
58     vtkIntArray::SafeDownCast(grid->GetPointData()->GetArray(0))
59       ->InsertNextTupleValue(&serno_int);
60     vtkIntArray::SafeDownCast(grid->GetPointData()->GetArray(1))
61       ->InsertNextTupleValue(&species);
62 }
63 
64 void
vtkWriteGrid(const char * nm,const char * type,int timestep,vtkUnstructuredGrid * grid)65 vtkWriteGrid(const char* nm,
66              const char* type,
67              int timestep,
68              vtkUnstructuredGrid* grid)
69 {
70 
71     vtkSmartPointer<vtkXMLUnstructuredGridWriter> writer =
72       vtkSmartPointer<vtkXMLUnstructuredGridWriter>::New();
73 
74 #if VTK_MAJOR_VERSION > 5
75     writer->SetInputData(grid);
76 #else
77     writer->SetInput(grid);
78 #endif
79 
80     writer->SetDataModeToBinary();
81 
82     char buffer[100];
83     sprintf(buffer, "%s%s%05d.vtu", nm, type, timestep);
84 
85     writer->SetFileName(buffer);
86     writer->Write();
87 }
88 
89 void
vtkDeleteGrid(vtkUnstructuredGrid * grid)90 vtkDeleteGrid(vtkUnstructuredGrid* grid)
91 {
92     grid->Delete();
93 }
94 
95 /*
96 extern vtkGlyph3D* vtkCreateParticleGlyphs(vtkRenderer* renderer) {
97     vtkGlyph3D* glyph = vtkGlyph3D::New();
98     vtkSphereSource *sphere = vtkSphereSource::New();;
99     glyph->SetSourceConnection(sphere->GetOutputPort());
100     glyph->SetScaleModeToScaleByScalar();
101     glyph->SetColorModeToColorByScale();
102     return glyph;
103 }
104 
105 extern void vtkUpdateParticleGlyphs(vtkUnstructuredGrid* grid,
106         vtkGlyph3D* glyph) {
107     glyph->SetInput(grid);
108 }
109 
110 extern void vtkCreateRenderWindow() {
111     renderer = vtkRenderer::New();
112     render_window = vtkRenderWindow::New();
113     render_window->AddRenderer(renderer);
114     render_window_interator = vtkRenderWindowInteractor::New();
115     render_window_interator->SetRenderWindow(render_window);
116 }
117 
118 
119 extern void vtkRender() {
120 }
121 */
122 
123