| 27 | #include <iostream> |
| 28 | |
| 29 | int SLACParticleReader(int argc, char* argv[]) |
| 30 | { |
| 31 | char* directoryName = vtkTestUtilities::ExpandDataFileName(argc, argv, "Data/SLAC/pic-example/"); |
| 32 | const std::string directory = directoryName; |
| 33 | delete[] directoryName; |
| 34 | const std::string meshFileName = directory + "mesh.ncdf"; |
| 35 | const std::string particleFileName = directory + "particles_5.ncdf"; |
| 36 | |
| 37 | // Set up mesh reader. |
| 38 | VTK_CREATE(vtkSLACReader, meshReader); |
| 39 | meshReader->SetMeshFileName(meshFileName.c_str()); |
| 40 | |
| 41 | for (int i = 0; i < 9; i++) |
| 42 | { |
| 43 | auto modeFileName = vtk::format("{:s}fields_{:d}.mod", directory, i); |
| 44 | meshReader->AddModeFileName(modeFileName.c_str()); |
| 45 | } |
| 46 | |
| 47 | meshReader->ReadInternalVolumeOn(); |
| 48 | meshReader->ReadExternalSurfaceOff(); |
| 49 | meshReader->ReadMidpointsOff(); |
| 50 | |
| 51 | // Extract geometry that we can render. |
| 52 | VTK_CREATE(vtkCompositeDataGeometryFilter, geometry); |
| 53 | geometry->SetInputConnection(meshReader->GetOutputPort(vtkSLACReader::VOLUME_OUTPUT)); |
| 54 | |
| 55 | // Set up particle reader. |
| 56 | VTK_CREATE(vtkSLACParticleReader, particleReader); |
| 57 | particleReader->SetFileName(particleFileName.c_str()); |
| 58 | |
| 59 | // Set up rendering stuff. |
| 60 | VTK_CREATE(vtkPolyDataMapper, meshMapper); |
| 61 | meshMapper->SetInputConnection(geometry->GetOutputPort()); |
| 62 | meshMapper->SetScalarModeToUsePointFieldData(); |
| 63 | meshMapper->ColorByArrayComponent("efield", 2); |
| 64 | meshMapper->UseLookupTableScalarRangeOff(); |
| 65 | meshMapper->SetScalarRange(1.0, 1e+05); |
| 66 | |
| 67 | VTK_CREATE(vtkLookupTable, lut); |
| 68 | lut->SetHueRange(0.66667, 0.0); |
| 69 | lut->SetScaleToLog10(); |
| 70 | meshMapper->SetLookupTable(lut); |
| 71 | |
| 72 | VTK_CREATE(vtkActor, meshActor); |
| 73 | meshActor->SetMapper(meshMapper); |
| 74 | meshActor->GetProperty()->FrontfaceCullingOn(); |
| 75 | |
| 76 | VTK_CREATE(vtkPolyDataMapper, particleMapper); |
| 77 | particleMapper->SetInputConnection(particleReader->GetOutputPort()); |
| 78 | particleMapper->ScalarVisibilityOff(); |
| 79 | |
| 80 | VTK_CREATE(vtkActor, particleActor); |
| 81 | particleActor->SetMapper(particleMapper); |
| 82 | |
| 83 | VTK_CREATE(vtkRenderer, renderer); |
| 84 | renderer->AddActor(meshActor); |
| 85 | renderer->AddActor(particleActor); |
| 86 | vtkCamera* camera = renderer->GetActiveCamera(); |
nothing calls this directly
no test coverage detected