1 #include "MyObserver.h"
3 #include "peano4/grid/GridControlEvent.h"
4 #include "peano4/parallel/Node.h"
6 #include "tarch/logging/LogFilter.h"
10 int examples::grid::MyObserver::_iterationCounter(0);
13 examples::grid::MyObserver::MyObserver(
int spacetreeId,
int counter)
15 : TraversalVTKPlotter(
"grid-construction", spacetreeId )
24 examples::grid::MyObserver::~MyObserver() {
28 void examples::grid::MyObserver::beginTraversal(
29 const tarch::la::Vector<DIMENSIONS,double>&
x,
30 const tarch::la::Vector<DIMENSIONS,double>&
h
33 TraversalVTKPlotter::beginTraversal(
x,
h);
38 void examples::grid::MyObserver::endTraversal(
39 const tarch::la::Vector<DIMENSIONS,double>&
x,
40 const tarch::la::Vector<DIMENSIONS,double>&
h
43 TraversalVTKPlotter::endTraversal(
x,
h);
48 void examples::grid::MyObserver::enterCell(
49 const peano4::grid::GridTraversalEvent& event
52 TraversalVTKPlotter::enterCell(event);
57 void examples::grid::MyObserver::leaveCell(
58 const peano4::grid::GridTraversalEvent& event
61 TraversalVTKPlotter::leaveCell(event);
66 peano4::grid::TraversalObserver* examples::grid::MyObserver::clone(
int spacetreeId) {
70 if (_spacetreeId!=-1) {
71 assertionMsg(
false,
"clone() should not be called for particular spacetree plotter" );
74 updateMetaFile(spacetreeId);
79 return new MyObserver( spacetreeId, _iterationCounter );
84 std::vector< peano4::grid::GridControlEvent > examples::grid::MyObserver::getGridControlEvents() {
85 std::vector< peano4::grid::GridControlEvent > controlEvents;
87 if (_iterationCounter<GridRefinementIterations) {
88 peano4::grid::GridControlEvent newEvent;
89 newEvent.setRefinementControl( peano4::grid::GridControlEvent::RefinementControl::Refine );
91 newEvent.setOffset( {0.0,0.0} );
92 newEvent.setWidth( {0.5,0.5} );
93 newEvent.setH( {0.02,0.02} );
95 newEvent.setOffset( {0.0,0.0,0.0} );
96 newEvent.setWidth( {0.5,0.5,0.5} );
97 newEvent.setH( {0.02,0.02,0.02} );
99 controlEvents.push_back(newEvent);
102 if (_iterationCounter>GridRefinementIterations + StationaryIterations) {
103 peano4::grid::GridControlEvent newEvent;
104 newEvent.setRefinementControl( peano4::grid::GridControlEvent::RefinementControl::Erase );
106 newEvent.setOffset( {0.01,0.01} );
107 newEvent.setWidth( {0.99,0.99} );
108 newEvent.setH( {0.4,0.4} );
110 newEvent.setOffset( {0.01,0.01,0.01} );
111 newEvent.setWidth( {0.99,0.99,0.99} );
112 newEvent.setH( {0.4,0.4,0.4} );
114 controlEvents.push_back(newEvent);
117 return controlEvents;