26 _vertexWriter(nullptr),
28 _spacetreeIdWriter(nullptr),
29 _coreWriter(nullptr) {
38 static int counter = -1;
41 std::ostringstream snapshotFileName;
42 snapshotFileName << _filename <<
"-" << counter;
51 snapshotFileName.str(),
57 _vertexWriter = _writer->createVertexWriter();
58 _cellWriter = _writer->createCellWriter();
59 _spacetreeIdWriter = _writer->createCellDataWriter(
"tree-id", 1 );
60 _coreWriter = _writer->createCellDataWriter(
"core-number", 1 );
69 _vertexWriter->close();
71 _spacetreeIdWriter->close();
74 if (_spacetreeId>=0) {
75 _writer->writeToFile();
81 delete _spacetreeIdWriter;
85 _vertexWriter =
nullptr;
86 _cellWriter =
nullptr;
87 _spacetreeIdWriter =
nullptr;
88 _coreWriter =
nullptr;
103 bool plot =
event.getWillBeRefined()==0 and
event.getIsCellLocal();
116 vertexIndices[kScalar] = _vertexWriter->plotVertex(
125 cellIndex = _cellWriter->plotQuadrangle(vertexIndices);
127 cellIndex = _cellWriter->plotHexahedron(vertexIndices);
129 logError(
"enterCell(...)",
"supports only 2d and 3d" );
132 assertion( _spacetreeIdWriter!=
nullptr );
134 _spacetreeIdWriter->plotCell(cellIndex,_spacetreeId);
150 return std::vector< peano4::grid::GridControlEvent >();
#define logError(methodName, logMacroMessageStream)
Wrapper macro around tarch::tarch::logging::Log to improve logging.
#define dfor2(counter)
Shortcut For dfor(counter,2)
#define enddforx
I prefer to use this macro for dforx instead of a closing bracket as many syntax parser fail otherwis...
Observer which pipes the automaton transitions into a VTK file.
static tarch::logging::Log _log
virtual ~TraversalVTKPlotter()
virtual void loadCell(const GridTraversalEvent &event) override
virtual std::vector< GridControlEvent > getGridControlEvents() const override
Obviously empty for this particular observer.
TraversalVTKPlotter(const std::string &filename, int treeId=-1)
You have to invoke startNewSnapshot() if you wanna have a pvd file immediately after you've created t...
virtual TraversalObserver * clone(int spacetreeId) override
virtual void endTraversal(const tarch::la::Vector< Dimensions, double > &x, const tarch::la::Vector< Dimensions, double > &h) override
static tarch::mpi::BooleanSemaphore _sempahore
virtual void leaveCell(const GridTraversalEvent &event) override
virtual void beginTraversal(const tarch::la::Vector< Dimensions, double > &x, const tarch::la::Vector< Dimensions, double > &h) override
Begin the traversal.
virtual void storeCell(const GridTraversalEvent &event) override
virtual void enterCell(const GridTraversalEvent &event) override
Event is invoked per cell.
void plotCell(const GridTraversalEvent &event)
Does the actual plotting, i.e.
Boolean semaphore across MPI ranks.
Create a lock around a boolean semaphore region.
static Rank & getInstance()
This operation returns the singleton instance.
int getRank() const
Return rank of this node.
static Core & getInstance()
@ NoIndexFile
Don't use a meta data file.
Matrix< Rows, Cols, Scalar > multiplyComponents(const Matrix< Rows, X, Scalar > &lhs, const Matrix< X, Cols, Scalar > &rhs)
tarch::la::Vector< Dimensions, double > getH() const
tarch::la::Vector< Dimensions, double > getX() const