8#ifndef SRC_PARTICLECONTAINER_LINKEDCELLTRAVERSALS_HALFSHELLTRAVERSAL_H_
9#define SRC_PARTICLECONTAINER_LINKEDCELLTRAVERSALS_HALFSHELLTRAVERSAL_H_
11#include "particleContainer/LinkedCellTraversals/OriginalCellPairTraversal.h"
16template <
class CellTemplate>
20 bool requiresForceExchange()
const override {
return true;}
23 void processBaseCell(
CellProcessor& cellProcessor,
unsigned long cellIndex)
const override;
26template<
class CellTemplate>
29 CellTemplate& currentCell = this->_cells->at(cellIndex);
30 if (!currentCell.isHaloCell()) {
33 for (
auto& neighbourOffset : this->_forwardNeighbourOffsets) {
34 CellTemplate& neighbourCell = this->_cells->at(cellIndex + neighbourOffset);
36 const bool sumAllMacroscopic =
true;
37 cellProcessor.
processCellPair(currentCell, neighbourCell, sumAllMacroscopic);
Definition: CellProcessor.h:29
virtual void processCell(ParticleCell &cell)=0
virtual void processCellPair(ParticleCell &cell1, ParticleCell &cell2, bool sumAll=false)=0
Definition: HalfShellTraversal.h:17
Definition: OriginalCellPairTraversal.h:21
Definition: HalfShellTraversal.h:13
Definition: OriginalCellPairTraversal.h:17