Peano
Loading...
Searching...
No Matches
Observer.template.h
Go to the documentation of this file.
1#pragma once
2
3#include "tarch/la/Vector.h"
8
9#include "repositories/DataRepository.h"
10
11{{INCLUDES}}
12
13{% for item in NAMESPACE -%}
14 namespace {{ item }} {
15
16{%- endfor %}
17 class {{CLASSNAME}};
18{% for item in NAMESPACE -%}
19 }
20{%- endfor %}
21
22class {{NAMESPACE | join("::")}}::{{CLASSNAME}}: public peano4::grid::TraversalObserver {
23 public:
28
29 const int _spacetreeId;
30
31{{ATTRIBUTES}}
32
33 public:
39 static constexpr int SpacetreePrototype = -1;
40
46 {{CLASSNAME}}(int spacetreeId = SpacetreePrototype);
47
48 virtual void loadCell(
50 ) override;
51
52 virtual void enterCell(
54 ) override;
55
56 virtual void leaveCell(
58 ) override;
59
60 virtual void storeCell(
62 ) override;
63
64 virtual bool canSkipFullyRemoteCells() const override { return true; }
65
66 virtual TraversalObserver* clone(int spacetreeId) override;
67
68 virtual std::vector< peano4::grid::GridControlEvent > createGridControlEventsForNextTraversal() const override;
69
92 static void prepareTraversal();
93
97 static void unprepareTraversal();
98
99 virtual void beginTraversal(
102 ) override;
103
104 virtual void endTraversal(
107 ) override;
108
109 virtual void exchangeAllVerticalDataExchangeStacks( int masterId ) override;
110 virtual void exchangeAllHorizontalDataExchangeStacks( bool symmetricDataCardinality ) override;
111 virtual void exchangeAllPeriodicBoundaryDataStacks() override;
112
113 virtual void streamDataFromSplittingTreeToNewTree( int newWorker ) override;
114 virtual void streamDataFromJoiningTreeToMasterTree( int masterId ) override;
115
116 virtual void finishAllOutstandingSendsAndReceives() override;
117
118 virtual void sendVertex(int position, int toStack, ::peano4::grid::TraversalObserver::SendReceiveContext context, const peano4::grid::GridTraversalEvent& event) override;
119 virtual void sendFace( int position, int toStack, ::peano4::grid::TraversalObserver::SendReceiveContext context, const peano4::grid::GridTraversalEvent& event) override;
120 virtual void sendCell( int toStack, ::peano4::grid::TraversalObserver::SendReceiveContext context, const peano4::grid::GridTraversalEvent& event) override;
121
122 virtual void receiveAndMergeVertex( int position, int fromStack, SendReceiveContext context, const peano4::grid::GridTraversalEvent& event) override;
123 virtual void receiveAndMergeFace( int position, int fromStack, SendReceiveContext context, const peano4::grid::GridTraversalEvent& event) override;
124 virtual void receiveAndMergeCell( int fromStack, SendReceiveContext context, const peano4::grid::GridTraversalEvent& event) override;
125
126 virtual void deleteAllStacks() override;
127};
SendReceiveContext
There are three different scenarios when we merge data:
Log Device.
Definition Log.h:517
Simple vector class.
Definition Vector.h:159