Peano
Loading...
Searching...
No Matches
examples::grid::MyObserver Class Reference

#include <MyObserver.h>

Inheritance diagram for examples::grid::MyObserver:
Collaboration diagram for examples::grid::MyObserver:

Public Member Functions

 MyObserver (int spacetreeId=-1, int counter=0)
 
virtual ~MyObserver ()
 
void beginTraversal (const tarch::la::Vector< Dimensions, double > &x, const tarch::la::Vector< Dimensions, double > &h) override
 Begin the traversal.
 
void endTraversal (const tarch::la::Vector< Dimensions, double > &x, const tarch::la::Vector< Dimensions, double > &h) override
 
void enterCell (const peano4::grid::GridTraversalEvent &event) override
 Event is invoked per cell.
 
void leaveCell (const peano4::grid::GridTraversalEvent &event) override
 
TraversalObserver * clone (int spacetreeId) override
 I use the clone to create one observer object per traversal thread.
 
std::vector< peano4::grid::GridControlEventgetGridControlEvents () override
 
- Public Member Functions inherited from peano4::grid::TraversalObserver
virtual ~TraversalObserver ()
 
virtual void loadCell (const GridTraversalEvent &event)=0
 
virtual void storeCell (const GridTraversalEvent &event)=0
 
virtual std::vector< GridControlEventgetGridControlEvents () const =0
 
virtual void exchangeAllVerticalDataExchangeStacks (int)
 Send local data from top level of local mesh to master and receive its top-down information in return.
 
virtual void exchangeAllHorizontalDataExchangeStacks (bool)
 Exchange all the data along the domain boundaries.
 
virtual void exchangeAllPeriodicBoundaryDataStacks ()
 Exchange all periodic boundary data.
 
virtual void streamDataFromSplittingTreeToNewTree (int)
 Stream data from current tree on which this routine is called to the new worker.
 
virtual void streamDataFromJoiningTreeToMasterTree (int)
 
virtual void finishAllOutstandingSendsAndReceives ()
 Wrap up all sends and receives, i.e.
 
virtual void sendVertex (int, int, SendReceiveContext, const GridTraversalEvent &)
 
virtual void sendFace (int, int, SendReceiveContext, const GridTraversalEvent &)
 
virtual void sendCell (int, SendReceiveContext, const GridTraversalEvent &)
 
virtual void receiveAndMergeVertex (int, int, SendReceiveContext, const GridTraversalEvent &)
 
virtual void receiveAndMergeFace (int, int, SendReceiveContext, const GridTraversalEvent &)
 
virtual void receiveAndMergeCell (int, SendReceiveContext, const GridTraversalEvent &)
 
virtual void deleteAllStacks ()
 

Static Public Attributes

static constexpr int GridRefinementIterations = 16
 
static constexpr int StationaryIterations = 4
 
- Static Public Attributes inherited from peano4::grid::TraversalObserver
static constexpr int NoRebalancing = -1
 
static constexpr int NoData = -1
 Can this grid entity hold data.
 
static constexpr int CreateOrDestroyPersistentGridEntity = -2
 Implies that the data will then be local or had been local.
 
static constexpr int CreateOrDestroyHangingGridEntity = -3
 Implies that the data will then be local or had been local.
 

Static Private Attributes

static int _iterationCounter
 

Additional Inherited Members

- Public Types inherited from peano4::grid::TraversalObserver
enum class  SendReceiveContext {
  BoundaryExchange , MultiscaleExchange , ForkDomain , JoinDomain ,
  PeriodicBoundaryDataSwap
}
 There are three different scenarios when we merge data: More...
 

Detailed Description

Definition at line 18 of file MyObserver.h.

Constructor & Destructor Documentation

◆ MyObserver()

examples::grid::MyObserver::MyObserver ( int spacetreeId = -1,
int counter = 0 )

Definition at line 13 of file MyObserver.cpp.

◆ ~MyObserver()

examples::grid::MyObserver::~MyObserver ( )
virtual

Definition at line 24 of file MyObserver.cpp.

Member Function Documentation

◆ beginTraversal()

void examples::grid::MyObserver::beginTraversal ( const tarch::la::Vector< Dimensions, double > & x,
const tarch::la::Vector< Dimensions, double > & h )
overridevirtual

Begin the traversal.

This routine is called per spacetree instance, i.e. per subtree (thread) per rank. Within the usual implementation, everything will reside on the call stack anyway. If the routine is called on tree no 0, this operation has to establish the master data of the global root tree, i.e. ensure that the data of level -1 is technically there for the subsequent enterCell event, though this data is ill-defined.

Parameters
xRoot cell coordinates
hRoot cell size

Implements peano4::grid::TraversalObserver.

Definition at line 28 of file MyObserver.cpp.

◆ clone()

peano4::grid::TraversalObserver * examples::grid::MyObserver::clone ( int spacetreeId)
overridevirtual

I use the clone to create one observer object per traversal thread.

So between different spacetrees of one spacetree set, there can be no race condition. Yet, the clone() itself could be called in parallel.

Implements peano4::grid::TraversalObserver.

Definition at line 66 of file MyObserver.cpp.

References assertionMsg.

◆ endTraversal()

void examples::grid::MyObserver::endTraversal ( const tarch::la::Vector< Dimensions, double > & x,
const tarch::la::Vector< Dimensions, double > & h )
overridevirtual
See also
beginTraversal()

Implements peano4::grid::TraversalObserver.

Definition at line 38 of file MyObserver.cpp.

◆ enterCell()

void examples::grid::MyObserver::enterCell ( const peano4::grid::GridTraversalEvent & event)
overridevirtual

Event is invoked per cell.

It is however not called for the root cell, i.e. for the cell with level 0 that does not have a parent.

Implements peano4::grid::TraversalObserver.

Definition at line 48 of file MyObserver.cpp.

◆ getGridControlEvents()

◆ leaveCell()

void examples::grid::MyObserver::leaveCell ( const peano4::grid::GridTraversalEvent & event)
overridevirtual

Implements peano4::grid::TraversalObserver.

Definition at line 57 of file MyObserver.cpp.

Field Documentation

◆ _iterationCounter

int examples::grid::MyObserver::_iterationCounter
staticprivate

Definition at line 26 of file MyObserver.h.

◆ GridRefinementIterations

constexpr int examples::grid::MyObserver::GridRefinementIterations = 16
staticconstexpr

Definition at line 28 of file MyObserver.h.

Referenced by runParallel(), and runSerial().

◆ StationaryIterations

constexpr int examples::grid::MyObserver::StationaryIterations = 4
staticconstexpr

Definition at line 29 of file MyObserver.h.

Referenced by runParallel(), and runSerial().


The documentation for this class was generated from the following files: