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